package org.activiti.editor.language; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertTrue; import java.util.List; import org.activiti.bpmn.model.BpmnModel; import org.activiti.bpmn.model.FlowElement; import org.activiti.bpmn.model.ParallelGateway; import org.activiti.bpmn.model.SequenceFlow; import org.junit.Test; public class FlowNodeMultipleOutgoingFlowsConverterTest extends AbstractConverterTest { @Test public void doubleConversionValidation() throws Exception { BpmnModel bpmnModel = readJsonFile(); validateModel(bpmnModel); bpmnModel = convertToJsonAndBack(bpmnModel); //System.out.println("xml " + new String(new BpmnXMLConverter().convertToXML(bpmnModel), "utf-8")); validateModel(bpmnModel); } private void validateModel(BpmnModel model) { FlowElement flowElement = model.getMainProcess().getFlowElement("parallel1"); assertNotNull(flowElement); assertTrue(flowElement instanceof ParallelGateway); ParallelGateway gateway = (ParallelGateway) flowElement; List<SequenceFlow> sequenceFlows = gateway.getOutgoingFlows(); assertTrue(sequenceFlows.size() == 3); assertTrue(sequenceFlows.get(0).getId().equals("sid-B9EE4ECE-BF72-4C25-B768-8295906E5CF8") || sequenceFlows.get(0).getId().equals("sid-D2491B73-0382-4EC2-AAAC-C8FD129E4CBE") || sequenceFlows.get(0).getId().equals("sid-7036D56C-E8EF-493B-ADEC-57EED4C6CE1F")); assertTrue(sequenceFlows.get(1).getId().equals("sid-B9EE4ECE-BF72-4C25-B768-8295906E5CF8") || sequenceFlows.get(1).getId().equals("sid-D2491B73-0382-4EC2-AAAC-C8FD129E4CBE") || sequenceFlows.get(1).getId().equals("sid-7036D56C-E8EF-493B-ADEC-57EED4C6CE1F")); assertTrue(sequenceFlows.get(2).getId().equals("sid-B9EE4ECE-BF72-4C25-B768-8295906E5CF8") || sequenceFlows.get(2).getId().equals("sid-D2491B73-0382-4EC2-AAAC-C8FD129E4CBE") || sequenceFlows.get(2).getId().equals("sid-7036D56C-E8EF-493B-ADEC-57EED4C6CE1F")); assertTrue(sequenceFlows.get(0).getSourceRef().equals("parallel1")); assertTrue(sequenceFlows.get(1).getSourceRef().equals("parallel1")); assertTrue(sequenceFlows.get(2).getSourceRef().equals("parallel1")); flowElement = model.getMainProcess().getFlowElement("parallel2"); assertNotNull(flowElement); assertTrue(flowElement instanceof ParallelGateway); gateway = (ParallelGateway) flowElement; sequenceFlows = gateway.getIncomingFlows(); assertTrue(sequenceFlows.size() == 3); assertTrue(sequenceFlows.get(0).getId().equals("sid-4C19E041-42FA-485D-9D09-D47CCD9DB270") || sequenceFlows.get(0).getId().equals("sid-05A991A6-0296-4867-ACBA-EF9EEC68FB8A") || sequenceFlows.get(0).getId().equals("sid-C546AC84-379D-4094-9DC3-548593F2EA0D")); assertTrue(sequenceFlows.get(1).getId().equals("sid-4C19E041-42FA-485D-9D09-D47CCD9DB270") || sequenceFlows.get(1).getId().equals("sid-05A991A6-0296-4867-ACBA-EF9EEC68FB8A") || sequenceFlows.get(1).getId().equals("sid-C546AC84-379D-4094-9DC3-548593F2EA0D")); assertTrue(sequenceFlows.get(2).getId().equals("sid-4C19E041-42FA-485D-9D09-D47CCD9DB270") || sequenceFlows.get(2).getId().equals("sid-05A991A6-0296-4867-ACBA-EF9EEC68FB8A") || sequenceFlows.get(2).getId().equals("sid-C546AC84-379D-4094-9DC3-548593F2EA0D")); assertTrue(sequenceFlows.get(0).getTargetRef().equals("parallel2")); assertTrue(sequenceFlows.get(1).getTargetRef().equals("parallel2")); assertTrue(sequenceFlows.get(2).getTargetRef().equals("parallel2")); } protected String getResource() { return "test.flownodemultipleoutgoingflowsmodel.json"; } }