温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,汇文网负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。
网站客服:3074922707
疯狂工作流讲义基于Activiti
6.x的应用开发
疯狂
工作流
讲义
基于
Activiti
应用
开发
CMYCMMYCYCMYK“.pdf 1 2017/11/13 下午2:11 内 容 简 介 工作流引擎 Activiti 经过多年的发展,已经变成一个成熟的工作流框架,在 2017 年,Activiti 推出了全新的 6.0 版本,除了完善对 BPMN 规范的支持外,还加入了对 DMN 规范的支持。为了能让广大的程序开发者一探新版本 Activiti 的功能,笔者在疯狂 Workflow 讲义的基础上,编写了此书。书中对 Activiti 的知识进行全面讲解,并从源码角度对 Activiti 进行深度剖析。本书以 Activiti 为基础,讲述该框架的 API 使用、BPMN 规范,除了这些工作流的基本知识外,还讲解了最新的 DMN 规范引擎、Activiti 整合 Spring Boot 等内容。在本书的第 18 章,深入 Activiti 的源代码,展示舍弃流程虚拟机(PVM)之后的 Activiti 如何对流程进行控制,让读者一窥 Activiti 的庐山真面目。最后一章,以一个案例结束本书的内容,案例中整合 Spring、Struts 2 等主流框架,目的是让读者在学习的过程中更贴近实际应用。未经许可,不得以任何方式复制或抄袭本书之部分或全部内容。版权所有,侵权必究。图书在版编目(CIP)数据 疯狂工作流讲义:基于 Activiti 6.x 的应用开发/杨恩雄编著.北京:电子工业出版社,2018.1 ISBN 978-7-121-33018-6 .疯.杨.JAVA 语言程序设计.TP312.8 中国版本图书馆 CIP 数据核字(2017)第 277084 号 策划编辑:张月萍 责任编辑:牛 勇 印 刷:装 订:出版发行:电子工业出版社 北京市海淀区万寿路 173 信箱 邮编:100036 开 本:7871092 1/16 印张:29.75 字数:800 千字 版 次:2018 年 1 月第 1 版 印 次:2018 年 1 月第 1 次印刷 定 价:79.00 元 凡所购买电子工业出版社图书有缺损问题,请向购买书店调换。若书店售缺,请与本社发行部联系,联系及邮购电话:(010)88254888,88258888。质量投诉请发邮件至 ,盗版侵权举报请发邮件至 。本书咨询联系方式:010-51260888-819,。III 推 荐 序 我与杨恩雄相识于 2006 年,他是一位极有天赋的开源软件精英。十多年来,我们义无反顾地拥抱开源,投身开源,用自己的聪明才智,积极促进开源软件在国内的普及、推广和运用。我们也经历了无数次与巨型商业软件的正面交锋,所幸,凭借着开源社区的强大力量和团队出色的技术实力,为雇主和客户创造了巨大的价值。继而在航空、制造、政企、电信、交通领域成就了一个个“去 IOE”的经典案例,为在企业核心领域运用开源软件树立了成功典范!人生如白驹过隙,不知不觉已过十余年,当年团队的同事早已各奔东西。相信很多从事技术的人想总结和归纳的时候,或多或少都有心无力。很高兴杨恩雄仍然保持着一颗年轻的心,不停地钻研技术,积极归纳和分享。五年前,jBPM4 的延续 Activiti 推出面世,杨恩雄将多年学习工作流的经验整理成书,出版了疯狂 Workflow 讲义,涵盖了 Activiti 的大部分知识。最近,Activiti 6 面世,本书也随之孕育而出,除了详尽论述 Activiti 6.0 的新特性以外,更浓缩了杨恩雄多年企业应用开发的经验。相信他的这本著作,能帮助广大读者轻松地掌握 Activiti 6 这个“全新”的框架,并在实际的学习和工作中运用。前恒拓开源 CTO,现恒拓高科 CEO 陈操 IV 前 言 当今技术发展一日千里,各种技术框架如雨后春笋般涌现,技术正在改变世界、改变生活。作者从业十余年,面对如此变幻莫测的世界,亦难岿然不动,面对日新月异的知识,时常怀着一颗谦卑的心。只有学习,才能带来快乐,才不会被淘汰。程序是枯燥的,但程序又是美丽的,看似冷冰冰的代码,实则丰富多彩。Java 是目前世界上应用最广泛的语言,在 Java 领域出现了众多优秀的框架和组件,这些组件正在慢慢提高编程的效率,使得编程这项原本枯燥的工作变得更为优雅与简单。在工作流领域,涌现出多个使用 Java 语言编写的框架,如 OpenWFE、jBPM、Shark,甚至在国内市面上出现了不少国产的工作流引擎。近年来,出现了一款“全新”的工作流框架 Activiti,经过几年的发展,Activiti 已经成为一款成熟的工作流产品。笔者在 2014 年,基于 Activiti 5.0 版本,编写了 疯狂 Workflow 讲义。Activiti 6.0 在 2017 年发布,为了帮助广大的 Java 研发者学习新框架,笔者对疯狂 Workflow 讲义进行升级,并将多年的实践经验融入本书中。本书经过约半年的编写,至今能得以付梓,得益于多方襄助,对他们的感激之情,难以言表。感谢传道并解惑的恩师,感谢聪颖而好学的读者,感谢善良和亲爱的家人,笔者会谢意永存、铭感不忘。本书内容概括 本书是一本介绍 Java 工作流领域的书,以 Activiti 为核心,内容囊括了多个流行的企业级Java EE 框架。全书可分为以下几个部分。第一部分:对 Activiti 的基础知识进行讲解,包括框架起源、基本的设计模式、数据库设置以及框架配置等。该部分知识可以帮助读者对 Activiti 有一个较为深入的认识,对 Activiti 的设计有一个初步的印象,该部分内容也可以作为整合 Activiti 到项目中的参考。第二部分:从源代码的实现上讲解 Activiti 各个模块的 API,除了讲述这些 API 的作用外,还会引领读者深入到这些 API 的内部。此部分内容可以作为一个详细的 Activiti API 的帮助文档。第三部分:详细讲述了 BPMN 2.0 规范的内容,包括目前 Activiti 对该规范的实现情况。在讲解 BPMN 2.0 规范时,将规范与 Activiti 的实现进行结合,让读者在通俗易懂的例子示范下,对 Activiti 的实现及 BPMN 2.0 规范有较为深入的了解。第四部分:Activiti 6 支持的 DMN 规范,本书将在第 15 章中讲述 Activiti 基于 DMN 规范的规则引擎。Activiti 的规则引擎目前尚未正式面世,笔者研读了当前版本的源代码,并带领读者优先体会了 Activiti 的规则引擎。第五部分:讲述如何在实际企业应用中使用 Activiti,并与其他流行的开源框架进行整合,包括企业应用开发所必须使用的 Web Service、企业服务总线、规则引擎、IoC 框架和 ORM 框 V 架等。除了主要的 Activiti 知识外,企业中常用框架的知识,也在该部分内容中得到了体现。通过学习这部分内容,可以极大丰富你的实战知识,让你成为一个更全面的技术人员。第六部分:在第 18 章中讲述了 Activiti 的核心架构及 Activiti 的表单知识。本书最后一章,通过讲解一个办公系统的开发过程,让读者更了解 Activiti 在实际生产中的应用,从而从理论层面走上实践的道路。本书特点 笔者长期工作于企业的 IT 部门,有着丰富的企业应用开发经验,因此本书具有以下特点。1.内容深入 从笔者接触编程开始,就养成了查看源代码的习惯,书中的示例不仅仅能帮助理解 Activiti的功能,更借鉴了 Activiti 的思路去模拟功能的实现,所以读者能够深入了解其中的原理。2.开发环境与示例更贴近实际 本书中示例的开发环境、使用的框架及工具均来自企业的实际应用,示例的选取与研发过程更贴近实际。3.注释详细 本书的代码几乎每行都有注释,读者可以很容易地了解代码的意思,轻松掌握相应的知识。本书写给谁看 如果你有一定的 Java 语言基础,进行过 Web 项目的开发,对工作流有一定的认识,那么本书可以帮助你提升关于工作流的知识水平。如果你是一个从事过企业应用开发的程序员,本书同样适合你,本书的知识可以帮助你深入理解工作流引擎,使你可以将这些工作流框架应用到实际的企业生产中。衷心感谢 首先非常感谢李刚老师,一直以来,他既是我的老师,也是我的技术后盾,非常幸运人生能有这样一位良师益友。其次感谢出版社的编辑,为本书的出版做了很多细致的工作,并为本书提出了许多宝贵的意见。最后感谢我的家人,你们是我前进的动力。杨恩雄 2017 年 8 月 29 日于广州 VI 第 1 章 Activiti 介绍.1 1.1 工作流介绍.2 1.2 BPMN 2.0规范简述.2 1.2.1 BPMN 2.0概述.3 1.2.2 BPMN 2.0元素.3 1.2.3 BPMN 2.0的XML 结构.5 1.3 Activiti 介绍.5 1.3.1 Activiti 的出现.5 1.3.2 Activiti 的发展.5 1.3.3 选择Activiti 还是jBPM.5 1.4 本章小结.6 第 2 章 安装与运行 Activiti.7 2.1 下载与运行Activiti.8 2.1.1 下载和安装JDK.8 2.1.2 下载和安装MySQL.9 2.1.3 下载和安装Activiti.10 2.2 运行官方的Activiti 示例.11 2.2.1 请假流程概述.11 2.2.2 新建用户.11 2.2.3 定义流程.12 2.2.4 发布流程.14 2.2.5 启动与完成流程.15 2.2.6 流程引擎管理.16 2.3 安装开发环境.17 2.3.1 下载Eclipse.17 2.3.2 安装Activiti 插件.18 2.4 编写第一个Activiti 程序.19 2.4.1 如何运行本书示例.19 2.4.2 建立工程环境.19 2.4.3 创建配置文件.20 2.4.4 创建流程文件.20 2.4.5 加载流程文件与启动流程.21 2.5 本章小结.22 第 3 章 Activiti 数据库设计.23 3.1 通用数据表.24 3.1.1 资源表.24 3.1.2 属性表.24 3.2 流程存储表.25 3.2.1 部署数据表.25 3.2.2 流程定义表.25 3.3 身份数据表.25 3.3.1 用户表.25 3.3.2 用户账号(信息)表.26 3.3.3 用户组表.26 3.3.4 关系表.26 3.4 运行时数据表.26 3.4.1 流程实例(执行流)表.26 3.4.2 流程任务表.27 3.4.3 流程参数表.27 3.4.4 流程与身份关系表.27 3.4.5 工作数据表.28 3.4.6 事件描述表.28 3.5 历史数据表.28 3.5.1 流程实例表.28 3.5.2 流程明细表.29 3.5.3 历史任务表和历史行为表.29 3.5.4 附件表和评论表.29 3.6 DMN规则引擎表.30 3.6.1 决策部署表.30 3.6.2 决策表.30 3.6.3 部署资源表.30 3.7 本章小结.30 第 4 章 Activiti 流程引擎配置.31 4.1 流程引擎配置对象.32 4.1.1 读取默认的配置文件.32 4.1.2 读取自定义的配置文件.33 4.1.3 读取输入流的配置.33 4.1.4 使用 createStandaloneInMemProcess-EngineConfiguration 方法.34 4.1.5 使用createStandaloneProcessEngine-Configuration方法.34 4.2 数据源配置.35 4.2.1 Activiti 支持的数据库.35 4.2.2 Activiti与Spring.35 4.2.3 JDBC配置.35 4.2.4 DBCP数据源配置.36 目 录 VII 4.2.5 C3P0数据源配置.37 4.2.6 Activiti 其他数据源配置.38 4.2.7 数据库策略配置.38 4.2.8 databaseType 配置.39 4.3