|
@@ -3,19 +3,25 @@ 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.FieldExtension;
|
|
|
import org.flowable.bpmn.model.FlowElement;
|
|
|
import org.flowable.bpmn.model.SequenceFlow;
|
|
|
import org.flowable.bpmn.model.ServiceTask;
|
|
|
+import org.flowable.common.engine.impl.util.CollectionUtil;
|
|
|
|
|
|
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 ServiceNode extends Node {
|
|
|
private String implementationType;
|
|
|
private String implementation;
|
|
|
+ private List<Map<String, String>> fields;
|
|
|
|
|
|
@Override
|
|
|
public List<FlowElement> convert() {
|
|
@@ -27,6 +33,29 @@ public class ServiceNode extends Node {
|
|
|
serviceTask.setExecutionListeners(this.buidEventListener());
|
|
|
serviceTask.setImplementationType(implementationType);
|
|
|
serviceTask.setImplementation(implementation);
|
|
|
+ if (CollectionUtil.isNotEmpty(this.fields)) {
|
|
|
+ List<FieldExtension> fieldExtensions = this.fields.stream().map(field -> {
|
|
|
+ String name = field.get("name");
|
|
|
+ String type = field.get("type");
|
|
|
+ String value = field.get("value");
|
|
|
+ if (StringUtils.isBlank(name)) {
|
|
|
+ throw new IllegalArgumentException("注入字段名称不能为空");
|
|
|
+ } else if (StringUtils.isBlank(type)) {
|
|
|
+ throw new IllegalArgumentException("注入字段类型不能为空");
|
|
|
+ } else if (StringUtils.isBlank(value)) {
|
|
|
+ throw new IllegalArgumentException("注入字段值不能为空");
|
|
|
+ }
|
|
|
+ FieldExtension fieldExtension = new FieldExtension();
|
|
|
+ fieldExtension.setFieldName(name);
|
|
|
+ if ("expression".equals(type)) {
|
|
|
+ fieldExtension.setExpression(value);
|
|
|
+ } else {
|
|
|
+ fieldExtension.setStringValue(value);
|
|
|
+ }
|
|
|
+ return fieldExtension;
|
|
|
+ }).collect(Collectors.toList());
|
|
|
+ serviceTask.setFieldExtensions(fieldExtensions);
|
|
|
+ }
|
|
|
elements.add(serviceTask);
|
|
|
// 下一个节点的连线
|
|
|
Node child = this.getChild();
|