■ 文/公安部第一研究所 周纪
产品认证作为国际上通用的评价产品质量和安全性的技术方法,其本质是在生产者和用户之间“传递信任”,其核心是确保评价过程的“公平公正”。由于产品认证工作本身涉及认证委托人、生产者、生产企业、实验室、认证机构等多方面,信息交互频繁复杂、及时性和保密性要求较高,因此建立规范的认证工作流程、保证认证全过程在受控的状态下完成,实现认证信息传递的规范性、及时性、保密性是开展认证工作的基本要求。
当前,国家认证认可进入发展新阶段,对提高认证服务能力,加强专业化、精益化管理提出了更高要求。 本文将Activiti的工作流引擎技术引入到中国安全技术防范认证中心安防认证一体化综合服务平台(以下简称“系统”)建设过程中,以工作流引擎驱动业务流程重构的方法,用来理清认证业务管理工作界面,实现协同办公,促进认证业务流程的规范化和标准化。
工作流的英文包括了工作和流动的含义,表示通过计算机程序的处理(编译、执行)真实反应实际业务流程的过程。工作流管理联盟(Workflow Management Coalition)将工作流定义为:业务流程的全部或部分自动化,在此过程中,文档、信息或任务按照一定的过程规则流转,实现组织成员间的协调工作以达到业务的整体目标。
Activiti技术是源自于JBOSS的JBPM项目,致力于业务人员、开发人员和系统管理员之间的协作管理,是一个轻量级的工作流和BPM平台产品。作为一种开源的可嵌入的BPM(业务流程管理)引擎,它实现了BPMN 2.0规范,其核心是超快速、稳定的业务流程建模与标注(BPMN 2.0)流程引擎,可以发布设计好的流程定义,并通过API进行流程调度。
Activiti流程引擎重点关注在系统开发的易用性和轻量性上,它可以运行在任何类型的Java程序中,例如服务器、集群、云服务等,易于与 Spring集成使用,同时支持 h2,mysql,oracle,postpres,db2,mssql等多种数据库系统,每一项BPM业务功能 Activiti流程引擎都以服务的形式提供给开发人员,通过使用这些服务,开发人员能够构建出功能丰富、轻便且高效的BPM应用程序。目前,Activiti在全球得到了广泛的应用,已经成为最主流的流程引擎之一。
Activiti的核心组件包括:流程引擎(Activiti Engine )、基于Web的流程建模器(Activiti Modeler )、基于Eclipse插件的设计器(Activiti Desiger )、基于Web的管理控制台(Activiti Explorer )、协作工具(Activiti Probe )和Spring集成等。其中最核心的组件工具就是它的流程引擎(Activiti Engine ),同Activiti的其他组件工具一起为流程管理解决方案的设计实现提供了重要的技术。
其中,基于Eclipse的Activiti Designer插件和基于Web的流程编辑器Actiti Modeler。这两种建模/设计工具,可用于图形化建模、测试、部署BPMN 2.0 的流程。在流程中提供了平行、分流、决策、聚合等多种复杂的工作流程种类。
图 1 Activiti 组件
系统建设以中国安全技术防范认证中心认证业务管理工作为基础,实现认证受理、认证变更、产品检测、工厂检查、认证决定、证书管理、证后监督等认证业务流程数据的流转、组织、存储、共享与交换, 建立核心认证资源信息库,为认证中心、认证企业、检测机构、工厂检查员提供认证信息服务工作平台。
科学规划安防认证数据的生产、流转、存储、组织、共享和应用,提高数据标准化程度,保证认证数据的可控,避免重复采集录入。
通过分层体系的研究与应用为系统提供成熟的多层分布式架构,满足软件设计的复用性和软件开发的组件化和服务化的应用需求。
引入Activiti工作流引擎技术,通过抽象安防认证业务流程,实现业务控制和流程管理,使业务资源得到合理的分配和利用,增强系统的可扩展性。
系统B/S结构,选取Eclipse IDE开发平台,采用Java springMvc+JPA+Hibernate和Oracle数据库开发。通过在业务逻辑层整合Activiti工作流引擎,分解、配置、重构和管理业务流程,使得系统具有良好的弹性,便于开发人员对后期功能的扩展和维护。系统Web设计采用了Tiles框架,方便了网页组织和扩展,减少了网页的数量和冗余,通过Jquery Ajax异步交互,实现了无刷新页面与服务器的数据交互,增加了Web程序性能,在一定程度上降低了服务器压力,增强了用户体验。系统技术架构如图2所示。
图 2 系统技术架构
如何采用Activiti技术实现安防认证业务流程是系统设计的关键内容。下面针对认证受理流程实例,具体给出实现方法。
利用Activiti技术实现这个业务流程,首先要分析认证受理流程,然后抽象出业务流程管理中主要的过程定义,定制工作流模板,生成工作流实例,这样工作流引擎就可以对过程定义进行解释并运行该流程。
图3 业务流程描述—产品认证受理
认证委托人(企业)通过互联网在线注册企业信息并提交审核,认证受理人员审核通过后,企业登陆系统提交《产品认证申请书》和《产品认证工厂检查调查表》等产品认证资料进行认证单元初始申请,认证受理人员进行资料种类、数量、内容审查,如不符合要求,退回企业进行补正,如符合要求,提交技术专家进行技术审查;技术专家接到任务后进行企业资料评审(体系、单元划分 ),填写《产品认证单元资料审查任务书》并提交认证受理人员;认证受理人员收到后开始正式受理企业申请,填写《产品认证受理审批单》并提交认证管理人员;认证管理人员审核通过后提交中心副主任;中心副主任审批通过后提交给中心主任;中心主任签批通过后,认证受理人员生成《收费通知单》给企业和财务人员;财务人员收款后填写《认证服务费情况反馈单》并提交认证受理人员;认证受理人员费用确认后填写《费用流转单》并生成给企业《认证受理通知书》,这时流程转到方案策划人员;方案策划人员规划《认证评价实施方案》后提交认证管理人员;认证管理人员审核通过后提交中心副主任;中心副主任审批通过后,业务流程根据《认证评价实施方案》中确定的认证流程自动转到下一流程(产品检测流程,工厂检查流程,认证决定流程中的任意环节);审批不通过,则重新规划方案。业务流程描述如图3所示。
图4 业务流程建模与标注—认证受理
在Eclipse开发环境的项目中以Activiti Diagram的形式来创建产品认证受理流程定义文件,用流程设计工具按照BPMN规范绘制产品认证受理流程图,如图4 所示。通过业务流程建模与标注,将业务分解成任务和角色。
当认证受理流程定义文件设计完成后,利用流程引擎提供的Repository Service接口将流程定义文件部署到Activiti流程引擎中(本代码示例中认证受理流程定义文件名称为ProductCertificationAcceptance.bpmn ),涉及到的关键代码如图5-6所示。
图5 部署认证受理流程定义路径
图6 部署认证受理流程定义文件
认证委托人(企业)通过网络应用界面提交认证资料后启动认证受理流程实例,关键代码如图7-8所示。
认证受理人员获取待办任务,涉及的关键代码如图9-10所示。
图7 启动流程
图8 启动认证受理流程
图9 得到流程实例
图10 得到认证受理流程状态
认证受理人员在形审企业认证资料后,填写审查意见完成任务,流程根据认证受理人员的审查结果流转到下一位负责与控制人员。关键代码如图11-12所示。
其他人员的任务操作与认证受理人员类似,这里就不详细叙述。
图11 流程节点流转实例
图12 认证受理流程任务流转
系统通过引入和整合Activiti工作流引擎技术实现了认证全过程基于角色和任务的流转以及认证过程文档数据的采集与共享,实现了认证过程在受控的状态下完成,保证了认证信息传递的规范性、及时性、保密性。
在实际的工作过程中,以Activiti为核心的工作流管理系统能弥补认证行业管理中的不足,促进其业务流程的规范化和标准化,并拥有以下的优点:(1)可以提高工作效率,平衡业务工作量,优化业务流程,易于存储相关业务文档;(2)可以对业务流程的实施步骤进行控制,增强系统的灵活性,提高系统对于用户的服务质量,方便相关人员了解业务流转状况;(3)由于用户可对流程进行定义和控制,避免了系统的重复开发和修改,有利于节约办公成本,降低系统维护费用。
[1]罗海滨,范玉顺,吴澄.工作流技术综述[J].软件学报,2000,11(7):8992907.
[2]高杰.深入浅出jBPM.北京:人民邮电出版社,2009.
[3]晁扬扬. 特别响、非常近——BPMN2新规范与Activiti5[EB/OL].(2012-4-25)[2013-5-29]http://www.infoq.com/cn/articles/bpmn2-activiti5
[4]Tijs Rademakers, Ron van Liempd. Activiti in Action. New York: Manning Publications, 2007.
[5]ALEXANDER GROSSKOPF,GERODECKER,MATHIASWESKE.The process:business process modeling using BPMN[M].Meghan-Kiffer Press,2009.