|
@@ -23,7 +23,7 @@ public class HttpNode extends Node {
|
|
private Integer retryCount;
|
|
private Integer retryCount;
|
|
private TimeUnitEnum unit = TimeUnitEnum.MINUTE;
|
|
private TimeUnitEnum unit = TimeUnitEnum.MINUTE;
|
|
private Integer duration;
|
|
private Integer duration;
|
|
-
|
|
|
|
|
|
+ private List<String> errorUsers;
|
|
|
|
|
|
@Override
|
|
@Override
|
|
public List<FlowElement> convert() {
|
|
public List<FlowElement> convert() {
|
|
@@ -103,10 +103,10 @@ public class HttpNode extends Node {
|
|
FieldExtension failCodesExtension = new FieldExtension();
|
|
FieldExtension failCodesExtension = new FieldExtension();
|
|
failCodesExtension.setFieldName("failStatusCodes");
|
|
failCodesExtension.setFieldName("failStatusCodes");
|
|
failCodesExtension.setStringValue("400,401,403,404,500,503");
|
|
failCodesExtension.setStringValue("400,401,403,404,500,503");
|
|
- fieldExtensions.add(failCodesExtension);
|
|
|
|
|
|
+ // fieldExtensions.add(failCodesExtension);
|
|
FieldExtension handleCodesExtension = new FieldExtension();
|
|
FieldExtension handleCodesExtension = new FieldExtension();
|
|
handleCodesExtension.setFieldName("handleStatusCodes");
|
|
handleCodesExtension.setFieldName("handleStatusCodes");
|
|
- handleCodesExtension.setStringValue("200");
|
|
|
|
|
|
+ handleCodesExtension.setStringValue("400,401,403,404,500,503");
|
|
fieldExtensions.add(handleCodesExtension);
|
|
fieldExtensions.add(handleCodesExtension);
|
|
FieldExtension saveResponseBodyExtension = new FieldExtension();
|
|
FieldExtension saveResponseBodyExtension = new FieldExtension();
|
|
saveResponseBodyExtension.setFieldName("saveResponseVariableAsJson");
|
|
saveResponseBodyExtension.setFieldName("saveResponseVariableAsJson");
|
|
@@ -122,6 +122,9 @@ public class HttpNode extends Node {
|
|
ignoreExtension.setStringValue(Boolean.toString(isRetry));
|
|
ignoreExtension.setStringValue(Boolean.toString(isRetry));
|
|
fieldExtensions.add(ignoreExtension);
|
|
fieldExtensions.add(ignoreExtension);
|
|
elements.add(httpServiceTask);
|
|
elements.add(httpServiceTask);
|
|
|
|
+ if (CollectionUtils.isNotEmpty(this.errorUsers)) {
|
|
|
|
+ elements.addAll(this.errorHandler(httpServiceTask));
|
|
|
|
+ }
|
|
// 下一个节点的连线
|
|
// 下一个节点的连线
|
|
Node child = this.getChild();
|
|
Node child = this.getChild();
|
|
SequenceFlow sequenceFlow = this.buildSequence(child);
|
|
SequenceFlow sequenceFlow = this.buildSequence(child);
|
|
@@ -134,4 +137,45 @@ public class HttpNode extends Node {
|
|
}
|
|
}
|
|
return elements;
|
|
return elements;
|
|
}
|
|
}
|
|
|
|
+
|
|
|
|
+ private List<FlowElement> errorHandler(Activity activity) {
|
|
|
|
+ ArrayList<FlowElement> elements = Lists.newArrayList();
|
|
|
|
+ // 错误边界事件
|
|
|
|
+ BoundaryEvent boundaryEvent = new BoundaryEvent();
|
|
|
|
+ String boundaryId = String.format("%s_boundary", activity.getId());
|
|
|
|
+ boundaryEvent.setId(boundaryId);
|
|
|
|
+ boundaryEvent.setName("错误处理");
|
|
|
|
+ boundaryEvent.setCancelActivity(false);
|
|
|
|
+ boundaryEvent.setAttachedToRef(activity);
|
|
|
|
+ ErrorEventDefinition errorEventDefinition = new ErrorEventDefinition();
|
|
|
|
+ // errorEventDefinition.setErrorCode("HTTP400");
|
|
|
|
+ boundaryEvent.setEventDefinitions(Lists.newArrayList(errorEventDefinition));
|
|
|
|
+ elements.add(boundaryEvent);
|
|
|
|
+ // 连接线
|
|
|
|
+ String targetRef = String.format("%s_error", activity.getId());
|
|
|
|
+ SequenceFlow sequenceFlow = new SequenceFlow();
|
|
|
|
+ sequenceFlow.setId(String.format("%s-%s", boundaryId, targetRef));
|
|
|
|
+ sequenceFlow.setSourceRef(boundaryId);
|
|
|
|
+ sequenceFlow.setTargetRef(targetRef);
|
|
|
|
+ elements.add(sequenceFlow);
|
|
|
|
+ // 人工处理
|
|
|
|
+ UserTask userTask = new UserTask();
|
|
|
|
+ userTask.setId(targetRef);
|
|
|
|
+ userTask.setName(String.format("%s(%s)", activity.getName(), "错误处理"));
|
|
|
|
+ MultiInstanceLoopCharacteristics multiInstanceLoopCharacteristics = new MultiInstanceLoopCharacteristics();
|
|
|
|
+ multiInstanceLoopCharacteristics.setSequential(false);
|
|
|
|
+ String variable = String.format("%sItem", targetRef);
|
|
|
|
+ multiInstanceLoopCharacteristics.setElementVariable(variable);
|
|
|
|
+ multiInstanceLoopCharacteristics.setInputDataItem(String.format("${%sCollection}", activity.getId()));
|
|
|
|
+ userTask.setLoopCharacteristics(multiInstanceLoopCharacteristics);
|
|
|
|
+ userTask.setAssignee(String.format("${%s}", variable));
|
|
|
|
+ elements.add(userTask);
|
|
|
|
+ // 连接线
|
|
|
|
+ SequenceFlow sequenceNext = new SequenceFlow();
|
|
|
|
+ sequenceNext.setId(String.format("%s-%s", targetRef, activity.getId()));
|
|
|
|
+ sequenceNext.setSourceRef(targetRef);
|
|
|
|
+ sequenceNext.setTargetRef(activity.getId());
|
|
|
|
+ elements.add(sequenceNext);
|
|
|
|
+ return elements;
|
|
|
|
+ }
|
|
}
|
|
}
|