activiti完整教程.docx

上传人:b****8 文档编号:11239085 上传时间:2023-02-26 格式:DOCX 页数:15 大小:23.09KB
下载 相关 举报
activiti完整教程.docx_第1页
第1页 / 共15页
activiti完整教程.docx_第2页
第2页 / 共15页
activiti完整教程.docx_第3页
第3页 / 共15页
activiti完整教程.docx_第4页
第4页 / 共15页
activiti完整教程.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

activiti完整教程.docx

《activiti完整教程.docx》由会员分享,可在线阅读,更多相关《activiti完整教程.docx(15页珍藏版)》请在冰豆网上搜索。

activiti完整教程.docx

activiti完整教程

1.activiti 介绍

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

了业务流程管理,工作流,服务协作等领域的一个开源,灵活的,易扩展的可执行流程语

言框架。

Activiti 基于 Apache 许可的开源 BPM 平台,创始人 Tom Baeyens 是 JBoss JBPM 的项目架构

师,它的特色是提供了 eclipse 插件,开发人员可以通过插件直接绘画出业务流程图。

 

1.1 工作流引擎

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

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

控和管理流程的运行。

 

1.2 BPMN

业务流程建模与标注(Business Process Model and Notation,BPMN),描述流程的基本符号,

包括这些图元如何组合成一个业务流程图(Business Process Diagram)

2.准备环境

 

2.1 activiti 软件环境

1)JDK1.6 或者更高版本

2)支持的数据库有:

h2,mysql,oracle,mysql,db2 等

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

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

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

1)打开 Help →Install New Software →Add

输入 Name:

Activiti Designer

Location:

 http:

//activiti.org/designer/update/

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

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

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

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

 

勾选上 Create process definition image when savingthe diagram 操作,勾选上这个操作后

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

2.4 准备开发环境

 

2.4.1 创建 maven web 项目,在 maven 中添加 activiti 依赖

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

项目

 

点击 Finish 完成。

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

然后将项目转换成 web 项目,右键项目选择 Properties,在 ProjectFacets 中做如下勾选,然后

点击 Appy 应用和 OK 确定

 

然后右键项目 Properties,选择 Deployment Assembly,将 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

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

2.4.2 初始化数据库

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

xml version="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/bean

s http:

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

3.0.xsd

http:

//www.springframework.org/schema/context

http:

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

3.0.xsd

http:

//www.springframework.org/schema/tx

http:

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

http:

//www.springframework.org/schema/jee

http:

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

http:

//www.springframework.org/schema/aop

http:

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

 

class="org.activiti.engine.impl.cfg.StandaloneProcessEngine

Configuration">

value="com.mysql.jdbc.Driver" />

value="jdbc:

mysql:

//localhost:

3306/test?

useUnicode=true&ch

aracterEncoding=utf8" />

jdbcUrl 为你电脑数据库的 url

jdbcUsername 为数据库用户名

jdbcPassword 为数据库密码

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

编写创建 activiti 数据表方法

public class CreateTable {

/****

* 创建流程表

* */

@Test

public void createTable() {

ProcessEngine processEngine =

ProcessEngineConfiguration.createProcessEngineConfigurationFro

mResource("activiti.cfg.xml")

.buildProcessEngine();

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

" +

processEngine);

}

}

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

的相关数据表

 

2.4.3 activiti 表说明

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

流程部署相关表

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 的)

RepositoryService

管理流程定义

RuntimeService

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

等操作

TaskService

任务管理

act_hi_actinst所有节点活动历史表 (对应流程的所有节点的活动历史,从开始节点一直

到结束节点中间的所有节点的活动都会被记录)

 

流程变量表

act_ru_variable 正在执行的流程变量表

act_hi_variable 流程变量历史表

 

3.核心 API

 

3.1 ProcessEngine

说明:

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

2) 产生方式

ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();

3)可以产生 RepositoryService

RepositoryService repositoryService =processEngine.getRepositoryService();

4) 可以产生 RuntimeService

RuntimeService runtimeService = processEngine.getRuntimeService();

5) 可以产生 TaskService

TaskService taskService =processEngine.getTaskService();

 

各个 Service 的作用

3.2 RepositoryService

Activiti 的仓库服务类。

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

bpmn 文件和流程图片

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

3.3 RuntimeService

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

3.4 TaskService

是 activiti 的任务服务类。

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

办和用户组待办任务。

3.5 HistoryService

是 activiti 的查询历史信息的类,在一个流程执行完成后,这个对象为我们提供查询历史信

息,可以跟踪流程实例对应所有待办节点的运行情况。

3.6 ProcessDefinition

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

3.7 ProcessInstance

代表流程定义的执行实例,当一个部署的流程图启动后,该流程只有一条流程实例数据,

但是它的流程任务可以有多个,每个任务对应流程图中相应的流程节点。

 

4.入门 HelloWorld 程序

 

4.1 创建流程图方法

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

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

 

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

 

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

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

SequenceFlow 连线连接起来。

 

4.2 创建流程图,如下图

 

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

1)选中第一个节点,在 General 中的 name 属性中输入当前节点的名称,在 Main config 中

的 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 在任务节点中设置 Candidate user 候选人

 

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

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

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

 

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

 

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

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

 

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

 

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

当前位置:首页 > PPT模板 > 其它模板

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

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