感受K2.Net 2003工作流解决方案
接触SourceCode公司的工作流产品K2.Net 2003有一段时间了,想把一些心得分享出来,和各位共同探讨一下,抛砖引玉,希望能对相关人士以启发。
K2.Net 2003是基于微软.Net Framework技术框架之上的工作流平台,能够实现企事业内部人与人、人与部门、以及人与系统间的流程自动化。K2.Net 2003主要包含5个组件:
1. K2.Net Studio
这是K2.Net产品的一个核心组件,是一个图形化的流程建模环境。在这个环境下,所有的流程对象(包括Activity、Event和Line)都可以进行拖放操作。非常有意义的是,用K2.Net Studio设计流程时,开发人员的感觉会非常熟悉。因为K2.Net Studio组织流程的思路非常类似Visual Studio .Net,开发人员需要做的第一步是先建立解决方案(Solution),然后是项目(Project,C#或者VB.Net),然后再建立流程。项目中的公共类代码可以放在模块(Code Modules)中。K2.Net Studio中,流程图的每一个节点都被称为一个Activity,代表具体的活动类型;而每一个流程节点多可以执行多个Event,这些Event事实上是预先设计好的执行一个特定操作的向导式模版,而且这里的Event还可以进行扩充,K2提供了Event的SDK,开发人员可以根据需要设计自己的Event,如与SAP和Oracle进行交互的Event。目前K2的这个版本中,提供了Microsoft Exchange,,Microsoft Office,Microsoft InfoPath,Microsoft SharePoint Portal Server 2003,Microsoft Content Management Server 和 Microsoft BizTalk Server等模版。为了搭配设计流程图时的复杂路线,K2.Net Studio同时也提供了各种形状的Line,用以连接各个Activity。
![]() |
![]() |
![](https://dwang.cnblogs.com/images/cnblogs_com/dwang/31580/r_Event.jpg)
2. K2.Net Service Manager
K2.Net Service Manager是流程系统管理员管理K2.Net服务器环境、流程解决方案及流程的组件。K2.Net Service Manager是Microsoft Management Console的一个Snap-in,为系统管理员提供了一个熟悉的管理界面。利用K2.Net Service Manager,系统管理员可以注册/注销K2服务器、定义服务器属性(如Socket端口,数据库设置以及License信息)、停止/启动服务器、管理流程版本、流程线程,以及管理流程授权用户/用户组。K2.Net Service Manager提供的另外一个非常有益的功能是可以查看并修复流程Run-time错误,这可以成为调试K2流程的一种方法。
![]() |
K2.Net WorkSpace是K2为知识工作者(一般用户)提供的流程管理界面,这是一个动态的XML ASP.Net构建用户界面,用户可以在这里执行任务,查看任务报表,生成报告图表,等等。
![]() |
4. K2.Net Server
K2.Net Server是K2流程解决方案的核心,即流程引擎。K2.Net Server支持.Net运行时,因此可以支持任何行业标准工具如Visual Studio .Net设计的业务逻辑对象和图形用户界面。K2.Net Server使用SQL Server 2000作为存储数据。K2.Net 2003数据仓库在一个数据库中同时保存流程定义和流程业务数据,这个数据库称为Transaction数据库。当流程设计完毕并且导出到服务器上时,流程定义就被写进这个数据库。流程执行时,K2.Net Server就从这个数据库中读取流程定义。这个数据库同时保存了流程执行过程忠收集到的用户或者系统信息。K2.Net Server的另外一个数据库叫做Log数据库,这个数据库自动保存可以归档的流程线程。
5. K2.Net SmartForms
安装K2时,K2会自动扩展Visual Studio .Net,将一个称之为K2 SmartForm的组件添加到Visual Studio .Net的新项类型中。K2 SmartForm事实上是对Visual Studio的Web窗体的扩充,它将常用的各种Web窗体控件进行了重新封装,比如TextBox,Label,DataGrid,DropDownList等。重新封装后的控件名称前缀都为K2,如K2TextBox,K2Label,K2DataGrid,K2DropDownList等等。这样做的目的为了便于开发人员设计K2流程所用的Web窗体,实现不需要写代码即可在流程数据和Web窗体控件间进行数据绑定。
![](https://dwang.cnblogs.com/images/cnblogs_com/dwang/31580/r_SmartForm.jpg)