|
@@ -0,0 +1,59 @@
|
|
|
+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.StartEvent;
|
|
|
+import org.flowable.bpmn.model.UserTask;
|
|
|
+
|
|
|
+import java.util.ArrayList;
|
|
|
+import java.util.LinkedHashMap;
|
|
|
+import java.util.List;
|
|
|
+import java.util.Map;
|
|
|
+
|
|
|
+@EqualsAndHashCode(callSuper = true)
|
|
|
+@Data
|
|
|
+public class StartTaskNode extends Node {
|
|
|
+ // 表单属性
|
|
|
+ private List<FormProperty> formProperties = new ArrayList<>();
|
|
|
+ // 操作权限
|
|
|
+ private Map<String, Boolean> operations = new LinkedHashMap<>();
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public List<FlowElement> convert() {
|
|
|
+ ArrayList<FlowElement> elements = Lists.newArrayList();
|
|
|
+ // 开始节点
|
|
|
+ StartEvent startEvent = new StartEvent();
|
|
|
+ startEvent.setId(this.getId());
|
|
|
+ startEvent.setName(this.getName());
|
|
|
+ startEvent.setExecutionListeners(this.buidEventListener());
|
|
|
+ elements.add(startEvent);
|
|
|
+ // 下一个节点的连线
|
|
|
+ String initiatorNodeId = "node_initiator";
|
|
|
+ SequenceFlow sequenceFlow = new SequenceFlow();
|
|
|
+ sequenceFlow.setId(String.format("%s-%s", this.getId(), initiatorNodeId));
|
|
|
+ sequenceFlow.setSourceRef(this.getId());
|
|
|
+ sequenceFlow.setTargetRef(initiatorNodeId);
|
|
|
+ elements.add(sequenceFlow);
|
|
|
+ // 发起人用户任务
|
|
|
+ UserTask userTask = new UserTask();
|
|
|
+ userTask.setId(initiatorNodeId);
|
|
|
+ userTask.setName("发起人");
|
|
|
+ userTask.setAssignee("${initiator}");
|
|
|
+ // 发起后自动跳过
|
|
|
+ userTask.setSkipExpression("${_SKIP_INITIATOR == true}");
|
|
|
+ elements.add(userTask);
|
|
|
+ // 下一个节点的连线
|
|
|
+ Node child = this.getChild();
|
|
|
+ SequenceFlow sequence = this.buildSequence(child);
|
|
|
+ sequence.setId(String.format("%s-%s", initiatorNodeId, child.getId()));
|
|
|
+ sequence.setSourceRef(initiatorNodeId);
|
|
|
+ elements.add(sequence);
|
|
|
+ // 下一个节点
|
|
|
+ List<FlowElement> flowElements = child.convert();
|
|
|
+ elements.addAll(flowElements);
|
|
|
+ return elements;
|
|
|
+ }
|
|
|
+}
|