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

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

目录
相关文章
|
算法 安全 JavaScript
通过Postman实现API网关的请求签名与调试
Postman是一个非常强大的HTTP发包测试工具, 目前Postman已经提供了Windows/Mac/Linux系统的客户端的下载,使用很方便。不过API网关的调试,需要对HTTP请求进行签名才能调用,无法使用简单的curl等发包工具完成,但我们可以使用Postman工具提供的Pre-request Script脚本来实现API网关的签名功能,实现API的调试功能。
6527 0
|
9月前
|
前端开发 Java API
SpringBoot整合Flowable【07】- 驳回节点任务
本文通过绩效流程的业务场景,详细介绍了如何在Flowable工作流引擎中实现任务驳回功能。具体步骤包括:获取目标任务节点和当前任务节点信息,进行必要的判空和逻辑校验,调用API完成节点回退,并清理相关脏数据(如历史任务和变量)。最后通过测试验证了驳回功能的正确性,确保流程能够成功回退到指定节点并清除中间产生的冗余数据。此功能在实际业务中非常有用,能够满足上级驳回自评等需求。
954 0
SpringBoot整合Flowable【07】- 驳回节点任务
|
3月前
|
人工智能 自然语言处理 前端开发
AI 时代,那些你需要了解的开源项目(二) |AI开发工具篇
随着人工智能技术的发展,AI驱动的开发工具正改变软件开发方式。Bolt.diy和OpenHands作为GitHub上热门的开源项目,分别在Web应用构建与全栈开发自动化方面表现突出。Bolt.diy支持通过自然语言快速生成完整Web应用,适合原型开发与小型项目;而OpenHands则专注于复杂软件任务自动化,如代码编写、调试与测试,适用于专业团队和大型项目。两者均提供自部署方案,助力开发者提升效率,推动AI在软件开发中的深度应用。
489 0
|
7月前
|
人工智能 JSON 自然语言处理
31.3K star!开源免费本地AI神器,一键部署多模态大模型!
LocalAI 是一款革命性的开源AI框架,专为本地化部署设计。它完美复现了OpenAI的API接口,支持运行各类开源大模型(如LLaMA3、Phi-2、Stable Diffusion等),无需GPU即可在普通电脑上实现:
365 0
|
8月前
|
IDE Java 应用服务中间件
spring boot 启动流程
Spring Boot 启动流程简介: 在使用 Spring Boot 之前,启动 Java Web 应用需要配置 Web 容器(如 Tomcat),并将应用打包放入容器目录。而使用 Spring Boot,只需运行 main() 方法即可启动 Web 应用。Spring Boot 的核心启动方法是 SpringApplication.run(),它负责初始化和启动应用上下文。 主要步骤包括: 1. **应用启动计时**:使用 StopWatch 记录启动时间。 2. **打印 Banner**:显示 Spring Boot 的 LOGO。 3. **创建上下文实例**:通过反射创建
425 5
|
前端开发
基于jeecgboot的flowable增加流程节点抄送功能
基于jeecgboot的flowable增加流程节点抄送功能
1070 0
|
10月前
|
前端开发 Java 数据库
玩转springboot之springboot注册servlet
在Spring Boot中注册Servlet非常灵活,可以通过 `@WebServlet`注解快速注册,也可以通过 `ServletRegistrationBean`进行细粒度控制。通过这两种方式,可以满足各种场景下的需求,确保应用能够高效处理HTTP请求。
764 14
|
移动开发 前端开发 Java
Flowable 任务监听器与执行监听器的介绍
Flowable 任务监听器与执行监听器的介绍
2508 0
|
前端开发 数据库 JavaScript
基于Flowable的流程挂接自定义业务表单的设计与实践
文章讨论了如何在Flowable流程引擎中挂接自定义业务表单,以及相关设计和实践的步骤。文章中包含了一些前后端代码示例,如Vue组件的模板和脚本部分,这些代码用于实现与Flowable流程引擎交互的界面。例如,有一个按钮组件用于提交申请,点击后会触发applySubmit方法,该方法会与后端API进行交互,处理流程启动、查询关联流程等逻辑。
52812 11