内容简介
《Activiti实战 》立足于实践,不仅让读者知其然,全面掌握Activiti架构、功能、用法、技巧和实践,广度足够;而且让读者知其所以然,深入理解Activiti的源代码实现、设计模式和PVM,深度也足够。
《Activiti实战 》一共四个部分:准备篇(1~2章)介绍了Activiti的概念、特点、应用、体系结构,以及开发环境的搭建和配置;基础篇(3~4章)先讲解了Activiti Modeler、Activiti Designer两种流程设计工具的详细使用,然后详细讲解了BPMN2.0规范;实战篇(5~14章)系统讲解了Activiti的用法、技巧和实践,包含流程定义、流程实例、任务、子流程、多实例、事件以及监听器等;篇(15~21)通过集成WebService、规则引擎、JPA、ESB等各种服务和中间件来阐述了Activiti不仅仅是引擎,实际上是一个BPM平台,还通过源代码对它的设计模式及PVM进行了分析。
目录
本书
前言
第一部分 准备篇
第1章 认识Activiti2
1.1 什么是Activiti2
1.2 工作流基础3
1.2.1 什么是BPM3
1.2.2 工作流生命周期4
1.2.3 什么是BPMN5
1.3 Activiti的特点5
1.4 Activiti的应用6
1.5 Activiti架构与组件7
1.6 Activiti与jBPM5比较8
1.7 本章小结9
第2章 搭建Activiti开发环境10
2.1 下载Activiti10
2.1.1 目录结构10
2.1.2 Javadocs12
2.2 环境配置检查14
2.2.1 检查并安装JDK14
2.2.2 检查并安装Ant14
2.2.3 检查并安装Maven15
2.3 配置文件介绍16
2.3.1 Activiti配置文件16
2.3.2 Maven配置文件17
2.4 Hello World18
2.4.1 单的流程定义18
2.4.2 创建单元测试类20
2.4.3 运行Hello World21
2.4.4 添加业务节点21
2.5 Activiti Explorer25
2.5.1 配置并运行Activiti Explorer25
2.5.2 使用Activiti Explorer26
2.6 本章小结29
第二部分 基 础 篇
第3章 流程设计工具32
3.1 基于B/S架构的流程设计器Activiti Modeler32
3.1.1 Activiti Modeler特点32
3.1.2 下载signavio-core-components33
3.1.3 配置打包与运行33
3.1.4 Windows用户打包36
3.1.5 设计请假流程37
3.1.6 导出bpmn2.0.xml41
3.2 在Activiti Explorer中使用Activiti Modeler41
3.3 基于Eclipse插件的流程设计器Activiti Designer44
3.3.1 Activiti Designer特点44
3.3.2 安装Activiti Designer45
3.3.3 设计流程46
3.3.4 自动化51
3.3.5 升级历史遗留的流程设计55
3.3.6 导入Activiti Modeler设计56
3.3.7 泳池与泳道57
3.3.8 在Activiti Designer中使用泳道与泳池58
3.4 本章小结60
第4章 Activiti与BPMN 2.0规范61
4.1 启动事件与结束事件62
4.1.1 启动事件62
4.1.2 结束事件66
4.2 顺序流69
4.2.1 标准顺序流69
4.2.2 条件顺序流69
4.3 任务70
4.3.1 用户任务70
4.3.2 脚本任务73
4.3.3 Java Service任务74
4.3.4Web Service任务75
4.3.5业务规则任务76
4.3.6邮件任务77
4.3.7Camel任务79
4.3.8Mule任务80
4.3.9手动任务81
4.3.10接收任务81
4.3.11Shell任务81
4.3.12多实例82
4.4网关85
4.4.1排他网关85
4.4.2并行网关87
4.4.3包容网关89
4.4.4事件网关90
4.5子流程与调用活动92
4.5.1子流程92
4.5.2 调用活动94
4.5.3 事件子流程95
4.5.4事务子流程97
4.6边界与中间事件98
4.6.1边界事件99
4.6.2中间捕获事件103
4.6.3中间抛出事件107
4.7监听器109
4.7.1执行监听器109
4.7.2任务监听器111
4.8本章小结112
第三部分实战篇
第5章用户与组及部署管理116
5.1用户与组116
5.1.1用户117
5.1.2组118
5.1.3用户与组的关系119
5.1.4用户任务中的用户与组120
5.2部署流程资源126
5.2.1classpath方式126
5.2.2InputStream方式128
5.2.3字符串方式128
5.2.4zip/bar格式压缩包方式129
5.3流程部署及资源读取131
5.3.1读取已部署流程定义133
5.3.2从客户端部署流程134
5.3.3读取流程定义的XML137
5.3.4读取流程定义的图片及图片中的中文乱码138
5.3.5删除部署143
5.4本章小结144
第6章 任务表单145
6.1动态表单145
6.1.1流程定义146
6.1.2单元测试151
6.1.3在Activiti Explorer中运行流程154
6.2实现自己的Activiti Explorer160
6.2.1完善身份验证功能160
6.2.2流程启动表单162
6.2.3任务签收与办理165
摘要与插图
第一部分
准备篇
工作流(Work Flow)引擎被广泛应用于各种信息化系统中,将原本散乱甚至混乱的业务梳理后制定成业务规范流程,进而约束业务的规范化处理和运转。需求人员、开发人员共同协作制定了符合BPMN 2.0规范的流程定义,之后将其部署到工作流引擎中,由它自动驱动业务流程的进行。
本部分作为准备篇,第1章先介绍了什么是Activiti及其历史背景,然后介绍工作流、BPM、BPMN等概念,使初次接触工作流的读者能快速认识相关概念及各种规范。第2章内容从搭建开发环境开始,之后又介绍了Activiti的Hello World,帮助读者快速入门。
第1章
认识Activiti
很多人对工作流(Workflow)应该不陌生。生活中到处都是活生生的“流”:在单位要请假,先要找领导审批,在领导审批通过之后申请才获准;从网上购物,下单的那一刻就已经触发了一条工作流,此时可以跟踪购物流程,什么时间下单、什么时间付款、什么时候发货、什么时候收到货,在快递单上签字的时候才等于一条工作流程结束了。
工作流应用广泛,在由任务驱动的各种系统中都能见到它的身影,例如,CRM、ERP、ECM、BI、OA等。在企业应用中还有很多产品或平台集成工作流引擎,用来处理系统运行过程中发起的业务流程。
工作流总是以任务(Task)的形式驱动人处理业务或者驱动业务系统自动完成作业。有了工作流引擎之后,我们不必一直等待其他人的工作进度,直白地说,我们只需要关心系统页的待办任务数即可,由系统提醒当前有多少待办任务需要处理。
1.1什么是Activiti
大家第一次接触Activiti的时候不理解它为什么要叫这个名字,从词典中也没有找到对它的解释。可能有人会想到另外一个单词Activity(活动),与Activiti仅一个字母之差。在工作流方面有些基础的读者或许能很快理解,业务流程由多个环节串联起来并且每个环节被赋予任务,而每个任务又可以分为多个活动。举个日常的例子—网上购物的下单环节,先需要搜索到要购买的商品,然后将其加入到购物车,下单填写邮寄地址并付款。这个例子中的每一动作都可以称为活动(Activity),也就是业务流程中的组成部分。多个活动在英文中肯定要用复数形式,即Activities;以复数化简的方式标示活动的集合,以此来诠释Activiti与工作流的目的与设计。
此项目是Tom Bayen(jBPM创始人)自2010年离开jBoss加入Alfresco公司后的又一力作:第一版在2010年5月发布,当时仅支持单的流程处理,之后的版本陆续完善了对BPMN 2.0规范的支持。
值得一提的是,参与项目开发的除了Tom Bayen和十几位核心开发人员之外,还有其他公司的员工参与,例如,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是Business Process Management的缩写,中文含义是业务流程管理,是一套达成企业各种业务环节整合的全面管理模式。
BPM是为了实现一定的经营目的而执行的一系列逻辑相关的活动的集合。业务流程的输出是满足市场需要的产品或服务。根据功能、管理范围等的