码迷,mamicode.com
首页 > 其他好文 > 详细

分享本书《Activiti实战》和几个工作流的链接

时间:2015-03-21 09:51:08      阅读:487      评论:0      收藏:0      [点我收藏+]

标签:activiti   工作流   

现在搞工作流的,开源的很多都用Activiti,但相关的中文书其实不多,在当当上找到了一本,暂时没下载到pdf盗版,看了目录不错,特别从试读章节了解了历史,所以分享一下。


java 工作流开发框架比较
http://blog.csdn.net/chinarenzhou/article/details/7679148
纵观jBPM:从jBPM3到jBPM5以及Activiti5
http://www.infoq.com/cn/articles/rh-jbpm5-activiti5
工作流引擎Activiti使用总结
http://blog.csdn.net/ocean20/article/details/16961679


企业应用工作流的好处
http://jingyan.baidu.com/article/90895e0fe9c56164ec6b0b24.html

工作流管理的好处
http://blog.sina.com.cn/s/blog_51ef3b580100azq3.html

工作流引擎功能介绍
http://wenku.baidu.com/link?url=QNVrlpHoFuWuvFIU7_Z8q-C4GNZ_-u75oekraNE4S6IAmICb0EMEtp4weAvwOBDcQl76-T3Kp1oEAsFJah-1xKBSEqKXQcJLJAnXXH_9dhq


第四章  工作流引擎的设计与实现(一)
http://blog.sina.com.cn/s/blog_5f30147a0100d9jw.html


Activiti工作流引擎使用
http://www.open-open.com/lib/view/open1350460225367.html
下面有很多activiti的相关文档!

三大工作流引擎对比(2005年)
http://www.360doc.com/content/05/0806/02/73_4713.shtml

工作流之大局势(2006年)
http://www.newmaker.com/art_17650.html

工作流引擎的选择
http://wenku.baidu.com/link?url=2VL5lW8Na24dnkGlntEVigs2cPiyN5xwqqp1RVkq5H8dlZFPN6SXVLjPuZF_XgV8XxRsLE8Pdy0j2Vt8EkTSts0NWfZ9MlnMxWlzW6ruI3G


百度百科-工作流
http://baike.baidu.com/link?url=ZjElBNByyZz_ItLtd_Uqt3Sadcwv0-4CDO806vKQWJDuUOFybbkzpg8GOB1EU71w8bT4x64RoRXBrFXa7o_dK


目录
本书推荐
前言
第一部分 准备篇
 第1章 认识Activiti
  1.1 什么是Activiti
  1.2 工作流基础
   1.2.1 什么是BPM
   1.2.2 工作流生命周期
   1.2.3 什么是BPMN
  1.3 Activiti的特点
  1.4 Activiti的应用
  1.5 Activiti架构与组件
  1.6 Activiti与jBPM5比较
  1.7 本章小结
 第2章 搭建Activiti开发环境
  2.1 下载Activiti
   2.1.1 目录结构
   2.1.2 Javadocs
  2.2 环境配置检查
   2.2.1 检查并安装JDK
   2.2.2 检查并安装Ant
   2.2.3 检查并安装Maven
  2.3 配置文件介绍
   2.3.1 Activiti配置文件
   2.3.2 Maven配置文件
  2.4 Hello World
   2.4.1 最简单的流程定义
   2.4.2 创建单元测试类
   2.4.3 运行Hello World
   2.4.4 添加业务节点
  2.5 Activiti Explorer
   2.5.1 配置并运行Activiti Explorer
   2.5.2 使用Activiti Explorer
  2.6 本章小结
第二部分 基 础 篇
 第3章 流程设计工具
  3.1 基于B/S架构的流程设计器Activiti Modeler
   3.1.1 Activiti Modeler特点
   3.1.2 下载signavio-core-components
   3.1.3 配置打包与运行
   3.1.4 Windows用户打包
   3.1.5 设计请假流程
   3.1.6 导出bpmn2.0.xml
  3.2 在Activiti Explorer中使用Activiti Modeler
  3.3 基于Eclipse插件的流程设计器Activiti Designer
   3.3.1 Activiti Designer特点
   3.3.2 安装Activiti Designer
   3.3.3 设计流程
   3.3.4 自动化
   3.3.5 升级历史遗留的流程设计
   3.3.6 导入Activiti Modeler设计
   3.3.7 泳池与泳道
   3.3.8 在Activiti Designer中使用泳道与泳池
  3.4 本章小结
 第4章 Activiti与BPMN 2.0规范
  4.1 启动事件与结束事件
   4.1.1 启动事件
   4.1.2 结束事件
  4.2 顺序流
   4.2.1 标准顺序流
   4.2.2 条件顺序流
  4.3 任务
   4.3.1 用户任务
   4.3.2 脚本任务
   4.3.3 Java Service任务
   4.3.4Web Service任务
   4.3.5业务规则任务
   4.3.6邮件任务
   4.3.7Camel任务
   4.3.8Mule任务
   4.3.9手动任务
   4.3.10接收任务
   4.3.11Shell任务
   4.3.12多实例
  4.4网关
   4.4.1排他网关
   4.4.2并行网关
   4.4.3包容网关
   4.4.4事件网关
  4.5子流程与调用活动
    4.5.1子流程
   4.5.2 调用活动
   4.5.3 事件子流程
   4.5.4事务子流程
  4.6边界与中间事件
   4.6.1边界事件
   4.6.2中间捕获事件
   4.6.3中间抛出事件
  4.7监听器
   4.7.1执行监听器
   4.7.2任务监听器
  4.8本章小结
第三部分 实战篇
 第5章用户与组及部署管理
  5.1用户与组
   5.1.1用户
   5.1.2组
   5.1.3用户与组的关系
   5.1.4用户任务中的用户与组
  5.2部署流程资源
   5.2.1classpath方式
   5.2.2InputStream方式
   5.2.3字符串方式
   5.2.4zip/bar格式压缩包方式
  5.3流程部署及资源读取
   5.3.1读取已部署流程定义
   5.3.2从客户端部署流程
   5.3.3读取流程定义的XML
   5.3.4读取流程定义的图片及图片中的中文乱码
   5.3.5删除部署
  5.4本章小结
 第6章 任务表单
  6.1动态表单
   6.1.1流程定义
   6.1.2单元测试
   6.1.3在Activiti Explorer中运行流程
  6.2实现自己的Activiti Explorer
   6.2.1完善身份验证功能
   6.2.2流程启动表单
   6.2.3任务签收与办理
   6.2.4自定义表单的字段类型
  6.3 外置表单
   6.3.1流程定义
   6.3.2单元测试
   6.3.3自定义表单引擎
   6.3.4 读取流程启动表单
   6.3.5任务签收与办理
  6.4本章小结
 第7章 Activiti与容器集成
  7.1 流程引擎工厂
   7.1.1 创建引擎的方式
   7.1.2 配置 ProcessEngineFactory-Bean
  7.2 自动部署流程定义
  7.3 表达式
   7.3.1 表达式基础
   7.3.2 表达式示例
   7.3.3 使用Spring管理变量
  7.4 监听器
  7.5 Spring容器集成应用实例
   7.5.1 业务建模
   7.5.2 启动流程
   7.5.3 任务读取
   7.5.4 任务办理
  7.6 使用Spring注解初始化引擎
   7.6.1 使用@EnableActiviti注解
   7.6.2 使用Spring Boot初始化引擎
  7.7 CDI模块
   7.7.1 启动示例
   7.7.2 引擎配置与流程定义
   7.7.3 流程定义与启动
   7.7.4 任务办理与完成
   7.7.5 事件监听
  7.8 本章小结
 第8章 邮件服务
  8.1 配置与测试
   8.1.1 搭建邮件系统
   8.1.2 通过Activiti的邮件任务发送邮件
   8.1.3 使用Gmail发送邮件
  8.2 与业务集成
   8.2.1 即时发送邮件
   8.2.2 定时发送邮件
  8.3 本章小结
 第9章 多实例
  9.1 非用户任务
  9.2 用户任务多实例
   9.2.1 顺序方式办理
   9.2.2 并行方式办理
   9.2.3 设置结束条件
  9.3 应用实例-请假会签
   9.3.1 流程定义
   9.3.2 任务办理
  9.4 审批意见
  9.5 本章小结
 第10章 子流程与调用活动
  10.1 子流程
   10.1.1 流程定义
   10.1.2 流程办理
   10.1.3 分析流程数据
  10.2 调用活动
   10.2.1 流程定义
   10.2.2 单元测试
   10.2.3 流程办理
   10.2.4 分析流程数据
  10.3 事件子流程
   10.3.1 流程定义
   10.3.2 单元测试
  10.4 多实例支持
  10.5 本章小结
 第11章 事件
  11.1 启动事件
   11.1.1 定时启动事件
   11.1.2 消息启动事件
  11.2 结束事件
  11.3 边界事件
   11.3.1 异常边界事件
   11.3.2 消息边界事件
   11.3.3 信号边界事件
  11.4 中间事件
  11.5 本章小结
 第12章 用户任务与附件
  12.1 用户任务
   12.1.1 改进任务列表
   12.1.2 改进任务表单
   12.1.3 任务相关人员
   12.1.4 反签收任务
   12.1.5 候选人与候选组
   12.1.6 改进任务查询
  12.2 子任务
  12.3 手动任务
  12.4 附件
  12.5 改进意见列表
  12.6 任务委派
   12.6.1 单元测试
   12.6.2 任务表单中的委派
  12.7 本章小结
 第13章 流程数据查询与跟踪
  13.1 Query API简介
  13.2 运行时数据查询
   13.2.1 任务查询
   13.2.2 查询参与的流程
  13.3 流程图跟踪
  13.4 历史数据查询
   13.4.1 查询历史活动及表单
   13.4.2 查询已归档流程
  13.5 基于MyBatis的CustomSql查询
   13.5.1 定义Mapper接口
   13.5.2 展示数据
  13.6 本章小结
 第14章 管理员特性
  14.1 流程状态
   14.1.1 流程定义状态
   14.1.2 作业查询
   14.1.3 流程实例状态
  14.2 作业管理
   14.2.1 作业执行原理
   14.2.2 作业执行异常
   14.2.3 独占与异步
  14.3 删除流程实例
  14.4 流程定义权限控制
   14.4.1 权限拦截
   14.4.2 设置候选启动人和候选启动组
   14.4.3 读取候选启动数据
  14.5 读取引擎属性
  14.6 数据库查询
  14.7 用户与组
  14.8 本章小结
第四部分 高级篇
 第15章 集成WebService
  15.1发布WebService服务
  15.2在流程中定义WebService任务
  15.3 在流程中调用WebService
  15.4本章小结
 第16章 集成规则引擎
  16.1 定义流程与规则
   16.1.1部署规则文件
   16.1.2单元测试
  16.2本章小结
 第17章 集成JPA
  17.1配置JPA
   17.1.1Standalone模式
   17.1.2Spring模式
  17.2JPA版本的请假流程
   17.2.1启动流程时持久化JPA实体
   17.2.2更改JPA实体属性
   17.2.3清理历史表单数据
  17.3本章小结
 第18章 集成ESB
  18.1Camel简介与快速入门
  18.2在流程中调用Camel
   18.2.1Camel依赖及配置
   18.2.2定义Camel路由
   18.2.3执行单元测试
   18.2.4URI输入参数
   18.2.5URI输出参数
  18.3异步Camel任务
  18.4在Camel中启动流程
  18.5集成Mule
   18.5.1Mule快速入门
   18.5.2Mule、Spring与Activiti集成
   18.5.3在流程中调用Mule
  18.6本章小结
 第19章 统一身份管理
  19.1一套典型的身份系统
  19.2引擎身份接口方式
  19.3用视图代替物理表
  19.4集成LDAP
  19.5本章小结
 第20章 REST服务
  20.1通信协议简介
  20.2REST API概述
  20.3发布REST API
   20.3.1通过浏览器访问
   20.3.2通过HttpClient访问
   20.3.3通过Restlet访问
   20.3.4通过Apache CXF访问
  20.4集成REST API
   20.4.1依赖及配置文件
   20.4.2通过Ajax访问
  20.5完整示例
   20.5.1部署流程
   20.5.2查询Deployment
   20.5.3查询流程定义
   20.5.4启动流程
   20.5.5读取流程变量
   20.5.6查询任务
   20.5.7签收任务
   20.5.8完成任务
   20.5.9查询历史数据
  20.6集成流程图跟踪组件Diagram Viewer
   20.6.1准备资源文件
   20.6.2准备配置文件
   20.6.3访问Diagram Viewer跟踪流程
  20.7基于REST服务搭建流程中心
   20.7.1基础架构
   20.7.2表单模式选型
   20.7.3统一的组件
   20.7.4事务管理
  20.8集成流程设计器Activiti Modeler
   20.8.1准备资源文件
   20.8.2准备配置文件
   20.8.3更改默认配置
   20.8.4创建模型
   20.8.5导出模型的流程XML
   20.8.6把模型转换为流程定义
   20.8.7把流程定义转换为模型
   20.8.8删除模型
  20.9本章小结
 第21章 入侵Activiti
  21.1解析BPMN文件
   21.1.1BpmnModel对象与XML之间的转换
   21.1.2动态创建流程
   21.1.3BPMN解析处理器
  21.2全局事件处理器
   21.2.1定义事件处理器
   21.2.2处理捕获的事件
   21.2.3事件处理器的异常处理
   21.2.4动态注册事件处理器
   21.2.5任务自动转办
   21.2.6事件日志
  21.3命令与拦截器
   21.3.1命令与拦截器运行机制
   21.3.2自定义命令
   21.3.3命令拦截器
   21.4流程虚拟机-PVM
   21.4.1简述PVM
   21.4.2Hello PVM
  21.4.3PVM进阶
  21.5本章小结


第一部分
准备篇
工作流(WorkFlow)引擎被广泛应用于各种信息化系统中,将原本散乱甚至混乱的业务梳理后制定成业务规范流程,进而约束业务的规范化处理和运转。需求人员、开发人员共同协作制定了符合BPMN2.0规范的流程定义,之后将其部署到工作流引擎中,由它自动驱动业务流程的进行。
本部分作为准备篇,第1章先介绍了什么是Activiti及其历史背景,然后介绍工作流、BPM、BPMN等概念,使初次接触工作流的读者能快速认识相关概念及各种规范。第2章内容从搭建开发环境开始,之后又介绍了Activiti的HelloWorld,帮助读者快速入门。


第1章
认识Activiti
很多人对工作流(Workflow)应该不陌生。生活中到处都是活生生的“流”:在单位要请假,首先要找领导审批,在领导审批通过之后申请才获准;从网上购物,下单的那一刻就已经触发了一条工作流,此时可以跟踪购物流程,什么时间下单、什么时间付款、什么时候发货、什么时候收到货,在快递单上签字的时候才等于一条工作流程结束了。
工作流应用广泛,在由任务驱动的各种系统中都能见到它的身影,例如,CRM、ERP、ECM、BI、OA等。在企业应用中还有很多产品或平台集成工作流引擎,用来处理系统运行过程中发起的业务流程。
工作流总是以任务(Task)的形式驱动人处理业务或者驱动业务系统自动完成作业。有了工作流引擎之后,我们不必一直等待其他人的工作进度,直白地说,我们只需要关心系统首页的待办任务数即可,由系统提醒当前有多少待办任务需要处理。


1.1什么是Activiti
大家第一次接触Activiti的时候不理解它为什么要叫这个名字,从词典中也没有找到对它的解释。可能有人会想到另外一个单词Activity(活动),与Activiti仅一个字母之差。在工作流方面有些基础的读者或许能很快理解,业务流程由多个环节串联起来并且每个环节被赋予任务,而每个任务又可以分为多个活动。举个日常的例子—网上购物的下单环节,首先需要搜索到要购买的商品,然后将其加入到购物车,最后下单填写邮寄地址并付款。这个例子中的每一动作都可以称为活动(Activity),也就是业务流程中最小的组成部分。多个活动在英文中肯定要用复数形式,即Activities;最后以复数化简的方式标示活动的集合,以此来诠释Activiti与工作流的目的与设计。
此项目是TomBayen(jBPM创始人)自2010年离开jBoss加入Alfresco公司后的又一力作:第一版在2010年5月发布,当时仅支持最简单的流程处理,之后的版本陆续完善了对BPMN2.0规范的支持。
值得一提的是,参与项目开发的除了TomBayen和十几位核心开发人员之外,还有其他公司的员工参与,例如,SpringSource、MuleSoft、Salves、Signavio、FuseSource、NextLevel等。
Activiti是一个针对企业用户、开发人员、系统管理员的轻量级工作流业务管理平台,其核心是使用Java开发的快速、稳定的BPMN2.0流程引擎。Activiti是在ApacheV2许可下发布的,可以运行在任何类型的Java程序中,例如服务器、集群、云服务等。Activiti可以完美地与Spring集成。同时,基于简约思想的设计使Activiti非常轻量级。
Activiti有着活跃的社区,而且越来越多的企业都选择Activiti作为自己的流程引擎或者将其嵌入到自己的系统平台中(例如ESB)。
接下来简单了解一下工作流及其相关规范的历史。




1.2工作流基础
1.2.1什么是BPM
BPM是BusinessProcessManagement的缩写,中文含义是业务流程管理,是一套达成企业各种业务环节整合的全面管理模式。
BPM是为了实现一定的经营目的而执行的一系列逻辑相关的活动的集合。业务流程的输出是满足市场需要的产品或服务。根据功能、管理范围等的不同,企业流程管理一般分为生产流程层、运作层、计划层和战略层四个层次。BMP是根据业务环境的变化,推进人与人之间、人与系统之间,以及系统与系统之间的整合及调整的经营方法与解决方案的IT工具。
BPM最早是由工作流和企业应用集成(EnterpriseApplicationIntergration)逐步融合而发展起来的,当时是为了满足无纸化办公需求(这也是最早的需求之一)。笔者早期参与OA系统开发时曾经见到过“原始的”工作流—没有工作流引擎,整个流程均使用一系列单独为不同任务节点设计的页面串联起来,完成一个节点后在数据库标记当前任务的名称,以此做到“流程驱动”。
随着时间的推移,BPM的定义范围逐步扩展,不仅用来满足无纸化办公需求,现在BPM是一种企业集成技术,作为对面向服务系统架构SOA(Service-OrientedArchitecture)、企业应用集成EAI(EnterpriseApplicationIntegration)、企业服务总线ESB(EnterpriseServiceBus)的补充。
从概念上来说,BPM包含两个不同方面的意思:管理规范和软件工程。各大BPM供应商长期以来试图抽象这两个不同的方面,但是依然混乱。
作为管理规范,BPM是每一个战略管理者的责任。BPM是组织必须执行的核心业务流程,包含了企业价值和如何提供其实现。作为日常工作的一部分,业务系统可以借助模型和流程规范地定义业务流程。BPM流程图表达的是执行流程的步骤,已完成特定目标。特别说明的是这些模型用于人与人的沟通。这些都是诠释未决的,这意味着它们可以包含更高级别有价值的信息而不包括不必要的细节。这种诠释未决的过程模型也被称为抽象业务流程(AbstractBusinessProcesses.)。
BPM作为软件工程时可以由BPM系统(BPMS)执行可执行的业务流程。可执行的业务流程是在一个流程基础上表示不同的流程顺序。流程图完全可以看做一个抽象的业务流程。可执行流程不同于抽象业务流程,因为它总是以最简单的方式运行。这部分内容也是被大多数厂商认同并接受的。
1.2.2工作流生命周期
一个完整的工作流生命周期会经过5步,并且迭代循环,如图1-1所示。
定义:工作流生命周期总是从流程定义开始。此阶段的任务主要是收集业务需求并转化为流程定义。一般由业务需求人员进行,然后交由开发人员加工转化为计算机可以识别的流程定义。
发布:由开发人员打包各种资源,然后在系统管理(平台)中发布流程定义。在具体的流程引擎中包括流程定义文件(bpmn20.xml结尾)、自定义表单、任务监听类。
执行:具体的流程引擎(例如,Activiti)按照事先定义的流程处理路线以任务驱动的方式执行业务流程。
监控:此阶段是依赖执行阶段。业务人员在办理任务的同时收集每个任务(Task)的结果,然后根据结果做出相应处理,例如,在采购办公用品流程中,在通过领导审批之后,采购人员就要根据申请单外出采购。
优化:在此阶段,一个完整的流程已经结束,或许能满足业务需求,或许需要优化,而糟糕的情况是需要重新设计(流程没结束就异常终止),优化与设计正是此阶段需要处理的。根据整个流程的运行过程结果分析问题的根源,然后在此基础上进一步改进,并再次开始一个新的周期。
1.2.3什么是BPMN
BusinessProcessModelingNotation,简称BPMN,中文译为业务流程建模标注,是由BPMN标准组织发布的,其第一版BPMN1.0规范于2004年5月发布。经过多年的改进新的规范BPMN2.0于2011年发布。之后各大厂商、开源社区均基于2.0规范设计自己的流程引擎,结束了各个厂商“各自为政”的局面,相应地统一了标准,从而利于以后的产品迁移。
BPMN定义了业务流程图,其基于流程图技术,同时对创建业务流程操作的图形化模型进行了裁减。业务流程的模型就是图形化对象的网图,包括活动(也可以说工作)和定义操作顺序的流控制。
在BPMN1.x版本中的一些概念,如人工任务、可以执行脚本、自动决策等,都是独立于供应商的可视化标准化的方式。在BPMN2.0规范中重点聚焦在如何执行语义和一个被业界认可的通用交换格式。这意味着基于BPMN2.0的流程建模不仅在流程设计器上可以通用,还可以在任何符合BPMN2.0规范的流程引擎上执行。
关于BPMN的细节内容有很多,官方文档足足有500多页,本书会在第4章介绍Activiti支持的BPMN2.0规范以及Activiti在BPMN2.0规范基础上的扩展。关于BPMN的其他内容本书就不一一列举了,有兴趣的读者可以仔细阅读官方文档。




1.3Activiti的特点
1.数据持久化
Activiti的设计思想是简洁、快速。有过应用开发经验的开发人员都知道应用的瓶颈体现在和数据库交换数据的过程中,针对这一点Activiti选择了使用MyBatis,从而可以通过最优的SQL语句执行Command,仅凭如此就能让引擎在速度上保持最高的性能。
2.引擎Service接口
Activiti引擎提供了七大Service接口,均通过ProcessEngine获取,并且支持链式API编程风格。表1-1简单列出七个Service接口及其作用,具体使用会在后面的章节陆续介绍。
表1-1Activiti引擎的七大Service接口
Service接口作用
RepositoryService流程仓库Service,用于管理流程仓库,例如,部署、删除、读取流程资源
IdentifyService身份Service,可以管理和查询用户、组之间的关系
RuntimeService运行时Service,可以处理所有正在运行状态的流程实例、任务等
TaskService任务Service,用于管理、查询任务,例如,签收、办理、指派等
FormService表单Service,用于读取和流程、任务相关的表单数据
HistoryService历史Service,可以查询所有历史数据,例如,流程实例、任务、活动、变量、附件等
ManagementService引擎管理Service,和具体业务无关,主要是可以查询引擎配置、数据库、作业等
3.流程设计器
在jBPM4时代有专门的Eclipse插件可以用来设计jPDL,同样Activiti团队也专门设计了用来设计BPMN2.0规范的流程设计器—EclipseDesigner。此外还有Signavio公司为Activiti定制的基于Web的ActivitiModeler流程设计器。
4.原生支持Spring
Activiti原生支持Spring,这一点对企业应用来说尤为重要:可以很轻松地进行Spring集成,非常方便管理事务和解析表达式(Expression)。
5.分离运行时与历史数据
Activiti继承自jBPM4,在表结构设计方面也遵循运行时与历史数据的分离,这样的设计可以快速读取运行时数据,仅当需要查询历史数据时再从专门的历史数据表中读取。这种设计方式可以大幅提高数据的存取效率,尤其是当数据日积月累时依然能够快速反应。




1.4Activiti的应用
目前Activiti在国外已被很多厂商所使用,甚至有人专门成立了公司来培训Activiti的使用。Activiti在国内的发展正在呈直线趋势上升,已经成立了由很多热心的技术爱好者参与的技术社区。目前,很多新项目、新产品都开始采用Activiti作为新一代工作流引擎。
1.在系统集成方面应用
与ESB(EnterpriseServiceBus,企业服务总线)整合,例如Mule。
与规则引擎(RuleEngine)整合,例如JBossDrools。
嵌入已有系统平台,例如,很多公司都开发了自己的系统平台,在其中嵌入Activiti作为平台的一部分。
2.在其他产品中应用
Alfresco公司的ECM(EnterpriseContentManagement)产品Alfresco在企业中应用广泛,主要涉及文档管理、协作、记录管理、知识库管理、Web内容管理等。
如果企业或客户正在使用Alfresco管理文档,那么针对文档管理流程设计的流程定义可以直接部署在Alfresco上使用;如果之前没有接触过jBPM而现在学会了使用Activiti,那么不用再去学习其他的流程引擎。关于Activiti与jBPM的区别在1.6节会提到。
在Activiti没有发布之前一直使用jBPM作为流程引擎,在Activiti成熟以后Alfresco同时支持两者,当然在以后的某个时间可能会取消对jBPM的支持。




1.5Activiti架构与组件
Activiti架构中最重要的肯定是引擎,当然还有刚刚提到的外部工具和组件,如图1-2所示。
图1-2Activiti架构图
下面依次介绍Activiti架构图中的各个组件。
ActivitiEngine:作为最核心的模块,提供针对BPMN2.0规范的解析、执行、创建、管理(任务、流程实例)、查询历史记录并根据结果生成报表。
ActivitiModeler:是模型设计器,其并非由Activiti公司所开发,而是由业界认可的Signavio公司赠送的(Signavio原本是收费的产品,现在被免费授权给Activiti用户使用)。适用于业务人员把需求转换为规范流程定义。
ActivitiDesigner:功能和ActivitiModeler类似,同样提供了基于BPMN2.0规范的可视化设计功能,但是目前还没有完全支持BPMN规范的定义。适用于开发人员,可以把业务需求人员用Signavio设计的流程定义(XML格式)导入到Designer中,从而让开发人员将其进一步加工成为可以运行的流程定义。
ActivitiExplorer:可以用来管理仓库、用户、组,启动流程、任务办理等。此组件使用REST风格API(目的在于让开发人员快速入门),提供一个基础的设计模型。如果业务简单,也可以直接使用无需开发。还可以作为后台管理员的流程、任务管理系统使用。
ActivitiREST:提供Restful风格的服务,允许客户端以JSON的方式与引擎的RESTAPI交互,通用的协议具有跨平台、跨语言的特性。




1.6Activiti与jBPM5比较
目前流行的工作流引擎有Activiti和jBPM5,而在jBPM5发布以前大多数项目、平台都是基于jBPM3、jBPM4开发的。本节内容从技术和实际应用上对Activiti和jBPM5进行比较。表1-2从技术层面比较了两者的区别。
表1-2Activiti与jBPM5的技术层面对比
技术组成ActivitijBPM
ORM框架MyBatis3Hibernate3
持久化标准无EJBJPA规范
事务管理MyBatis自带/Spring集成事务Bitronix,基于JTA事务管理
数据库连接方式Jdbc/DataSourceJdbc/DataSource
Spring支持原生支持Spring,在流程中可以使用Spring代理的Bean作为表达式的一部分,并且支持JPA及事务管理默认没有提供对Spring的支持
支持的数据库Oracle、SQLServer、MySQL、H2、内存数据库等Oracle、SQLServer、MySQL、内存数据库等
设计模式命令模式、观察者模式等
内部服务通信Service间通过API调用基于ApacheMina异步通信
集成接口SOAP、Mule、RESTful消息通信
支持的流程格式BPMN2、xPDL、jPDL等(由PVM实现)目前仅只支持BPMN2xml
引擎核心PVM(流程虚拟机)Drools
技术前身jBPM3、jBPM4DroolsFlow
团队成员除了Alfresco公司的雇员之外还有Spring-Source、MuleSoft、Salves、Signavio、FuseSource、NextLevel等公司的员工加入有一个专门的团队,此外还有一些个人参与者
附加工具提供了基于Eclipse插件的流程设计器—EclipseDesigner,提供基于REST风格的ActivitiExplorer,可以用来管理仓库、用户、组、启动流程、任务办理等同样提供Eclipse插件和一个Web应用管理流程
发布周期固定每两个月发布一版,其中包括:引擎、EclipseDesigner、ActivitiExplorer、REST应用jBPM的发布周期相对来说不太固定,发布内容包括引擎及基于Eclipse的设计器
Activiti是基于jBPM4设计的衍生版本,如果选择Activiti可以继续沿用jBPM的思想理念设计、整合Activiti到项目或平台中,这也是相对于jBPM5来说的一个优势;相反,对于jBPM5来说要花点时间重新接受开发者的设计思想。
在各个流程引擎社区中有很多关于该如何选择Activiti和jBPM5的讨论,这两者有着很多相似的地方,争论主要是对规则引擎的支持:jBPM5是基于DroolFlow所有自然深度继承而来的规则引擎Drools;早期的Activiti功能比较简单,后来陆续添加的新特性也支持规则引擎Drools,开发人员只要简单配置规则接口即可达到与jBPM5一样的效果。




1.7本章小结
本章内容主要是以初识工作流和Activiti的角度去讲解什么是工作流、什么是Activiti。从Activiti项目的发起、特点、应用、架构,以及与其他同类产品比较的角度在概念层给读者一个引导和认识。
作为一个开发人员,能够知道为什么需要学习Activiti,Activiti能帮助企业解决什么问题,为什么要选择Activiti而不是其他的工作流引擎。
看到这里你或许会不耐烦了,会想起一句话:“Talkischeap.Showmethecode”。下一章将带领你体验Activit
……


本文出自:ouyida3的csdn blog

2015.3.20

分享本书《Activiti实战》和几个工作流的链接

标签:activiti   工作流   

原文地址:http://blog.csdn.net/ouyida3/article/details/44499067

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!