Browse Source

服务节点

caixiaofeng 6 months ago
parent
commit
e04239669c

+ 2 - 0
flow-workflow/flow-workflow-entity/src/main/java/com/flow/constant/NodeTypeConstant.java

@@ -25,6 +25,8 @@ public interface NodeTypeConstant {
     String JUMP = "jump";
     // HTTP
     String HTTP = "http";
+    // 服务
+    String SERVICE = "service";
     // 结束
     String END = "end";
 }

+ 1 - 0
flow-workflow/flow-workflow-entity/src/main/java/com/flow/entity/node/Node.java

@@ -33,6 +33,7 @@ import java.util.stream.Collectors;
         @JsonSubTypes.Type(value = NotifyNode.class, name = NodeTypeConstant.NOTIFY),
         @JsonSubTypes.Type(value = JumpNode.class, name = NodeTypeConstant.JUMP),
         @JsonSubTypes.Type(value = HttpNode.class, name = NodeTypeConstant.HTTP),
+        @JsonSubTypes.Type(value = ServiceNode.class, name = NodeTypeConstant.SERVICE),
         @JsonSubTypes.Type(value = EndNode.class, name = NodeTypeConstant.END)
 })
 @JsonIgnoreProperties(ignoreUnknown = true)

+ 43 - 0
flow-workflow/flow-workflow-entity/src/main/java/com/flow/entity/node/ServiceNode.java

@@ -0,0 +1,43 @@
+package com.flow.entity.node;
+
+import com.google.common.collect.Lists;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import org.flowable.bpmn.model.FlowElement;
+import org.flowable.bpmn.model.SequenceFlow;
+import org.flowable.bpmn.model.ServiceTask;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Objects;
+
+@EqualsAndHashCode(callSuper = true)
+@Data
+public class ServiceNode extends Node {
+    private String implementationType;
+    private String implementation;
+
+    @Override
+    public List<FlowElement> convert() {
+        ArrayList<FlowElement> elements = Lists.newArrayList();
+        // 服务节点
+        ServiceTask serviceTask = new ServiceTask();
+        serviceTask.setId(this.getId());
+        serviceTask.setName(this.getName());
+        serviceTask.setExecutionListeners(this.buidEventListener());
+        serviceTask.setImplementationType(implementationType);
+        serviceTask.setImplementation(implementation);
+        elements.add(serviceTask);
+        // 下一个节点的连线
+        Node child = this.getChild();
+        SequenceFlow sequenceFlow = this.buildSequence(child);
+        elements.add(sequenceFlow);
+        // 下一个节点
+        if (Objects.nonNull(child)) {
+            child.setBranchId(this.getBranchId());
+            List<FlowElement> flowElements = child.convert();
+            elements.addAll(flowElements);
+        }
+        return elements;
+    }
+}