Activiti实战--书籍阅读导读

来源:互联网 发布:mac mini macbook air 编辑:程序博客网 时间:2024/06/05 20:20

Activiti实战 - 2015年机械工业出版社出版社出版闫洪磊编著图书 


《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实战

  • 装帧

    平装

  • 定价

    89

  • 作者

    闫洪磊

 
  • 出版社

    机械工业出版社

  • 出版日期

    2015-1-1

  • ISBN

    9787111485957

  • 丛书

    实战系列

目录
1编辑推荐
2作者简介
3目录
4序言
5文摘

折叠编辑推荐

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

折叠作者简介

闫洪磊 资深软件开发工程师和架构师,为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 检查并安装K14

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—ponents33

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

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

折叠序言

为什么要写这本书

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。

勘误和支持

由于笔者的水平有限,加之编写时间仓促,书中难免会出现一些错误或不准确的地方,恳请读者批评指正。为此,特意创建一个在线支持与应急方案的站点。大家可以将书中的错误发布在Bug勘误表页面中,同时,在遇到任何问题时,你可以访问其Q&A页面,笔者将尽量在线上为你提供最满意的解答。书中的全部源文件除可以从华章网站下载外,还可以从笔者提供的这个网址下载,笔者也会将相应的功能更新及时更正出来。

致谢

首先要感谢Tom Beayens发起了这么优秀的开源项目,以及Alfresco公司Tijs Rademakers带领的Activiti团队对此项目的无偿贡献与支持。

感谢Activiti中文社区中每一位充满激情的朋友—袁启勋、临远、翔子、姜维、王垒、于广岳、第二少、小股东、陈浩、jackyrong、卖字母为生,以及名单之外的更多朋友,感谢他们长期以来对社区的支持和贡献。

感谢机械工业出版社华章公司的编辑杨福川和姜影,我始终坚信专业的事找专业的人做,两位在这两年的时间中从各个方面支持我的写作,他们的鼓励和帮助引导我顺利完成全部书稿。

感谢我的驴友们,和他们一起登山探险让我精神得以放松,希望以后的空余时间我们继续用双脚丈量大地。

最后感谢我的家人,感谢他们对我的支持和鼓励。

谨以此书献给我最亲爱的家人,以及众多热爱Activiti的朋友们!

闫洪磊(咖啡兔)

于上海

折叠文摘

第一部分

准备篇

工作流(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规范的流程引擎上执行。

0 0
原创粉丝点击