From 8f9e53ed836eae518aff798c08c6ca134a9c4d3a Mon Sep 17 00:00:00 2001 From: Echo009 Date: Wed, 3 Mar 2021 14:26:50 +0800 Subject: [PATCH] feat: the workflow instance whose max instance number is less than or equal to zero is always allowed to be executed --- .../service/workflow/WorkflowInstanceManager.java | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/powerjob-server/src/main/java/com/github/kfcfans/powerjob/server/service/workflow/WorkflowInstanceManager.java b/powerjob-server/src/main/java/com/github/kfcfans/powerjob/server/service/workflow/WorkflowInstanceManager.java index 543455bd..a15140e5 100644 --- a/powerjob-server/src/main/java/com/github/kfcfans/powerjob/server/service/workflow/WorkflowInstanceManager.java +++ b/powerjob-server/src/main/java/com/github/kfcfans/powerjob/server/service/workflow/WorkflowInstanceManager.java @@ -162,12 +162,14 @@ public class WorkflowInstanceManager { log.info("[Workflow-{}|{}] workflowInstance({}) needn't running any more.", wfInfo.getId(), wfInstanceId, wfInstanceInfo); return; } - - // 并发度控制 - int instanceConcurrency = workflowInstanceInfoRepository.countByWorkflowIdAndStatusIn(wfInfo.getId(), WorkflowInstanceStatus.GENERALIZED_RUNNING_STATUS); - if (instanceConcurrency > wfInfo.getMaxWfInstanceNum()) { - onWorkflowInstanceFailed(String.format(SystemInstanceResult.TOO_MANY_INSTANCES, instanceConcurrency, wfInfo.getMaxWfInstanceNum()), wfInstanceInfo); - return; + // 最大实例数量 <= 0 表示不限制 + if (wfInfo.getMaxWfInstanceNum() > 0) { + // 并发度控制 + int instanceConcurrency = workflowInstanceInfoRepository.countByWorkflowIdAndStatusIn(wfInfo.getId(), WorkflowInstanceStatus.GENERALIZED_RUNNING_STATUS); + if ( instanceConcurrency > wfInfo.getMaxWfInstanceNum()) { + onWorkflowInstanceFailed(String.format(SystemInstanceResult.TOO_MANY_INSTANCES, instanceConcurrency, wfInfo.getMaxWfInstanceNum()), wfInstanceInfo); + return; + } } try {