{{sellerTotalView > 1 ? __("sellers", {number: sellerTotalView}) : __("seller", {number: sellerTotalView}) }}, {{numTotalView > 1 ? __("items", {number: numTotalView}) : __("item", {number: numTotalView}) }}
free FREE

Change Your Zip Code

Inventory information and delivery speeds may vary for different locations.

Location History

{{email ? __('Got it!') : __('Restock Alert')}}

We will notify you by email when the item back in stock.

Cancel
Yami

Jingdong book

Activiti实战

{{buttonTypePin == 3 ? __("Scan to view more PinGo") : __("Scan to start")}}

Activiti实战

{{__(":people-members", {'people': item.limit_people_count})}} {{ itemCurrency }}{{ item.valid_price }} {{ itemCurrency }}{{ item.invalid_price }} {{ itemDiscount }}
Ends in
{{ itemCurrency }}{{ item.valid_price }}
{{ itemCurrency }}{{ priceFormat(item.valid_price / item.bundle_specification) }}/{{ item.unit }}
{{ itemDiscount }}
{{ itemCurrency }}{{ item.valid_price }} {{ itemCurrency }}{{ priceFormat(item.valid_price / item.bundle_specification) }}/{{ item.unit }} {{ itemCurrency }}{{ item.invalid_price }} {{itemDiscount}}
{{ itemCurrency }}{{ item.valid_price }}
Sale ends in
Sale will starts after Sale ends in
{{ getSeckillDesc(item.seckill_data) }}
{{ __( "Pay with Gift Card to get sale price: :itemCurrency:price", { 'itemCurrency' : itemCurrency, 'price' : (item.giftcard_price ? priceFormat(item.giftcard_price) : '0.00') } ) }} ({{ itemCurrency }}{{ priceFormat(item.giftcard_price / item.bundle_specification) }}/{{ item.unit }}) Details
Best before

Currently unavailable.

We don't know when or if this item will be back in stock.

Unavailable in your area.
Sold Out

Details

Full product details
Editer Recommend

《Activiti实战》是国内Activiti领域第1人撰写,Activiti项目负责人Tijs Rademakers高度认可并推荐;
《Activiti实战》根据Activiti新版本系统、深度讲解了BPMN2.0规范,以及Activiti功能、用法、技巧、实践和源代码分析。

Content Description

《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进行了分析。

Author Description

闫洪磊,资深软件开发工程师和架构师,为Activiti贡献了大量代码,为Activiti在中国的推广与普及做了大量的工作,在社群中有很高的威望和知名度,被称为中国Activiti领域的第1人。多年来一直从事OA、ERP等系统的开发与架构设计工作,持续关注并深入研究工作流引擎,目前就职于小马购车,担任架构师一职,并负责公司内部工作流平台的建设工作。
Comments

★长期以来,Henry Yan通过他的社区及博客一直致力于在中国广泛推广Activiti,为Activiti项目做出了巨大(或宝贵)贡献。
很高兴看到他的《Activiti实战》一书将为Activiti 的中国使用者及开发者提供非常多的重要价值。在Activiti项目方面,Henry Yan具有非常专业的背景经验,在此,我向各位包括已经在使用Activiti的开发者及Activiti新手极力推荐此书。
——Tijs Rademakers,Activiti 项目负责人
Catalogue

第一部分准备篇
第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.5Spring容器集成应用实例
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.7CDI模块
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.1Query 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本章小结

Book Abstract

第一部分
准备篇

工作流(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事务管理
数据库连接方式 Jdbc/DataSource Jdbc/DataSource
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”。下一章将带领你体验Activiti的Hello World。
……
Introduction

为什么要写这本书
2011年年末,公司承接了一个保险类的业务系统,包含处理核心业务的ERP系统以及日常办公的OA系统,很明显这两种类型的系统都离不开工作流引擎的支持。我用一周时间对比了几个开源的工作流引擎,最后决定使用Activiti作为整套系统的工作流引擎。
现在回想起来,当初的学习过程是多么的“痛苦”啊!当时Activiti才刚满周岁,除了官方提供的尚能看得过去的用户手册之外,再无其他资料可供参考,这对于国内开发者来说尤为痛苦。仅有的用户手册全部都是英文的,为了学习Activiti只能打开翻译软件硬着头皮把手册看了一遍,当然也离不开打入引擎内部的利器—Javadocs。幸运的是,我的第一份工作(3年时间)是为政府单位开发OA系统,这有助于理解在学习Activiti过程中遇到的一些概念性的内容,在此基础上前后花了一周时间写出了第一个在本书中被讲“烂”掉的请假流程。
国内很多技术爱好者都会使用IM软件或论坛建立技术交流社区,也有一些人开设博客撰写相关技术文章。在开始学习Activiti时,很多人都尝试着去寻找这样的社区,结果由于社区规模小、热度不高,常听到学习资料匮乏以及没有成熟的Demo可供参考这样的声音。我喜欢研究技术也乐于分享,从08年就开始以博客的形式分享一些技术学习心得,在基本掌握Activiti的使用方法后就响应社区的号召在GitHub上公开了Activiti入门Demo项目—kft-activiti-demo,并在个人博客上发布了几篇与Activiti有关的博文。随着国内使用Activiti的企业越来越多,使得Activiti中文社区活跃度大大增加。最初我要花不少时间回答社区中提出的有关Activiti的问题,长此以往,同一个问题每天要回答多次,而且kft-activiti-demo也太过简单,只能作为入门参考,为了能系统地介绍Activiti,就萌发了撰写一本关于Activiti的书籍的想法。
在2012年6月,机械工业出版社华章公司的首席策划杨福川联系我,表示有意向出版一本Activiti方面的书籍。我们一拍即合,于是就有了这本书,这也让我相信机会是留给有准备的人的。这本书原本预计一年完成,不过由于工作与家庭的原因,在2013年一度中断了大半年,导致这本书的难产。在此也对期待已久的读者说声对不起,同时也是因为你们给予的支持与压力促使我最终完成这本书。
在学习和使用Activiti的过程中也遇到了一些Bug或功能缺陷,例如基本上每个初学者都会遇到的流程图中文乱码问题。对于这些问题最初会通过Bug跟踪系统向官方提交问题,在Activiti的源码从SVN切换到GitHub后就可以很方便地让全球的开发者参与进来。笔者也借助GitHub这个平台为Activiti贡献了一些代码,借此机会也呼吁技术爱好者多多参与开源。
读者对象
本书以“理论+实战”的方式引导读者学习,不仅介绍如何使用Activiti,还详细介绍了其遵循的BPMN 2.0规范,所以无论读者是以技术为主还是以业务需求为主,都适合阅读本书。虽然本书中大部分示例都是B/S架构,但不表示Activiti不能在C/S架构中使用。另外,Activiti也不是只针对Java语言的,被其官方定义为BPM平台,借助REST也可以让非Java语言的系统使用Activiti。
适合阅读本书的读者有以下几类:
Activiti用户和爱好者
Activiti代码贡献者
流程引擎相关的项目经理或者需求人员
Activiti开发者,或运维人员
使用Activiti开发流程平台的公司
如何阅读本书
本书分为四大部分:
第一部分(第1、2章)为准备篇,介绍整个体系结构及其特点,并为后面的内容配置开发环境。
第二部分(第3、4章)为基础篇,介绍两种流程设计器的使用,以及BPMN 2.0规范。
第三部分(第5~14章)为实战篇,本书中内容最多的部分,该部分以实战为主,包括流程定义、流程实例、任务、子流程、多实例、事件以及监听器等。
第四部分(第15~21章)为高级篇,通过集成各种服务、中间件来阐述Activiti不仅是引擎,更是一个BPM平台,最后还深入源码内部剖析Activiti的设计模式及PVM。
勘误和支持
由于笔者的水平有限,加之编写时间仓促,书中难免会出现一些错误或不准确的地方,恳请读者批评指正。为此,特意创建一个在线支持与应急方案的站点https://www.kafeitu.me/activiti-in-action.html。大家可以将书中的错误发布在Bug勘误表页面中,同时,在遇到任何问题时,你可以访问其Q&A页面,笔者将尽量在线上为你提供最满意的解答。书中的全部源文件除可以从华章网站下载外,还可以从笔者提供的这个网址下载,笔者也会将相应的功能更新及时更正出来。如果你有更多的宝贵意见,也欢迎发送邮件至邮箱yanhonglei@gmail.com,期待能够得到你们的真挚反馈。
致谢
首先要感谢Tom Beayens发起了这么优秀的开源项目,以及Alfresco公司Tijs Rademakers带领的Activiti团队对此项目的无偿贡献与支持。
感谢Activiti中文社区中每一位充满激情的朋友—袁启勋、临远、翔子、姜维、王垒、于广岳、第二少、小股东、陈浩、jackyrong、卖字母为生,以及名单之外的更多朋友,感谢他们长期以来对社区的支持和贡献。
感谢机械工业出版社华章公司的编辑杨福川和姜影,我始终坚信专业的事找专业的人做,两位在这两年的时间中从各个方面支持我的写作,他们的鼓励和帮助引导我顺利完成全部书稿。
感谢我的驴友们,和他们一起登山探险让我精神得以放松,希望以后的空余时间我们继续用双脚丈量大地。
最后感谢我的家人,感谢他们对我的支持和鼓励。
谨以此书献给我最亲爱的家人,以及众多热爱Activiti的朋友们!
闫洪磊(咖啡兔)
于上海

Specifications

Brand Jingdong book
Brand Origin China

Disclaimer

Product packaging, specifications and price are subject to change without notice. All information about the products on our website is provided for information purposes only. Please always read labels, warnings and directions provided with the product before use.

View Full Terms of Use
Add to favorites
{{ $isZh ? coupon.coupon_name_sub : coupon.coupon_ename_sub | formatCurrency }}
{{__("Buy Directly")}} {{ itemCurrency }}{{ item.directly_price }}
Quantity
{{ quantity }}
{{ instockMsg }}
{{ limitText }}
{{buttonTypePin == 3 ? __("Scan to view more PinGo") : __("Scan to start")}}
Sold by JD@CHINA
Ship to
{{ __("Ship to United States only") }}
Free shipping over 69
Genuine guarantee

Added to Cart

Keep Shopping

More to Consider

{{ item.brand_name }}

{{ item.item_name }}

{{ item.currency }}{{ item.market_price }}

{{ item.currency }}{{ item.unit_price }}

{{ item.currency }}{{ item.unit_price }}

Coupons

{{ coupon.coupon_name_new | formatCurrency }}
Clip Clipped Over
{{ getCouponDescStr(coupon) }}
{{ coupon.use_time_desc }}
Expires soon {{ formatTime(coupon.use_end_time) }}

Share this item with friends

Cancel

Yami Gift Card

Get this exclusive deal when paying with gift card

Terms and Conditions

Gift card deals are special offers for selected products;

The gift card deals will automatically be activated if a customer uses gift card balance at check out and the balance is sufficient to pay for the total price of the shopping cart products with gift card deals;

You will not be able to activate the gift card deals if you choose other payment methods besides gift card. The products will be purchased at their normal prices;

If your account balance is not enough to pay for the products with gift card deals, you can choose to reload your gift card balance by clicking on the Reload button at either shopping cart page or check out page;

Products that have gift card deals can be recognized by a special symbol showing 'GC Deal';

For any additional questions or concerns, please contact our customer service;

Yamibuy reserves the right of final interpretation.

Sold by Yami

Service Guarantee

Yami Free Shipping over $49
Yami Easy Returns
Yami Ships from United States

Shipping

  • United States

    Standard Shipping is $5.99 (Excluding Alaska & Hawaii). Free on orders of $49 or more.

    Local Express is $5.99 (Available in Parts of CA, NJ, MA & PA). Free on orders of $49 or more.

    2-Day Express (Includes Alaska & Hawaii) starts at $19.99.

Return Policy

Yami is committed to provide our customers with a peace of mind when purchasing from us. Most items shipped from Yamibuy.com can be returned within 30 days of receipt of shipment (For Food, Beverages, Snacks, Dry Goods, Health supplements, Fresh Grocery and Perishables Goods, within 7 days of receipt of shipment due to damages or quality issues; To ensure that every customer receives safe and high-quality products, we do not provide refunds or returns for beauty products once they have been opened or used, except in the case of quality issues; Some products may have different policies or requirements associated with them, please see below for products under special categories, or contact Yami Customer Service for further assistance).
Thank you for your understanding and support.

Learn More

Sold by Yami

Terms and Conditions of Yami E-Gift Card

If you choose “Redeem automatically” as your delivery method, your gift card balance will be reload automatically after your order has been processed successfully;

If you choose “Send to Email”as your delivery method, the card number and CVV will be sent to the email address automatically;

Any user can use the card number and CVV to redeem the gift card, please keep your gift card information safely. If you have any trouble receiving email, please contact Yami customer service;

Yami gift card can be used to purchase both Yami owned or Marketplace products;

Yami gift card will never expire;

Yami gift card balance does not have to be used up at once;

All rights reserved by Yami.

Return Policy

Gift card that has already been consumed is non-refundable.

Sold by JD@CHINA

Service Guarantee

Yami Free Shipping over $49
Yami Easy Returns
Yami Ships from United States

Shipping

  • United States

    Standard Shipping is $5.99 (Excluding Alaska & Hawaii). Free on orders of $49 or more.

    Local Express is $5.99 (Available in Parts of CA, NJ, MA & PA). Free on orders of $49 or more.

    2-Day Express (Includes Alaska & Hawaii) starts at $19.99.

Return Policy

You may return product within 30 days upon receiving the product. Items returned must be new in it's original packing, including the original invoice for the purchase. Customer return product at their own expense.

Sold by JD@CHINA

Service Guarantee

Yami Cross-store Free Shipping over $69
Yami 30-days Return

Yami-China FC

Yami has a consolidation warehouse in China which collects multiple sellers’ packages and combines to one order. Our Yami consolidation warehouse will directly ship the packages to your door. Cross-store free shipping over $69.

Return Policy

You may return products within 30 days upon receiving the products. Sellers take responsibilities for any wrong shipment or missing items. Packing needs to be unopened for any other than quality issues return. We promise to pack carefully, but because goods are taking long journey to destinations, simple damages to packaging may occur. Any damages not causing internal goods quality problems are not allowed to return. If you open the package and any quality problem is found, please contact customer service within three days after receipt of goods.

Shipping Information

Yami Consolidation Service Shipping Fee $9.99(Free shipping over $69)

Sellers in China will ship their orders within 1-2 business days once the order is placed. Packages are sent to our consolidation warehouse in China and combined there. Our Yami consolidation warehouse will directly ship the packages to you via UPS. The average time for UPS to ship from China to the United States is about 10 working days and it can be traced using the tracking number. Due to the pandemic, the delivery time may be delayed by about 5 days. The package needs to be signed by the guest. If the receipt is not signed, the customer shall bear the risk of loss of the package.

Sold by JD@CHINA

Service Guarantee

Free shipping over 69
Genuine guarantee

Shipping

Yami Consolidated Shipping $9.99(Free shipping over $69)


Seller will ship the orders within 1-2 business days. The logistics time limit is expected to be 7-15 working days. In case of customs clearance, the delivery time will be extended by 3-7 days. The final receipt date is subject to the information of the postal company.

Yami Points information

All items are excluding from any promotion or points events on Yamibuy.com

Return Policy

You may return product within 30 days upon receiving the product. Items returned must be new in it's original packing, including the original invoice for the purchase. Customer return product at their own expense.

Yami

Download the Yami App

Back Top

Recommended for You

About the brand

Jingdong book

为您推荐

Yami
欣葉
2种选择
欣叶 御大福 芋头麻薯 180g

周销量 600+

$1.66 $1.99 83折
Yami
欣葉
2种选择
欣叶 御大福 芋头麻薯 180g

周销量 600+

$1.66 $1.99 83折
Yami
欣葉
2种选择
欣叶 御大福 芋头麻薯 180g

周销量 600+

$1.66 $1.99 83折
Yami
欣葉
2种选择
欣叶 御大福 芋头麻薯 180g

周销量 600+

$1.66 $1.99 83折
Yami
欣葉
2种选择
欣叶 御大福 芋头麻薯 180g

周销量 600+

$1.66 $1.99 83折
Yami
欣葉
2种选择
欣叶 御大福 芋头麻薯 180g

周销量 600+

$1.66 $1.99 83折

Reviews{{'('+ commentList.posts_count + ')'}}

Have your say. Be the first to help other guests.

Write a review
{{ totalRating }} Write a review
  • {{i}} star

    {{i}} stars

    {{ parseInt(commentRatingList[i]) }}%

Yami Yami
{{ comment.user_name }}

{{ showTranslate(comment) }}Show Less

{{ strLimit(comment,800) }}Show more

Show Original

{{ comment.content }}

Yami
Show All

{{ formatTime(comment.in_dtm) }} VERIFIED PURCHASE {{groupData}}

{{ comment.likes_count }} {{ comment.likes_count }} {{ comment.reply_count }} {{comment.in_user==uid ? __('Delete') : __('Report')}}
Yami Yami
{{ comment.user_name }}

{{ showTranslate(comment) }}Show Less

{{ strLimit(comment,800) }}Show more

Show Original

{{ comment.content }}

Yami
Show All

{{ formatTime(comment.in_dtm) }} VERIFIED PURCHASE {{groupData}}

{{ comment.likes_count }} {{ comment.likes_count }} {{ comment.reply_count }} {{comment.in_user==uid ? __('Delete') : __('Report')}}

No related comment~

Review

Yami Yami

{{ showTranslate(commentDetails) }}Show Less

{{ strLimit(commentDetails,800) }}Show more

Show Original

{{ commentDetails.content }}

Yami
Show All

{{ formatTime(commentDetails.in_dtm) }} VERIFIED PURCHASE {{groupData}}

{{ commentDetails.likes_count }} {{ commentDetails.likes_count }} {{ commentDetails.reply_count }} {{commentDetails.in_user==uid ? __('Delete') : __('Report')}}

Please write at least one word

Comments{{'(' + replyList.length + ')'}}

Yami Yami

{{ showTranslate(reply) }}Show Less

{{ strLimit(reply,800) }}Show more

Show Original

{{ reply.reply_content }}

{{ formatTime(reply.reply_in_dtm) }}

{{ reply.reply_likes_count }} {{ reply.reply_likes_count }} {{ reply.reply_reply_count }} {{reply.reply_in_user==uid ? __('Delete') : __('Report')}}

Please write at least one word

Cancel

That’s all the comments so far!

Write a review
How would you rate this item?

Please add your comment.

  • A nice nickname will make your comments more popular!
  • The nickname in your account will be changed to the same as here.
Thanks for your review
Our community rely on great reviews like yours to find the best of Asia.

Report

If you find this content inappropriate and think it should be removed from the Yami.com site, let us know please.

Cancel

Are you sure to delete your review?

Cancel

You’ve Recently Viewed

About the brand

Jingdong book