工作流系统设计与实现
作者:黄煜栋
来源:《吉林省教育学院学报·上旬刊》2014年第05期
摘要:通过对在企业业务管理中工作流程所起的作用进行分析,本文从系统架构设计、系统功能设计、系统实现关键技术、系统实际应用这几个方面论述了工作流系统设计与实现的过程,并以绍兴电力配网DJM中工作流系统为例加以说明。 关键词:工作流;电力配网;工作流引擎;建模
中图分类号:TP311.52文献标识码:A文章编号:1671—1580(2014)05—0148—03
简单地讲,工作流就是业务流程(Business Process)的计算机化或自动化。企业或组织内有许多繁琐复杂的业务流程,这些流程构成了企业或组织的日常运营活动。通过现代的技术手段将这些流程自动化,并对其进行有效的管理便是工作流管理需要解决的问题[1]。 1 工作流系统架构设计
整个工作流系统可以分为4部分:工作流引擎、工作流客户端、工作流建模、工作流脚本执行引擎。工作流系统运行机制如图1。
工作流基本运行流程为:先由工作流建模程序,根据业务绘制好所需的流程图,存入数据库。启动工作流引擎,开始进行某个工作流的流转。 1.1实现方法
运行平台采用基于组件(Component-based)的技术模型。
组件是指自包含的、即插即用的、提供标准接口的功能单元。组件的概念贯穿于整个运行平台设计,定义了三个层次的组件调用协议:系统组件、业务组件和界面组件。业务组件包含包、类、方法三个层次;界面组件包含包、类两个层次。
基于组件(Component-based)的技术模型,可以在不更新整个应用的情况下安装和升级组件。组件可以一种可扩展的标准方式提供服务,从而提高整个系统的可重用性(Reusability)和灵活性(Flexibility),传统的API结构在功能升级的时候就显得不够灵活。
龙源期刊网 http://www.qikan.com.cn
本系统使用了三层式的框架结构,分为:数据层、业务层、应用层。数据层主要是存储数据,业务层处理各种业务,应用层在客户界面中。这种开发方式的好处是:(1)业务处理集中,维护量小。(2)客户界面程序简单。(3)业务层具有缓冲器,对于客户方对数据的处理可以进行纠错,保证数据关系的正确。 1.2工作流引擎
工作流引擎是系统的核心部分,引擎是驱动流程流动的主要部件,它负责解释工作流流程定义,创建并初始化流程实例,控制流程流动的路径,记录流程运行状态,挂起或唤醒流程,终止正在运行的流程,与其他引擎之间通讯等等工作。工作流引擎又称工作流服务器,侦听和响应客户端的调用,通过API向外部提供五个方面的功能服务,这些功能分别为:流程定义的导入导出;同客户端应用程序和工作列表处理程序之间的交互;软件工具和应用程序的调用;不同工作流管理系统之间的协同工作;管理和监视功能。如图2。
通过这五个接口,工作流管理系统可以同外部的工具(工作流客户端)进行交互。这些工具可以是本系统提供的客户端,也可以是其他应用程序,但前提是应用程序都必须遵循工作流服务所提供的规范接口。
这五个接口一般通过API的形式提供给外部的工具,这些API称为WAPI(Workflow API),工作流客户端正是通过这些API驱动工作流流转的,外部系统也必须通过这些接口才能调用工作流[2]。 2 系统功能设计
本系统采用系统化设计,将整个系统分为若干个小系统:工作流建模系统(建模工具)、工作流客户端系统。 2.1工作流建模系统
工作流程模板中存在节点和边。节点表示某项任务,这项任务将由某个人来完成;边用来把相邻的节点连接起来,边是有方向的,也就是说,节点代表的任务的发生是有先后关系的,我们也称之为路由。一个工作流程模板可以被看作是一个过程函数,它存在名称、参数、返回值,函数内部可以进行顺序、分支、条件判断等控制。工作流建模工具提供了流程导入导出,在导出的流程模板以XML描述。按照上述思想和理论,开发设计了工作流建模工具,系统界面如图3。
2.2工作流客户端系统
龙源期刊网 http://www.qikan.com.cn
工作流客户端系统包括工作流实例、启动工作流、流程流转、任务状态确定、工作流结束方式、结束工作流程等功能,其中工作流客户端与工作流管理系统进行交互所使用到的API函数[3]。 例如:
2.2.1.启动流程所需API
HRESULT _stdcall StartWorkFlow([in]BSTR wfName, [in]long startNodeID, [in]BSTR candidates, [in]BSTR params, [out, retval]long * wfInstID ); 参数:
wfName:启动的流程名称
startNodeID:启动到流程的节点,如果为0则启动到建模时定义的流程启动节点 candidates:启动的备选角色,如果为空则使用建模时定义的启动备选角色 params:启动参数
返回值:启动的流程实例ID 2.2.2.流程流转所需API
HRESULT _stdcall DoGoTo([in]long fromTaskID, [in]BSTR params, [in]VARIANT_BOOL HideOneTask, [out, retval]long * NewTaskID); 参数:
fromTaskID:将要流转的任务实例ID params:流转参数
HideOneTask:当候选路由只有一个时是否直接流转 返回值:新的任务实例ID 3 系统实现关键技术
龙源期刊网 http://www.qikan.com.cn
有了好的系统结构,通过良好的实现过程才会使系统质量有很大的提高,使系统的性能、可维护性和移植性得到满足需求。下面介绍系统开发中用到的关键技术。 3.1用户登录信息加密
用户登录信息保存在数据库中,如果是明文的话非常容易泄露,被其他非法用户得到客户端登录权限,破坏流程的正常进行。本系统对用户的登录密码等信息都通过加密的方式再保存到数据库中,主要采用的是DELPHI类TIdEncoderXXE中EncodeString方法,主要代码如下:
procedure
TMainFrm.edtEnConde_1Change(Sender: TObject); begin
edtDeConde_1.Text := Encode(edtEnConde_1.Text); end;
………………
function EnCode(AIn: String): String; begin
因篇幅问题不能全部显示,请点此查看更多更全内容