Activiti工作流详细讲解完整教程.docx

上传人:b****5 文档编号:27592064 上传时间:2023-07-03 格式:DOCX 页数:32 大小:27.95KB
下载 相关 举报
Activiti工作流详细讲解完整教程.docx_第1页
第1页 / 共32页
Activiti工作流详细讲解完整教程.docx_第2页
第2页 / 共32页
Activiti工作流详细讲解完整教程.docx_第3页
第3页 / 共32页
Activiti工作流详细讲解完整教程.docx_第4页
第4页 / 共32页
Activiti工作流详细讲解完整教程.docx_第5页
第5页 / 共32页
点击查看更多>>
下载资源
资源描述

Activiti工作流详细讲解完整教程.docx

《Activiti工作流详细讲解完整教程.docx》由会员分享,可在线阅读,更多相关《Activiti工作流详细讲解完整教程.docx(32页珍藏版)》请在冰豆网上搜索。

Activiti工作流详细讲解完整教程.docx

Activiti工作流详细讲解完整教程

 

Activiti教程详解完整教程

 

1.Activiti介绍

 

Activiti是由Alfresco软件在2010年5月17日发布的业务流程管理(BPM)框架,它是

覆盖了业务流程管理.工作流.服务协作等领域的一个开源.灵活的.易扩展的可执行流程语言框架。

Activiti基于Apache许可的开源BPM平台.创始人TomBaeyens是JBossJBPM的项目架构师.它的特色是提供了eclipse插件.开发人员可以通过插件直接绘画出业务流程图。

 

1.1工作流引擎

 

ProcessEngine对象.这是Activiti工作的核心。

负责生成流程运行时的各种实例及数据.

监控和管理流程的运行。

 

1.2BPMN

 

业务流程建模与标注(BusinessProcessModelandNotation,BPMN).描述流程的基本符

号.包括这些图元如何组合成一个业务流程图(BusinessProcessDiagram)

 

2.准备环境

 

2.1Activiti软件环境

 

1)或者更高版本

2)支持的数据库有:

h2,mysql,oracle,mysql,db2等

3)支持Activiti运行的jar包.可以通过maven依赖引入

4)开发环境为或者以上版本.myeclipse为版本

 

安装流程设计器(eclipse插件)

 

1)打开HelpInstallNewSoftwareAdd

输入Name:

ActivitiDesigner

Location:

designer/update/

输入完成后.单击OK按钮等待下载完成后安装。

安装完成后在菜单选项中会出现Activiti的目录选项

 

设置

 

eclipseactivit

 

插件的画流程图

 

选项

 

打开菜单

 

Windows-->Preferences-->Activiti-->Save

 

下流程图片的生成方式

 

勾选上Createprocessdefinitionimagewhensavingthediagram

作后在画流程图后保存eclipse会自动生成对应的流程图片。

 

操作.勾选上这个操

 

准备开发环境

 

创建mavenweb项目.在maven中添加Activiti依赖

 

在eclipse左边工作栏右键New选择创建MavenProject项目.创建一个名为ActivitiTest

的项目

 

点击Finish

 

完成。

右键项目选择

Properties.

选择

ProjectFacets

勾选上图中的选项

.

点击

Apply.

再点击

OK

 

然后将项目转换成web项目,右键项目选择

 

Properties,

 

 

ProjectFacets

 

中做如下勾选

 

然后点击Appy应用和OK确定

 

然后右键项目Properties.选择DeploymentAssembly,将test相关目录Remove掉之保留main下面需要发布的内容.如下图

 

然后点击Appply和OK

然后在文件中添加以下依赖

 

>Activiti-engine

>

>Activiti-spring

>

>groovy-all

>slf4j-api

>

>slf4j-jdk14

junit

>junit

>

test

mysql

>mysql-connector-java

然后在命令行下mvncompile

编译当前项目.将需要的包下载到本地仓库

 

初始化数据库

 

1)src/main/resource目录下创建文件,内容如下

 

xsi=""

xmlns:

context

""

xmlns:

tx

""

=

=

""

""

xmlns:

jee=

xmlns:

aop=

xsi:

schemaLocation

"

"

>

=

 

""

>

class=

"jdbcDriver"

""

/>

name=

value=

name="jdbcUrl"

value="jdbc:

;characterEncoding=utf8"

/>

"jdbcUsername"

"root"

/>

name=

value=

"jdbcPassword"

"root"

/>

name=

value=

"databaseSchemaUpdate"

"true"

/>

name=

value=

 

 

jdbcUrl为你电脑数据库的url

jdbcUsername为数据库用户名

jdbcPassword为数据库密码

 

2)在main/java目录下创建任意目录和类编写创建Activiti数据表方法

publicclassCreateTable{

 

/****

*创建流程表

**/

@Test

publicvoidcreateTable(){

ProcessEngineprocessEngine=("")

.buildProcessEngine();

 

"------processEngine:

"+processEngine);

}

}

 

然后运行该测试方法

 

.如果运行成功

 

.在数据库中应该会产生

 

25张Activiti

 

的相

关数据表

 

Activiti表说明

 

下面是概括了几个常用的数据表

 

流程部署相关表

act_re_deployement部署对象表

act_rep_procdef流程定义表

act_ge_bytearray资源文件表

 

act_ge_prperty

 

主键生成策略表(对于部署对象表的主键

 

ID)

 

流程实例相关表

act_ru_execution程可能流程实例

正在执行的执行对象表ID不一样)

(包含执行对象

ID

和流程实例

ID.

如果有多个线

act_hi_procinstact_hi_actinst

流程实例历史表

存放历史所有完成的任务

 

Task任务相关表

act_ru_task代办任务表(只对应节点是UserTask的)

act_hi_taskinst代办任务历史表(只对应节点是UserTask的)

 

act_hi_actinst所有节点活动历史表(对应流程的所有节点的活动历史.从开始节点一直到结束节点中间的所有节点的活动都会被记录)

 

流程变量表

act_ru_variable正在执行的流程变量表

act_hi_variable流程变量历史表

 

3.核心API

 

ProcessEngine

 

说明:

1)在Activiti中最核心的类.其他的类都是由他而来。

2)产生方式

ProcessEngineprocessEngine=();

 

3)可以产生RepositoryService

RepositoryServicerepositoryService=();

 

4)可以产生RuntimeService

RuntimeServiceruntimeService=();

 

5)可以产生TaskServiceTaskServicetaskService=();

 

各个Service的作用

RepositoryService管理流程定义

 

RuntimeService

 

TaskService

 

执行管理

操作

任务管理

 

.包括启动

 

.推进

 

.删除流程实例等

 

RepositoryService

 

Activiti

该service

 

的仓库服务类。

所谓的仓库指流程定义文档的两个文件:

可以用来删除部署的流程定义。

 

bpmn文件和流程图片

 

RuntimeService

 

是Activiti的流程执行服务类.可以从这个服务类中获取很多关于流程执行的相关的信息。

 

TaskService

 

是Activiti的任务服务类。

可以从这个类中获取任务的相关信息.如当前正在执行的个人待

办和用户组待办任务。

 

HistoryService

 

是Activiti的查询历史信息的类.在一个流程执行完成后.这个对象为我们提供查询历史信息.可以跟踪流程实例对应所有待办节点的运行情况。

 

ProcessDefinition

 

流程定义类.可以从这里获得资源文件等。

 

ProcessInstance

 

代表流程定义的执行实例.当一个部署的流程图启动后.该流程只有一条流程实例数据.但是它的流程任务可以有多个.每个任务对应流程图中相应的流程节点。

 

4.入门HelloWorld程序

 

创建流程图方法

 

点击ActivitiTest

在当前项目右键选择

 

项目.在src/main/java目录下创建一个diagrams目录用来存放流程图

ActivitiDiagram流程图输入流程图名称HelloWorld.然后点击OK.

 

在控制面板的右边栏有相关的画图图标操作

 

其中一个流程必须包含一个开始节点和一个结束节点.结束节点可以有多个。

然后使用StartEvent,UserTask,EndEvent画出下面的流程图.然后用Connection

 

中的

SequenceFlow

连线连接起来。

 

创建流程图.如下图

 

指定流程图名称.ID和UserTask的处理人

 

1)选中第一个节点.在General中的name属性中输入当前节点的名称,在Mainconfig的Assignee中输入该节点的处理人.然后以此类推将3个节点的值设置完成。

 

.

 

2)然后在流程图旁边的空白出点击一下.输入流程的ID和Name值.然后保存

 

将流程图部署到Activiti的数据表中

 

启动完成后在

数据信息.

 

act_re_deployment

 

流程部署表和

 

act_re_procdef

 

流程定义表中会有对应的

 

启动流程实例

 

其中

 

("HelloWorldKey"

 

);

 

中的

 

HelloWorldKey

 

对应流程图中的

 

ID

 

值,在数据表中对应

act_re_procdef

流程定义表中的

key

字段

 

启动完流程后在act_ru_execution表中会产生一条数据

任务.其中act_id_字段的值对应流程图节点的ID值

 

.这条数据为当前流程正在执行的

 

在act_ru_task键.proc_inst_id_

 

表中会产生一条任务数据,execution_id_

为流程实例值为流程节点名称.assignee_

 

对应act_ru_execution字段为该待办当前的处理人

 

 

查询待办任务

 

指定查询张三的待办.可以查询出待办为第一个节点的处理任务。

 

完成待办任务

 

其中taskId对应act_ru_task表的主键ID.因为当前待办任务为第一个节点提交申请.当执

行完这个待办后下一条待办数据将会流转到审批【部门经理】那.然后以此类推可以将部门

经理和总经理的待办任务全部查询和执行完成。

 

5.查询和删除流程定义

 

1)查询流程定义

 

2)删除流程定义

 

6.流程变量操作

 

设置流程变量

 

1)设置流程变量有多种方式.可以在流程启动.和任务执行的时候设置

a.启动流程的时候设置

 

b.通过taskService或者runtimeService设置

 

提示:

如果设置的流程变量值是一个对象类型.这个对象必须实现序列化Serializable

操作,并且要为该对象类指定一个版本ID

 

获取流程变量

 

见工程操作

 

7.流程连线

 

在画流程图的时候可以对流程的连线设置表达式.然后在执行的时候设置流程变量值.然后

 

Activiti会根据对应的值走对应的节点

 

点击一条连线.在Main

线设置为${message=='

 

config不同意

 

中的Condition属性值中设置${message=='

'}.然后在代码中设置对应流程变量值。

 

同意'}.

 

另外一条

 

见工程操作

 

8.排他网关

 

如下图,其中黑色的叉叉对应eclipse画流程图图标中的ExclusiveGateWay图标

 

然后对每条线的Condition属性指定对应的表达式.然后在执行任务时候设置对应的流程变量

 

Activiti会根据变量的值来判断对应连线中的表达式走对应的流程节点路线。

 

见工程操作

 

9.并行网关

 

十字图标对应图标中的

 

ParallelGateway

 

并行网关不需要指定连线的表达式

 

.当流程流转到并行任务时会出发多个任务

 

.当多个任务

完成后在会将流程流转到下一个节点

 

见工程操作

 

10.个人任务的三种指定方式

 

在Assignee中指定任务具体的处理人

 

在Assignee中指定任务的处理人或角色变量

 

当指定Assignee为一个变量值后需要在代码中设置对应的处理人.比如在启动的时候设置

userId的值

 

在工程中可以将起草人的处理变量设置为userId.审批人的处理变量设置为appUserId.然

后通过业务模块和登录人来获取对应模块的审批人。

 

为任务节点设置一个监听类来设置当前节点的处理人

 

如果设置了监听类就不需要在设置Assignee的值

1)创建一个监听器类.需要实现TaskListener接口

 

2)点击任务节点.选择Listener选项卡.点击New.将Event的值改为create然后选择创建的TaskListenerImpl实现类

 

然后当任务到达该节点后Activiti会触发监听实现类的notify方法

 

11.组任务的三种指定方式

 

在任务节点中设置Candidateuser候选人

 

设置的候选处理人用英文输入法的逗号隔开.当任务到达该节点后.设置的候选人其中任何

一个人都可以处理当前待办.处理完成后待办结束。

 

在Candidateuser中设置一个变量作为处理人

 

然后通过启动或者执行流程向下传递的时候设置该流程变量值

 

通过监听类来设置待办处理人

 

如果设置了监听类就不需要在设置Assignee的值

 

和个人任务的监听类一样实现TaskListener接口.然后设置CandidateUser的值

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 人文社科 > 法律资料

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1