流程发起人


设置认证用户

identityService.setAuthenticatedUserId("用户ID");
认证用户的作用是设置流程发起人:

    在流程开始之前设置,会自动在表ACT_HI_PROCINST 中的START_USER_ID_中设置用户ID:

  用来设置启动流程的人员ID,引擎会自动把用户ID保存到activiti:initiator中

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字段,可以通过下面的代码获取。

 1 HistoricProcessInstance hi = historyService.createHistoricProcessInstanceQuery().singleResult();

2 hi.getStartUserId(); 

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM