未验证 提交 73d5247d 编写于 作者: I Illia Goncharov 提交者: GitHub

#3160 change order of generated xml elements (#3161)

* #3160 change order of some xml elements

* #3160 refactoring of BaseBpmnXMLConverter
上级 e50a27c8
......@@ -205,14 +205,16 @@ public abstract class BaseBpmnXMLConverter implements BpmnXMLConstants {
xtw.writeEndElement();
}
writeIncomingOutgoingFlowElements(baseElement, model, xtw);
if (baseElement instanceof Activity) {
final Activity activity = (Activity) baseElement;
MultiInstanceExport.writeMultiInstance(activity, xtw);
final Activity activity = (Activity) baseElement;
MultiInstanceExport.writeMultiInstance(activity, xtw);
}
writeAdditionalChildElements(baseElement, model, xtw);
xtw.writeEndElement();
}
......@@ -229,6 +231,8 @@ public abstract class BaseBpmnXMLConverter implements BpmnXMLConstants {
}
protected abstract void writeAdditionalChildElements(BaseElement element, BpmnModel model, XMLStreamWriter xtw) throws Exception;
// To BpmnModel converter convenience methods
......@@ -534,4 +538,11 @@ public abstract class BaseBpmnXMLConverter implements BpmnXMLConstants {
protected void writeQualifiedAttribute(String attributeName, String value, XMLStreamWriter xtw) throws Exception {
BpmnXMLUtil.writeQualifiedAttribute(attributeName, value, xtw);
}
protected void writeIncomingOutgoingFlowElements(BaseElement element, BpmnModel model, XMLStreamWriter xtw) throws Exception {
if(FlowNode.class.isAssignableFrom(element.getClass())) {
BpmnXMLUtil.writeIncomingAndOutgoingFlowElement((FlowNode) element, xtw);
}
}
}
......@@ -18,7 +18,6 @@ import javax.xml.stream.XMLStreamWriter;
import org.activiti.bpmn.converter.util.BpmnXMLUtil;
import org.activiti.bpmn.model.BaseElement;
import org.activiti.bpmn.model.BpmnModel;
import org.activiti.bpmn.model.FlowNode;
import org.activiti.bpmn.model.IntermediateCatchEvent;
/**
......@@ -51,7 +50,6 @@ public class CatchEventXMLConverter extends BaseBpmnXMLConverter {
@Override
protected void writeAdditionalChildElements(BaseElement element, BpmnModel model, XMLStreamWriter xtw) throws Exception {
BpmnXMLUtil.writeIncomingAndOutgoingFlowElement((FlowNode)element, xtw);
IntermediateCatchEvent catchEvent = (IntermediateCatchEvent) element;
writeEventDefinitions(catchEvent, catchEvent.getEventDefinitions(), model, xtw);
}
......
......@@ -19,7 +19,6 @@ import org.activiti.bpmn.converter.util.BpmnXMLUtil;
import org.activiti.bpmn.model.BaseElement;
import org.activiti.bpmn.model.BpmnModel;
import org.activiti.bpmn.model.EndEvent;
import org.activiti.bpmn.model.FlowNode;
/**
......@@ -50,7 +49,6 @@ public class EndEventXMLConverter extends BaseBpmnXMLConverter {
@Override
protected void writeAdditionalChildElements(BaseElement element, BpmnModel model, XMLStreamWriter xtw) throws Exception {
BpmnXMLUtil.writeIncomingAndOutgoingFlowElement((FlowNode)element, xtw);
EndEvent endEvent = (EndEvent) element;
writeEventDefinitions(endEvent, endEvent.getEventDefinitions(), model, xtw);
}
......
......@@ -16,14 +16,17 @@ import javax.xml.stream.XMLStreamReader;
import javax.xml.stream.XMLStreamWriter;
import org.activiti.bpmn.converter.util.BpmnXMLUtil;
import org.activiti.bpmn.model.*;
import org.activiti.bpmn.model.BaseElement;
import org.activiti.bpmn.model.BpmnModel;
import org.activiti.bpmn.model.ExclusiveGateway;
/**
*/
public class ExclusiveGatewayXMLConverter extends BaseBpmnXMLConverter {
public Class<? extends BaseElement> getBpmnElementType() {
@Override
public Class<? extends BaseElement> getBpmnElementType() {
return ExclusiveGateway.class;
}
......@@ -46,7 +49,6 @@ public class ExclusiveGatewayXMLConverter extends BaseBpmnXMLConverter {
@Override
protected void writeAdditionalChildElements(BaseElement element, BpmnModel model, XMLStreamWriter xtw) throws Exception {
BpmnXMLUtil.writeIncomingAndOutgoingFlowElement((FlowNode)element, xtw);
}
}
......@@ -16,14 +16,17 @@ import javax.xml.stream.XMLStreamReader;
import javax.xml.stream.XMLStreamWriter;
import org.activiti.bpmn.converter.util.BpmnXMLUtil;
import org.activiti.bpmn.model.*;
import org.activiti.bpmn.model.BaseElement;
import org.activiti.bpmn.model.BpmnModel;
import org.activiti.bpmn.model.InclusiveGateway;
/**
*/
public class InclusiveGatewayXMLConverter extends BaseBpmnXMLConverter {
public Class<? extends BaseElement> getBpmnElementType() {
@Override
public Class<? extends BaseElement> getBpmnElementType() {
return InclusiveGateway.class;
}
......@@ -46,7 +49,6 @@ public class InclusiveGatewayXMLConverter extends BaseBpmnXMLConverter {
@Override
protected void writeAdditionalChildElements(BaseElement element, BpmnModel model, XMLStreamWriter xtw) throws Exception {
BpmnXMLUtil.writeIncomingAndOutgoingFlowElement((FlowNode)element, xtw);
}
}
......@@ -18,7 +18,6 @@ import javax.xml.stream.XMLStreamWriter;
import org.activiti.bpmn.converter.util.BpmnXMLUtil;
import org.activiti.bpmn.model.BaseElement;
import org.activiti.bpmn.model.BpmnModel;
import org.activiti.bpmn.model.FlowNode;
import org.activiti.bpmn.model.ManualTask;
/**
......@@ -50,6 +49,5 @@ public class ManualTaskXMLConverter extends BaseBpmnXMLConverter {
@Override
protected void writeAdditionalChildElements(BaseElement element, BpmnModel model, XMLStreamWriter xtw) throws Exception {
BpmnXMLUtil.writeIncomingAndOutgoingFlowElement((FlowNode) element, xtw);
}
}
......@@ -18,7 +18,6 @@ import javax.xml.stream.XMLStreamWriter;
import org.activiti.bpmn.converter.util.BpmnXMLUtil;
import org.activiti.bpmn.model.BaseElement;
import org.activiti.bpmn.model.BpmnModel;
import org.activiti.bpmn.model.FlowNode;
import org.activiti.bpmn.model.ParallelGateway;
/**
......@@ -26,7 +25,8 @@ import org.activiti.bpmn.model.ParallelGateway;
*/
public class ParallelGatewayXMLConverter extends BaseBpmnXMLConverter {
public Class<? extends BaseElement> getBpmnElementType() {
@Override
public Class<? extends BaseElement> getBpmnElementType() {
return ParallelGateway.class;
}
......@@ -49,6 +49,5 @@ public class ParallelGatewayXMLConverter extends BaseBpmnXMLConverter {
@Override
protected void writeAdditionalChildElements(BaseElement element, BpmnModel model, XMLStreamWriter xtw) throws Exception {
BpmnXMLUtil.writeIncomingAndOutgoingFlowElement((FlowNode)element, xtw);
}
}
......@@ -12,19 +12,19 @@
*/
package org.activiti.bpmn.converter;
import javax.xml.stream.XMLStreamReader;
import javax.xml.stream.XMLStreamWriter;
import org.activiti.bpmn.converter.util.BpmnXMLUtil;
import org.activiti.bpmn.model.BaseElement;
import org.activiti.bpmn.model.BpmnModel;
import org.activiti.bpmn.model.FlowNode;
import org.activiti.bpmn.model.StartEvent;
import org.activiti.bpmn.model.alfresco.AlfrescoStartEvent;
import org.apache.commons.lang3.StringUtils;
import javax.xml.stream.XMLStreamReader;
import javax.xml.stream.XMLStreamWriter;
public class StartEventXMLConverter extends BaseBpmnXMLConverter {
@Override
public Class<? extends BaseElement> getBpmnElementType() {
return StartEvent.class;
}
......@@ -102,7 +102,6 @@ public class StartEventXMLConverter extends BaseBpmnXMLConverter {
protected void writeAdditionalChildElements(BaseElement element,
BpmnModel model,
XMLStreamWriter xtw) throws Exception {
BpmnXMLUtil.writeIncomingAndOutgoingFlowElement((FlowNode)element, xtw);
StartEvent startEvent = (StartEvent) element;
writeEventDefinitions(startEvent,
startEvent.getEventDefinitions(),
......
......@@ -18,7 +18,6 @@ import javax.xml.stream.XMLStreamWriter;
import org.activiti.bpmn.converter.util.BpmnXMLUtil;
import org.activiti.bpmn.model.BaseElement;
import org.activiti.bpmn.model.BpmnModel;
import org.activiti.bpmn.model.FlowNode;
import org.activiti.bpmn.model.Task;
/**
......@@ -50,7 +49,6 @@ public class TaskXMLConverter extends BaseBpmnXMLConverter {
@Override
protected void writeAdditionalChildElements(BaseElement element, BpmnModel model, XMLStreamWriter xtw) throws Exception {
BpmnXMLUtil.writeIncomingAndOutgoingFlowElement((FlowNode) element, xtw);
}
}
......@@ -18,7 +18,6 @@ import javax.xml.stream.XMLStreamWriter;
import org.activiti.bpmn.converter.util.BpmnXMLUtil;
import org.activiti.bpmn.model.BaseElement;
import org.activiti.bpmn.model.BpmnModel;
import org.activiti.bpmn.model.FlowNode;
import org.activiti.bpmn.model.ThrowEvent;
/**
......@@ -50,7 +49,6 @@ public class ThrowEventXMLConverter extends BaseBpmnXMLConverter {
@Override
protected void writeAdditionalChildElements(BaseElement element, BpmnModel model, XMLStreamWriter xtw) throws Exception {
BpmnXMLUtil.writeIncomingAndOutgoingFlowElement((FlowNode)element, xtw);
ThrowEvent throwEvent = (ThrowEvent) element;
writeEventDefinitions(throwEvent, throwEvent.getEventDefinitions(), model, xtw);
}
......
......@@ -30,7 +30,6 @@ import org.activiti.bpmn.model.BaseElement;
import org.activiti.bpmn.model.BpmnModel;
import org.activiti.bpmn.model.CustomProperty;
import org.activiti.bpmn.model.ExtensionAttribute;
import org.activiti.bpmn.model.FlowNode;
import org.activiti.bpmn.model.Resource;
import org.activiti.bpmn.model.UserTask;
import org.activiti.bpmn.model.alfresco.AlfrescoUserTask;
......@@ -225,7 +224,6 @@ public Class<? extends BaseElement> getBpmnElementType() {
@Override
protected void writeAdditionalChildElements(BaseElement element, BpmnModel model, XMLStreamWriter xtw) throws Exception {
BpmnXMLUtil.writeIncomingAndOutgoingFlowElement((FlowNode) element, xtw);
}
public class HumanPerformerParser extends BaseChildElementParser {
......
package org.activiti.editor.language.xml;
import static org.assertj.core.api.Assertions.assertThat;
import org.activiti.bpmn.converter.BpmnXMLConverter;
import org.activiti.bpmn.model.BpmnModel;
import org.activiti.bpmn.model.FlowElement;
import org.activiti.bpmn.model.UserTask;
import org.junit.Test;
public class MultiInstanceUserTaskConverterTest extends AbstractConverterTest {
@Test
public void convertXMLToModel() throws Exception {
BpmnModel bpmnModel = readXMLFile();
validateModel(bpmnModel);
}
@Test
public void convertModelToXML() throws Exception {
BpmnModel bpmnModel = readXMLFile();
BpmnModel parsedModel = exportAndReadXMLFile(bpmnModel);
validateModel(parsedModel);
}
@Override
protected String getResource() {
return "multiInstanceUserTaskModel.bpmn";
}
private void validateModel(BpmnModel model) throws Exception {
FlowElement flowElement = model.getMainProcess().getFlowElement("UserTask_0br0ocv");
assertThat(flowElement).isNotNull();
assertThat(flowElement instanceof UserTask).isTrue();
checkXml(model);
}
private void checkXml(BpmnModel model) throws Exception {
String xml = new String(new BpmnXMLConverter().convertToXML(model),
"UTF-8");
assertThat(xml).containsSubsequence("incoming>SequenceFlow_0c6mbti<",
"outgoing>SequenceFlow_0pj9a04<",
"<multiInstanceLoopCharacteristics");
}
}
<?xml version="1.0" encoding="UTF-8"?>
<bpmn2:definitions xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmn2="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:activiti="http://activiti.org/bpmn" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:omgdc="http://www.omg.org/spec/DD/20100524/DC" xmlns:omgdi="http://www.omg.org/spec/DD/20100524/DI" typeLanguage="http://www.w3.org/2001/XMLSchema" expressionLanguage="http://www.w3.org/1999/XPath" targetNamespace="http://bpmn.io/schema/bpmn" id="model-1d030b56-dd4c-4cfc-acde-ef6b3b2d7565" name="multiinstance-collection" xsi:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd">
<bpmn2:process id="Process_WTvI8ulc" name="multiinstance-collection" isExecutable="true">
<bpmn2:startEvent id="StartEvent_1">
<bpmn2:outgoing>SequenceFlow_0c6mbti</bpmn2:outgoing>
</bpmn2:startEvent>
<bpmn2:sequenceFlow id="SequenceFlow_0c6mbti" sourceRef="StartEvent_1" targetRef="UserTask_0br0ocv"></bpmn2:sequenceFlow>
<bpmn2:userTask id="UserTask_0br0ocv" name="multiinstance-collection-${counter}" activiti:assignee="hruser">
<bpmn2:incoming>SequenceFlow_0c6mbti</bpmn2:incoming>
<bpmn2:outgoing>SequenceFlow_0pj9a04</bpmn2:outgoing>
<multiInstanceLoopCharacteristics isSequential="false" activiti:collection="${loop.count}" activiti:elementVariable="counter"></multiInstanceLoopCharacteristics>
</bpmn2:userTask>
<bpmn2:endEvent id="EndEvent_1yduz8h">
<bpmn2:incoming>SequenceFlow_0pj9a04</bpmn2:incoming>
</bpmn2:endEvent>
<bpmn2:sequenceFlow id="SequenceFlow_0pj9a04" sourceRef="UserTask_0br0ocv" targetRef="EndEvent_1yduz8h"></bpmn2:sequenceFlow>
</bpmn2:process>
<bpmndi:BPMNDiagram id="BPMNDiagram_Process_WTvI8ulc">
<bpmndi:BPMNPlane bpmnElement="Process_WTvI8ulc" id="BPMNPlane_Process_WTvI8ulc">
<bpmndi:BPMNShape bpmnElement="StartEvent_1" id="BPMNShape_StartEvent_1">
<omgdc:Bounds height="36.0" width="36.0" x="232.0" y="212.0"></omgdc:Bounds>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="UserTask_0br0ocv" id="BPMNShape_UserTask_0br0ocv">
<omgdc:Bounds height="80.0" width="100.0" x="320.0" y="190.0"></omgdc:Bounds>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="EndEvent_1yduz8h" id="BPMNShape_EndEvent_1yduz8h">
<omgdc:Bounds height="36.0" width="36.0" x="472.0" y="212.0"></omgdc:Bounds>
</bpmndi:BPMNShape>
<bpmndi:BPMNEdge bpmnElement="SequenceFlow_0c6mbti" id="BPMNEdge_SequenceFlow_0c6mbti">
<omgdi:waypoint x="268.0" y="230.0"></omgdi:waypoint>
<omgdi:waypoint x="320.0" y="230.0"></omgdi:waypoint>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="SequenceFlow_0pj9a04" id="BPMNEdge_SequenceFlow_0pj9a04">
<omgdi:waypoint x="420.0" y="230.0"></omgdi:waypoint>
<omgdi:waypoint x="472.0" y="230.0"></omgdi:waypoint>
</bpmndi:BPMNEdge>
</bpmndi:BPMNPlane>
</bpmndi:BPMNDiagram>
</bpmn2:definitions>
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册