登入帳戶  | 訂單查詢  | 購物車/收銀台(0) | 在線留言板  | 付款方式  | 運費計算  | 聯絡我們  | 幫助中心 |  加入書簽
會員登入   新用戶登記
HOME新書上架暢銷書架好書推介特價區會員書架精選月讀2023年度TOP分類瀏覽雜誌 臺灣用戶
品種:超過100萬種各類書籍/音像和精品,正品正價,放心網購,悭钱省心 服務:香港台灣澳門海外 送貨:速遞郵局服務站

新書上架簡體書 繁體書
暢銷書架簡體書 繁體書
好書推介簡體書 繁體書

十月出版:大陸書 台灣書
九月出版:大陸書 台灣書
八月出版:大陸書 台灣書
七月出版:大陸書 台灣書
六月出版:大陸書 台灣書
五月出版:大陸書 台灣書
四月出版:大陸書 台灣書
三月出版:大陸書 台灣書
二月出版:大陸書 台灣書
一月出版:大陸書 台灣書
12月出版:大陸書 台灣書
11月出版:大陸書 台灣書
十月出版:大陸書 台灣書
九月出版:大陸書 台灣書
八月出版:大陸書 台灣書

『簡體書』Activiti实战(国内Activiti领域第一人撰写,Activiti项目负责人Tijs Rademakers高度认可并推荐,根据Activiti最新版本系统、深度讲解了BPM2.0规范,以及Activiti功能、用法、技巧、最佳实践和源代码分析)

書城自編碼: 2500564
分類:簡體書→大陸圖書→計算機/網絡软件工程/开发项目管理
作者: 闫洪磊
國際書號(ISBN): 9787111485957
出版社: 机械工业出版社
出版日期: 2014-12-18
版次: 1 印次: 1
頁數/字數: 489页
書度/開本: 16开 釘裝: 平装

售價:HK$ 231.4

我要買

share:

** 我創建的書架 **
未登入.


新書推薦:
可转债——新手理财的极简工具
《 可转债——新手理财的极简工具 》

售價:HK$ 66.7
新加坡教育:神话与现实
《 新加坡教育:神话与现实 》

售價:HK$ 98.9
“口袋中的世界史”第一辑·冷战中的危机事件
《 “口袋中的世界史”第一辑·冷战中的危机事件 》

售價:HK$ 299.0
绝美的奥伦堡蕾丝披肩编织
《 绝美的奥伦堡蕾丝披肩编织 》

售價:HK$ 181.7
狂飙年代:18世纪俄国的新文化和旧文化(第二卷)
《 狂飙年代:18世纪俄国的新文化和旧文化(第二卷) 》

售價:HK$ 177.0
万有引力书系 纳粹亿万富翁 德国财富家族的黑暗历史
《 万有引力书系 纳粹亿万富翁 德国财富家族的黑暗历史 》

售價:HK$ 112.7
中国常见植物野外识别手册:青海册
《 中国常见植物野外识别手册:青海册 》

售價:HK$ 78.2
三星堆对话古遗址(从三星堆出发,横跨黄河流域,长江流域,对话11处古遗址,探源多元一体的中华文明)
《 三星堆对话古遗址(从三星堆出发,横跨黄河流域,长江流域,对话11处古遗址,探源多元一体的中华文明) 》

售價:HK$ 89.7

 

建議一齊購買:

+

HK$ 133.5
《Spring实战(第4版)》
+

HK$ 133.5
《JavaEE开发的颠覆者: Spring Boot实战》
+

HK$ 127.7
《看透Spring MVC:源代码分析与实践》
+

HK$ 90.7
《Bootstrap实战》
+

HK$ 90.7
《Spring MVC学习指南》
+

HK$ 231.4
《Activiti实战(国内Activiti领域第一人撰写,A》
內容簡介:
《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进行了分析。
關於作者:
闫洪磊 资深软件开发工程师和架构师,为Activiti贡献了大量代码,为Activiti在中国的推广与普及做了大量的工作,在社群中有很高的威望和知名度,被称为中国Activiti领域的第一人。多年来一直从事OA、ERP等系统的开发与架构设计工作,持续关注并深入研究工作流引擎,目前就职于小马购车,担任架构师一职,并负责公司内部工作流平台的建设工作。
目錄
本书推荐
前言
第一部分 准备篇
第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 基于BS架构的流程设计器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.4zipbar格式压缩包方式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
6.2.4自定义表单的字段类型169
6.3 外置表单171
6.3.1流程定义172
6.3.2单元测试173
6.3.3自定义表单引擎174
6.3.4 读取流程启动表单175
6.3.5任务签收与办理179
6.4本章小结181
第7章 Activiti与容器集成182
7.1 流程引擎工厂182
7.1.1 创建引擎的方式182
7.1.2 配置 ProcessEngineFactory-Bean183
7.2 自动部署流程定义187
7.3 表达式189
7.3.1 表达式基础189
7.3.2 表达式示例190
7.3.3 使用Spring管理变量193
7.4 监听器195
7.5 Spring容器集成应用实例199
7.5.1 业务建模200
7.5.2 启动流程200
7.5.3 任务读取203
7.5.4 任务办理204
7.6 使用Spring注解初始化引擎208
7.6.1 使用@EnableActiviti注解208
7.6.2 使用Spring Boot初始化引擎210
7.7 CDI模块212
7.7.1 启动示例212
7.7.2 引擎配置与流程定义213
7.7.3 流程定义与启动214
7.7.4 任务办理与完成218
7.7.5 事件监听220
7.8 本章小结221
第8章 邮件服务222
8.1 配置与测试222
8.1.1 搭建邮件系统222
8.1.2 通过Activiti的邮件任务发送邮件226
8.1.3 使用Gmail发送邮件227
8.2 与业务集成229
8.2.1 即时发送邮件229
8.2.2 定时发送邮件231
8.3 本章小结233
第9章 多实例234
9.1 非用户任务234
9.2 用户任务多实例236
9.2.1 顺序方式办理236
9.2.2 并行方式办理237
9.2.3 设置结束条件238
9.3 应用实例—请假会签240
9.3.1 流程定义240
9.3.2 任务办理243
9.4 审批意见245
9.5 本章小结247
第10章 子流程与调用活动248
10.1 子流程249
10.1.1 流程定义250
10.1.2 流程办理253
10.1.3 分析流程数据255
10.2 调用活动256
10.2.1 流程定义256
10.2.2 单元测试258
10.2.3 流程办理259
10.2.4 分析流程数据260
10.3 事件子流程261
10.3.1 流程定义262
10.3.2 单元测试263
10.4 多实例支持264
10.5 本章小结266
第11章 事件267
11.1 启动事件267
11.1.1 定时启动事件267
11.1.2 消息启动事件271
11.2 结束事件274
11.3 边界事件276
11.3.1 异常边界事件276
11.3.2 消息边界事件278
11.3.3 信号边界事件282
11.4 中间事件284
11.5 本章小结286
第12章 用户任务与附件287
12.1 用户任务288
12.1.1 改进任务列表288
12.1.2 改进任务表单289
12.1.3 任务相关人员291
12.1.4 反签收任务295
12.1.5 候选人与候选组296
12.1.6 改进任务查询298
12.2 子任务299
12.3 手动任务302
12.4 附件303
12.5 改进意见列表305
12.6 任务委派307
12.6.1 单元测试308
12.6.2 任务表单中的委派309
12.7 本章小结310
第13章 流程数据查询与跟踪312
13.1 Query API简介312
13.2 运行时数据查询314
13.2.1 任务查询314
13.2.2 查询参与的流程317
13.3 流程图跟踪320
13.4 历史数据查询325
13.4.1 查询历史活动及表单325
13.4.2 查询已归档流程326
13.5 基于MyBatis的CustomSql查询327
13.5.1 定义Mapper接口329
13.5.2 展示数据330
13.6 本章小结330
第14章 管理员特性331
14.1 流程状态331
14.1.1 流程定义状态331
14.1.2 作业查询334
14.1.3 流程实例状态336
14.2 作业管理338
14.2.1 作业执行原理339
14.2.2 作业执行异常339
14.2.3 独占与异步341
14.3 删除流程实例345
14.4 流程定义权限控制347
14.4.1 权限拦截347
14.4.2 设置候选启动人和候选启动组349
14.4.3 读取候选启动数据351
14.5 读取引擎属性353
14.6 数据库查询353
14.7 用户与组355
14.8 本章小结356
第四部分 高级篇
第15章 集成WebService358
15.1发布WebService服务359
15.2在流程中定义WebService任务362
15.3 在流程中调用WebService364
15.4本章小结365
第16章 集成规则引擎367
16.1 定义流程与规则367
16.1.1部署规则文件369
16.1.2单元测试369
16.2本章小结371
第17章 集成JPA372
17.1配置JPA372
17.1.1Standalone模式373
17.1.2Spring模式373
17.2JPA版本的请假流程374
17.2.1启动流程时持久化JPA实体375
17.2.2更改JPA实体属性378
17.2.3清理历史表单数据381
17.3本章小结382
第18章 集成ESB383
18.1Camel简介与快速入门383
18.2在流程中调用Camel385
18.2.1Camel依赖及配置386
18.2.2定义Camel路由387
18.2.3执行单元测试388
18.2.4URI输入参数388
18.2.5URI输出参数390
18.3异步Camel任务391
18.4在Camel中启动流程391
18.5集成Mule392
18.5.1Mule快速入门393
18.5.2Mule、Spring与Activiti集成394
18.5.3在流程中调用Mule396
18.6本章小结398
第19章 统一身份管理399
19.1一套典型的身份系统399
19.2引擎身份接口方式401
19.3用视图代替物理表406
19.4集成LDAP406
19.5本章小结409
第20章 REST服务410
20.1通信协议简介410
20.2REST API概述411
20.3发布REST API413
20.3.1通过浏览器访问414
20.3.2通过HttpClient访问415
20.3.3通过Restlet访问416
20.3.4通过Apache CXF访问417
20.4集成REST API417
20.4.1依赖及配置文件418
20.4.2通过Ajax访问419
20.5完整示例420
20.5.1部署流程421
20.5.2查询Deployment422
20.5.3查询流程定义423
20.5.4启动流程424
20.5.5读取流程变量428
20.5.6查询任务429
20.5.7签收任务431
20.5.8完成任务431
20.5.9查询历史数据433
20.6集成流程图跟踪组件Diagram Viewer434
20.6.1准备资源文件434
20.6.2准备配置文件434
20.6.3访问Diagram Viewer跟踪流程435
20.7基于REST服务搭建流程中心437
20.7.1基础架构438
20.7.2表单模式选型439
20.7.3统一的组件440
20.7.4事务管理440
20.8集成流程设计器Activiti Modeler440
20.8.1准备资源文件441
20.8.2准备配置文件442
20.8.3更改默认配置443
20.8.4创建模型443
20.8.5导出模型的流程XML445
20.8.6把模型转换为流程定义446
20.8.7把流程定义转换为模型447
20.8.8删除模型449
20.9本章小结449
第21章 入侵Activiti450
21.1解析BPMN文件450
21.1.1BpmnModel对象与XML之间的转换451
21.1.2动态创建流程454
21.1.3BPMN解析处理器457
21.2全局事件处理器461
21.2.1定义事件处理器463
21.2.2处理捕获的事件467
21.2.3事件处理器的异常处理469
21.2.4动态注册事件处理器470
21.2.5任务自动转办471
21.2.6事件日志474
21.3命令与拦截器477
21.3.1命令与拦截器运行机制478
21.3.2自定义命令480
21.3.3命令拦截器482
21.4流程虚拟机—PVM484
21.4.1简述PVM484
21.4.2Hello PVM484
21.4.3PVM进阶487
21.5本章小结489
內容試閱
第一部分
准备篇
工作流(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是为了实现一定的经营目的而执行的一系列逻辑相关的活动的集合。业务流程的输出是满足市场需要的产品或服务。根据功能、管理范围等的不同,企业流程管理一般分为生产流程层、运作层、计划层和战略层四个层次。BMP是根据业务环境的变化,推进人与人之间、人与系统之间,以及系统与系统之间的整合及调整的经营方法与解决方案的IT工具。
BPM最早是由工作流和企业应用集成(Enterprise Application Intergration)逐步融合而发展起来的,当时是为了满足无纸化办公需求(这也是最早的需求之一)。笔者早期参与OA系统开发时曾经见到过“原始的”工作流—没有工作流引擎,整个流程均使用一系列单独为不同任务节点设计的页面串联起来,完成一个节点后在数据库标记当前任务的名称,以此做到“流程驱动”。
随着时间的推移,BPM的定义范围逐步扩展,不仅用来满足无纸化办公需求,现在BPM是一种企业集成技术,作为对面向服务系统架构SOA(Service-Oriented Architecture)、企业应用集成EAI Enterprise Application Integration、企业服务总线ESB(Enterprise Service Bus)的补充。
从概念上来说,BPM包含两个不同方面的意思:管理规范和软件工程。各大BPM供应商长期以来试图抽象这两个不同的方面,但是依然混乱。
作为管理规范,BPM是每一个战略管理者的责任。BPM是组织必须执行的核心业务流程,包含了企业价值和如何提供其实现。作为日常工作的一部分,业务系统可以借助模型和流程规范地定义业务流程。BPM流程图表达的是执行流程的步骤,已完成特定目标。特别说明的是这些模型用于人与人的沟通。这些都是诠释未决的,这意味着它们可以包含更高级别有价值的信息而不包括不必要的细节。这种诠释未决的过程模型也被称为抽象业务流程(Abstract Business Processes.)。
BPM作为软件工程时可以由BPM系统(BPMS)执行可执行的业务流程。可执行的业务流程是在一个流程基础上表示不同的流程顺序。流程图完全可以看做一个抽象的业务流程。可执行流程不同于抽象业务流程,因为它总是以最简单的方式运行。这部分内容也是被大多数厂商认同并接受的。
1.2.2工作流生命周期
一个完整的工作流生命周期会经过5步,并且迭代循环,如图1-1所示。
定义:工作流生命周期总是从流程定义开始。此阶段的任务主要是收集业务需求并转化为流程定义。一般由业务需求人员进行,然后交由开发人员加工转化为计算机可以识别的流程定义。
发布:由开发人员打包各种资源,然后在系统管理(平台)中发布流程定义。在具体的流程引擎中包括流程定义文件(bpmn20.xml结尾)、自定义表单、任务监听类。
执行:具体的流程引擎(例如,Activiti)按照事先定义的流程处理路线以任务驱动的方式执行业务流程。
监控:此阶段是依赖执行阶段。业务人员在办理任务的同时收集每个任务(Task)的结果,然后根据结果做出相应处理,例如,在采购办公用品流程中,在通过领导审批之后,采购人员就要根据申请单外出采购。
优化:在此阶段,一个完整的流程已经结束,或许能满足业务需求,或许需要优化,而糟糕的情况是需要重新设计(流程没结束就异常终止),优化与设计正是此阶段需要处理的。根据整个流程的运行过程结果分析问题的根源,然后在此基础上进一步改进,并再次开始一个新的周期。
1.2.3什么是BPMN
Business Process Modeling Notation,简称BPMN,中文译为业务流程建模标注,是由BPMN标准组织发布的,其第一版BPMN 1.0规范于2004年5月发布。经过多年的改进新的规范BPMN 2.0于2011年发布。之后各大厂商、开源社区均基于2.0规范设计自己的流程引擎,结束了各个厂商“各自为政”的局面,相应地统一了标准,从而利于以后的产品迁移。
BPMN定义了业务流程图,其基于流程图技术,同时对创建业务流程操作的图形化模型进行了裁减。业务流程的模型就是图形化对象的网图,包括活动(也可以说工作)和定义操作顺序的流控制。
在BPMN 1.x版本中的一些概念,如人工任务、可以执行脚本、自动决策等,都是独立于供应商的可视化标准化的方式。在BPMN 2.0规范中重点聚焦在如何执行语义和一个被业界认可的通用交换格式。这意味着基于BPMN 2.0的流程建模不仅在流程设计器上可以通用,还可以在任何符合BPMN 2.0规范的流程引擎上执行。
关于BPMN的细节内容有很多,官方文档足足有500多页,本书会在第4章介绍Activiti支持的BPMN 2.0规范以及Activiti在BPMN 2.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团队也专门设计了用来设计BPMN 2.0规范的流程设计器—Eclipse Designer。此外还有Signavio公司为Activiti定制的基于Web的Activiti Modeler流程设计器。
4. 原生支持Spring
Activiti原生支持Spring,这一点对企业应用来说尤为重要:可以很轻松地进行Spring集成,非常方便管理事务和解析表达式(Expression)。
5. 分离运行时与历史数据
Activiti继承自jBPM4,在表结构设计方面也遵循运行时与历史数据的分离,这样的设计可以快速读取运行时数据,仅当需要查询历史数据时再从专门的历史数据表中读取。这种设计方式可以大幅提高数据的存取效率,尤其是当数据日积月累时依然能够快速反应。
1.4Activiti的应用
目前Activiti在国外已被很多厂商所使用,甚至有人专门成立了公司来培训Activiti的使用。Activiti在国内的发展正在呈直线趋势上升,已经成立了由很多热心的技术爱好者参与的技术社区。目前,很多新项目、新产品都开始采用Activiti作为新一代工作流引擎。
1. 在系统集成方面应用
与ESB(Enterprise Service Bus,企业服务总线)整合,例如Mule。
与规则引擎(Rule Engine)整合,例如JBoss Drools。
嵌入已有系统平台,例如,很多公司都开发了自己的系统平台,在其中嵌入Activiti作为平台的一部分。
2. 在其他产品中应用
Alfresco公司的ECM(Enterprise Content Management)产品Alfresco在企业中应用广泛,主要涉及文档管理、协作、记录管理、知识库管理、Web内容管理等。
如果企业或客户正在使用Alfresco管理文档,那么针对文档管理流程设计的流程定义可以直接部署在Alfresco上使用;如果之前没有接触过jBPM而现在学会了使用Activiti,那么不用再去学习其他的流程引擎。关于Activiti与jBPM的区别在1.6节会提到。
在Activiti没有发布之前一直使用jBPM作为流程引擎,在Activiti成熟以后Alfresco同时支持两者,当然在以后的某个时间可能会取消对jBPM的支持。
1.5Activiti架构与组件
Activiti架构中最重要的肯定是引擎,当然还有刚刚提到的外部工具和组件,如图1-2所示。
图 1-2Activiti架构图
下面依次介绍Activiti架构图中的各个组件。
Activiti Engine:作为最核心的模块,提供针对BPMN 2.0规范的解析、执行、创建、管理(任务、流程实例)、查询历史记录并根据结果生成报表。
Activiti Modeler:是模型设计器,其并非由Activiti公司所开发,而是由业界认可的Signavio公司赠送的(Signavio原本是收费的产品,现在被免费授权给Activiti用户使用)。适用于业务人员把需求转换为规范流程定义。
Activiti Designer:功能和Activiti Modeler类似,同样提供了基于BPMN 2.0规范的可视化设计功能,但是目前还没有完全支持BPMN规范的定义。适用于开发人员,可以把业务需求人员用Signavio设计的流程定义(XML格式)导入到Designer中,从而让开发人员将其进一步加工成为可以运行的流程定义。
Activiti Explorer:可以用来管理仓库、用户、组,启动流程、任务办理等。此组件使用REST风格API(目的在于让开发人员快速入门),提供一个基础的设计模型。如果业务简单,也可以直接使用无需开发。还可以作为后台管理员的流程、任务管理系统使用。
Activiti REST:提供Restful风格的服务,允许客户端以JSON的方式与引擎的REST API交互,通用的协议具有跨平台、跨语言的特性。
1.6Activiti与jBPM5比较
目前流行的工作流引擎有Activiti和jBPM5,而在jBPM5发布以前大多数项目、平台都是基于jBPM3、jBPM4开发的。本节内容从技术和实际应用上对Activiti和jBPM5进行比较。表1-2从技术层面比较了两者的区别。
表1-2Activiti与jBPM5的技术层面对比
技 术 组 成 Activiti jBPM
ORM框架  MyBatis3  Hibernate3
持久化标准  无  EJB JPA规范
事务管理  MyBatis自带Spring集成事务  Bitronix,基于JTA事务管理
数据库连接方式  JdbcDataSource  JdbcDataSource
Spring支持  原生支持Spring,在流程中可以使用Spring代理的Bean作为表达式的一部分,并且支持JPA及事务管理  默认没有提供对Spring的支持
支持的数据库  Oracle、SQL Server、MySQL、H2、内存数据库等  Oracle、SQL Server、MySQL、内存数据库等
设计模式  命令模式、观察者模式等
内部服务通信  Service间通过API调用  基于Apache Mina异步通信
集成接口  SOAP、Mule、RESTful  消息通信
支持的流程格式  BPMN2、xPDL、jPDL等(由PVM实现)  目前仅只支持BPMN2 xml
引擎核心  PVM(流程虚拟机)  Drools
技术前身  jBPM3、jBPM4  Drools Flow
团队成员  除了Alfresco公司的雇员之外还有Spring-Source、MuleSoft、Salves、Signavio、FuseSource、NextLevel等公司的员工加入  有一个专门的团队,此外还有一些个人参与者
附加工具  提供了基于Eclipse插件的流程设计器—Eclipse Designer,提供基于REST风格的Activiti Explorer,可以用来管理仓库、用户、组、启动流程、任务办理等  同样提供Eclipse插件和一个Web应用管理流程
发布周期  固定每两个月发布一版,其中包括:引擎、Eclipse Designer、Activiti Explorer、REST应用  jBPM的发布周期相对来说不太固定,发布内容包括引擎及基于Eclipse的设计器
Activiti是基于jBPM4设计的衍生版本,如果选择Activiti可以继续沿用jBPM的思想理念设计、整合Activiti到项目或平台中,这也是相对于jBPM5来说的一个优势;相反,对于jBPM5来说要花点时间重新接受开发者的设计思想。
在各个流程引擎社区中有很多关于该如何选择Activiti和jBPM5的讨论,这两者有着很多相似的地方,争论主要是对规则引擎的支持:jBPM5是基于Drool Flow所有自然深度继承而来的规则引擎Drools;早期的Activiti功能比较简单,后来陆续添加的新特性也支持规则引擎Drools,开发人员只要简单配置规则接口即可达到与jBPM5一样的效果。
1.7本章小结
本章内容主要是以初识工作流和Activiti的角度去讲解什么是工作流、什么是Activiti。从Activiti项目的发起、特点、应用、架构,以及与其他同类产品比较的角度在概念层给读者一个引导和认识。
作为一个开发人员,能够知道为什么需要学习Activiti,Activiti能帮助企业解决什么问题,为什么要选择Activiti而不是其他的工作流引擎。
看到这里你或许会不耐烦了,会想起一句话:“Talk is cheap. Show me the code”。下一章将带领你体验Activit

 

 

書城介紹  | 合作申請 | 索要書目  | 新手入門 | 聯絡方式  | 幫助中心 | 找書說明  | 送貨方式 | 付款方式 香港用户  | 台灣用户 | 海外用户
megBook.com.hk
Copyright © 2013 - 2024 (香港)大書城有限公司  All Rights Reserved.