前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >项目实践工作流之Activiti学习(四十一)

项目实践工作流之Activiti学习(四十一)

作者头像
用户1289394
发布2023-11-22 13:48:53
3250
发布2023-11-22 13:48:53
举报
文章被收录于专栏:Java学习网

5.3.2流程定义:

企业体检流程,公司全体员工进行常规项检查、抽血化验,公司管理层除常规检查和抽血化验还要进行增加项检查。

图标:

员工类型:

通过流程变量 userType 来表示,如果等于 1 表示普通员工,如果等于 2 表示领导

注意:通过包含网关的每个分支的连线上设置 condition 条件。

5.3.3测试

如果包含网关设置的条件中,流程变量不存在,报错;

org.activiti.engine.ActivitiException: Unknown property used in expression: ${userType=='1' || userType=='2'}

需要在流程启动时设置流程变量 userType

当执行到包含网关:

流程实例执行表:SELECT * FROM act_ru_execution

第一条记录:包含网关分支。

后两条记录:两个分支:常规项体检,抽血化验

当前任务表:ACT_RU_TASK_

上图中,常规项体检,抽血化验都是当前的任务,在并行执行。

如果有一个分支执行到汇聚:

先走到汇聚结点的分支,要等待其它分支走到汇聚。

等所有分支走到汇聚,包含网关就执行完成。

包含网关执行完成,分支和汇聚就从 act_ru_execution 删除。

小结:在分支时,需要判断条件,符合条件的分支,将会执行,符合条件的分支最终才进行汇聚。

总结

什么是工作流?

就是通过计算机对业务流程进行自动化管理,实现多个参与者按照预定义的流程去自动执行业务流程。

什么 activiti?

Activiti 是一个工作流的引擎,开源的架构,基本 bpmn2.0 标准进行流程定义,它的是前身是 jbpm。

Activiti 通过是要嵌入到业务系统开发使用。

如何使用 activiti 开发?

 第一步:部署 activiti 的环境。

环境包括:jar 包和数据库(25 张表)

业务系统通过 spring 和 activiti 整合进行开发。

 第二步:使用 activiti 提供流程设计器(和 idea 或 eclipse 集成的 designer)工具进行流程定义

流程定义生成两个文件:.bpmn 和.png(不是必须的)。

 第三步;将流程定义文件部署到 activiti 的数据库

SELECT * FROM act_re_deployment #流程定义部署表

一次部署插入一条记录,记录流程定义的部署信息

SELECT * FROM act_re_procdef #流程定义表一次部署流程定义信息,如果一次部署两个流程定义,插入两条记录

建议:一次部署只部署一个流程定义,这样 act_re_deployment 和 act_re_procdef 一对一关系

常用两个方法:单个文件部署和 zip 文件部署。

建议单个文件部署。

 第四步: 启动一个流程实例

业务系统就可以按照流程定义去执行业务流程,执行前需要启动一个流程实例

根据流程定义来启动一个流程实例。

指定一个流程定义的 key 启动一个流程实例,activiti 根据 key 找最新版本的流程定义。

指定一个流程定义的 id 启动一个流程实例。

启动一个实例需要指定 businesskey(业务标识),businessKey 是 activiti 和业务系统整合时桥梁。

比如:请假流程,businessKey 就是请假单 id。

启动一个实例还可以指定流程变量,流程变量是全局变量(生命期是整个流程实例,流程实例结束,变量就消失)

 第五步:查询待办任务

查询个人任务:使用 taskService,根据 assignee 查询该用户当前的待办任务。

查询组任务:使用 taskService,根据 candidateuser 查询候选用户当前的待办组任务。

 第六步:办理任务

办理个人任务:调用 taskService 的 complete 方法完成任务。

如果是组任务,需要先拾取任务,调用 taskService 的 claim 方法拾取任务,拾取任务之后组任务就变成了个人任务(该任务就有负责人)。

网关:

排他网关:任务执行之后的分支,经过排他网关分支只有一条有效。

并行网关:任务执行后,可以多条分支,多条分支总会汇聚,汇聚完成,并行网关结束。

包含网关:是排他网关和并行网关结合体。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-11-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Java学习网 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档