3.2系统的实现
系统中流程定义、工作流引擎、流程监控和任务管理等是其重要的功能模块,现分别阐述他们的实现机制。
3.2.1流程定义
流程定义是整个系统的基础,提供了一个创建和修改工作流模板的图形化建模工具。其主要实现:定义业务流程;创建业务流程的任务及其执行顺序;指定执行任务的人员和表单等。将定义好的流程数据存储在数据库里,为工作流引擎使用。流程定义也为系统的使用者提供了再次开发使用的基础,使用者可以根据实际的需要利用此工具定制或修改各种业务流程,简化了定义步骤,节省了开发时间。
通过图形化的方式来实现业务流程的定义,使得整个定义过程变得直观、便捷。在定义过程中,使用者可以利用流程模板库提供的多种图形对象,通过简单的鼠标拖拽来创建业务流程。业务流程的每个环节对应一个图形对象,通过简单的鼠标操作就能设置对象的属性如名称、执行者、优先权、状态、通知方式等,同时将其控制数据和业务数据保存到数据库中,建立起流程环节与数据表之间的对应关系,方便系统调用。
3.2.2工作流引擎
工作流引擎是整个系统的核心部分,对系统的其它部分起到协调和控制作用。它解释流程的定义,完成流程的实例化,确定任务及任务的传递顺序,推动流程实例的执行,维护流程的控制数据和业务数据,维护用户的任务列表,调用相应的应用程序接口来实现特定的功能。
工作流引擎是系统的重要组成部分,它的好坏直接关系到系统的扩展性、灵活性和稳定性。引擎采用Web Service技术来实现,为系统提供了便捷的引用接口,也为系统提供了较好的扩展性和灵活性。在引擎的数据处理中,采用关系数据模型来提高系统的健壮性和应用性,利用关系数据库提供的触发器、存储过程等机制来实现处理过程中的各种业务逻辑,还利用关系数据库的并行原理来实现其中的业务并行控制[6]。在引擎的编程中采用了面向对象技术,利用它的封装、继承等机制,把流程模板、流程实例化、工单模板、数据访问等功能模块包装为C#类,实现模块化的处理,其定义如下:
1) public class WFTempAdmin{}//流程模板类
2) public class WFInstAdmin{}//流程实例类
3) public class SheetAdmin{}//工单模板类
4) public class DAAdmin{}//数据访问类
3.2.3流程监控
流程监控模块负责对流程实例及其包含的任务在整个系统中的流动状况进行跟踪、监控,提供对业务流程的挂起、 恢复、终止、删除、改派、查询等功能。用户可以利用此模块提供的功能来查询流程实例的运行情况;可以及时发现流程实例的异常情况或停滞环节,并采取相应的措施来处理流程实例,使其尽快恢复正常运行;可以根据需要改变流程的执行路径或者终止流程的执行。借助此功能模块用户可以深入到流程实例的内部来查看每个任务的详细执行情况,如流程实例名、任务的起始时间、结束时间、执行者及任务的状态等。
3.2.4任务管理
任务管理模块实现对用户的任务进行处理。工作流引擎根据各种任务调度策略分配任务到用户的任务管理列表。在一些特殊情况下,有部分任务不必添加到任务管理列表,也不需要有执行者,而是由工作流引擎自动来完成。用户通过任务管理模块提供的功能,可以接收任务,检出任务并调用相应工单模板来执行任务;可以撤销或删除有异常的任务,使其回到上一任务的执行者;还可以查询工单信息和已处理过的任务
信息。当任务执行完毕,任务的状态随之改变(任务状态分初始化、运行中、完成三种),任务管理模块向工作流引擎报告任务的执行情况,将执行的结果保存到后台数据库,并启动相应的任务。图2是任务管理界面,在“新任务”页面接收任务,在“待办任务”中进行任务的执行,在“已办任务”中可以进行查询处理。