|
@@ -1,12 +1,10 @@
|
|
|
package com.flow.entity.node;
|
|
|
|
|
|
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
|
|
|
import com.google.common.collect.Lists;
|
|
|
import lombok.Data;
|
|
|
import lombok.EqualsAndHashCode;
|
|
|
-import org.flowable.bpmn.model.FieldExtension;
|
|
|
-import org.flowable.bpmn.model.FlowElement;
|
|
|
-import org.flowable.bpmn.model.HttpServiceTask;
|
|
|
-import org.flowable.bpmn.model.SequenceFlow;
|
|
|
+import org.flowable.bpmn.model.*;
|
|
|
|
|
|
import java.util.ArrayList;
|
|
|
import java.util.List;
|
|
@@ -18,10 +16,10 @@ import java.util.Objects;
|
|
|
public class HttpNode extends Node {
|
|
|
private String url;
|
|
|
private String method;
|
|
|
- private Map<String,Object> headers;
|
|
|
- private Map<String,Object> requestBody;
|
|
|
- private Boolean ignoreException;
|
|
|
- private Long requestTimeout;
|
|
|
+ private Map<String, Object> headers;
|
|
|
+ private Map<String, Object> requestBody;
|
|
|
+ private Boolean ignoreException = false;
|
|
|
+ private Long requestTimeout = 0L;
|
|
|
|
|
|
|
|
|
@Override
|
|
@@ -29,8 +27,11 @@ public class HttpNode extends Node {
|
|
|
ArrayList<FlowElement> elements = Lists.newArrayList();
|
|
|
HttpServiceTask httpServiceTask = new HttpServiceTask();
|
|
|
httpServiceTask.setId(this.getId());
|
|
|
+ httpServiceTask.setType("http");
|
|
|
httpServiceTask.setName(this.getName());
|
|
|
httpServiceTask.setExecutionListeners(this.buidEventListener());
|
|
|
+ httpServiceTask.setAsynchronous(false);
|
|
|
+ httpServiceTask.setParallelInSameTransaction(true);
|
|
|
// httpServiceTask.setImplementationType(ImplementationType.IMPLEMENTATION_TYPE_DELEGATEEXPRESSION);
|
|
|
// httpServiceTask.setImplementation("${httpDelegate}");
|
|
|
// 请求参数
|
|
@@ -43,14 +44,18 @@ public class HttpNode extends Node {
|
|
|
methodExtension.setFieldName("requestMethod");
|
|
|
methodExtension.setStringValue(this.method);
|
|
|
fieldExtensions.add(methodExtension);
|
|
|
- FieldExtension headerExtension = new FieldExtension();
|
|
|
- headerExtension.setFieldName("requestHeaders");
|
|
|
- headerExtension.setExpression(this.headers.toString());
|
|
|
- fieldExtensions.add(headerExtension);
|
|
|
- FieldExtension bodyExtension = new FieldExtension();
|
|
|
- bodyExtension.setFieldName("requestBody");
|
|
|
- bodyExtension.setExpression(this.requestBody.toString());
|
|
|
- fieldExtensions.add(bodyExtension);
|
|
|
+ if (CollectionUtils.isNotEmpty(this.headers)) {
|
|
|
+ FieldExtension headerExtension = new FieldExtension();
|
|
|
+ headerExtension.setFieldName("requestHeaders");
|
|
|
+ headerExtension.setExpression(this.headers.toString());
|
|
|
+ fieldExtensions.add(headerExtension);
|
|
|
+ }
|
|
|
+ if (CollectionUtils.isNotEmpty(this.requestBody)) {
|
|
|
+ FieldExtension bodyExtension = new FieldExtension();
|
|
|
+ bodyExtension.setFieldName("requestBody");
|
|
|
+ bodyExtension.setExpression(this.requestBody.toString());
|
|
|
+ fieldExtensions.add(bodyExtension);
|
|
|
+ }
|
|
|
FieldExtension ignoreExtension = new FieldExtension();
|
|
|
ignoreExtension.setFieldName("ignoreException");
|
|
|
ignoreExtension.setStringValue(this.ignoreException.toString());
|
|
@@ -59,7 +64,30 @@ public class HttpNode extends Node {
|
|
|
timeoutExtension.setFieldName("requestTimeout");
|
|
|
timeoutExtension.setStringValue(this.requestTimeout.toString());
|
|
|
fieldExtensions.add(timeoutExtension);
|
|
|
+ FieldExtension failCodesExtension = new FieldExtension();
|
|
|
+ failCodesExtension.setFieldName("failStatusCodes");
|
|
|
+ failCodesExtension.setStringValue("400,401,403,404,500,503");
|
|
|
+ fieldExtensions.add(failCodesExtension);
|
|
|
+ FieldExtension handleCodesExtension = new FieldExtension();
|
|
|
+ handleCodesExtension.setFieldName("handleStatusCodes");
|
|
|
+ handleCodesExtension.setStringValue("200");
|
|
|
+ fieldExtensions.add(handleCodesExtension);
|
|
|
+ FieldExtension saveResponseBodyExtension = new FieldExtension();
|
|
|
+ saveResponseBodyExtension.setFieldName("saveResponseVariableAsJson");
|
|
|
+ saveResponseBodyExtension.setStringValue("true");
|
|
|
+ fieldExtensions.add(saveResponseBodyExtension);
|
|
|
+ FieldExtension activityBehaviorExtension = new FieldExtension();
|
|
|
+ activityBehaviorExtension.setFieldName("httpActivityBehaviorClass");
|
|
|
+ activityBehaviorExtension.setStringValue("com.flow.behavior.CustomHttpServiceTaskActivityBehavior");
|
|
|
+ // fieldExtensions.add(activityBehaviorExtension);
|
|
|
httpServiceTask.setFieldExtensions(fieldExtensions);
|
|
|
+ // 失败重试
|
|
|
+ ExtensionElement retryElement = new ExtensionElement();
|
|
|
+ retryElement.setNamespace("https://flowable.org/model");
|
|
|
+ retryElement.setNamespacePrefix("flowable");
|
|
|
+ retryElement.setName("failedJobRetryTimeCycle");
|
|
|
+ retryElement.setElementText("R5/PT5M");
|
|
|
+ // httpServiceTask.addExtensionElement(retryElement);
|
|
|
elements.add(httpServiceTask);
|
|
|
// 下一个节点的连线
|
|
|
Node child = this.getChild();
|