From db13cc9c96850fdd02f73b787fbaaadb73c03dc7 Mon Sep 17 00:00:00 2001
From: xiangpei <xiangpei@timesnew.cn>
Date: 星期三, 15 一月 2025 17:29:41 +0800
Subject: [PATCH] 启动项目时,根据项目创建人(暂时这样)设置流程变量,动态替换任务处理人
---
flowable/src/main/java/com/ycl/common/constant/ProcessConstants.java | 4 ++++
business/src/main/java/com/ycl/service/impl/ProjectProcessServiceImpl.java | 15 +++++++++++++++
2 files changed, 19 insertions(+), 0 deletions(-)
diff --git a/business/src/main/java/com/ycl/service/impl/ProjectProcessServiceImpl.java b/business/src/main/java/com/ycl/service/impl/ProjectProcessServiceImpl.java
index d650b30..1eb9919 100644
--- a/business/src/main/java/com/ycl/service/impl/ProjectProcessServiceImpl.java
+++ b/business/src/main/java/com/ycl/service/impl/ProjectProcessServiceImpl.java
@@ -156,6 +156,7 @@
entity.setProcessDefId(processDefId);
entity.setProcessInsId(processInsId);
baseMapper.insert(entity);
+
return Result.ok("娴佺▼鍚姩鎴愬姛");
}
@@ -167,6 +168,14 @@
* @return
*/
private String startPro(Long projectId, String processDefId) {
+
+ ProjectInfo project = new LambdaQueryChainWrapper<>(projectInfoMapper)
+ .select(ProjectInfo::getCreateBy)
+ .eq(ProjectInfo::getId, projectId)
+ .one();
+ if (Objects.isNull(project)) {
+ throw new RuntimeException("椤圭洰涓嶅瓨鍦�");
+ }
ProcessDefinition processDefinition = repositoryService.createProcessDefinitionQuery().processDefinitionId(processDefId)
.latestVersion().singleResult();
if (Objects.nonNull(processDefinition) && processDefinition.isSuspended()) {
@@ -177,6 +186,9 @@
SysUser sysUser = SecurityUtils.getLoginUser().getUser();
identityService.setAuthenticatedUserId(sysUser.getUserId().toString());
variables.put(ProcessConstants.PROCESS_INITIATOR, sysUser.getUserId());
+
+ // 灏嗚椤圭洰鐨勭敵璇蜂汉锛堜笟涓绘柟锛変綔涓烘祦绋嬩腑鏌愪簺鐜妭鐨勫鐞嗕汉
+ variables.put(ProcessConstants.DATA_LAUNCH, project.getCreateBy());
ProcessInstance processInstance = runtimeService.startProcessInstanceById(processDefId, projectId + "", variables);
return processInstance.getId();
}
@@ -687,12 +699,15 @@
vo.setTaskId(historicTasks.get(0).getId());
vo.setExecutionId(historicTasks.get(0).getExecutionId());
vo.setCreateTime(historicTasks.get(0).getStartTime());
+
// 鏌ヨ瀹為檯澶勭悊浜�
long handlerUserId = Long.parseLong(historicTasks.get(0).getAssignee());
SysUser handlerUser = sysUserService.selectUserById(handlerUserId);
if (Objects.nonNull(handlerUser)) {
handlerIds.add(handlerUserId);
handlerNames.add(handlerUser.getNickName());
+ vo.setActualHandlerUserId(historicTasks.get(0).getAssignee());
+ vo.setActualHandlerUserName(handlerUser.getNickName());
}
vo.setTaskDefinitionKey(historicTasks.get(0).getTaskDefinitionKey());
this.setPromoterAndHandler(vo, historicTasks.get(0).getIdentityLinks());
diff --git a/flowable/src/main/java/com/ycl/common/constant/ProcessConstants.java b/flowable/src/main/java/com/ycl/common/constant/ProcessConstants.java
index 1a9fadb..04eecf3 100644
--- a/flowable/src/main/java/com/ycl/common/constant/ProcessConstants.java
+++ b/flowable/src/main/java/com/ycl/common/constant/ProcessConstants.java
@@ -70,6 +70,10 @@
*/
public static final String PROCESS_INITIATOR = "INITIATOR";
+ /**
+ * 鎻愪氦鏁版嵁鏂�
+ */
+ public static final String DATA_LAUNCH = "data_launch";
/**
* 娴佺▼璺宠繃
--
Gitblit v1.8.0