diff --git a/ruoyi-common/ruoyi-common-liteflow/src/main/java/org/dromara/common/liteflow/component/ContextRequiredComponent.java b/ruoyi-common/ruoyi-common-liteflow/src/main/java/org/dromara/common/liteflow/component/ContextRequiredComponent.java index c49b2eb30..54929debe 100644 --- a/ruoyi-common/ruoyi-common-liteflow/src/main/java/org/dromara/common/liteflow/component/ContextRequiredComponent.java +++ b/ruoyi-common/ruoyi-common-liteflow/src/main/java/org/dromara/common/liteflow/component/ContextRequiredComponent.java @@ -14,7 +14,7 @@ public class ContextRequiredComponent extends NodeComponent { @Override public void process() { - if (getRequestData() == null) { + if (getFirstContextBean() == null) { throw new ServiceException("LiteFlow 上下文不能为空"); } } diff --git a/ruoyi-common/ruoyi-common-liteflow/src/main/java/org/dromara/common/liteflow/component/FailComponent.java b/ruoyi-common/ruoyi-common-liteflow/src/main/java/org/dromara/common/liteflow/component/FailComponent.java index b56780a5f..43971f26e 100644 --- a/ruoyi-common/ruoyi-common-liteflow/src/main/java/org/dromara/common/liteflow/component/FailComponent.java +++ b/ruoyi-common/ruoyi-common-liteflow/src/main/java/org/dromara/common/liteflow/component/FailComponent.java @@ -27,8 +27,8 @@ public class FailComponent extends NodeComponent { * @return 失败提示 */ private String getFailMessage() { - Object requestData = getRequestData(); - if (requestData instanceof FailMessageProvider provider) { + Object context = getFirstContextBean(); + if (context instanceof FailMessageProvider provider) { String message = provider.getFailMessage(); if (StringUtils.isNotBlank(message)) { return message; diff --git a/ruoyi-common/ruoyi-common-liteflow/src/main/java/org/dromara/common/liteflow/utils/LiteFlowUtils.java b/ruoyi-common/ruoyi-common-liteflow/src/main/java/org/dromara/common/liteflow/utils/LiteFlowUtils.java index 61f0f334e..74b4fe8d0 100644 --- a/ruoyi-common/ruoyi-common-liteflow/src/main/java/org/dromara/common/liteflow/utils/LiteFlowUtils.java +++ b/ruoyi-common/ruoyi-common-liteflow/src/main/java/org/dromara/common/liteflow/utils/LiteFlowUtils.java @@ -4,6 +4,7 @@ import com.yomahub.liteflow.core.FlowExecutor; import com.yomahub.liteflow.flow.LiteflowResponse; import lombok.AccessLevel; import lombok.NoArgsConstructor; +import lombok.extern.slf4j.Slf4j; import org.dromara.common.core.exception.ServiceException; import org.dromara.common.core.utils.SpringUtils; @@ -12,19 +13,25 @@ import org.dromara.common.core.utils.SpringUtils; * * @author Lion Li */ +@Slf4j @NoArgsConstructor(access = AccessLevel.PRIVATE) public class LiteFlowUtils { /** - * 执行 LiteFlow 链路,并按业务异常语义透传失败原因。 + * 执行 LiteFlow 链路,并按 contextBean 语义透传业务上下文和失败原因。 * * @param chainId 链路标识 * @param context 链路上下文 */ public static void execute(String chainId, Object context) { - LiteflowResponse response = SpringUtils.getBean(FlowExecutor.class).execute2Resp(chainId, context); + if (context == null) { + throw new ServiceException("LiteFlow 上下文不能为空"); + } + LiteflowResponse response = SpringUtils.getBean(FlowExecutor.class).execute2Resp(chainId, null, context); if (!response.isSuccess()) { Exception cause = response.getCause(); + log.error("LiteFlow 链路执行失败 chainId={} requestId={} message={} steps={}", + chainId, response.getRequestId(), response.getMessage(), response.getExecuteStepStrWithTime(), cause); if (cause instanceof RuntimeException runtimeException) { throw runtimeException; } diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/liteflow/complete/CompleteAutoPassComponent.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/liteflow/complete/CompleteAutoPassComponent.java index cd7e6521a..cb21570f0 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/liteflow/complete/CompleteAutoPassComponent.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/liteflow/complete/CompleteAutoPassComponent.java @@ -41,7 +41,7 @@ public class CompleteAutoPassComponent extends NodeComponent { @Override public void process() { - CompleteTaskContext context = getRequestData(); + CompleteTaskContext context = getContextBean(CompleteTaskContext.class); FlowTask flowTask = context.getFlowTask(); autoPass(flowTask.getId(), context.getFlowParams(), flowTask.getInstanceId()); } diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/liteflow/complete/CompleteExecuteComponent.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/liteflow/complete/CompleteExecuteComponent.java index 6b94bc3ec..a6cd00dd3 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/liteflow/complete/CompleteExecuteComponent.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/liteflow/complete/CompleteExecuteComponent.java @@ -31,7 +31,7 @@ public class CompleteExecuteComponent extends NodeComponent { @Override public void process() { - CompleteTaskContext context = getRequestData(); + CompleteTaskContext context = getContextBean(CompleteTaskContext.class); CompleteTaskBo completeTaskBo = context.getCompleteTaskBo(); Map variables = completeTaskBo.getVariables(); FlowParams flowParams = FlowParams.build() diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/liteflow/complete/CompleteNeedAutoPassComponent.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/liteflow/complete/CompleteNeedAutoPassComponent.java index ba4d5ca28..d74646c7d 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/liteflow/complete/CompleteNeedAutoPassComponent.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/liteflow/complete/CompleteNeedAutoPassComponent.java @@ -16,7 +16,7 @@ public class CompleteNeedAutoPassComponent extends NodeBooleanComponent { @Override public boolean processBoolean() { - CompleteTaskContext context = getRequestData(); + CompleteTaskContext context = getContextBean(CompleteTaskContext.class); return Boolean.TRUE.equals(context.getAutoPass()); } diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/liteflow/complete/CompletePrepareComponent.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/liteflow/complete/CompletePrepareComponent.java index ec6c95045..ad3bb56e2 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/liteflow/complete/CompletePrepareComponent.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/liteflow/complete/CompletePrepareComponent.java @@ -41,7 +41,7 @@ public class CompletePrepareComponent extends NodeComponent { @Override public void process() { - CompleteTaskContext context = getRequestData(); + CompleteTaskContext context = getContextBean(CompleteTaskContext.class); CompleteTaskBo completeTaskBo = context.getCompleteTaskBo(); FlowTask flowTask = flowTaskMapper.selectById(completeTaskBo.getTaskId()); if (ObjectUtil.isNull(flowTask)) { diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/liteflow/instance/InstanceDeleteEventComponent.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/liteflow/instance/InstanceDeleteEventComponent.java index 5aeb1442c..8924b84ba 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/liteflow/instance/InstanceDeleteEventComponent.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/liteflow/instance/InstanceDeleteEventComponent.java @@ -34,7 +34,7 @@ public class InstanceDeleteEventComponent extends NodeComponent { @Override public void process() { - InstanceDeleteContext context = getRequestData(); + InstanceDeleteContext context = getContextBean(InstanceDeleteContext.class); String userId = LoginHelper.getUserIdStr(); context.getFlowInstances().forEach(flowInstance -> { if (!LoginHelper.isSuperAdmin() && !flowInstance.getCreateBy().equals(userId)) { diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/liteflow/instance/InstanceDeleteExecuteComponent.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/liteflow/instance/InstanceDeleteExecuteComponent.java index 54bea97dd..8622950b9 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/liteflow/instance/InstanceDeleteExecuteComponent.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/liteflow/instance/InstanceDeleteExecuteComponent.java @@ -30,7 +30,7 @@ public class InstanceDeleteExecuteComponent extends NodeComponent { @Override public void process() { - InstanceDeleteContext context = getRequestData(); + InstanceDeleteContext context = getContextBean(InstanceDeleteContext.class); if (!context.isHistory()) { context.setResult(insService.remove(context.getDeleteInstanceIds())); return; diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/liteflow/instance/InstanceDeleteExistsComponent.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/liteflow/instance/InstanceDeleteExistsComponent.java index f9ac98e3e..5b49657ba 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/liteflow/instance/InstanceDeleteExistsComponent.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/liteflow/instance/InstanceDeleteExistsComponent.java @@ -17,7 +17,7 @@ public class InstanceDeleteExistsComponent extends NodeBooleanComponent { @Override public boolean processBoolean() { - InstanceDeleteContext context = getRequestData(); + InstanceDeleteContext context = getContextBean(InstanceDeleteContext.class); return CollUtil.isNotEmpty(context.getFlowInstances()); } diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/liteflow/instance/InstanceDeleteLoadComponent.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/liteflow/instance/InstanceDeleteLoadComponent.java index 84ab78e24..376996b6d 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/liteflow/instance/InstanceDeleteLoadComponent.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/liteflow/instance/InstanceDeleteLoadComponent.java @@ -30,7 +30,7 @@ public class InstanceDeleteLoadComponent extends NodeComponent { @Override public void process() { - InstanceDeleteContext context = getRequestData(); + InstanceDeleteContext context = getContextBean(InstanceDeleteContext.class); List flowInstances; if (CollUtil.isNotEmpty(context.getBusinessIds())) { flowInstances = flowInstanceMapper.selectList(QueryBuilder.lambda(FlowInstance.class) diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/liteflow/operation/TaskOpExecuteComponent.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/liteflow/operation/TaskOpExecuteComponent.java index cb3bbb6c2..dc2b77825 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/liteflow/operation/TaskOpExecuteComponent.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/liteflow/operation/TaskOpExecuteComponent.java @@ -22,7 +22,7 @@ public class TaskOpExecuteComponent extends NodeComponent { @Override public void process() { - TaskOperationContext context = getRequestData(); + TaskOperationContext context = getContextBean(TaskOperationContext.class); Long taskId = context.getTaskOperationBo().getTaskId(); boolean result = false; switch (context.getOperation()) { diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/liteflow/operation/TaskOpLoadComponent.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/liteflow/operation/TaskOpLoadComponent.java index ab5e72b8a..226d771b0 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/liteflow/operation/TaskOpLoadComponent.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/liteflow/operation/TaskOpLoadComponent.java @@ -30,7 +30,7 @@ public class TaskOpLoadComponent extends NodeComponent { @Override public void process() { - TaskOperationContext context = getRequestData(); + TaskOperationContext context = getContextBean(TaskOperationContext.class); Task task = taskService.getById(context.getTaskOperationBo().getTaskId()); if (ObjectUtil.isNull(task)) { throw new ServiceException("任务不存在!"); diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/liteflow/operation/TaskOpNeedNotifyComponent.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/liteflow/operation/TaskOpNeedNotifyComponent.java index f273aef56..b5c8c7d95 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/liteflow/operation/TaskOpNeedNotifyComponent.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/liteflow/operation/TaskOpNeedNotifyComponent.java @@ -17,7 +17,7 @@ public class TaskOpNeedNotifyComponent extends NodeBooleanComponent { @Override public boolean processBoolean() { - TaskOperationContext context = getRequestData(); + TaskOperationContext context = getContextBean(TaskOperationContext.class); return context.isResult() && CollUtil.isNotEmpty(context.getTaskOperationBo().getMessageType()); } diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/liteflow/operation/TaskOpNotifyComponent.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/liteflow/operation/TaskOpNotifyComponent.java index 543f7c2ca..b58a2430d 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/liteflow/operation/TaskOpNotifyComponent.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/liteflow/operation/TaskOpNotifyComponent.java @@ -32,7 +32,7 @@ public class TaskOpNotifyComponent extends NodeComponent { @Override public void process() { - TaskOperationContext context = getRequestData(); + TaskOperationContext context = getContextBean(TaskOperationContext.class); TaskOperationBo bo = context.getTaskOperationBo(); List userIdList = new ArrayList<>(); if (StringUtils.isNotBlank(bo.getUserId())) { diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/liteflow/operation/TaskOpPrepareComponent.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/liteflow/operation/TaskOpPrepareComponent.java index d8c2863ae..4cfc0d6a2 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/liteflow/operation/TaskOpPrepareComponent.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/liteflow/operation/TaskOpPrepareComponent.java @@ -28,7 +28,7 @@ public class TaskOpPrepareComponent extends NodeComponent { @Override public void process() { - TaskOperationContext context = getRequestData(); + TaskOperationContext context = getContextBean(TaskOperationContext.class); TaskOperationEnum op = TaskOperationEnum.getByCode(context.getTaskOperation()); if (op == null) { log.error("Invalid operation type:{} ", context.getTaskOperation()); diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/liteflow/start/StartExecuteComponent.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/liteflow/start/StartExecuteComponent.java index a456c8d05..eacbcee8b 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/liteflow/start/StartExecuteComponent.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/liteflow/start/StartExecuteComponent.java @@ -36,7 +36,7 @@ public class StartExecuteComponent extends NodeComponent { @Override public void process() { - StartProcessContext context = getRequestData(); + StartProcessContext context = getContextBean(StartProcessContext.class); FlowParams flowParams = FlowParams.build() .handler(context.getStartProcessBo().getHandler()) .flowCode(context.getStartProcessBo().getFlowCode()) diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/liteflow/start/StartExistsComponent.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/liteflow/start/StartExistsComponent.java index e55ed23cd..5986f3730 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/liteflow/start/StartExistsComponent.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/liteflow/start/StartExistsComponent.java @@ -17,7 +17,7 @@ public class StartExistsComponent extends NodeBooleanComponent { @Override public boolean processBoolean() { - StartProcessContext context = getRequestData(); + StartProcessContext context = getContextBean(StartProcessContext.class); return ObjectUtil.isNotNull(context.getExistingInstance()); } diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/liteflow/start/StartPrepareInstanceComponent.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/liteflow/start/StartPrepareInstanceComponent.java index 24954b8fe..fc3cfa753 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/liteflow/start/StartPrepareInstanceComponent.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/liteflow/start/StartPrepareInstanceComponent.java @@ -28,7 +28,7 @@ public class StartPrepareInstanceComponent extends NodeComponent { @Override public void process() { - StartProcessContext context = getRequestData(); + StartProcessContext context = getContextBean(StartProcessContext.class); Definition definition = FlowEngine.defService().getPublishByFlowCode(context.getStartProcessBo().getFlowCode()); if (ObjectUtil.isNull(definition)) { throw new ServiceException("流程【" + context.getStartProcessBo().getFlowCode() + "】未发布,请先在流程设计器中发布流程定义"); diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/liteflow/start/StartPrepareRequestComponent.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/liteflow/start/StartPrepareRequestComponent.java index 05c0ac5dd..a848c78a4 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/liteflow/start/StartPrepareRequestComponent.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/liteflow/start/StartPrepareRequestComponent.java @@ -30,7 +30,7 @@ public class StartPrepareRequestComponent extends NodeComponent { @Override public void process() { - StartProcessContext context = getRequestData(); + StartProcessContext context = getContextBean(StartProcessContext.class); String businessId = context.getStartProcessBo().getBusinessId(); if (StringUtils.isBlank(businessId)) { throw new ServiceException("启动工作流时必须包含业务ID"); diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/liteflow/start/StartResumeComponent.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/liteflow/start/StartResumeComponent.java index 75ff4c58b..71b885042 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/liteflow/start/StartResumeComponent.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/liteflow/start/StartResumeComponent.java @@ -34,7 +34,7 @@ public class StartResumeComponent extends NodeComponent { @Override public void process() { - StartProcessContext context = getRequestData(); + StartProcessContext context = getContextBean(StartProcessContext.class); BusinessStatusEnum.checkStartStatus(context.getExistingInstance().getFlowStatus()); List taskList = taskService.list(new FlowTask().setInstanceId(context.getExistingInstance().getId())); if (CollUtil.isEmpty(taskList)) {