如何在Activiti的Groovy脚本中获取启动流程的用户ID?
解决Activiti 5.22 Groovy脚本中获取流程启动用户ID的问题
针对你在Activiti 5.22的Groovy初始脚本中无法获取启动用户ID的问题,提供以下几种可行方案:
通过流程实例对象直接获取
在工作流第一步的Groovy脚本中,可直接通过execution变量访问流程实例的启动用户ID,这是最稳妥的官方方式:def startUserId = execution.processInstance.startUserId // 后续可使用startUserId进行业务逻辑处理这个值是流程启动时自动记录的,只要启动流程时正确传入了用户ID(比如通过
identityService.setAuthenticatedUserId()或ProcessInstanceBuilder.startUserId()),就能拿到有效数据。通过Activiti上下文获取认证用户ID
如果上述方式失效,可尝试通过Activiti内部上下文获取当前认证用户ID,这属于内部API,但在5.22版本中稳定可用:import org.activiti.engine.impl.context.Context def authenticatedUserId = Context.commandContext.authenticatedUserId排查启动流程时的用户ID传递
若以上两种方式都拿不到值,要确认流程启动环节是否正确设置了用户ID:- 使用
IdentityService设置认证用户:identityService.setAuthenticatedUserId("your_user_id"); runtimeService.startProcessInstanceByKey("process_key"); - 或者通过
ProcessInstanceBuilder直接指定启动用户:runtimeService.createProcessInstanceBuilder() .processDefinitionKey("process_key") .startUserId("your_user_id") .start();
- 使用
内容的提问来源于stack exchange,提问作者Gleison Silva
相关产品推荐
相关产品推荐

