近年来,工作流技术在广西广电网络公司的OA系统中已广泛应用。工作流技术的应用改进了OA的业务流程、实现了业务过程的协调控制、提高了业务处理效率。同时,广西广电网络现有OA系统的工作流技术亦存在以下两大问题:(1)硬编码工作流无法适应流程的需求的灵活变更。部分业务流程和流程表单的定义是硬编码在程序中的规则,一旦业务流程需要调整,开发人员需要进行繁杂的修改工作,对灵活多变的流程显得无能为力。(2)设计模型和实施模型存在较大差异。曾经在OA系统中引入的开源工作流引擎(EnhydraShark、OSWorkflow和早期的jBPM),发挥了一定作用,但其业务分析人员的设计模型和开发人员的实施模型之间存在较大差异,开发人员往往难以完全根据设计模型来实现工作流,增加了流程的实施难度。因此,如何提高OA系统中工作流对流程需求变化的快速响应能力,如何解决业务分析人员和IT开发人员之间模型的不一致性成为摆在OA和工作流系统设计和开发人员面前的新课题。
为解决流程硬编码和设计模型与实施模型之间存在较大差异这两大问题,新的工作流系统应能够实现以下两点:(1)针对流程硬编码问题,新的工作流应能够实现以图形化操作的形式对流程和表单进行定义并生成流程定义文件,将生成的定义文件部署到工作流系统即可完成流程的新建或修改。(2)针对设计模型与实施模型的差异问题,新的工作流系统应能够以业务分析人员使用的业务流程设计语言BPMN2.0来实现流程建模,达到设计模型和实施模型的统一,使IT开发人员不必再参与到流程建模当中。
本文将针对上述问题,介绍并引入一个基于Activiti5(ActivitiBPMPlatform)的工作流管理系统,全面解决现 存问题,并以广西广电网络OA系统中重大安全播出期保障检查流程为例,讲解流程的设计和部署等关键环节,为OA系统中工作流的设计提供了一种良好的解决方案。
3工作流技术和Activiti5工作流管理平台 工作流(Workflow),是对工作流程及其各操作步骤之间业务规则的抽象、概括、描述。工作流建模,即将工作流程中的工作如何前后组织在一起的逻辑和规则在计算机中以恰当的模型进行表示并对其实施计算。工作流要解决的主要问题是:为实现某个业务目标,在多个参与者之间,利用计算机,按某种预定规则自动传递文档、信息或者任务。工作流需要依靠工作流管理系统(WorkflowManagementSystem,WfMS)来实现,它的主要功能是通过计算机技术的支持去定义、执行和管理工作流,协调工作流执行过程中工作之间以及群体成员之间的信息交互。常见的工作流管理系统的结构如图1所示:
图1工作流管理系统的结构 当新的流程需求出现时,流程的分析和设计的工作通常由业务分析人员来进行。BPMN2.0提供了一种面向业务分析人员的建模符号,特别是对于流程模型,它提供了具有执行语义的模型。BPMN给业务分析人员提供了类似流程图的设计体验,与流程图不同的是,BPMN2.0包含大量的约束和语义,使设计模型只要添加必要的实现细节就能够成为一个可以直接被工作流系统解释执行的实施模型。随着BPMN2.0近年来的飞速发展和普及,它已经成为流程设计领域的事实标准。本文使用Activiti5工作流管理平台作为OA中工作流系统的核心。Activiti5是一个由jBPM3、jBPM4发展而来的开源轻量级工作流管理平台,其强调流程服务的可嵌入性和可扩展性,目前由jBPM的创建者TomBaeyens主导开发和维护。
Activiti的流程引擎是从jBPM4继承并强化而来的PVM(ProcessVirtualMachine,流程虚拟机)。Activiti的前 辈jBPM3虽然在Java社区取得了巨大成功,但其不支持流程语言规范的短板始终被人诟病,它采用了自创的jPDL而不是当今业务分析人员使用的BPMN2.0,节点的运行时行为与jPDL里定义的节点类型是一一绑定的,这造成了流程引擎与特定流程语言的绑定,要支持其他的流程设计语言变得非常困难。PVM的提出使得流程引擎与流程定义语言解耦,通过一套通用的流程模型并配以可定制的节点运行期行为实现了对多种流程定义语言的支持。PVM可以解释BPMN2.0、jPDL、xPDL和BPEL等各种流程定义语言定义的流程格式,使Activiti易于与其他异构工作流引擎对接,有优秀的集成能力。Activiti延续了jBPM3、jBPM4的社区支持,更新周期3个月,目前最新版本为Activiti5.14。Activiti提供了两个图形化流程和流程表单设计器,分别是基于Web并利用SVG实现的ActivitiModeler和Eclipseplugin形式的ActivitiDesigner。Activiti5的体系结构如图2所示。
图2Activiti5体系结构 ActivitiEngine是Activiti项目的核心。它是一个Java编写的流程引擎执行以流程建模语言定义的流程。上文提到的PVM是ActivitiEngine的一部分,ActivitiEngine通过PVM来解释包括BPMN2.0在内的各种建模语言定义的流程文件。同时,ActivitiEngine还负责对工作流实例控制和统计数据收集,包括任务分发、事务管理、报表生成等等。
ActivitiExplorer是一个Web应用程序供用户访问ActivitiEngine。它提供UI以进行流程流转、、流程实例检验、系统管理和数据统计报表展示,ActivitiModeler也可以经由ActivitiExplorer来访问。
ActivitiModeler提供了从Web来管理Activiti流程的方案。通过ActivitiModeler流程建模人员可以用浏览器建立BPMN2.0标准的流程模型并部署执执行。同时,ActivitiModeler还包括一个Web表单编辑器。
ActivitiDesigner是一个Eclipse插件,它允许在IDE环境内用BPMN2.0建立流程模型。相对Web的ActivitiModeler,它支持更多Activiti的扩展功能,使流程建模人员能够进行更细粒度的配置以发挥的流程和引擎的全部能力。ActivitiKickStart的是一个基于Web的入门级建模工具,用Activiti引擎可用构件的子集提供快速创建简单业务流程的能力。通过Kickstart用户可以使用更加通俗的概念建模,即使不了解BPMN或者其他建模语言也可以建立简单流程。通过KickStart创建的的流程是和BPMN2.0兼容的,它可作为学习BPMN2.0建模的起点。
Activiti5的流程设计器ActivitiModeler和ActivitiDesigner,将是解决流程硬编码和设计模型与实施模型存在差异这两大问题的关键,针对流程硬编码问题,Activiti5的流程设计器能够在WEB端以图形化操作的方式对流程和表单进行定义并生成流程定义文件,并将生成的定义文件部署到工作流系统即可完成流程的新建或修改;对于设计模型与实施模型的差异问题,Activiti5的流程设计器使用业务分析人员的业务流程设计语言BPMN2.0来实现流程建模,达到设计模型和实施模型的统一,使IT开发人员不必再参与到流程建模当中。
信息发布:广州名易软件有限公司 http://www.myidp.net