Browse Source

feat:流程节点运行相关接口,bug修复等

韩帛霖 1 year ago
parent
commit
5359df1ee3

+ 10 - 0
ruoyi-process-execution/src/main/java/com/ruoyi/execution/produce/dispersed/mapper/BpmExecuteProcessMapper.java

@@ -83,4 +83,14 @@ public interface BpmExecuteProcessMapper {
      * @return
      */
     int endProcess(String taskKey);
+
+    /**
+     * 修改当前流程执行节点
+     *
+     * @param taskKey         任务流程标识
+     * @param taskNodeKey     当前流程被执行的最后一个节点
+     * @param taskNodeNextKey 下一个节点的标识
+     * @return
+     */
+    int updateProcessNode(BpmExecuteProcess bpmExecuteProcess);
 }

+ 19 - 1
ruoyi-process-execution/src/main/java/com/ruoyi/execution/produce/dispersed/runbpm/PreExecutionToolClass.java

@@ -75,7 +75,7 @@ public class PreExecutionToolClass<R> {
         // 得到当前表名
         intoProduction.setTableName(commonEntity.getBasicMap().get("tableName").toString());
         // 得到流程别名
-        intoProduction.setTaskProcessKey(commonEntity.getAddListMap().get(0).get("plantaskkey").toString());
+        intoProduction.setTaskProcessKey(commonEntity.getCommMap().get("plantaskkey").toString());
         // 得到单前表所需的状态字段,启动流程所需kv
         intoProduction.setStateMap(commonEntity.getConditionMap());
         intoProduction.getStateMap().putAll(commonEntity.getBtnParametersMap());
@@ -225,6 +225,8 @@ public class PreExecutionToolClass<R> {
     // 执行流程节点共通接口
     @Transactional
     public int executionNode(BpmRunNodeVo bpmRunNodeVo) {
+        System.err.println(bpmRunNodeVo.getTaskNodeKey());
+        System.err.println(bpmRunNodeVo.getNextNodeKey());
         // 任务流程编码
         String taskProcessKey = bpmRunNodeVo.getTaskProcessKey();
         // 任务节点编码
@@ -320,10 +322,26 @@ public class PreExecutionToolClass<R> {
             // 当前节点执行的脚本
             BpmExecuteNodeMiddle nextBpmExecuteNodeMiddle = runBpmExecuteNodeMiddleMapper.queryBpmExecuteNodeMiddleByTaskNodeKey(bpmRunNodeVo.getTaskProcessKey(), bpmRunNodeVo.getNextNodeKey());
             bpmRunNodeVo1.setImplementationName(nextBpmExecuteNodeMiddle.getTaskArtificialScriptKey());
+
+
+
+            BpmExecuteProcess bpmExecuteProcess = new BpmExecuteProcess();
+            bpmExecuteProcess.setTaskKey(bpmRunNodeVo.getTaskProcessKey());
+            bpmExecuteProcess.setTaskNodeKey(bpmRunNodeVo.getTaskNodeKey());
+            bpmExecuteProcess.setTaskNodeNextKey(bpmRunNodeVo.getNextNodeKey());
+            runBpmExecuteProcessMapper.updateProcessNode(bpmExecuteProcess);
             this.executionNode(bpmRunNodeVo1);
         } else if (bpmExecuteNode.getTaskNodeExecuteType().equals("false")) {
+
+
+            BpmExecuteProcess bpmExecuteProcess = new BpmExecuteProcess();
+            bpmExecuteProcess.setTaskKey(bpmRunNodeVo.getTaskProcessKey());
+            bpmExecuteProcess.setTaskNodeKey(bpmRunNodeVo.getTaskNodeKey());
+            bpmExecuteProcess.setTaskNodeNextKey(bpmRunNodeVo.getNextNodeKey());
+            runBpmExecuteProcessMapper.updateProcessNode(bpmExecuteProcess);
             return HttpStatus.SUCCESS;
         }
+
         return HttpStatus.SUCCESS;
     }
 

+ 1 - 1
ruoyi-process-execution/src/main/java/com/ruoyi/execution/produce/dispersed/runbpm/RunImplementationClass.java

@@ -45,7 +45,7 @@ public class RunImplementationClass<J> {
             if (iRunBPMService.isVerificationMethod()) {
                 // 脚本执行前验证
                 AjaxResult ajaxResult1 = iRunBPMService.preValidation(iRunBPMEntity);
-                if (ajaxResult1.get("code").equals("200")) {
+                if (ajaxResult1.get("code").toString().equals("200")) {
                     ajaxResult = iRunBPMService.executeNode(iRunBPMEntity);
                     // 把当前节点置为已经执行状态
                     iRunBPMService.afterValidation(iRunBPMEntity);

+ 1 - 1
ruoyi-process-execution/src/main/java/com/ruoyi/execution/produce/dispersed/service/IRunBPMService.java

@@ -5,7 +5,7 @@ import com.ruoyi.common.core.domain.AjaxResult;
 import com.ruoyi.execution.produce.dispersed.entity.runbpm.IRunBPMEntity;
 
 /**
- * 执行流程接口
+ * 执行流程节点接口
  * 作用: 仅为一个标识接口,实现类可以直接被注入到流程执行引擎。
  *
  * @author hzh

+ 4 - 1
ruoyi-process-execution/src/main/java/com/ruoyi/execution/produce/dispersed/service/impl/runbpm/common/SandProductionImpl.java

@@ -38,8 +38,11 @@ public class SandProductionImpl implements IRunBPMService {
     @Override
     public AjaxResult executeNode(IRunBPMEntity iRunBPMEntity) {
         CommonEntity commonEntity = new CommonEntity();
+        commonEntity.getConditionMap().put("id", iRunBPMEntity.getExecutionMap().get("taskPlanKey"));
         commonEntity.getBasicMap().put("tableName", iRunBPMEntity.getTableName());
-        commonEntity.getCommMap().put("", "");
+        iRunBPMEntity.getExecutionMap().remove("taskPlanKey");
+        commonEntity.getCommMap().putAll(iRunBPMEntity.getExecutionMap());
+        // 发送修改请求
         sending.sendCommonUpdate(commonEntity);
         return null;
     }

+ 2 - 0
ruoyi-process-execution/src/main/java/com/ruoyi/execution/produce/dispersed/service/templateimpl/RunBPMImpl.java

@@ -6,6 +6,7 @@ import com.ruoyi.execution.produce.dispersed.entity.runbpm.IRunBPMEntity;
 import com.ruoyi.execution.produce.dispersed.service.IRunBPMService;
 import com.ruoyi.execution.produce.dispersed.service.IBpmExecuteNodeService;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Scope;
 import org.springframework.stereotype.Service;
 
 import javax.annotation.PreDestroy;
@@ -25,6 +26,7 @@ import javax.annotation.PreDestroy;
  * 获取该 bean 的实例时,都会返回一个新的实例。从而避免并发的的操作
  */
 @Service("RunBPMImpl")
+@Scope("prototype")
 public class RunBPMImpl implements IRunBPMService {
 
     @Autowired

+ 2 - 0
ruoyi-process-execution/src/main/java/com/ruoyi/execution/produce/dispersed/service/templateimpl/ScriptImpl.java

@@ -1,6 +1,7 @@
 package com.ruoyi.execution.produce.dispersed.service.templateimpl;
 
 import com.ruoyi.execution.produce.dispersed.service.IScriptService;
+import org.springframework.context.annotation.Scope;
 import org.springframework.stereotype.Service;
 
 import javax.annotation.PreDestroy;
@@ -17,6 +18,7 @@ import javax.annotation.PreDestroy;
 //  String value() default "";
 //  }
 @Service("ScriptImpl")
+@Scope("prototype")
 public class ScriptImpl implements IScriptService {
 
     /**

+ 18 - 0
ruoyi-process-execution/src/main/resources/mapper/bpm/dispersed/BpmExecuteProcessMapper.xml

@@ -214,5 +214,23 @@
         SET task_process_state = 3
         where task_key = #{taskKey}
     </update>
+
+    <update id="updateProcessNode" parameterType="com.ruoyi.execution.produce.dispersed.entity.BpmExecuteProcess">
+        update bpm_execute_process
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="taskKey != null">task_key = #{taskKey},</if>
+            <if test="taskName != null">task_name = #{taskName},</if>
+            <if test="taskNodeKey != null">task_node_key = #{taskNodeKey},</if>
+            <if test="taskNodeNextKey != null">task_node_next_key = #{taskNodeNextKey},</if>
+            <if test="taskProcessKey != null">task_process_key = #{taskProcessKey},</if>
+            <if test="taskProcessXmlContent != null">task_process_xml_content = #{taskProcessXmlContent},</if>
+            <if test="taskProcessState != null">task_process_state = #{taskProcessState},</if>
+            <if test="taskProcessNote != null">task_process_note = #{taskProcessNote},</if>
+            <if test="delFlag != null">del_flag = #{delFlag},</if>
+            <if test="remark != null">remark = #{remark},</if>
+            <if test="taskProcessType != null">task_process_type = #{taskProcessType},</if>
+        </trim>
+        where task_key = #{taskKey}
+    </update>
 </mapper>