From 7d6e64f337b7ae1990e2a1747c47b931c5af14c7 Mon Sep 17 00:00:00 2001 From: wangli <274027703@qq.com> Date: Tue, 9 Sep 2025 11:24:00 +0800 Subject: [PATCH 1/4] =?UTF-8?q?fix=20-=20=E8=80=81=E7=89=88=E6=9C=AC?= =?UTF-8?q?=E5=91=8A=E8=AD=A6=E5=AE=9E=E7=8E=B0=E5=A4=9A=E4=BD=99=E7=9A=84?= =?UTF-8?q?=E5=8A=A8=E4=BD=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../workflow/core/engine/cmd/CustomActivityTriggerCmd.java | 4 ---- 1 file changed, 4 deletions(-) diff --git a/workflow-engine-core/src/main/java/cn/axzo/workflow/core/engine/cmd/CustomActivityTriggerCmd.java b/workflow-engine-core/src/main/java/cn/axzo/workflow/core/engine/cmd/CustomActivityTriggerCmd.java index 2a930c561..3eb2e4b14 100644 --- a/workflow-engine-core/src/main/java/cn/axzo/workflow/core/engine/cmd/CustomActivityTriggerCmd.java +++ b/workflow-engine-core/src/main/java/cn/axzo/workflow/core/engine/cmd/CustomActivityTriggerCmd.java @@ -12,7 +12,6 @@ import org.flowable.common.engine.impl.interceptor.CommandContext; import org.flowable.engine.RuntimeService; import org.flowable.engine.impl.cfg.ProcessEngineConfigurationImpl; import org.flowable.engine.impl.util.CommandContextUtil; -import org.flowable.job.service.TimerJobService; import org.flowable.engine.impl.util.ProcessDefinitionUtil; import org.flowable.task.service.impl.persistence.entity.TaskEntity; import org.slf4j.Logger; @@ -66,9 +65,6 @@ public class CustomActivityTriggerCmd extends AbstractCommand implements S addComment(commandContext, task, COMMENT_TYPE_OPERATION_DESC, "已同意"); RuntimeService runtimeService = processEngineConfiguration.getRuntimeService(); - // 告警节点生产的定时任务需要删除,否则会因为外键约束导致触发功能会重试,并抛出触发节点不存在的问题 - TimerJobService timerJobService = CommandContextUtil.getTimerJobService(); - timerJobService.findTimerJobsByProcessInstanceId(task.getProcessInstanceId()).forEach(timerJobService::deleteTimerJob); runtimeService.trigger(dto.getTriggerId()); return null; } From 2b83b077740ccf339081e007d7818b4fbe252043 Mon Sep 17 00:00:00 2001 From: wangli <274027703@qq.com> Date: Thu, 18 Sep 2025 14:24:53 +0800 Subject: [PATCH 2/4] =?UTF-8?q?feat(REQ-4100)=20-=20=E6=94=AF=E6=92=91?= =?UTF-8?q?=E4=B8=9A=E5=8A=A1=E8=8A=82=E7=82=B9=E6=93=8D=E4=BD=9C=E5=9B=9E?= =?UTF-8?q?=E9=80=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../web/bpmn/BpmnProcessTaskController.java | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/workflow-engine-server/src/main/java/cn/axzo/workflow/server/controller/web/bpmn/BpmnProcessTaskController.java b/workflow-engine-server/src/main/java/cn/axzo/workflow/server/controller/web/bpmn/BpmnProcessTaskController.java index f09c635b0..f90b4cf13 100644 --- a/workflow-engine-server/src/main/java/cn/axzo/workflow/server/controller/web/bpmn/BpmnProcessTaskController.java +++ b/workflow-engine-server/src/main/java/cn/axzo/workflow/server/controller/web/bpmn/BpmnProcessTaskController.java @@ -109,7 +109,7 @@ public class BpmnProcessTaskController extends BasicPopulateAvatarController imp if (!StringUtils.hasText(dto.getProcessInstanceId()) && !StringUtils.hasText(dto.getTaskId())) { throw new WorkflowEngineException(TASK_OPERATION_PARAM_INVALID); } - if(!StringUtils.hasText(dto.getTaskId())) { + if (!StringUtils.hasText(dto.getTaskId())) { dto.setTaskId(bpmnProcessTaskService.findTaskIdByInstanceIdAndPersonId(dto.getProcessInstanceId(), dto.getApprover().getPersonId())); } List tempAttachments = ListUtils.defaultIfNull(dto.getAttachmentList(), new ArrayList<>()); @@ -135,7 +135,7 @@ public class BpmnProcessTaskController extends BasicPopulateAvatarController imp if (!StringUtils.hasText(dto.getProcessInstanceId()) && !StringUtils.hasText(dto.getTaskId())) { throw new WorkflowEngineException(TASK_OPERATION_PARAM_INVALID); } - if(!StringUtils.hasText(dto.getTaskId())) { + if (!StringUtils.hasText(dto.getTaskId())) { dto.setTaskId(bpmnProcessTaskService.findTaskIdByInstanceIdAndPersonId(dto.getProcessInstanceId(), dto.getApprover().getPersonId())); } List tempAttachments = ListUtils.defaultIfNull(dto.getAttachmentList(), new ArrayList<>()); @@ -196,7 +196,7 @@ public class BpmnProcessTaskController extends BasicPopulateAvatarController imp if (!StringUtils.hasText(dto.getProcessInstanceId()) && !StringUtils.hasText(dto.getTaskId())) { throw new WorkflowEngineException(TASK_OPERATION_PARAM_INVALID); } - if(!StringUtils.hasText(dto.getTaskId())) { + if (!StringUtils.hasText(dto.getTaskId()) && StringUtils.hasText(dto.getApprover().getPersonId())) { dto.setTaskId(bpmnProcessTaskService.findTaskIdByInstanceIdAndPersonId(dto.getProcessInstanceId(), dto.getApprover().getPersonId())); } populateUsersAvatar(dto.getApprover()); @@ -229,7 +229,7 @@ public class BpmnProcessTaskController extends BasicPopulateAvatarController imp if (!StringUtils.hasText(dto.getProcessInstanceId()) && !StringUtils.hasText(dto.getTaskId())) { throw new WorkflowEngineException(TASK_OPERATION_PARAM_INVALID); } - if(!StringUtils.hasText(dto.getTaskId())) { + if (!StringUtils.hasText(dto.getTaskId())) { dto.setTaskId(bpmnProcessTaskService.findTaskIdByInstanceIdAndPersonId(dto.getProcessInstanceId(), dto.getApprover().getPersonId())); } populateUsersAvatar(dto.getApprover()); @@ -263,7 +263,7 @@ public class BpmnProcessTaskController extends BasicPopulateAvatarController imp if (!StringUtils.hasText(dto.getProcessInstanceId()) && !StringUtils.hasText(dto.getTaskId())) { throw new WorkflowEngineException(TASK_OPERATION_PARAM_INVALID); } - if(!StringUtils.hasText(dto.getTaskId())) { + if (!StringUtils.hasText(dto.getTaskId())) { dto.setTaskId(bpmnProcessTaskService.findTaskIdByInstanceIdAndPersonId(dto.getProcessInstanceId(), dto.getOriginAssigner().getPersonId())); } // 填充头像 @@ -310,7 +310,7 @@ public class BpmnProcessTaskController extends BasicPopulateAvatarController imp if (!StringUtils.hasText(dto.getProcessInstanceId()) && !StringUtils.hasText(dto.getTaskId())) { throw new WorkflowEngineException(TASK_OPERATION_PARAM_INVALID); } - if(!StringUtils.hasText(dto.getTaskId())) { + if (!StringUtils.hasText(dto.getTaskId())) { dto.setTaskId(bpmnProcessTaskService.findTaskIdByInstanceIdAndPersonId(dto.getProcessInstanceId(), dto.getOriginAssigner().getPersonId())); } // 填充头像 @@ -334,7 +334,7 @@ public class BpmnProcessTaskController extends BasicPopulateAvatarController imp if (!StringUtils.hasText(dto.getProcessInstanceId()) && !StringUtils.hasText(dto.getTaskId())) { throw new WorkflowEngineException(TASK_OPERATION_PARAM_INVALID); } - if(!StringUtils.hasText(dto.getTaskId())) { + if (!StringUtils.hasText(dto.getTaskId())) { dto.setTaskId(bpmnProcessTaskService.findTaskIdByInstanceIdAndPersonId(dto.getProcessInstanceId(), dto.getOriginAssigner().getPersonId())); } populateUsersAvatar(dto.getOriginAssigner()); From b17582842d1076ae6ae262fb1bf571960a079976 Mon Sep 17 00:00:00 2001 From: wangli <274027703@qq.com> Date: Thu, 18 Sep 2025 14:58:38 +0800 Subject: [PATCH 3/4] =?UTF-8?q?feat(REQ-4100)=20-=20=E6=94=AF=E6=92=91?= =?UTF-8?q?=E4=B8=9A=E5=8A=A1=E8=8A=82=E7=82=B9=E6=93=8D=E4=BD=9C=E5=9B=9E?= =?UTF-8?q?=E9=80=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/BpmnProcessTaskServiceImpl.java | 21 ++++++------------- .../web/bpmn/BpmnProcessTaskController.java | 2 +- 2 files changed, 7 insertions(+), 16 deletions(-) diff --git a/workflow-engine-core/src/main/java/cn/axzo/workflow/core/service/impl/BpmnProcessTaskServiceImpl.java b/workflow-engine-core/src/main/java/cn/axzo/workflow/core/service/impl/BpmnProcessTaskServiceImpl.java index 7e21b100e..b7e2d8907 100644 --- a/workflow-engine-core/src/main/java/cn/axzo/workflow/core/service/impl/BpmnProcessTaskServiceImpl.java +++ b/workflow-engine-core/src/main/java/cn/axzo/workflow/core/service/impl/BpmnProcessTaskServiceImpl.java @@ -5,7 +5,6 @@ import cn.axzo.workflow.common.enums.BpmnCountersignTypeEnum; import cn.axzo.workflow.common.enums.BpmnFlowNodeType; import cn.axzo.workflow.common.enums.BpmnProcessInstanceResultEnum; import cn.axzo.workflow.common.exception.WorkflowEngineException; -import cn.axzo.workflow.common.model.request.bpmn.BpmnNoticeConf; import cn.axzo.workflow.common.model.request.bpmn.task.BpmnNodeBackSystemOperateDTO; import cn.axzo.workflow.common.model.request.bpmn.task.BpmnOptionalNodeDTO; import cn.axzo.workflow.common.model.request.bpmn.task.BpmnRobotTaskCompleteDTO; @@ -51,9 +50,6 @@ import cn.axzo.workflow.core.engine.cmd.CustomResetTaskApproversAsyncCmd; import cn.axzo.workflow.core.engine.cmd.CustomResetTaskApproversCmd; import cn.axzo.workflow.core.engine.cmd.CustomTransferUserTaskAsyncCmd; import cn.axzo.workflow.core.engine.cmd.CustomTransferUserTaskCmd; -import cn.axzo.workflow.core.engine.event.MessagePushEventBuilder; -import cn.axzo.workflow.core.engine.event.MessagePushEventImpl; -import cn.axzo.workflow.core.engine.event.MessagePushEventType; import cn.axzo.workflow.core.repository.entity.ExtAxHiTaskInst; import cn.axzo.workflow.core.service.BpmnProcessDefinitionService; import cn.axzo.workflow.core.service.BpmnProcessTaskService; @@ -65,15 +61,12 @@ 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.hutool.core.collection.CollUtil; -import com.google.common.collect.Lists; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections.CollectionUtils; import org.apache.commons.lang3.tuple.Pair; import org.flowable.bpmn.model.BaseElement; import org.flowable.bpmn.model.BpmnModel; import org.flowable.bpmn.model.FlowElement; -import org.flowable.bpmn.model.Process; -import org.flowable.common.engine.api.delegate.event.FlowableEventDispatcher; import org.flowable.common.engine.impl.identity.Authentication; import org.flowable.common.engine.impl.interceptor.CommandExecutor; import org.flowable.engine.HistoryService; @@ -83,9 +76,6 @@ 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.cfg.ProcessEngineConfigurationImpl; -import org.flowable.engine.impl.util.CommandContextUtil; -import org.flowable.engine.impl.util.ProcessDefinitionUtil; import org.flowable.engine.runtime.ProcessInstance; import org.flowable.engine.task.Attachment; import org.flowable.engine.task.Comment; @@ -131,7 +121,6 @@ import static cn.axzo.workflow.common.code.BpmnTaskRespCode.FIND_TASK_BY_PERSON_ import static cn.axzo.workflow.common.code.BpmnTaskRespCode.REACHED_BACKED_MAXIMUM_NUM; import static cn.axzo.workflow.common.code.BpmnTaskRespCode.TASK_COMPLETE_FAIL_NOT_EXISTS; import static cn.axzo.workflow.common.code.BpmnTaskRespCode.TASK_HAS_BEEN_COMPLETE; -import static cn.axzo.workflow.common.code.BpmnTaskRespCode.TASK_REMIND_ERROR_NOT_EXISTS; import static cn.axzo.workflow.common.constant.BpmnConstants.COMMENT_TYPE_ADVICE; import static cn.axzo.workflow.common.constant.BpmnConstants.COMMENT_TYPE_COMMENT_EXT; import static cn.axzo.workflow.common.constant.BpmnConstants.COMMENT_TYPE_OPERATION_DESC; @@ -156,7 +145,6 @@ import static cn.axzo.workflow.common.enums.BpmnProcessInstanceResultEnum.valueO import static cn.axzo.workflow.common.util.BpmnNativeQueryUtil.countSql; import static cn.axzo.workflow.common.util.BpmnNativeQueryUtil.sqlConnectors; import static cn.axzo.workflow.core.common.utils.BpmnCollectionUtils.convertSet; -import static cn.axzo.workflow.core.common.utils.BpmnMetaParserHelper.getActivitySignature; @Service @Slf4j @@ -882,7 +870,7 @@ public class BpmnProcessTaskServiceImpl implements BpmnProcessTaskService { @Transactional(rollbackFor = Exception.class) public void resetTaskApprovers(BpmnTaskResetApproversDTO dto) { CommandExecutor commandExecutor = processEngineConfiguration.getCommandExecutor(); - if(dto.getAsync() != null && dto.getAsync()) { + if (dto.getAsync() != null && dto.getAsync()) { commandExecutor.execute(new CustomResetTaskApproversAsyncCmd(dto)); } else { commandExecutor.execute(new CustomResetTaskApproversCmd(dto.getTaskId(), dto.getAdvice(), @@ -916,8 +904,11 @@ public class BpmnProcessTaskServiceImpl implements BpmnProcessTaskService { @Override public String findTaskIdByInstanceIdAndPersonId(String processInstanceId, String personId) { - List list = taskService.createTaskQuery().processInstanceId(processInstanceId) - .taskAssigneeLike("%|" + personId) + TaskQuery taskQuery = taskService.createTaskQuery().processInstanceId(processInstanceId); + if (StringUtils.hasText(personId)) { + taskQuery.taskAssigneeLike("%|" + personId); + } + List list = taskQuery .active() .list(); if (CollectionUtils.isEmpty(list) || list.size() > 1) { diff --git a/workflow-engine-server/src/main/java/cn/axzo/workflow/server/controller/web/bpmn/BpmnProcessTaskController.java b/workflow-engine-server/src/main/java/cn/axzo/workflow/server/controller/web/bpmn/BpmnProcessTaskController.java index f90b4cf13..29b7a051b 100644 --- a/workflow-engine-server/src/main/java/cn/axzo/workflow/server/controller/web/bpmn/BpmnProcessTaskController.java +++ b/workflow-engine-server/src/main/java/cn/axzo/workflow/server/controller/web/bpmn/BpmnProcessTaskController.java @@ -196,7 +196,7 @@ public class BpmnProcessTaskController extends BasicPopulateAvatarController imp if (!StringUtils.hasText(dto.getProcessInstanceId()) && !StringUtils.hasText(dto.getTaskId())) { throw new WorkflowEngineException(TASK_OPERATION_PARAM_INVALID); } - if (!StringUtils.hasText(dto.getTaskId()) && StringUtils.hasText(dto.getApprover().getPersonId())) { + if (!StringUtils.hasText(dto.getTaskId())) { dto.setTaskId(bpmnProcessTaskService.findTaskIdByInstanceIdAndPersonId(dto.getProcessInstanceId(), dto.getApprover().getPersonId())); } populateUsersAvatar(dto.getApprover()); From dc11b8c994da6ae21daf735607e92697e3f834b5 Mon Sep 17 00:00:00 2001 From: wangli <274027703@qq.com> Date: Sun, 28 Sep 2025 18:12:10 +0800 Subject: [PATCH 4/4] =?UTF-8?q?feat(REQ-4100)=20-=20=E8=B0=83=E6=95=B4?= =?UTF-8?q?=E7=B4=A2=E5=BC=95=E7=9A=84=E5=88=B7=E6=96=B0=E7=AD=96=E7=95=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/cn/axzo/workflow/es/model/ProcessInstanceDocument.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/workflow-engine-elasticsearch/src/main/java/cn/axzo/workflow/es/model/ProcessInstanceDocument.java b/workflow-engine-elasticsearch/src/main/java/cn/axzo/workflow/es/model/ProcessInstanceDocument.java index cf49db62c..048a94e37 100644 --- a/workflow-engine-elasticsearch/src/main/java/cn/axzo/workflow/es/model/ProcessInstanceDocument.java +++ b/workflow-engine-elasticsearch/src/main/java/cn/axzo/workflow/es/model/ProcessInstanceDocument.java @@ -24,7 +24,7 @@ import static org.dromara.easyes.annotation.rely.Analyzer.IK_MAX_WORD; */ @Data @Settings(settingsProvider = CustomIndexSettingProvider.class, replicasNum = 1, shardsNum = 1) -@IndexName(value = "process_instance_document", keepGlobalPrefix = true, refreshPolicy = RefreshPolicy.IMMEDIATE) +@IndexName(value = "process_instance_document", keepGlobalPrefix = true, refreshPolicy = RefreshPolicy.NONE) @Join(nodes = {@Node(parentClass = ProcessInstanceDocument.class, parentAlias = "process_instance_document", childClasses = {ProcessTaskDocument.class}, childAliases = {"process_task_document"})}) public class ProcessInstanceDocument {