浏览代码

【功能评审】Bpm:审批签名

YunaiV 7 月之前
父节点
当前提交
9c4648e545

+ 3 - 1
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/framework/flowable/core/enums/BpmnVariableConstants.java

@@ -58,7 +58,9 @@ public class BpmnVariableConstants {
      * @see org.flowable.task.api.Task#getTaskLocalVariables()
      */
     public static final String TASK_VARIABLE_REASON = "TASK_REASON";
-
+    /**
+     * 任务变量 - 签名图片 URL
+     */
     public static final String TASK_SIGN_PIC_URL = "TASK_SIGN_PIC_URL";
 
 }

+ 2 - 2
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/framework/flowable/core/listener/BpmProcessInstanceEventListener.java

@@ -39,10 +39,10 @@ public class BpmProcessInstanceEventListener extends AbstractFlowableEngineEvent
         processInstanceService.processProcessInstanceCompleted((ProcessInstance)event.getEntity());
     }
 
-    @Override
-    // 特殊情况:当跳转到 EndEvent 流程实例未结束, 会执行 deleteProcessInstance 方法。
+    @Override // 特殊情况:当跳转到 EndEvent 流程实例未结束, 会执行 deleteProcessInstance 方法
     protected void processCancelled(FlowableCancelledEvent event) {
         ProcessInstance processInstance = processInstanceService.getProcessInstance(event.getProcessInstanceId());
         processInstanceService.processProcessInstanceCompleted(processInstance);
     }
+
 }

+ 6 - 0
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/framework/flowable/core/util/FlowableUtils.java

@@ -213,6 +213,12 @@ public class FlowableUtils {
         return (String) task.getTaskLocalVariables().get(BpmnVariableConstants.TASK_VARIABLE_REASON);
     }
 
+    /**
+     * 获得任务的签名图片 URL
+     *
+     * @param task 任务
+     * @return 签名图片 URL
+     */
     public static String getTaskSignPicUrl(TaskInfo task) {
         return (String) task.getTaskLocalVariables().get(BpmnVariableConstants.TASK_SIGN_PIC_URL);
     }

+ 5 - 4
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/task/BpmTaskServiceImpl.java

@@ -859,10 +859,11 @@ public class BpmTaskServiceImpl implements BpmTaskService {
                 .moveActivityIdsToSingleActivityId(activityIds, endEvent.getId())
                 .changeState();
 
-        // 3. 如果跳转到 EndEvent 流程还未结束, 执行 deleteProcessInstance 方法。
-        List<Execution> executionList = runtimeService.createExecutionQuery().processInstanceId(processInstanceId).list();
-        if (CollUtil.isNotEmpty(executionList)) {
-            log.warn("执行跳转到 EndEvent 后, 流程实例未结束。执行 [deleteProcessInstance] 方法");
+        // 3. 特殊:如果跳转到 EndEvent 流程还未结束, 执行 deleteProcessInstance 方法
+        // TODO 芋艿:目前发现并行分支情况下,会存在这个情况,后续看看有没更好的方案;
+        List<Execution> executions = runtimeService.createExecutionQuery().processInstanceId(processInstanceId).list();
+        if (CollUtil.isNotEmpty(executions)) {
+            log.warn("[moveTaskToEnd][执行跳转到 EndEvent 后, 流程实例未结束,强制执行 deleteProcessInstance 方法]");
             runtimeService.deleteProcessInstance(processInstanceId, reason);
         }
     }