From bb1e41aaa147f2227b97b54636d1e0cfb9e41387 Mon Sep 17 00:00:00 2001
From: wangli <274027703@qq.com>
Date: Fri, 3 Nov 2023 18:40:47 +0800
Subject: [PATCH 1/4] =?UTF-8?q?hotfix=20-=20=E4=BF=AE=E5=A4=8D=E5=AE=A1?=
=?UTF-8?q?=E6=89=B9=E8=AE=B0=E5=BD=95=E4=B8=AD=E4=BB=BB=E5=8A=A1=E8=8A=82?=
=?UTF-8?q?=E7=82=B9=E7=9A=84=E7=8A=B6=E6=80=81=E4=B8=8D=E5=87=86=E7=A1=AE?=
=?UTF-8?q?=E7=9A=84=E9=97=AE=E9=A2=98?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../workflow/core/common/BpmConstants.java | 2 +
.../service/impl/BpmnTaskServiceImpl.java | 58 ++++++++++++++++---
2 files changed, 52 insertions(+), 8 deletions(-)
diff --git a/workflow-engine-core/src/main/java/cn/axzo/workflow/core/common/BpmConstants.java b/workflow-engine-core/src/main/java/cn/axzo/workflow/core/common/BpmConstants.java
index 3c721226b..98adea0a0 100644
--- a/workflow-engine-core/src/main/java/cn/axzo/workflow/core/common/BpmConstants.java
+++ b/workflow-engine-core/src/main/java/cn/axzo/workflow/core/common/BpmConstants.java
@@ -43,4 +43,6 @@ public interface BpmConstants {
String NUMBER_OF_INSTANCES = "nrOfInstances";
String MULTI_INSTANCE_LOOP_COUNTER = "loopCounter";
+ String TASK_COMPLETE_OPERATION_TYPE = "_TASK_COMPLETE_TYPE";
+
}
diff --git a/workflow-engine-core/src/main/java/cn/axzo/workflow/core/service/impl/BpmnTaskServiceImpl.java b/workflow-engine-core/src/main/java/cn/axzo/workflow/core/service/impl/BpmnTaskServiceImpl.java
index 384d190b9..2d8a6326b 100644
--- a/workflow-engine-core/src/main/java/cn/axzo/workflow/core/service/impl/BpmnTaskServiceImpl.java
+++ b/workflow-engine-core/src/main/java/cn/axzo/workflow/core/service/impl/BpmnTaskServiceImpl.java
@@ -3,13 +3,21 @@ package cn.axzo.workflow.core.service.impl;
import cn.axzo.workflow.core.common.enums.BpmProcessInstanceResultEnum;
import cn.axzo.workflow.core.common.exception.WorkflowEngineException;
import cn.axzo.workflow.core.service.BpmnTaskService;
-import cn.axzo.workflow.core.service.converter.*;
+import cn.axzo.workflow.core.service.converter.BpmnHistoricCommentConverter;
+import cn.axzo.workflow.core.service.converter.BpmnHistoricTaskInstanceConverter;
+import cn.axzo.workflow.core.service.converter.BpmnTaskConverter;
+import cn.axzo.workflow.core.service.converter.BpmnTaskDonePageItemConverter;
+import cn.axzo.workflow.core.service.converter.BpmnTaskTodoPageItemConverter;
import cn.axzo.workflow.core.service.dto.request.bpmn.task.BpmnTaskAssigneeDTO;
import cn.axzo.workflow.core.service.dto.request.bpmn.task.BpmnTaskAuditDTO;
import cn.axzo.workflow.core.service.dto.request.bpmn.task.BpmnTaskCommentDTO;
import cn.axzo.workflow.core.service.dto.request.bpmn.task.BpmnTaskPageSearchDTO;
import cn.axzo.workflow.core.service.dto.response.BpmPageResult;
-import cn.axzo.workflow.core.service.dto.response.bpmn.task.*;
+import cn.axzo.workflow.core.service.dto.response.bpmn.task.BpmnHistoricTaskInstanceGroupVO;
+import cn.axzo.workflow.core.service.dto.response.bpmn.task.BpmnHistoricTaskInstanceVO;
+import cn.axzo.workflow.core.service.dto.response.bpmn.task.BpmnTaskDonePageItemVO;
+import cn.axzo.workflow.core.service.dto.response.bpmn.task.BpmnTaskInstanceVO;
+import cn.axzo.workflow.core.service.dto.response.bpmn.task.BpmnTaskTodoPageItemVO;
import cn.hutool.core.collection.CollUtil;
import lombok.extern.slf4j.Slf4j;
import org.flowable.bpmn.model.Activity;
@@ -17,7 +25,11 @@ import org.flowable.bpmn.model.BpmnModel;
import org.flowable.bpmn.model.FlowElement;
import org.flowable.bpmn.model.UserTask;
import org.flowable.common.engine.impl.identity.Authentication;
-import org.flowable.engine.*;
+import org.flowable.engine.HistoryService;
+import org.flowable.engine.ManagementService;
+import org.flowable.engine.RepositoryService;
+import org.flowable.engine.RuntimeService;
+import org.flowable.engine.TaskService;
import org.flowable.engine.history.HistoricProcessInstance;
import org.flowable.engine.history.HistoricProcessInstanceQuery;
import org.flowable.engine.impl.persistence.entity.ExecutionEntity;
@@ -36,12 +48,36 @@ import org.springframework.util.CollectionUtils;
import org.springframework.util.StringUtils;
import javax.annotation.Resource;
-import java.util.*;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Objects;
+import java.util.Optional;
+import java.util.Set;
import java.util.stream.Collectors;
-import static cn.axzo.workflow.core.common.BpmConstants.*;
-import static cn.axzo.workflow.core.common.enums.BpmErrorCode.*;
-import static cn.axzo.workflow.core.common.enums.BpmProcessInstanceResultEnum.*;
+import static cn.axzo.workflow.core.common.BpmConstants.APPROVAL_ENDS_AUTOMATICALLY;
+import static cn.axzo.workflow.core.common.BpmConstants.COMMENT_TYPE_ADVICE;
+import static cn.axzo.workflow.core.common.BpmConstants.INTERNAL_DELETE_PROCESS_FLAG;
+import static cn.axzo.workflow.core.common.BpmConstants.INTERNAL_END_TENANT_ID;
+import static cn.axzo.workflow.core.common.BpmConstants.INTERNAL_END_USER_ID;
+import static cn.axzo.workflow.core.common.BpmConstants.INTERNAL_END_USER_NAME;
+import static cn.axzo.workflow.core.common.BpmConstants.INTERNAL_PROCESS_TYPE_REJECT;
+import static cn.axzo.workflow.core.common.BpmConstants.MULTI_INSTANCE_LOOP_COUNTER;
+import static cn.axzo.workflow.core.common.BpmConstants.NUMBER_OF_INSTANCES;
+import static cn.axzo.workflow.core.common.BpmConstants.TASK_COMPLETE_OPERATION_TYPE;
+import static cn.axzo.workflow.core.common.enums.BpmErrorCode.PROCESS_INSTANCE_ID_NOT_EXISTS;
+import static cn.axzo.workflow.core.common.enums.BpmErrorCode.PROCESS_INSTANCE_NOT_EXISTS;
+import static cn.axzo.workflow.core.common.enums.BpmErrorCode.TASK_COMPLETE_FAIL_ASSIGN_NOT_SELF;
+import static cn.axzo.workflow.core.common.enums.BpmErrorCode.TASK_COMPLETE_FAIL_NOT_EXISTS;
+import static cn.axzo.workflow.core.common.enums.BpmProcessInstanceResultEnum.APPROVED;
+import static cn.axzo.workflow.core.common.enums.BpmProcessInstanceResultEnum.CANCELLED;
+import static cn.axzo.workflow.core.common.enums.BpmProcessInstanceResultEnum.REJECTED;
+import static cn.axzo.workflow.core.common.enums.BpmProcessInstanceResultEnum.valueOfStatus;
import static cn.axzo.workflow.core.common.utils.BpmCollectionUtils.convertSet;
import static cn.axzo.workflow.core.service.impl.BpmnProcessInstanceServiceImpl.countSql;
import static cn.axzo.workflow.core.service.impl.BpmnProcessInstanceServiceImpl.sqlConnectors;
@@ -278,6 +314,7 @@ public class BpmnTaskServiceImpl implements BpmnTaskService {
Authentication.setAuthenticatedUserId(dto.getUserId());
taskService.addComment(dto.getTaskId(), instance.getId(), COMMENT_TYPE_ADVICE, dto.getAdvice());
}
+ runtimeService.setVariable(task.getExecutionId(), TASK_COMPLETE_OPERATION_TYPE + task.getId(), REJECTED);
// 多实例
Activity activity;
if (isMultiInstance(activity = getActivity((TaskEntity) task))) {
@@ -331,7 +368,9 @@ public class BpmnTaskServiceImpl implements BpmnTaskService {
query.taskTenantId(tenantId);
}
HistoricProcessInstanceQuery instanceQuery =
- historyService.createHistoricProcessInstanceQuery().processInstanceId(processInstanceId);
+ historyService.createHistoricProcessInstanceQuery()
+ .processInstanceId(processInstanceId)
+ .includeProcessVariables();
if (StringUtils.hasLength(tenantId)) {
instanceQuery.processInstanceTenantId(tenantId);
}
@@ -354,6 +393,9 @@ public class BpmnTaskServiceImpl implements BpmnTaskService {
for (BpmnHistoricTaskInstanceVO vo : vos) {
if (count == 0 || taskDefinitionKeys.contains(vo.getTaskDefinitionKey())) {
vo.setResult(finalBusinessStatus);
+ if (Objects.nonNull(vo.getEndTime())) {
+ vo.setResult((BpmProcessInstanceResultEnum) instance.getProcessVariables().getOrDefault(TASK_COMPLETE_OPERATION_TYPE + vo.getTaskId(), APPROVED));
+ }
if (Objects.nonNull(vo.getEndTime()) && !Objects.equals(finalBusinessStatus, REJECTED)
&& !Objects.equals(finalBusinessStatus, CANCELLED)) {
vo.setResult(APPROVED);
From 57d812d509ac96773efee6158dda50f93f55a793 Mon Sep 17 00:00:00 2001
From: wangli <274027703@qq.com>
Date: Fri, 3 Nov 2023 18:42:10 +0800
Subject: [PATCH 2/4] =?UTF-8?q?update=20-=20=E6=9B=B4=E6=96=B0=E7=89=88?=
=?UTF-8?q?=E6=9C=AC?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
pom.xml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/pom.xml b/pom.xml
index f2e1ed735..561faf9a9 100644
--- a/pom.xml
+++ b/pom.xml
@@ -16,7 +16,7 @@
workflow-engine
- 1.0.1-SNAPSHOT
+ 1.0.2-SNAPSHOT
2.0.0-SNAPSHOT
2.0.0-SNAPSHOT
1.18.22
From 3c89d19667d4f97036576c40f147e5d4b059e4de Mon Sep 17 00:00:00 2001
From: wangli <274027703@qq.com>
Date: Mon, 6 Nov 2023 17:04:44 +0800
Subject: [PATCH 3/4] =?UTF-8?q?hotfix=20-=20=E8=B0=83=E6=95=B4=E4=BB=BB?=
=?UTF-8?q?=E5=8A=A1=E7=8A=B6=E6=80=81=E5=A4=84=E7=90=86=E9=80=BB=E8=BE=91?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../service/impl/BpmnTaskServiceImpl.java | 25 ++++++++-----------
1 file changed, 11 insertions(+), 14 deletions(-)
diff --git a/workflow-engine-core/src/main/java/cn/axzo/workflow/core/service/impl/BpmnTaskServiceImpl.java b/workflow-engine-core/src/main/java/cn/axzo/workflow/core/service/impl/BpmnTaskServiceImpl.java
index 2d8a6326b..8a4d1166f 100644
--- a/workflow-engine-core/src/main/java/cn/axzo/workflow/core/service/impl/BpmnTaskServiceImpl.java
+++ b/workflow-engine-core/src/main/java/cn/axzo/workflow/core/service/impl/BpmnTaskServiceImpl.java
@@ -74,8 +74,6 @@ import static cn.axzo.workflow.core.common.enums.BpmErrorCode.PROCESS_INSTANCE_I
import static cn.axzo.workflow.core.common.enums.BpmErrorCode.PROCESS_INSTANCE_NOT_EXISTS;
import static cn.axzo.workflow.core.common.enums.BpmErrorCode.TASK_COMPLETE_FAIL_ASSIGN_NOT_SELF;
import static cn.axzo.workflow.core.common.enums.BpmErrorCode.TASK_COMPLETE_FAIL_NOT_EXISTS;
-import static cn.axzo.workflow.core.common.enums.BpmProcessInstanceResultEnum.APPROVED;
-import static cn.axzo.workflow.core.common.enums.BpmProcessInstanceResultEnum.CANCELLED;
import static cn.axzo.workflow.core.common.enums.BpmProcessInstanceResultEnum.REJECTED;
import static cn.axzo.workflow.core.common.enums.BpmProcessInstanceResultEnum.valueOfStatus;
import static cn.axzo.workflow.core.common.utils.BpmCollectionUtils.convertSet;
@@ -389,20 +387,19 @@ public class BpmnTaskServiceImpl implements BpmnTaskService {
Set taskDefinitionKeys = new HashSet<>();
int count = 0;
- BpmProcessInstanceResultEnum finalBusinessStatus = valueOfStatus(instance.getBusinessStatus());
+ BpmProcessInstanceResultEnum processBusinessStatus = valueOfStatus(instance.getBusinessStatus());
for (BpmnHistoricTaskInstanceVO vo : vos) {
- if (count == 0 || taskDefinitionKeys.contains(vo.getTaskDefinitionKey())) {
- vo.setResult(finalBusinessStatus);
- if (Objects.nonNull(vo.getEndTime())) {
- vo.setResult((BpmProcessInstanceResultEnum) instance.getProcessVariables().getOrDefault(TASK_COMPLETE_OPERATION_TYPE + vo.getTaskId(), APPROVED));
- }
- if (Objects.nonNull(vo.getEndTime()) && !Objects.equals(finalBusinessStatus, REJECTED)
- && !Objects.equals(finalBusinessStatus, CANCELLED)) {
- vo.setResult(APPROVED);
- }
- } else {
- vo.setResult(APPROVED);
+ vo.setResult(processBusinessStatus);
+ if (Objects.nonNull(vo.getEndTime())) {
+ // 只有拒绝时, 为指定的 taskId 设置过拒绝变量
+ vo.setResult((BpmProcessInstanceResultEnum) instance.getProcessVariables().getOrDefault(TASK_COMPLETE_OPERATION_TYPE + vo.getTaskId(), processBusinessStatus));
}
+ // if (count == 0 || taskDefinitionKeys.contains(vo.getTaskDefinitionKey())) {
+ // vo.setResult(processBusinessStatus);
+ //
+ // } else {
+ // vo.setResult(APPROVED);
+ // }
taskDefinitionKeys.add(vo.getTaskDefinitionKey());
List taskComments = commentByTaskIdMap.getOrDefault(vo.getTaskId(), Collections.emptyList());
From e0f9e343d22a6ccc0e9c810595a4ab217d26d686 Mon Sep 17 00:00:00 2001
From: wangli <274027703@qq.com>
Date: Mon, 6 Nov 2023 17:17:21 +0800
Subject: [PATCH 4/4] =?UTF-8?q?hotfix=20-=20=E8=B0=83=E6=95=B4=E4=BB=BB?=
=?UTF-8?q?=E5=8A=A1=E7=8A=B6=E6=80=81=E5=A4=84=E7=90=86=E9=80=BB=E8=BE=91?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../axzo/workflow/core/service/impl/BpmnTaskServiceImpl.java | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/workflow-engine-core/src/main/java/cn/axzo/workflow/core/service/impl/BpmnTaskServiceImpl.java b/workflow-engine-core/src/main/java/cn/axzo/workflow/core/service/impl/BpmnTaskServiceImpl.java
index 8a4d1166f..5c6e94087 100644
--- a/workflow-engine-core/src/main/java/cn/axzo/workflow/core/service/impl/BpmnTaskServiceImpl.java
+++ b/workflow-engine-core/src/main/java/cn/axzo/workflow/core/service/impl/BpmnTaskServiceImpl.java
@@ -74,6 +74,7 @@ import static cn.axzo.workflow.core.common.enums.BpmErrorCode.PROCESS_INSTANCE_I
import static cn.axzo.workflow.core.common.enums.BpmErrorCode.PROCESS_INSTANCE_NOT_EXISTS;
import static cn.axzo.workflow.core.common.enums.BpmErrorCode.TASK_COMPLETE_FAIL_ASSIGN_NOT_SELF;
import static cn.axzo.workflow.core.common.enums.BpmErrorCode.TASK_COMPLETE_FAIL_NOT_EXISTS;
+import static cn.axzo.workflow.core.common.enums.BpmProcessInstanceResultEnum.APPROVED;
import static cn.axzo.workflow.core.common.enums.BpmProcessInstanceResultEnum.REJECTED;
import static cn.axzo.workflow.core.common.enums.BpmProcessInstanceResultEnum.valueOfStatus;
import static cn.axzo.workflow.core.common.utils.BpmCollectionUtils.convertSet;
@@ -392,7 +393,7 @@ public class BpmnTaskServiceImpl implements BpmnTaskService {
vo.setResult(processBusinessStatus);
if (Objects.nonNull(vo.getEndTime())) {
// 只有拒绝时, 为指定的 taskId 设置过拒绝变量
- vo.setResult((BpmProcessInstanceResultEnum) instance.getProcessVariables().getOrDefault(TASK_COMPLETE_OPERATION_TYPE + vo.getTaskId(), processBusinessStatus));
+ vo.setResult((BpmProcessInstanceResultEnum) instance.getProcessVariables().getOrDefault(TASK_COMPLETE_OPERATION_TYPE + vo.getTaskId(), APPROVED));
}
// if (count == 0 || taskDefinitionKeys.contains(vo.getTaskDefinitionKey())) {
// vo.setResult(processBusinessStatus);