|
@@ -0,0 +1,41 @@
|
|
|
|
+package com.flow.entity.node;
|
|
|
|
+
|
|
|
|
+import com.google.common.collect.Lists;
|
|
|
|
+import lombok.Data;
|
|
|
|
+import lombok.EqualsAndHashCode;
|
|
|
|
+import org.flowable.bpmn.model.ExternalWorkerServiceTask;
|
|
|
|
+import org.flowable.bpmn.model.FlowElement;
|
|
|
|
+import org.flowable.bpmn.model.SequenceFlow;
|
|
|
|
+
|
|
|
|
+import java.util.ArrayList;
|
|
|
|
+import java.util.List;
|
|
|
|
+import java.util.Objects;
|
|
|
|
+
|
|
|
|
+@EqualsAndHashCode(callSuper = true)
|
|
|
|
+@Data
|
|
|
|
+public class ExternalNode extends Node {
|
|
|
|
+ private String topic;
|
|
|
|
+
|
|
|
|
+ @Override
|
|
|
|
+ public List<FlowElement> convert() {
|
|
|
|
+ ArrayList<FlowElement> elements = Lists.newArrayList();
|
|
|
|
+ // 外部任务
|
|
|
|
+ ExternalWorkerServiceTask externalWorkerServiceTask = new ExternalWorkerServiceTask();
|
|
|
|
+ externalWorkerServiceTask.setId(this.getId());
|
|
|
|
+ externalWorkerServiceTask.setName(this.getName());
|
|
|
|
+ externalWorkerServiceTask.setTopic(this.topic);
|
|
|
|
+ externalWorkerServiceTask.setExecutionListeners(this.buidEventListener());
|
|
|
|
+ elements.add(externalWorkerServiceTask);
|
|
|
|
+ // 下一个节点的连线
|
|
|
|
+ Node next = this.getNext();
|
|
|
|
+ SequenceFlow sequenceFlow = this.buildSequence(next);
|
|
|
|
+ elements.add(sequenceFlow);
|
|
|
|
+ // 下一个节点
|
|
|
|
+ if (Objects.nonNull(next)) {
|
|
|
|
+ next.setBranchId(this.getBranchId());
|
|
|
|
+ List<FlowElement> flowElements = next.convert();
|
|
|
|
+ elements.addAll(flowElements);
|
|
|
|
+ }
|
|
|
|
+ return elements;
|
|
|
|
+ }
|
|
|
|
+}
|