|
@@ -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();
|