Activiti设置流程发起用户信息

简介:

先来看一段API调用:

?
1
2
List hpis = historyService.createHistoricProcessInstanceQuery()
             .startedBy(userCode).list();

查询结果为空,这是为什么?

1.原因说明

当通过runtimeService接口启动(startProcessInstance[Byxxx])流程的时候会设置一个变量,代码片段(ProcessDefinitionEntity.java#createProcessInstance):

?
85
86
87
88
89
String initiatorVariableName = (String) getProperty(BpmnParse.PROPERTYNAME_INITIATOR_VARIABLE_NAME);
if (initiatorVariableName!= null ) {
     String authenticatedUserId = Authentication.getAuthenticatedUserId();
     processInstance.setVariable(initiatorVariableName, authenticatedUserId);
}

从上面的代码片段中可以看出在启动流程的时候引擎会先从Authentication读取已认证用户信息;现在我们只要能设置认证用户的ID就可以了。

2.解决问题

查看API发现接口IdentityService有一个方法:setAuthenticatedUserId(String authenticatedUserId),正是这个方法在其接口实现类:org.activiti.engine.impl.IdentityServiceImpl#setAuthenticatedUserId中调用了Authentication.setAuthenticatedUserId()

解决办法很简单只要在启动流程之前调用API即可:identityService.setAuthenticatedUserId(userId);

?
1
2
identityService.setAuthenticatedUserId(userId);
processInstance = runtimeService.startProcessInstanceByKey( "leave" , entityId, variables);

当流程启动之后可以到表ACT_HI_PROCINST中查看字段START_USER_ID_的值来验证是否生效。

3.结束

问题很简单,但是官网的手册没有提到,希望让遇到问题的人少走弯路。

目录
相关文章
|
1月前
|
API 数据库
Activiti 流程资源文件下载及历史信息查询
Activiti 流程资源文件下载及历史信息查询
18 0
|
6月前
22activiti - 流程管理定义(查询流程状态)
22activiti - 流程管理定义(查询流程状态)
52 0
xxljob在业务代码中添加任务(登录后token验证)
之前做过一次在业务代码中调用xxljob的接口添加任务启动任务,xxljob的接口添加免登录验证注解后直接调用,博文地址:xxl-job 在业务代码中添加任务,后面用到的groupId获取方法也在这里面。
|
9月前
|
安全 Java 数据库连接
四.SpringSecurity基础-自定义登录流程
SpringSecurity基础-自定义登录流程
|
4月前
|
存储 前端开发 Java
①实现基于session的登录流程:发送验证码、登录注册、校验登陆状态
①实现基于session的登录流程:发送验证码、登录注册、校验登陆状态
62 0
|
6月前
|
数据库
30activiti - 流程执行历史记录
30activiti - 流程执行历史记录
27 0
|
7月前
|
Java
JavaWeb用户信息管理系统-创建登录业务的Filter
JavaWeb用户信息管理系统-创建登录业务的Filter
21 0
|
8月前
|
缓存 NoSQL 前端开发
若依系统(分离版)后台接口被调时,代码哪里判断了token是否超时?
若依系统(分离版)后台接口被调时,代码哪里判断了token是否超时?
482 0
|
11月前
|
前端开发 Java 测试技术
基于Springboot外卖系统05:用户非登陆状态的页面拦截器实现
用户访问接口验证,如果用户没有登录,则不让他访问除登录外的任何接口。
90 0
jira学习案例26-用useHttp管理jwt和登录状态
jira学习案例26-用useHttp管理jwt和登录状态
52 0
jira学习案例26-用useHttp管理jwt和登录状态