一. 概述
企业在进行业务处理时,政府在进行公文审批时,都是以流程形式而进行的,在信息化的过程中,企业、政府也将这些业务处理、公文审批的过程信息化了,早期通常是通过程序硬编码的方式来处理这些业务、公文的流转,随着业务、公文的复杂的处理情况不断出现以及需求的不断变更,这种硬编码的方式显然已无法应对,这个时候工作流管理系统应运而生,掀起了一股工作流管理系统的热潮。
那么到底工作流管理系统能够带来什么好处?工作流管理系统通过对业务、公文流转进行分析以及抽象,将不变和变化的部分进行划分,用户可轻松的通过可视化的工具对事项的流程、流程环节涉及的人员(角色)、流程环节的表单、流程环节的操作进行修改,从而到达了应对不断变化的需求的目的,而工作流管理系统通常提供的流程监控、查询统计模块更是极大程度的为用户优化流程提供支持,以提高企业、政府的工作效率。
本文主要描述工作流管理系统通常的结构、参考模型以及通常使用的调度算法。
二. 构成
工作流管理系统,简称WFMS,经过对业务、公文流转过程的分析以及抽象,工作流管理系统围绕业务交互逻辑、业务处理逻辑以及参与者三个问题进行解决,业务交互逻辑对应的为业务的流转过程,在工作流管理系统中对应的提出了工作流引擎、工作流设计器、流程操作来解决业务交互逻辑的问题,业务处理逻辑对应业务流转过程中的表单、文档等的处理,在工作流管理系统中对应的提出了表单设计器、与表单的集成来解决业务处理逻辑的问题,参与者对应到的为流转过程中环节对应的人或程序,在工作流管理系统中通过与应用程序的集成来解决参与者的问题。
工作流管理系统为方便业务交互逻辑、业务处理逻辑以及参与者的修改,多数通过提供可视化的流程设计器以及表单设计器来实现,为实现工作流管理系统的扩展性,多数提供了一系列的API。
一个完整的工作流管理系统通常由工作流引擎、工作流设计器、流程操作、工作流客户端程序、流程监控、表单设计器、与表单的集成以及与应用程序的集成八个部分组成。
2.1. 工作流引擎
工作流引擎作为工作流管理系统的核心部分,主要提供了对于工作流定义的解析以及流程流转的支持。工作流定义文件描述了业务的交互逻辑,工作流引擎通过解析此工作流定义文件按照业务的交互逻辑进行业务的流转,工作流引擎通常通过参考某种模型来进行设计,通过调度算法来进行流程的流转(流程的启动、终止、挂起、恢复等),通过各种环节调度算法(SPLIT、AND、OR等)来实现对于环节的流转(环节的合并、分叉、选择、条件性的选择等)。
2.2. 工作流设计器
工作流设计器为可视化的流程设计工具,用户通过拖放等方式来绘制流程,并通过对于环节的配置来实现环节操作、环节表单、环节参与者的配置。
工作流设计器为用户以及开发商提供了快速绘制、修改流程的方式,工作流设计器的好坏决定到工作流管理系统的易用性。
2.3. 流程操作
流程操作指所支持的对于流程环节的操作,如启动流程、终止流程、挂起流程、直流、分流(单人办理)、并流(多人同时办理)、联审等,象这些流程操作都是可直接基于引擎所提供的环节调度算法来直接支持的,而在实际的需求中,通常需要自由的对于流程进行干涉,如取回、回退、跳转、追加、传阅、传阅办理等,而这些流程操作对于工作流引擎来说是不合理的,因此必须单独的去实现。
流程操作支持的好坏直接决定到一个工作流管理系统的实用性。
2.4. 工作流客户端程序
工作流客户端程序为工作流系统的表现形式,通常使用Web方式进行展现,通过提供待办列表、已办列表、执行流程操作、查看流程历史信息等来展现工作流系统的功能。
2.5. 流程监控
流程监控通过提供图形化的方式来对流程执行过程进行监控,包括流程运转状况,每个环节所耗费的时间等等,而通过这些可相应的进行流程的优化,以提高工作效率。
2.6. 表单设计器
表单设计器为可视化的表单设计工具,用户通过拖放的方式来绘制业务所需的表单,并可相应的进行表单数据的绑定。
表单设计器为客户以及开发商提供了快速修改表单的方法,表单设计器的易用与否以及功能的完善与否影响到工作流管理系统的易用性。
2.7. 与表单的集成
通常业务流转需要表单来表达实际的业务,因此需要与表单进行集成来实现业务意义,与表单的集成通常包括表单数据的自动获取、存储、修改,表单域的权限控制、流程相关数据的维护以及流程环节表单的绑定。
与表单的集成的好坏影响到工作流管理系统是否能提高开发效率。
2.8. 与应用程序的集成
通过与应用程序的集成来完善工作流管理系统的业务意义,主要涉及到的是与权限系统以及组织机构的集成。流程环节需要相应的绑定不同的执行角色,而流程操作通常需要与权限系统、组织机构进行关联。
三. 参考模型
工作流系统通常通过参考一些标准的模型来进行设计,主要的有WFMC和OMG,在这里主要介绍一下WFMC。
3.1. WFMC
WFMC是国际工作流管理联盟,它于1993年成立,发布了一系列的工作流定义、软件接口的草案文本,是目前世界上公认的最具权威性的工作流标准制定机构,得到了广泛的支持和应用。
2002年10月25日,WFMC发布了基于XML的流程定义语言1.0版的最终文本(Workflow Process Definition Interface----XML Process Definition Language 文档编号:WFMC-TC-1025),以及此前发布的工作流应用软件接口规范WFMC-TC-1009, WFMC-TC-1013等系列文件,构成了工作流定义及系统的设计标准。
为了实现不同工作流产品之间的互操作,WfMC在工作流管理系统的相关术语、体系结构及应用编程接口等方面制定了一系列标准。工作流管理联盟给出的工作流定义是:工作流是指整个或部分经营过程在计算机支持下的全自动或半自动化。在实际情况中可以更广泛地把凡是由计算机软件系统(工作流管理系统)控制其执行的过程都称为工作流。
一个工作流包括一组活动及它们的相互顺序关系,还包括过程及活动的启动和终止条件,以及对每个活动的描述。工作流管理系统指运行在一个或多个工作流引擎上用于定义、实现和管理工作流运行的一套软件系统,它与工作流执行者(人、应用)交互,推进工作流实例的执行,并监控工作流的运行状态。
WFMC主要提出了五个接口与工作流执行服务一起共同组成了工作流系统:
l 接口一(工作流定义交换),用于在建模和定义工具与执行服务之间交换工作流定义。主要是数据交换格式和API。数据交换通过XPDL,API通过WAPI。
l 接口二(工作流客户端应用接口),用于工作流客户端应用访问工作流引擎和工作列表,通过WAPI完成。
l 接口三(被调用的应用接口),用于调用不同的应用系统。
l 接口四(工作流系统互操作接口),用于不同工作流系统之间的互操作。
l 接口五(系统管理和监控),用于系统管理应用访问工作流执行服务。
四. 核心调度算法
通常流程引擎采用的核心调度算法主要有FSM以及PetriNet两种,基于调度算法来完成流程的流转。
4.1. FSM(有限状态机)
FSM的定义为包含一组状态集(states)、一个起始状态(start state)、一组输入符号集(alphabet)、一个映射输入符号和当前状态到下一状态的转换函数(transition function)的计算模型。当输入符号串,模型随即进入起始状态。它要改变到新的状态,依赖于转换函数。在有限状态机中,会有有许多变量,例如,状态机有很多与动作(actions)转换(Mealy机)或状态(摩尔机)关联的动作,多重起始状态,基于没有输入符号的转换,或者指定符号和状态(非定有限状态机)的多个转换,指派给接收状态(识别者)的一个或多个状态,等等。
遵循FSM流程引擎通过状态的切换来完成流程的流转。
4.2. PetriNet
信息流的一个抽象的、形式的模型。指出一系统的静态和动态性质。petrinet通常表示成图。图中有两类用弧彼此相连的结点(称为地点和变换)和指示其动态性能的标记(称为记号)。
遵循PetriNet流程引擎通过令牌来决定流程的流转。