Activiti工作流入门详解完整教程New.docx

上传人:b****4 文档编号:5916624 上传时间:2023-05-09 格式:DOCX 页数:34 大小:1,004.65KB
下载 相关 举报
Activiti工作流入门详解完整教程New.docx_第1页
第1页 / 共34页
Activiti工作流入门详解完整教程New.docx_第2页
第2页 / 共34页
Activiti工作流入门详解完整教程New.docx_第3页
第3页 / 共34页
Activiti工作流入门详解完整教程New.docx_第4页
第4页 / 共34页
Activiti工作流入门详解完整教程New.docx_第5页
第5页 / 共34页
Activiti工作流入门详解完整教程New.docx_第6页
第6页 / 共34页
Activiti工作流入门详解完整教程New.docx_第7页
第7页 / 共34页
Activiti工作流入门详解完整教程New.docx_第8页
第8页 / 共34页
Activiti工作流入门详解完整教程New.docx_第9页
第9页 / 共34页
Activiti工作流入门详解完整教程New.docx_第10页
第10页 / 共34页
Activiti工作流入门详解完整教程New.docx_第11页
第11页 / 共34页
Activiti工作流入门详解完整教程New.docx_第12页
第12页 / 共34页
Activiti工作流入门详解完整教程New.docx_第13页
第13页 / 共34页
Activiti工作流入门详解完整教程New.docx_第14页
第14页 / 共34页
Activiti工作流入门详解完整教程New.docx_第15页
第15页 / 共34页
Activiti工作流入门详解完整教程New.docx_第16页
第16页 / 共34页
Activiti工作流入门详解完整教程New.docx_第17页
第17页 / 共34页
Activiti工作流入门详解完整教程New.docx_第18页
第18页 / 共34页
Activiti工作流入门详解完整教程New.docx_第19页
第19页 / 共34页
Activiti工作流入门详解完整教程New.docx_第20页
第20页 / 共34页
亲,该文档总共34页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

Activiti工作流入门详解完整教程New.docx

《Activiti工作流入门详解完整教程New.docx》由会员分享,可在线阅读,更多相关《Activiti工作流入门详解完整教程New.docx(34页珍藏版)》请在冰点文库上搜索。

Activiti工作流入门详解完整教程New.docx

Activiti工作流入门详解完整教程New

Activiti工作流入门详解完整教程_New

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)JDK1.6或者更高版本

2)支持的数据库有:

h2,mysql,oracle,mysql,db2等

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

4)开发环境为Eclipse3.7或者以上版本,myeclipse为8.6版本

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

1)打开Help→InstallNewSoftware→Add

输入Name:

ActivitiDesigner

Location:

http:

//Activiti.org/designer/update/

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

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

2.3设置eclipseactivit插件的画流程图选项

打开菜单Windows-->Preferences-->Activiti-->Save下流程图片的生成方式

勾选上Createprocessdefinitionimagewhensavingthediagram操作,勾选上这个操作后在画流程图后保存eclipse会自动生成对应的流程图片。

2.4准备开发环境

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

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

点击Finish完成。

右键项目选择Properties,选择ProjectFacets勾选上图中的选项,点击Apply,再点击OK

然后将项目转换成web项目,右键项目选择Properties,在ProjectFacets中做如下勾选,然后点击Appy应用和OK确定

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

然后点击Appply和OK

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

org.Activiti

Activiti-engine

5.21.0

org.Activiti

Activiti-spring

5.21.0

org.codehaus.groovy

groovy-all

2.4.3

org.slf4j

slf4j-api

1.7.6

org.slf4j

slf4j-jdk14

1.7.6

junit

junit

3.8.1

test

mysql

mysql-connector-java

5.1.38

然后在命令行下mvncompile编译当前项目,将需要的包下载到本地仓库

2.4.2初始化数据库

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

xmlversion="1.0"encoding="UTF-8"?

>

//www.springframework.org/schema/beans"xmlns:

xsi="http:

//www.w3.org/2001/XMLSchema-instance"

xmlns:

context="http:

//www.springframework.org/schema/context"xmlns:

tx="http:

//www.springframework.org/schema/tx"

xmlns:

jee="http:

//www.springframework.org/schema/jee"xmlns:

aop="http:

//www.springframework.org/schema/aop"

xsi:

schemaLocation="http:

//www.springframework.org/schema/beanshttp:

//www.springframework.org/schema/beans/spring-beans-3.0.xsd

http:

//www.springframework.org/schema/contexthttp:

//www.springframework.org/schema/context/spring-context-3.0.xsd

http:

//www.springframework.org/schema/txhttp:

//www.springframework.org/schema/tx/spring-tx-3.0.xsd

http:

//www.springframework.org/schema/jeehttp:

//www.springframework.org/schema/jee/spring-jee-3.0.xsd

http:

//www.springframework.org/schema/aophttp:

//www.springframework.org/schema/aop/spring-aop-3.0.xsd">

class="org.Activiti.engine.impl.cfg.StandaloneProcessEngineConfiguration">

mysql:

//localhost:

3306/test?

useUnicode=true&characterEncoding=utf8"/>

jdbcUrl为你电脑数据库的url

jdbcUsername为数据库用户名

jdbcPassword为数据库密码

2)在main/java目录下创建任意目录和类

编写创建Activiti数据表方法

publicclassCreateTable{

/****

*创建流程表

**/

@Test

publicvoidcreateTable(){

ProcessEngineprocessEngine=ProcessEngineConfiguration.createProcessEngineConfigurationFromResource("Activiti.cfg.xml")

.buildProcessEngine();

System.out.println("------processEngine:

"+processEngine);

}

}

然后运行该测试方法,如果运行成功,在数据库中应该会产生25张Activiti的相关数据表

2.4.3Activiti表说明

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

流程部署相关表

act_re_deployement部署对象表

act_rep_procdef流程定义表

act_ge_bytearray资源文件表

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

流程实例相关表

act_ru_execution正在执行的执行对象表(包含执行对象ID和流程实例ID,如果有多个线程可能流程实例ID不一样)

act_hi_procinst流程实例历史表

act_hi_actinst存放历史所有完成的任务

 

Task任务相关表

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

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

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

 

流程变量表

act_ru_variable正在执行的流程变量表

act_hi_variable流程变量历史表

3.核心API

3.1ProcessEngine

说明:

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

2)产生方式

ProcessEngineprocessEngine=ProcessEngines.getDefaultProcessEngine();

3)可以产生RepositoryService

RepositoryServicerepositoryService=processEngine.getRepositoryService();

4)可以产生RuntimeService

RuntimeServiceruntimeService=processEngine.getRuntimeService();

5)可以产生TaskService

TaskServicetaskService=processEngine.getTaskService();

 

各个Service的作用

RepositoryService

管理流程定义

RuntimeService

执行管理,包括启动,推进,删除流程实例等操作

TaskService

任务管理

3.2RepositoryService

Activiti的仓库服务类。

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

bpmn文件和流程图片

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

3.3RuntimeService

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

3.4TaskService

是Activiti的任务服务类。

可以从这个类中获取任务的相关信息,如当前正在执行的个人待办和用户组待办任务。

3.5HistoryService

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

3.6ProcessDefinition

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

3.7ProcessInstance

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

 

4.入门HelloWorld程序

4.1创建流程图方法

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

在当前项目右键选择ActivitiDiagram流程图输入流程图名称HelloWorld,然后点击OK,

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

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

然后使用StartEvent,UserTask,EndEvent画出下面的流程图,然后用Connection中的SequenceFlow连线连接起来。

4.2创建流程图,如下图

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

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

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

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

启动完成后在act_re_deployment流程部署表和act_re_procdef流程定义表中会有对应的数据信息.

4.5启动流程实例

其中runtimeService.startProcessInstanceByKey("HelloWorldKey");中的HelloWorldKey对应流程图中的ID值,在数据表中对应act_re_procdef流程定义表中的key字段

 

启动完流程后在act_ru_execution表中会产生一条数据,这条数据为当前流程正在执行的任务,其中act_id_字段的值对应流程图节点的ID值

在act_ru_task表中会产生一条任务数据,execution_id_对应act_ru_execution主键,proc_inst_id_为流程实例ID,name_值为流程节点名称,assignee_字段为该待办当前的处理人

4.6查询待办任务

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

 

4.7完成待办任务

其中taskId对应act_ru_task表的主键ID,因为当前待办任务为第一个节点提交申请,当执行完这个待办后下一条待办数据将会流转到审批【部门经理】那,然后以此类推可以将部门经理和总经理的待办任务全部查询和执行完成。

5.查询和删除流程定义

1)查询流程定义

2)删除流程定义

 

6.流程变量操作

6.1设置流程变量

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

a.启动流程的时候设置

b.通过taskService或者runtimeService设置

提示:

如果设置的流程变量值是一个对象类型,这个对象必须实现序列化Serializable操作,并且要为该对象类指定一个版本ID

6.2获取流程变量

见工程操作

7.流程连线

在画流程图的时候可以对流程的连线设置表达式,然后在执行的时候设置流程变量值,然后Activiti会根据对应的值走对应的节点

点击一条连线,在Mainconfig中的Condition属性值中设置${message=='同意'},另外一条线设置为${message=='不同意'},然后在代码中设置对应流程变量值。

见工程操作

8.排他网关

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

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

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

 

见工程操作

9.并行网关

十字图标对应图标中的ParallelGateway

并行网关不需要指定连线的表达式,当流程流转到并行任务时会出发多个任务,当多个任务完成后在会将流程流转到下一个节点

 

见工程操作

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

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

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

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

在工程中可以将起草人的处理变量设置为userId,审批人的处理变量设置为appUserId,然后通过业务模块和登录人来获取对应模块的审批人。

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

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

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

2)点击任务节点,选择Listener选项卡,点击New,将Event的值改为create

然后选择创建的TaskListenerImpl实现类

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

 

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

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

设置的候选处理人用英文输入法的逗号隔开,当任务到达该节点后,设置的候选人其中任何一个人都可以处理当前待办,处理完成后待办结束。

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

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

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

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

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

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

当前位置:首页 > 工程科技 > 能源化工

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2