使用activiti时,怎么由当前任务的签收者指定下一个节点任务的签收者。
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用activiti时,怎么由当前任务的签收者指定下一个节点任务的签收者。相关的知识,希望对你有一定的参考价值。
简单的说就是要动态的指定各个节点任务的签收者。不能在配置文件中写死。就是要在流程过程中由每个节点的任务的签收者指点下一个节点任务的签收者。
参考技术A 你可以指定角色可以看到对应任务,然后进行签收、办理。即指定candidate 参考技术B 签收者。不能在配置文件中写死。就是要在Activiti 流程启动者(setAuthenticatedUserId)
SpringBoot集成的Activiti6.0代码(绘制工具界面代码 + 审批代码)
在启动一个流程时,我们会有将当前用户启动的流程保存起来,作为流程发起人(启动人、申请人、提交人)
而在保存这个流程启动者信息,api 没有明确规范该怎么存。所以这里我总结下我学到的保存流程启动者信息的方法。
-
咖啡兔博客中的做法 - Activiti设置流程发起用户信息 - 咖啡兔 - HenryYan
注: 如果单纯照博客这么做的话,确实能在ACT_HI_PROCINST
的START_USER_ID_
字段存放该值,但是我却没有取出来,一直是null。 -
同上,也用 :
identityService.setAuthenticatedUserId(userId);
,但是这里还要配合 流程定义里面的 开始事件startEvent
,在开始事件中设置初始信息 。eg:
<startEvent id="startevent1" name="Start" activiti:initiator="applyUserId"/>
注: 这里applyUserId 是被存放在流程变量中的 , 而它的值就是 identityService.setAuthenticatedUserId(userId)
存入的userId。 因为是流程变量,所以可以用通用的获取流程变量的方法得到。
-
使用流程变量(Map) 之前提过,在启动流程时有很多方法,同一个方法还有很多重载。如:
startProcessInstanceByKey(String processDefinitionKey, Map<String,Object> variables);
这里启动除了给流程定义的key,还给了一个map ,这个map 维护了了这个流程实例的变量。里面你能够存放很多东西,包括启动人信息。如:
// 设置申请人,将之保存在流程变量中
Map<String ,Object > variables = new HashMap<>();
variables.put("applyUser","kk");
至于得到流程变量的值,示例如下:
Map<String,Object> vars = taskService.getVariables(task.getId());
for (String variableName : vars.keySet())
String val = (String) vars.get(variableName);
System.out.println(variableName + " = " +val);
- 保存在业务表单中。在业务表单维护一个冗余字段,用于保存发起人。咖啡兔的Demo源代码就那么干的。
以上是关于使用activiti时,怎么由当前任务的签收者指定下一个节点任务的签收者。的主要内容,如果未能解决你的问题,请参考以下文章
activitieventlistener和tasklistener哪个先执行