疯狂工作流讲义——基于Activiti 6.x的应用开发(txt+pdf+epub+mobi电子书下载)


发布时间:2020-09-02 01:01:20

点击下载

作者:杨恩雄

出版社:电子工业出版社

格式: AZW3, DOCX, EPUB, MOBI, PDF, TXT

疯狂工作流讲义——基于Activiti 6.x的应用开发

疯狂工作流讲义——基于Activiti 6.x的应用开发试读:

前言

当今技术发展一日千里,各种技术框架如雨后春笋般涌现,技术正在改变世界、改变生活。作者从业十余年,面对如此变幻莫测的世界,亦难岿然不动,面对日新月异的知识,时常怀着一颗谦卑的心。只有学习,才能带来快乐,才不会被淘汰。程序是枯燥的,但程序又是美丽的,看似冷冰冰的代码,实则丰富多彩。

Java是目前世界上应用最广泛的语言,在Java领域出现了众多优秀的框架和组件,这些组件正在慢慢提高编程的效率,使得编程这项原本枯燥的工作变得更为优雅与简单。在工作流领域,涌现出多个使用Java语言编写的框架,如OpenWFE、jBPM、Shark,甚至在国内市面上出现了不少国产的工作流引擎。近年来,出现了一款“全新”的工作流框架Activiti,经过几年的发展,Activiti已经成为一款成熟的工作流产品。笔者在2014年,基于Activiti5.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框架等。除了主要的Activiti知识外,企业中常用框架的知识,也在该部分内容中得到了体现。通过学习这部分内容,可以极大丰富你的实战知识,让你成为一个更全面的技术人员。

第六部分:在第18章中讲述了Activiti的核心架构及Activiti的表单知识。本书最后一章,通过讲解一个办公系统的开发过程,让读者更了解Activiti在实际生产中的应用,从而从理论层面走上实践的道路。

本书特点

笔者长期工作于企业的IT部门,有着丰富的企业应用开发经验,因此本书具有以下特点。

1.内容深入

从笔者接触编程开始,就养成了查看源代码的习惯,书中的示例不仅仅能帮助理解Activiti的功能,更借鉴了Activiti的思路去模拟功能的实现,所以读者能够深入了解其中的原理。

2.开发环境与示例更贴近实际

本书中示例的开发环境、使用的框架及工具均来自企业的实际应用,示例的选取与研发过程更贴近实际。

3.注释详细

本书的代码几乎每行都有注释,读者可以很容易地了解代码的意思,轻松掌握相应的知识。

本书写给谁看

如果你有一定的Java语言基础,进行过Web项目的开发,对工作流有一定的认识,那么本书可以帮助你提升关于工作流的知识水平。如果你是一个从事过企业应用开发的程序员,本书同样适合你,本书的知识可以帮助你深入理解工作流引擎,使你可以将这些工作流框架应用到实际的企业生产中。

衷心感谢

首先非常感谢李刚老师,一直以来,他既是我的老师,也是我的技术后盾,非常幸运人生能有这样一位良师益友。

其次感谢出版社的编辑,为本书的出版做了很多细致的工作,并为本书提出了许多宝贵的意见。

最后感谢我的家人,你们是我前进的动力。杨恩雄2017年8月29日于广州第1章Activiti介绍

本章要点

↘ 工作流

↘ BPMN 2.0规范

在计算机尚未普及时,许多工作流程采用手工传递纸张表单的方式,一级一级审批签字,工作效率非常低下。对于数据统计以及生成报表的功能,需要经过大量的手工操作才能实现。随着计算机的普及,这些工作的参与者只需要在计算机的系统中填入工作内容,系统就会按照定义好的流程自动执行,各级审批者可以得到工作的信息并做出相应的审批和管理操作。数据统计和报表的生成均由系统代为完成,这样大大提高了工作效率,在这种背景下,各种的工作流应用以及中间件应运而生。

工作流应用在日常工作中的使用越来越广泛,Java EE领域出现了许多优秀的工作流引擎,例如JBoss社区的jBPM、OpenSymphony的OSWorkflow等。在2010年5月17日,以Tom Baeyens为首的工作流小组发布了一个全新的工作流引擎—Activiti,该工作流引擎的第一个版本为5.0alpha1,由于Tom Baeyens是jBPM的创始人(由于意见分歧离开JBoss),因此Activiti的团队希望该流程引擎是jBPM4的延伸,希望在jBPM中积累的经验和知识的基础上,继续进行新一代工作流解决方案的建设,因此将第一个Activiti版本定义为5.0alpha1。

Activiti经过多年的发展,已经发布了多个版本,随着DMN(决策模型与图形)规范的推出,Activiti开始实现自己的规则引擎。本书将以Activiti 6.0为基础,详细介绍Activiti工作流引擎以及规则引擎的特性。1.1工作流介绍

工作流(Workflow),是对工作流程及其各操作步骤之间业务规则的抽象、概括、描述。工作流建模,即将工作流程中的工作如何前后组织在一起的逻辑和规则在计算机中以恰当的模型进行表示并对其实施计算。工作流要解决的主要问题是:为实现某个业务目标,在多个参与者之间,利用计算机,按某种预定规则自动传递文档、信息或者任务。工作流管理系统(Workflow Management System,WfMS)的主要功能是通过计算机技术的支持去定义、执行和管理工作流,协调工作流执行过程中工作之间以及群体成员之间的信息交互。工作流需要依靠工作流管理系统来实现。工作流属于计算机支持的协同工作(Computer Supported Cooperative Work,CSCW)的一部分。工作流管理系统是普遍地研究一个群体如何在计算机的帮助下实现协同工作的。(注:本段内容来自维基百科。)

早在20世纪70年代,办公自动化概念出现的时候,工作流思想就已经出现,人们希望新的技术可以改善办公效率,但是由于当时计算机并没有普及,网络技术还不普遍等原因,20世纪70年代工作流技术仅仅停留在研究领域。到了20世纪90年代以后,各种技术条件逐渐成熟,工作流技术被应用于电信、软件、制造、金融和办公自动化领域。随着工作流技术的兴起,为了给全部业务的参与者提供易于理解的标准标记法,由业务流程管理倡议组织(BPMI)开发出了“业务流程建模标记法”(Business Process Modeling Notation,BPMN)。BPMI组织于2005年并入OMG组织,当前BPMN规范由OMG组织进行维护。1.2BPMN 2.0规范简述

BPMN规范1.0版本由BPMI组织于2004年发布,全称是Business Process Modeling Notation,BPMN规范的发布是为了让业务流程的全部参与人员对流程可以进行可视化管理,提供一套让所有参与人员都易于理解的语言和标记,为业务流程的设计人员(非技术人员)和流程的实现人员(技术人员)建立起一座桥梁。BPMI组织于2005合并到OMG(Object Management Group)组织中,2008年1月发布BPMN 1.1规范。BPMN 2.0规范于2011年1月正式发布,并且全称改为Business Process Model And Notation(业务流程模型和符号)。

在1.0版本的BPMN规范中,只注重流程元素的图形,这使其在流程分析人员中非常受欢迎,而BPMN 2.0版本则继承了1.0版本的内容,并且注重流程执行语法和标准交换格式。1.2.1 BPMN 2.0概述

BPMN 2.0规范定义了业务流程的符号以及模型,并且为流程定义设定了转换格式,目的是为了让流程的定义实现可移植性,那么用户可以在不同的供应商环境中定义流程,并且这些流程可以移植到其他遵守BPMN 2.0规范的供应商环境中。BPMN 2.0在以下方面扩展了BPMN 1.2:

· 规范了流程元素的执行语法。

· 定义了流程模型和流程图的扩展机制。

· 细化了事件的组成。

· 扩展了参与者的交互定义。

· 定义了编排模型。1.2.2 BPMN 2.0元素

使用BPMN 2.0的目的是建立简单并且易懂的业务流程模型,但是同时又需要处理高度复杂的业务流程,因此要解决这两个矛盾的要求,需要在规范中定义标准的图形和符号。BPMN中定义了5个基础的元素类别。

·流对象(Flow Objects):在一个业务流程中,流对象是用于定义行为的图形元素,主要有事件(Events)、活动(Activities)和网关(Gateways)三种流对象。

·数据(Data):主要有数据对象(Data Objects)、数据输入(Data Inputs)、数据输出(Data Inputs)和数据存储(Data Stores)4种元素。

·连接对象(Connecting Objects):用于连接流对象,主要有4种连接流对象的方式,包括顺序流(Sequence Flows)、消息流(Message Flows)、关联(Associations)和数据关联(Data Associations)。

·泳道(Swimlanes):泳道提供了两种途径用于组织基础的模型元素,分别是池(Pools)和道(Lanes)。

·制品(Artifacts):制品主要用于为流程提供附加信息,当前制品包括组(Group)和注释(Text Annotation)。

以上的元素分类以及表1-1中所列的元素,均是BPMN规范中元素的组成部分,每个对象均有自己对应的图形。表1-1给出了各个元素的图形及其描述。表1-1 BPMN规范中的元素续表

以上为BPMN规范中定义的基本元素,在这些元素的基础上,还会产生多种子元素,例如网关(Gateways)元素,还可以细分为单向网关、并行网关等,这些细分的元素将会在本书的BPMN 2.0规范章节详细讲解。1.2.3 BPMN 2.0的XML结构

BPMN 2.0规范除了定义流程元素的图形外,还对流程描述文件做了语法上的定义。例如在定义一个userTask的时候,BPMN 2.0规范规定需要有id和name属性;定义一个顺序流,需要提供id、name、sourceRef和targetRef属性。BPMN 2.0定义了XML规范,这样的话,一份流程描述文件可以在不同的流程引擎中使用(流程引擎需要遵守BPMN 2.0规范)。

除了BPMN 2.0规定的元素及属性外,工作流引擎的供应商还可以在这些规范的基础上添加额外的属性,但是这些扩展的属性不允许与任何的BPMN 2.0元素产生冲突,除此之外,在对属性进行扩展时,所产生的流程模型与流程图,必须要让流程的参与者能够轻松看懂,而且规范中最基础的流程元素不能发生改变,因为这是BPMN 2.0规范的基础。

BPMN定义的XML元素以及各个元素的作用和使用方法,将会在本书后面章节中讲述。1.3Activiti介绍

当BPMN 2.0规范在2011年被发布时,各个工作流引擎的供应商均向其靠拢,包括jBPM5和本书介绍的Activiti。Activiti的第一个版本为5.0alpha1,一直到2010年12月发布了Activiti5.0的正式版,此过程经历了4个alpha版本、2个beta版本和1个rc版本,直到5.0正式版本才出现对BPMN 2.0规范的支持。Activiti 6.0于2017年5月发布,其已经开始实现DMN规范。1.3.1 Activiti的出现

Activiti的创始人Tom Baeyens是jBPM的创始人,由于在jBPM的未来架构上产生意见分歧,Tom Baeyens在2010年离开了JBoss并加入Alfresco公司,Tom Baeyens的离开使得jBPM5完全放弃了jBPM4的架构,基于Drools Flow重新开发。而在2010年的5月,Tom Baeyens发布了第一个Activiti版本(5.0alpha1),由此看来,Activiti更像是jBPM4的延续,也许为了让其看起来更像jBPM4的延续,Activiti团队直接将Activiti的第一个版本定义为5.0。1.3.2 Activiti的发展

从2010年5月发布第一个Activiti版本至今(2017年),Activiti经历了近几十个小版本的演化,本书成书时版本已经发布到6.0.0.RC1。Activiti采用了宽松的Apache Licence2.0开源协议,因此Activiti一经推出,就得到了开源社区的大力支持,在开源社区的支持下,Activiti吸引了很多的工作流专家参与到该项目中,并且也促使了Activiti在工作流领域的创新。1.3.3 选择Activiti还是jBPM

根据前面的内容可以得知,jBPM5和Activiti同样支持BPMN 2.0规范,但是实际上jBPM5已经推翻了jBPM3和jBPM4的架构,使用了Drools Flow作为工作流架构,这对于原来使用jBPM3和jBPM4的用户来说是非常郁闷的一件事(从零开始重新学习jBPM5),而Activiti更像是原来jBPM4的延续,因此对于原来使用jBPM3和jBPM4的用户来说,更推荐使用Activiti,但是由于JBoss中有一些优秀的项目(例如规则引擎Drools、Seam等),jBPM5与这些项目进行整合具有先天的优势,因此如何进行选择还需要进行权衡。

除了原来的架构有所改变之外,还需要考虑的是,jBPM5采用的是LGPL开源协议,如果要在其基础上使用以修改和衍生的方式做二次开发的商业软件,涉及的修改部分需要使用LGPL协议,因此对于这些商用的软件来说,如果对jBPM5的源代码进行修改并做二次开发,显然不是明智的选择。相对于jBPM5来说,Activiti采用了更为宽松的Apache License2.0协议,该协议鼓励代码共享和尊重原作者的著作权,允许对代码进行修改、再发布而不管其用途。1.4本章小结

本章对工作流的起源以及发展做了简单的介绍,其中主要介绍了工作流领域的BPMN 2.0规范。BPMN 2.0规范为工作流应用提供了语言及图形的标准。介绍了BPMN 2.0规范目标及该规范的部分内容、Activiti的产生背景、Activiti目前所拥有的优势,以及与“成熟”的jBPM的比较。简单了解了Activiti工作流之后,下一章将带领读者开始Activiti之旅。第2章安装与运行Activiti

本章要点

↘ 安装JDK与MySQL

↘ 安装Eclipse以及Activiti插件

↘ 运行官方的Activiti例子

↘ 编写第一个Activiti程序

Activiti的第一个正式版本发布于2010年12月1日,经过多年的发展,Activiti已经成为一个较为成熟的工作流引擎。作为一个开源的工作流引擎,它在工作流领域吸引了众多开发者的目光,在当前的工作流框架角逐中,其已逐渐成为众多企业的首选。在2017年5月26日,Activiti迎来了新篇章:6.0版本正式发布。本书将以6.0版本为基础,讲解基于Activiti的工作流应用开发。

本章将介绍Activiti的安装与运行、Activiti开发环境的搭建等内容。本书除了最后一章的项目案例外,其他所有的案例均以本章的开发环境为基础。搭建Activiti的开发环境,需要安装JDK、Eclipse、MySQL等软件,除此之外,还会编写第一个Activiti应用,让大家对Activiti有一个初步的了解。

注意:

本书全部的案例均在Windows7下开发和运行。2.1下载与运行Activiti

如果仅仅只是运行Activiti,可以只下载JDK、Tomcat和Activiti。在Activiti的开发包中,已经包含有Activiti的Web应用例子。本书使用的Tomcat版本为7.0.42,可以到以下地址下载该版本的Tomcat:

http://archive.apache.org/dist/tomcat/tomcat-7/v7.0.42/bin/apache-tomcat-7.0.42.zip

本书所使用的Tomcat是非安装版本,下载后解压即可使用,在运行Tomcat时需要先安装JDK。本书需要使用浏览器时,均使用Google Chrome浏览器,笔者也建议读者使用该浏览器。2.1.1 下载和安装JDK

Activiti 6.0要求在JDK7以上版本运行,本书使用的是JDK8(32位),大家可以到以下网址下载JDK:

http://www.oracle.com/technetwork/java/javase/downloads/index.html

选择合适的版本进行下载后即可进行安装,在Windows 7下,默认的安装目录是C:\Program Files (x86)\Java\jdk1.8.0_131。安装完成后,需要配置环境变量,新建JAVA_HOME变量和值为JDK的安装目录,如图2-1所示。

添加了JAVA_HOME环境变量后,修改系统的Path变量,加入“%JAVA_HOME%\bin”,如图2-2所示。图2-1 JAVA_HOME环境变量图2-2 Path环境变量

为了验证JDK是否成功安装,打开系统命令行,输入“java-version”回车后可看到JDK的版本信息,笔者安装的JDK信息如图2-3所示。图2-3 JDK版本信息

看到图2-3所示信息,即表示JDK成功安装。如果大家的机器需要不同版本的JDK,可以为JAVA_HOME设置不同值来实现切换。2.1.2 下载和安装MySQL

MySQL作为市面上关系型数据库的佼佼者,一直受到各大企业及开发人员的青睐,笔者之前就职的公司一直使用MySQL,因此本书选用MySQL作为Activit的数据库。目前MySQL的版本发展到5.7,由于数据库并不是本书的重点,因此笔者选用了较为成熟的5.6版本(64位),大家可到以下网址下载5.6版本的MySQL数据库:

https://dev.mysql.com/downloads/installer/5.6.html

下载并安装了MySQL数据库后,将MySQL的bin目录添加到环境变量中,以便可以在命令行中使用MySQL命令,如图2-4所示。

修改系统变量的Path属性,添加“%MYSQL_HOME%\bin”,如图2-5所示。图2-4 添加系统变量图2-5 修改Path变量

完成以上步骤后,打开命令行,输入“mysql-V”回车后,可以看到输出如图2-6所示。图2-6 查看MySQL安装

关于MySQL数据库的客户端工具,本书使用的是Navicat,读者也可以使用其他工具,使用这些工具的目的是为了操作MySQL数据库更加方便,大家可根据个人习惯来选用。本书的开发环境为Windows7,安装完MySQL5.6后,笔者建议将MySQL配置成区分大小写(默认不区分)的,修改MySQL的配置文件my.ini(如果在Windows7下安装MySQL,则修改C:\ProgramData\MySQL\MySQL Server 5.6\my.ini),加入“lower_case_table_names=0”配置,重启MySQL服务即可。2.1.3 下载和安装Activiti

安装了JDK和MySQL后,现在可以下载Activiti,下载Activiti的主页为:http://www.activiti.org/,本书使用的Activiti版本为6.0,以下为Activiti 6.0的下载地址:

https://github.com/Activiti/Activiti/releases/download/activiti-6.0.0/activiti-6.0.0.zip

由于某些非技术原因,以上链接可能在国内无法打开,需要借助其他方法进行下载。

下载解压后得到activiti-6.0.0目录,该目录下有三个子目录:database、libs和wars。以下为各个目录的作用描述。

·database:用于存放Activiti数据表的初始化脚本(create子目录)、删除脚本(drop子目录)和升级脚本(upgrade 子目录)。从各个目录中的脚本可得知,目前 Activiti支持各大主流的关系型数据库,包括DB2、MySQL、Oracle等。

·libs:存放本版本Activiti所发布的jar包,也包含对应的源码包。

·wars:存放Activiti官方提供的war包,当前版本有activiti-app.war、activiti-admin.war、activiti-rest.war三个war包。

需要注意的是,这三个war包默认情况下使用的是H2数据库,该数据库是一个内存数据库,因此部署前不需要进行任何的数据库配置,但如果重启了应用服务器,那么之前的数据将会丢失,大家在使用时请注意这个小细节。将三个war包复制到Tomcat/webapps目录并启动Tomcat,在浏览器中打开以下链接,即可以看到如图2-7所示的Activiti的演示界面:

http://localhost:8080/activiti-app/图2-7 Activiti的演示界面

注意:

看到图2-7所示的界面,表示已经启动成功,如果需要登录及使用其他功能,请参考2.2节的内容。2.2运行官方的Activiti示例

Activiti官方发布的activiti-app,可以说是一个较为完善的样例,用户可通过该例子来了解Activiti的大部分功能。随Activiti 6.0版本发布的官方示例,包括流程图定义、流程发布、动态表单等一系列示例,在笔者看来,这个示例的功能已经相当强大,但该示例偏向技术,如果需要开发更贴近某个特定业务的产品,我们还是需要掌握Activiti的核心。

本节将以一个简单的请假流程为示范,向大家展示该Activiti示例的功能,以便大家对工作流引擎有一个初步的了解。

注意:

activiti-app的登录用户名为admin,默认密码为test,该应用的功能将在稍后讲述。2.2.1 请假流程概述

我们先定义一个简单的请假流程,主要由员工发起请假,然后再由他的经理审批,最后流程结束,流程图如图2-8所示。图2-8 员工请假流程

这里主要是为了让大家初步了解activiti-app的功能,对Activiti有一个初步的认识,因此设计的流程较为简单。2.2.2 新建用户

根据前面定义的请假流程,需要有一个员工用户,然后需要有一个经理用户,在实际业务中,普通员工、经理可能就是用户,在此为了简单起见,只定义一个员工与一个经理,不涉及用户组数据。使用admin账号登录activiti-app(默认密码是test),主界面如图2-9所示。图2-9 登录activiti-app后的主界面

主界面的三个菜单主要完成以下功能。

·Kickstart App:主要用于流程模型管理、表单管理及应用(App)管理,一个应用可以包含多个流程模型,应用可发布给其他用户使用。

·Task App:用于管理整个activiti-app的任务,在该功能里面也可以启动流程。

·Identity management:身份信息管理,可以管理用户、用户组等数据。

单击“Identity management”菜单,再单击Users菜单,界面如图2-10所示。图2-10 进入用户管理

单击“Create user”按钮,弹出要求输入新用户信息的界面,根据我们定义的请假流程,需要新建一个员工用户。新建用户名为“employee”的用户,如图2-11所示。图2-11 新建用户

需要注意的是,Email等信息虽然不是必填的,但如果不填,则在登录时会出现异常,笔者建议将全部信息都填上,以免遇到问题。以同样的方法,再创建一个名为“manager”的用户作为经理,用于审核请假任务。2.2.3 定义流程

单击“Kickstart App”菜单,进入流程模型管理的主界面,单击“Create Process”按钮,弹出新建流程模型界面,如图2-12所示。图2-12 新建流程模型界面

新建模型后,会进入流程模型设计界面,在流程模型设计界面中,只需要普通的鼠标拖曳操作,即可完成流程模型的定义,该编辑器也可以开放给业务人员使用。根据前面定义的请假流程,在编辑器中“拖曳”一下,定义请假流程模型,如图2-13所示。图2-13 设计流程模型

在图2-13中,定义了一个开始事件、两个用户任务、一个结束事件。我们定义的请假业务,需要将该用户任务分配给employee用户。单击第一个用户任务,并修改“Assignment”属性,如图2-14所示。

由图2-14可知,将“Employee off work”任务分配给“Emp E”用户。需要注意的是,“Emp”是用户的真实名称,登录系统的用户名是employee。保存成功后,再使用同样的方法将“Manage Audit”任务分配给manager用户。保存流程模型后,就可以将流程发布。图2-14 为任务分配给用户2.2.4 发布流程

在activiti-app中,一个App可包含多个流程模型,因此在发布流程前,先新建一个App并为其设置流程模型。单击Apps菜单,再单击“Create App”按钮,新建一个App,如图2-15所示。图2-15 新建App

由于我们设计的请假流程,属于人事管理方面的,因此新建一个给HR使用的App(应用),该App就包含我们前面所设计的请假流程模型。创建App成功后,再为其设置流程模型并发布App。单击可查看App,界面如图2-16所示。图2-16 查看App

图2-16所示为查看App的界面,使用右上角的“Publish”按钮可以发布App。单击“App Editor”按钮可以进行App的模块修改,本例中已经将前面定义的流程绑定到“HR App”中。2.2.5 启动与完成流程

发布了App后,再使用之前新建的employee用户进行登录,登录后可以看到HR App的菜单,如图2-17所示。图2-17 员工登录后主界面

进入HR App并且单击“Processes”菜单,在界面左上角,可以看到“Start a process”按钮,单击启动请假流程后,可以看到如图2-18所示界面。图2-18 启动流程

根据流程模型的定义可知,启动流程后,就由employee来完成第一个用户任务。单击图2-18所示界面右边的任务列表,进行任务操作,如图2-19所示。

单击图2-19所示界面右上角的“Complete”按钮,即可完成当前的用户任务。按照流程设计,employee完成任务后,manager用户要审核请假。使用manager用户登录系统,同样进入“HR App”的Processes菜单,同样可以看到分配到manager用户下面的任务,以同样的方式完成任务后,流程结束,如图2-20所示。图2-19 查看用户任务图2-20 manager完成任务

至此,这个简单的请假流程,已经在activiti-app上面运行成功。2.2.6 流程引擎管理

除了activiti-app这个war包外,还有一个activiti-admin的war包,在部署时也放到Tomcat的应用目录下。activiti-admin用于查看流程引擎的主要数据,包括流程引擎的部署信息、流程定义、任务等。启动了Tomcat后,在浏览器中打开以下链接:

http://localhost:8080/activiti-admin

打开链接后,可以看到activiti-admin的登录界面,内置的用户名为admin,密码为admin。登录成功后,单击“Configuration”菜单,先配置管理的对象信息,由于activiti-app也是部署在Tomcat中,因此只需要修改一下端口即可,将默认的9999端口改为我们的Tomcat端口(8080),修改界面如图2-21所示。

完成配置后,可以单击“Check Activiti REST endpoint”按钮来测试是否可以连接到activiti-app的接口,连接成功后会有提示。

单击“Instances”菜单,可以看到我们之前完成的请假流程实例,再单击流程实例,可以看到流程的全部信息,如图2-22所示。图2-21 修改activiti-admin的配置信息图2-22 查看请假流程信息

activiti-admin应用中的数据,可以通过Activiti发布的接口获取,接口的使用将在本书后面的章节中讲述。

根据上述内容可知,Activiti官方提供的activiti-app、activiti-admin两个应用,包含了流程设计、流程发布、流程引擎管理等功能,本书后面的章节,将会深入讲解Activiti的功能,学习了后面章节内容后再回头看官方的两个应用,即可明白它们的实现原理。2.3安装开发环境

我们所说的Activiti开发环境包括以下内容:

· Eclipse IDE

· Eclipse的Activiti插件2.3.1 下载Eclipse

本书使用Eclipse作为开发工具,如果想使用Activiti的Eclipse设计器,官方建议使用Kepler(4.3)或者 Luna(4.4)版本,本书使用的版本为Luna 32位,大家可以从以下地址下载该版本的Eclipse:

http://www.eclipse.org/downloads/packages/eclipse-ide-java-developers/lunasr2

目前Eclipse已经发展到4.7版本,本书使用的Eclipse功能不多,主要使用Activiti的设计器插件,本书的全部代码,理论上可以在高版本的Eclipse中运行。

安装Eclipse插件的过程较为漫长,如果想直接使用已经安装好插件的Eclipse,则可以到以下链接下载:https://pan.baidu.com/s/1bpEh1Gr,如该链接失效,可以与笔者联系,笔者邮箱地址:yangenxiong@163.com。如果下载到了安装好插件的Eclipse,则可以跳过2.3.2小节。2.3.2 安装Activiti插件

使用Eclipse的Luna版本,在安装Activiti插件前,要安装EMF插件(2.6.0版本)。打开Eclipse,在“Help”菜单中选择“Install New Software”菜单项,单击“Add”按钮,弹出如图2-23所示窗口。

输入的名称为EMF,位置URL为:http://download.eclipse.org/modeling/emf/updates/releases/,注意在选择版本时,要选择2.6.0版本,安装完成后重启Eclipse,再进行Activiti插件安装。

使用Activiti的Eclipse插件,开发者可以对流程模型进行可视化操作,对于流程元素可以进行拖曳,插件会自动生成相应的XML代码。安装方法与EMF插件安装方法一样,输入的插件信息如图2-24所示,输入的位置URL为:http://activiti.org/designer/update/。图2-23 安装EMF插件图2-24 在Eclipse中添加软件仓库

插件安装完成后重启Eclipse,在新建文件的对话框中,如果看到图2-25所示选项,则表示已经安装成功。图2-25 成功安装Activiti插件

再次强调,在安装过程中,由于网络等原因,会导致安装中断或者安装时间过长,如果不是为了体验插件安装,建议直接下载安装好插件的Eclipse,笔者提供的下载地址为:https://pan.baidu.com/s/1bpEh1Gr。

试读结束[说明:试读内容隐藏了图片]

下载完整电子书


相关推荐

最新文章


© 2020 txtepub下载