什么是BPM
BPM是Business Process Management的缩写,中文含义是业务流程管理,是一套达成企业各种业务环节整合的全面管理模式。
BPM是为了实现一定的经营目的而执行的一系列逻辑相关的活动的集合。业务流程的 输出是满足市场需要的产品或服务。根据功能、管理范围等的不同,企业流程管理一般分为生产流程层、运作层、计划层和战略层四个层次。BMP是根据业务环境的变化,推进人 与人之间、人与系统之间,以及系统与系统之间的整合及调整的经营方法与解决方案的IT 工具。
工作流生命周期
一个完整的工作流生命周期会经过5步,并且迭代循环,
定义:工作流生命周期总是从流程定义开始。此阶段的任务主要是收集业务需求并 转化为流程定义。一般由业务需求人员 进行,然后交由开发人员加工转化为计 算机可以识别的流程定义。
发布:由开发人员打包各种资源,然后 在系统管理(平台)中发布流程定义。在具体的流程引擎中包括流程定义文件 (bpmn20.xml结尾)、自定义表单、任务 监听类。
执行:具体的流程引擎(例如,Activiti)按照事先定义的流程处理路线以任务驱 动的方式执行业务流程。
监控:此阶段是依赖执行阶段。业务 人员在办理(Task)的结果,然后根据结果做出相应处理,例如,在采购办公用品流程中,在通 过领导审批之后,采购人员就要根据申请单外出采购。
优化:在此阶段,一个完整的流程已经结束,或许能满足业务需求,或许需要优化, 而糟糕的情况是需要重新设计(流程没结束就异常终止),优化与设计正是此阶段需 要处理的。根据整个流程的运行过程结果分析问题的根源,然后在此基础上进一步 改进,并再次开始一个新的周期。
Activiti 的特点
1.数据持久化
Activiti的设计思想是简洁、快速。有过应用开发经验的开发人员都知道应用的瓶颈体现在和数据库交换数据的过程中,针对这一点Activiti选择了使用MyBatis,从而可以通过 最优的SQL语句执行Command,仅凭如此就能让引擎在速度上保持最高的性能。
2.引擎 Service 接口
Activiti引擎提供了七大Service接口,均通过ProcessEngine获取,并且支持链式API编程风格。表简单列出七个Service接口及其作用,具体使用会在后面的章节陆续介绍。
3.流程设计器
在jBPM4时代有专门的Eclipse插件可以用来设计jPDL,同样Activiti团队也专门设计了用来设计BPMN 2.0规范的流程设计器 --- Eclipse Designer。此外还有Signavio公司 为Activiti定制的基于Web的Activiti Modeler流程设计器。
4.原生支持Spring
Activiti原生支持Spring,这一点对企业应用来说尤为重要:可以很轻松地进行Spring 集成,非常方便管理事务和解析表达式(Expression)。
5.分离运行时与历史数据
Activiti继承自jBPM4,在表结构设计方面也遵循运行时与历史数据的分离,这样的设 计可以快速读取运行时数据,仅当需要查询历史数据时再从专门的历史数据表中读取。这 种设计方式可以大幅提高数据的存取效率,尤其是当数据日积月累时依然能够快速反应。
Activiti架构与组件
Activiti架构中最重要的肯定是引擎,当然还有刚刚提到的外部工具和组件,下面依次介绍Activiti架构图中的各个组件。如图
Activiti Engine:作为最核心的模块,提供针对BPMN 2.0规范的解析、执行、创建、管理(任务、流程实例)、查询历史记录并根据结果生成报表。
Activiti Modeler:是模型设计器,其并非由Activiti公司所开发,而是由业界认可的Signavio公司赠送的(Signavio e原本是收费的产品,现在被免费授权给Activiti 用户使用)。适用于业务人员把需求转换为规范流程定义。
Activiti Designer :功能和 Activiti Modeler 类似,同样提供了基于BPMN 2.0 规范 的可视化设计功能,但是目前还没有完全支持BPMN规范的定义。适用于开发人 员,可以把业务需求人员用Signavio设计的流程定义(XML格式)导入到Designer 中,从而让开发人员将其进一步加工成为可以运行的流程定义。
Activiti Explorer:可以用来管理仓库、用户、组,启动流程、任务办理等。此组 件使用REST风格API (目的在于让开发人员快速入门),提供一个基础的设计模型。 如果业务简单,也可以直接使用无需开发。还可以作为后台管理员的流程、任务管理系统使用。
Activiti REST:提供Restful风格的服务,允许客户端以JSON的方式与引擎的REST API交互,通用的协议具有跨平台、跨语言的特性。