Activiti设置流程发起用户信息
来源:互联网 发布:淘宝仓库管理员累吗 编辑:程序博客网 时间:2024/05/18 01:15
先来看一段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.结束
问题很简单,但是官网的手册没有提到,希望让遇到问题的人少走弯路。
0 0
- Activiti设置流程发起用户信息
- activiti 设置流程变量
- activiti 流程实例设置名称
- Android数据业务发起流程
- Android数据业务发起流程
- Activiti流程变量的设置与获取(五)
- 【Activiti 基础篇四】流程变量设置与获取方式
- activiti流程启动
- Activiti业务关联流程
- activiti中的流程变量
- activiti之流程变量
- activiti 简单流程
- Activiti流程引擎介绍
- Activiti流程变量
- Activiti 流程定义实例
- Activiti 流程变量
- Activiti 查看流程历史记录
- Activiti(二)流程
- http协议post数据标准格式
- 利用静态服务提升读取Activiti流程图的性能
- 剑指offer 变态跳台阶
- Java设计模式学习总结
- Android 在 LinearLayout 添加分割线 divider
- Activiti设置流程发起用户信息
- 微信企业号java,主页型应用的oauth2验证
- jquery图片轮播器插件 jquery.slides
- c#事务处理(Transaction)
- 析构函数到底都做了什么
- 设置Edittext 能输入小数,
- iOS开发之自定义导航栏返回按钮右滑返回手势失效的解决
- JAVA中的命令模式实例教程
- 20160310工作日志