Activiti工作流学习总结

本文详细介绍了Activiti工作流的学习,包括加载工作流插件、环境搭建、流程设计与部署、启动与查询流程实例、监听器的应用以及实际案例——请假流程的实现。通过监听器,可以在任务完成后更新业务数据状态,提高效率。
摘要由CSDN通过智能技术生成

一、工作流的初步认识

在我初步学习完工作流的理解中,工作流就是将开发中由代码控制的业务流程状态抽取出来然后进行统一控制的机制!比如在实际开发中,我们需要表明一个状态的改变,可以通过字段status来进行转化,常见的业务请假流程四个环节的状态有:'待提交审核','主管审核'、'经理审核'、'审核完成',当我们在实现这几个状态的改变时,是通过硬编码实现的,执行待提交审核状态,就一定会到达主管审核,以此类推!如果这时业务需求发生了改变,流程只需要三个环节:待提交审核','主管审核'、'审核完成',这时我们就得去更改代码了,需要在进行'主管审核'后,直接将状态更改为;审核完成'状态,看起来这样好像也不麻烦,就更改一处!!但是,这只是一个小小的流程而已,如果业务再复杂一点呢,一旦更改流程,是不是代码需要大改了?这样着实不方便啊!而工作流,恰恰帮我们解决了这个问题,工作流就适用于业务复杂且需求经常性变更的流程。

二、工作流的学习内容

1、加载工作流插件

在eclipse中加载插件工作流插件http://www.activiti.org/designer/update/

2、两种工作流环境的搭建:

a、activiti单独运行StandaloneProcessEngineConfiguration
b、activiti与spring整合SpringProcessEngineConfiguration
搭建时需要五种activity表处理策略,即databaseSchemaUpdate配置的五种值
false(默认):检查数据库表的版本和依赖库的版本, 如果版本不匹配就抛出异常。
true:构建流程引擎时,执行检查,如果需要就执行更新。 如果表不存在,就创建。(常用)
create-drop: 构建流程引擎时创建数据库表, 关闭流程引擎时删除这些表。
drop-create:先删除表再创建表。(常用,使用完成后改为true)
create: 构建流程引擎时创建数据库表, 关闭流程引擎时不删除这些表。

3、设计流程定义

a、加载完eclipse的工作流插件后,我们可以在新建中找到Activiti下的Activiti Diagram进行bpmn文件的创建
b、可以在eclipse-->window-->preferences-->Activiti-->save action下勾选 create process definition image when saving the diagram 大概意思就是当保存bpmn文件时,就会自动生成png文件,这两个文件是流程部署需要用到的文件,也是我们设计流程定义时的文件
c、通过eclipse的Activiti  Diagram Editor打开bpmn文件
c1、有一个空白的面板是我们需要操作设计的地方
c2、Palette面板是我们选择的设计图形
c2.1、select选择器:可以进行选择设计图形,然后进行properties的值修改
c2.2、StartEvent开始事件:工作流的开始标志
c2.3、EndEvent结束事件:工作流的结束标志
c2.4、UserTask任务:工作流整个流程中的任务,可以指定任务负责人、候选人、候选组
c2.5、ParallelGateway并行网关:实现流程的分支与汇聚,所有的分支都不用进行条件判断,所有的分支都要统一汇聚到一起,才能执行下一个任务
c2.6、ExclusiveGateway排他网关:流程分支需要通过判断为true才能进行执行,如果所有分支都不能执行就会抛出异常,如果有1个以上的分支通过判断为true,那么只会执行其中一个分支,这种情况需要避免!
c2.7、InclusiveGateway包含网关:实现并行网关和排他网关的结合体,流程分支需要进行条件判断才能进行执行,条件不通过的不执行,所有通过条件判断的分支需要全部汇聚到一起,才能执行下一个任务
c2.8、SequenceFlow连线:设计图形之间的连接操作,可以加上condition条件,每个分支正是通过这个条件进行判断的
c3、Properties设计图形的属性查看,选择哪个设计图形就能查看相对应的属性
c31、不选中任何图形进行定义流程的Process:id为流程定义标识purchasingflow(重要),name为流程定义名称
c32、 General下的id是选中的设计图形的唯一标识(重要),name即 选中的设计图形 的名称
c33、选中StartEvent开始事件:Main Config下的Initiator发起人(重要),我们可以对此属性进行设值startUser。而在接下来的第一个任务中我们可以通过${startUser}来给第一个任务的Assignee属性赋予值,即是这个流程的第一个任务执行者,即是这个流程的发起人。
c34、选中SequenceFlow:Main Config下的Condition即是流程分支的条件判断,可以通过借助流程变量进行流程条件编写,比如${userType=='1'},userType即是我们在代码中设置的流程变量
c35、选中UserTask任务:
Assignee一般对应业务数据中的用户id,任务负责人,可以通过流程变量进行编写或者直接硬编码指定用户id
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值