如何在Groovy编写的任务脚本中获取任务执行者用户名?
Groovy任务脚本获取当前执行用户信息的方法
根据工作流引擎的通用上下文规则,按以下优先级取数即可:
- 优先从引擎默认注入的任务实例取办理人ID,适配Flowable、Activiti等绝大多数主流开源工作流引擎:
// 取当前任务的办理人ID,task是脚本上下文默认内置的任务对象,无需额外声明 def assigneeUserId = task.assignee // 如果需要完整用户对象/用户显示名,调用引擎身份服务查询即可 def identityService = task.getProcessEngineServices().getIdentityService() def currentUser = identityService.createUserQuery() .userId(assigneeUserId) .singleResult() // 从用户对象取需要的字段,比如显示名、账号、部门等 def currentUserName = currentUser.firstName + (currentUser.lastName ?: "")
- 如果是自研工作流平台、低代码平台的内嵌Groovy任务,平台一般会直接注入当前操作人对象,不需要额外查询,常见的内置变量名有
currentUser、operator、currentUserName,直接调用即可:
// 示例:直接取平台注入的用户名 def currentUserName = currentUser.name def currentUserId = currentUser.id
排查提示:如果不确定当前上下文有哪些内置变量,可以先执行以下脚本打印所有上下文键值对,找到和操作人相关的字段直接用即可:
binding.variables.each { k, v -> println "变量名:${k},变量内容:${v}" }
注意:如果是定时触发、系统自动触发的无人工参与的任务,取到的办理人可能为null或者系统内置账号,需要提前做空值兼容。
内容的提问来源于stack exchange,提问作者Mind Optimizer
相关产品推荐
相关产品推荐

