开发者社区> yemon> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

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.结束

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

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
Activiti进阶篇-流程实例
Activiti进阶篇-流程实例
24 0
Activiti进阶篇-流程变量
Activiti进阶篇-流程变量
13 0
Activiti-Activiti整合篇
Activiti-Activiti整合篇
26 0
Activiti工作流框架中任务流程元素详解!使用任务元素进行任务的调度和执行
本篇文章对工作流Activiti框架中的流程元素的任务流程元素的基本概念以及使用方式进行了详尽的说明。包括用户任务,脚本任务,Java服务任务,WebSevice任务和业务规则任务。通过对工作流Activiti框架的各种类型的任务的使用方式的描述,可以在项目中集成使用工作流Activiti框架时进行更多的扩展任务操作。
679 0
activiti自定义流程之整合(一):整体环境配置
<p>结合之前所说的自定义流程的思路,分别是后台、前台、整合,之前的内容也分别进行了相关的练习和尝试,现在就该到了最后的整合了,依旧是以实现功能为目的,细节暂且不去管他。</p> <p><br></p> <p>因为我们实际项目后端用的是spring、spring mvc、mysql、mybatis,前台用的angular js,因此在整合时我也自己搭建使用了这样的环境。</p> <b
1773 0
吐槽一下Activiti的用户手册和一本书
业余没事的时候,看了点Java的资料,无意之中发现了Activiti,就打算自己跑几个例子看看到底是怎么回事。一直搞底层,也得偶尔关心下上层到底发展到什么程度了不是。
1057 0
扩展Activiti 5.12轻松搞定流程实例跟随流程版本一起升级
扩展Activiti 5.12轻松搞定流程实例跟随流程版本一起升级,本文详细介绍之 本功能依托于bboss 3.6.2分支和Activiti 5.12.0版本。 为activiti组件org.
873 0
扩展Activiti-5.12轻松实现流程节点间自由跳转和任意驳回/撤回
由于项目需要,最近对开源工作流引擎Activiti-5.12的功能做了一下扩展,实现了以下功能: 1.自由流(流程节点间自由跳转和任意驳回/撤回) 2.流程会签任务串并行模式切换 一、自由流 在已有流程模型的的基础上,每个流程实例当前任务可以任意驳回/撤回或者向后续节点任意跳转而无需在相关...
1192 0
+关注
65
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载