怎么设置流程发起人

临远 2014-12-9 0:00:00 阅读:2629 回复:1

activiti里设置流程发起人的功能很绕。


  在activiti中使用流程发起人的步骤如下:
  1. 在startEvent中使用activiti:initiator="initiator"设置一个变量名。
  2. 发起流程时,先设置setAuthenticateduserId()设置流程发起人,再发起流程。

identityService.setAuthenticatedUserId("lingo");
try{
  runtimeService.startProcessInstanceById(id);
} finally {
  identitySerivce.setAuthenticatedUserId(null);
}


  这样操作后,发起流程后,会创建一个initiator流程变量(变量名是由activiti:initiator指定的),变量值是lingo,也就是当前的流程发起人。
  后续就可以使用expression引用这个变量,比如设置成assignee="${initiator}"
 

historicProcessInstance里也会保存start_user_id。可以用historicProcessInstanceQuery.startUserId("lingo")查询

临远 2014-12-9 0:00:00