您的位置:首页 > 其它

流程发起人

2017-09-25 21:41 573 查看
设置认证用户

1 //流程发起前设置发起人,记录在流程历史中
2 identityService.setAuthenticatedUserId("kitty");
3 //开始流程
4 runtimeService.startProcessInstanceByKey("XML中的ID");
5 //查询流程发起人
6 logger.info(historyService.createHistoricProcessInstanceQuery()
7                 .startedBy("ketty").singleResult().getProcessDefinitionId());


 
// 根据用户查询用户有权限开启的流程定义


processDefinitionQuery.startableByUser("用户ID");


动态指定任务办理人


手动设置任务办理人

 1 <usertask
id="hrAudit" name="人事审批" activiti:assignee="${hrUserId}"></usertask> 
动态指定任务办理人,只要在任务完成的时候传递activiti:assignee属性中的变量即可

1 Map<String, Object> variables = new HashMap<String, Object>();
2
3 variables.put("hrUserId", hrUserId);
4
5 taskService.complete(taskId, variables);



自动设置任务办理人

下面的代码是利用initiator功能,设置一个名称(不是变量而是变量名)到启动事件上,并且在启动流程时调用一些下面的方法:
 1 
identityService.setAuthenticatedUserId(currentUserId); 
其中currentUserId表示当前用户,也就是启动流程的人,配置如下所示:
 
 1 <startevent
id="startevent1" name="Start" activiti:initiator="applyUserId"></startevent>
2 <usertask
id="reportBack" name="销假" activiti:assignee="${applyUserId}"></usertask> 
这样流程启动之后如果任务流转至"销假"节点则会自动把任务分配给启动流程的人。


获取流程发起人

如果在启动流程的时候调用了下面的代码:
 1 identityService.setAuthenticatedUserId(currentUserId); 
引擎会记录启动人,即在ACT_HI_PROINST表的START_USER_ID字段,可以通过下面的代码获取(procInsId为流程实例id)。
 1 HistoricProcessInstance
hi = historyService.createHistoricProcessInstanceQuery().processInstanceId(procInsId).singleResult();
2 hi.getStartUserId(); 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: