Bläddra i källkod

子流程修改、模型查询接口修改

caixiaofeng 5 månader sedan
förälder
incheckning
31f6cd5b19

+ 4 - 4
flow-workflow/flow-workflow-api/src/main/java/com/flow/service/FlowModelService.java

@@ -63,17 +63,17 @@ public interface FlowModelService extends BaseService<FlowModel> {
 
     /**
      * 获取模型
-     * @param modelId
+     * @param modelCode
      * @return
      */
-    FlowModel getModel(Long modelId);
+    FlowModel getModel(String modelCode);
 
     /**
      * 获取模型历史
-     * @param modelId
+     * @param modelCode
      * @return
      */
-    List<FlowModelHistory> getModelHistory(Long modelId);
+    List<FlowModelHistory> getModelHistory(String modelCode);
 
     /**
      * 切换历史模型

+ 5 - 5
flow-workflow/flow-workflow-biz/src/main/java/com/flow/service/impl/FlowModelServiceImpl.java

@@ -100,19 +100,19 @@ public class FlowModelServiceImpl extends BaseServiceImpl<FlowModelDao, FlowMode
     }
 
     @Override
-    public FlowModel getModel(Long modelId) {
+    public FlowModel getModel(String modelCode) {
         Optional<FlowModel> optional = flowModelDao.lambdaQueryChain()
-                .eq(FlowModel::getId, modelId)
+                .eq(FlowModel::getCode, modelCode)
                 .last(SqlConstant.LIMIT1)
                 .oneOpt();
-        return optional.orElseGet(() -> flowModelHistoryService.lambdaQuery().eq(FlowModelHistory::getId, modelId).one());
+        return optional.orElseGet(() -> flowModelHistoryService.lambdaQuery().eq(FlowModelHistory::getCode, modelCode).one());
     }
 
     @Override
-    public List<FlowModelHistory> getModelHistory(Long modelId) {
+    public List<FlowModelHistory> getModelHistory(String modelCode) {
         return flowModelHistoryService.lambdaQuery()
                 .select(FlowModelHistory.class, i -> !StringUtils.equalsAny(i.getColumn(), "process", "form", "settings"))
-                .eq(FlowModelHistory::getModelId, modelId)
+                .eq(FlowModelHistory::getCode, modelCode)
                 .list();
     }
 

+ 6 - 6
flow-workflow/flow-workflow-controller/src/main/java/com/flow/controller/FlowModelController.java

@@ -59,15 +59,15 @@ public class FlowModelController {
         return Result.success(flowModelService.deploy(modelId));
     }
 
-    @GetMapping("/{modelId}")
-    public Result<FlowModel> getModel(@PathVariable Long modelId) {
-        FlowModel model = flowModelService.getModel(modelId);
+    @GetMapping("/{modelCode}")
+    public Result<FlowModel> getModel(@PathVariable String modelCode) {
+        FlowModel model = flowModelService.getModel(modelCode);
         return Result.success(model);
     }
 
-    @GetMapping("/history/{modelId}")
-    public Result<List<FlowModelHistory>> getModelHistory(@PathVariable Long modelId) {
-        List<FlowModelHistory> modelHistory = flowModelService.getModelHistory(modelId);
+    @GetMapping("/history/{modelCode}")
+    public Result<List<FlowModelHistory>> getModelHistory(@PathVariable String modelCode) {
+        List<FlowModelHistory> modelHistory = flowModelService.getModelHistory(modelCode);
         return Result.success(modelHistory);
     }
 

+ 40 - 6
flow-workflow/flow-workflow-entity/src/main/java/com/flow/entity/node/CallNode.java

@@ -3,19 +3,24 @@ package com.flow.entity.node;
 import com.google.common.collect.Lists;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
+import org.apache.commons.lang3.StringUtils;
 import org.flowable.bpmn.model.CallActivity;
 import org.flowable.bpmn.model.FlowElement;
+import org.flowable.bpmn.model.IOParameter;
 import org.flowable.bpmn.model.SequenceFlow;
 
 import java.util.ArrayList;
 import java.util.List;
+import java.util.Map;
 import java.util.Objects;
+import java.util.stream.Collectors;
 
 @EqualsAndHashCode(callSuper = true)
 @Data
 public class CallNode extends Node {
-    private String targetType;
-    private String target;
+    private String modelCode;
+    private List<Map<String, String>> in;
+    private List<Map<String, String>> out;
 
     @Override
     public List<FlowElement> convert() {
@@ -24,11 +29,40 @@ public class CallNode extends Node {
         callActivity.setId(this.getId());
         callActivity.setName(this.getName());
         callActivity.setExecutionListeners(this.buidEventListener());
-        callActivity.setInheritVariables(true);
         callActivity.setInheritBusinessKey(true);
-        callActivity.setCalledElementType(this.targetType);
-        callActivity.setCalledElement(this.target);
-        callActivity.setProcessInstanceName(this.getName());
+        callActivity.setCalledElementType("key");
+        callActivity.setCalledElement(this.modelCode);
+        callActivity.setProcessInstanceIdVariableName(String.format("${%s_InstanceId}", this.getId()));
+        callActivity.setProcessInstanceName(String.format("${%s_InstanceName}", this.getId()));
+        // callActivity.setInheritVariables(true);
+        List<IOParameter> in = this.in.stream()
+                .filter(i -> StringUtils.isNotBlank(i.get("source")))
+                .map(i -> {
+                    String source = i.get("source");
+                    String target = i.get("target");
+                    if (StringUtils.isBlank(target)) {
+                        target = source;
+                    }
+                    IOParameter parameter = new IOParameter();
+                    parameter.setSourceExpression(source);
+                    parameter.setTargetExpression(target);
+                    return parameter;
+                }).collect(Collectors.toList());
+        callActivity.setInParameters(in);
+        List<IOParameter> out = this.out.stream()
+                .filter(i -> StringUtils.isNotBlank(i.get("source")))
+                .map(o -> {
+                    String source = o.get("source");
+                    String target = o.get("target");
+                    if (StringUtils.isBlank(target)) {
+                        target = source;
+                    }
+                    IOParameter parameter = new IOParameter();
+                    parameter.setSourceExpression(source);
+                    parameter.setTargetExpression(target);
+                    return parameter;
+                }).collect(Collectors.toList());
+        callActivity.setOutParameters(out);
         elements.add(callActivity);
         // 下一个节点的连线
         Node next = this.getNext();