flowable任务节点多实例实现会签功能

flowable任务节点实例实现会签功能
实现功能:
1.并⾏,所有⼈审批通过时,节点结束,流程运转到下⼀个节点;
2.并⾏,所有⼈中有⼀个⼈审批通过,节点结束,流程运转到下⼀个节点;
3.串⾏,所有⼈审批通过,节点结束,流程运转到下⼀个节点;
4.动态配置。
1.并⾏,所有⼈审批通过时,节点结束,流程运转到下⼀个节点
1.1 流程定义配置
多实例类型:<multiInstanceLoopCharacteristics isSequential="false"> 并⾏的配置
完成条件(多实例):${nrOfCompletedInstances/nrOfInstances >= 1} 表⽰审批通过的总数⼤于等于实例总数
3.loopCounter:表⽰特定实例的在循环的索引值。可以使⽤activiti的elementIndexVariable属性修改loopCounter的变量名。
可以通过Variable(x)⽅法获得这些变量。
分配⽤户:流程任务处理⼈
基数(多实例):<loopCardinality>10</loopCardinality> 实例总数,实例总数应与分配⽤户的流程处理⼈数⼀致。
1.2 部署并启动流程,查看数据库的变化
select * from ACT_RU_TASK where PROC_INST_ID_='160005';
SELECT * FROM ACT_RU_IDENTITYLINK T
LEFT JOIN ACT_RU_TASK T1 ON T.TASK_ID_=T1.ID_
载人行李箱
where T.TYPE_ = 'candidate'
原油在线含水分析仪AND T1.PROC_INST_ID_='160005';
ACT_RU_IDENTITYLINK权限表中,确实把分配的⽤户设置进去了
select * from ACT_RU_VARIABLE where PROC_INST_ID_='160005';
龙脑抑菌剂问题:查询⽤户待办任务,⼀个⽤户会有10个待办,此问题如何解决?
1.3 完成⼀个任务,查看数据库变化
select * from ACT_RU_TASK where PROC_INST_ID_='160005';完成了⼀个任务,还有9个任务
select * from ACT_RU_VARIABLE where PROC_INST_ID_='160005';
骨刺灵
活动实例-1,忆完成实例+1
1.4 全部完成任务,查询任务表,任务多实例节点的任务没有了,流程运转到下⼀个节点。
问题:分配⽤户为2⼈(⽤户1,⽤户2),基数(多实例)设置为10,那么⽤户1有10个待办任务、⽤户2也有10个待办任务。⽤户1完成的任务数+⽤户2完成的任务数>=10,任务多实例节点完成。
与实际想要的实现的需求不符,如何能做到并⾏时,分配⽤户2⼈,此2⼈都必须且有⼀个待办,分别完成后,任务多实例节点完成?
2.并⾏,所有⼈中有⼀个⼈审批通过,节点结束,流程运转到下⼀个节点
只需把完成条件(多实例)改为:${nrOfCompletedInstances/nrOfInstances > 0},其他跟1⼀样。
3.串⾏,所有⼈审批通过,节点结束,流程运转到下⼀个节点
3.1 配置
3.2 启动流程,查看数据库数据的变化
select * from ACT_RU_TASK where PROC_INST_ID_='165005';
串⾏时,只会创建⼀个任务
SELECT * FROM ACT_RU_IDENTITYLINK T
LEFT JOIN ACT_RU_TASK T1 ON T.TASK_ID_=T1.ID_
where T.TYPE_ = 'candidate'
AND T1.PROC_INST_ID_='165005';
ACT_RU_IDENTITYLINK权限表中,把分配的⽤户设置进去了,此时⽤户1、⽤户2分别有⼀个待办任务
select * from ACT_RU_VARIABLE where PROC_INST_ID_='165005';
串⾏时,nrOfActiveInstances值⼀直为1
3.3 完成两次任务后,任务多实例节点结束,流程运转到下⼀节点
垃圾锅炉
富氧设备问题:⽤户1完成⼀次任务,查询待办,还会有待办,⼜完成⼀次任务。任务多实例节点就结束了。这⾥的串⾏,是不是表⽰,完成的任务次数等于定义的基数(多实例),就表⽰完成任务多实例节点。
跟想要的效果不⼀致,如何实现串⾏时,分配的⽤户按顺序全部完成后,任务多实例节点才完成?
4.动态配置
4.1 流程⽂档配置
参数说明:
activiti:assignee="${assignee}"
activiti:elementVariable="assignee" 多实例任务依赖上⾯的配置${assignee}
activiti:collection="assigneeList"
三个参数结合决定了,当前节点的处理⼈来⾃assigneeList集合,注意这⾥是集合信息⽽不是字符串,所以程序的运⾏时候变量的赋值
Map<String, Object> vars = new HashMap<>();
String[] v = { "1", "2"};
vars.put("assigneeList", Arrays.asList(v));
String processDefinitionKey = "Multi-instance";
ProcessInstance startProcessInstanceByKey = runtimeService.startProcessInstanceByKey(processDefinitionKey,vars);
4.2 启动流程,查询数据库数据的变化
select * from ACT_RU_TASK where PROC_INST_ID_='172511';
分别给⽤户1、⽤户2分配是任务
4.3 完成任务
⽤户1、⽤户2分配完成任务,任务多实例节点结束,流程运转到下⼀节点。
问题:动态配置,需要传递处理⼈。在项⽬实际应⽤中,只需要在启动流程时把处理⼈集合传递进来,后续完成任务不需要再传递。能否做到流程⽂件定义时,按分配的⽤户和⽤户组,动态的给流程传递处理⼈?
问题:任务多实例,如何进⾏审批不通过的处理?

本文发布于:2024-09-22 11:23:06,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/2/306850.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:任务   实例   节点   流程   完成
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议