提交 1c00d4f2 编写于 作者: T Tijs Rademakers

Dataobjects fix for autolayout

......@@ -98,6 +98,11 @@
<artifactId>activiti-process-validation</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.activiti</groupId>
<artifactId>activiti-bpmn-layout</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
......
package org.activiti.editor.language.xml;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;
import java.util.List;
import org.activiti.bpmn.BpmnAutoLayout;
import org.activiti.bpmn.model.BpmnModel;
import org.activiti.bpmn.model.FlowElement;
import org.activiti.bpmn.model.StartEvent;
import org.activiti.bpmn.model.SubProcess;
import org.activiti.bpmn.model.UserTask;
import org.activiti.bpmn.model.ValuedDataObject;
import org.junit.Test;
public class SubProcessConverterAutoLayoutTest extends AbstractConverterTest {
@Test
public void convertXMLToModel() throws Exception {
BpmnModel bpmnModel = readXMLFile();
validateModel(bpmnModel);
}
@Test
public void convertModelToXML() throws Exception {
BpmnModel bpmnModel = readXMLFile();
// Add DI information to bpmn model
BpmnAutoLayout bpmnAutoLayout = new BpmnAutoLayout(bpmnModel);
bpmnAutoLayout.execute();
BpmnModel parsedModel = exportAndReadXMLFile(bpmnModel);
validateModel(parsedModel);
deployProcess(parsedModel);
}
protected String getResource() {
return "subprocessmodel_autolayout.bpmn";
}
private void validateModel(BpmnModel model) {
FlowElement flowElement = model.getMainProcess().getFlowElement("start1");
assertNotNull(flowElement);
assertTrue(flowElement instanceof StartEvent);
assertEquals("start1", flowElement.getId());
flowElement = model.getMainProcess().getFlowElement("userTask1");
assertNotNull(flowElement);
assertTrue(flowElement instanceof UserTask);
assertEquals("userTask1", flowElement.getId());
UserTask userTask = (UserTask) flowElement;
assertTrue(userTask.getCandidateUsers().size() == 1);
assertTrue(userTask.getCandidateGroups().size() == 1);
flowElement = model.getMainProcess().getFlowElement("subprocess1");
assertNotNull(flowElement);
assertTrue(flowElement instanceof SubProcess);
assertEquals("subprocess1", flowElement.getId());
SubProcess subProcess = (SubProcess) flowElement;
assertTrue(subProcess.getFlowElements().size() == 6);
List<ValuedDataObject> dataObjects = ((SubProcess)flowElement).getDataObjects();
assertTrue(dataObjects.size() == 1);
ValuedDataObject dataObj = dataObjects.get(0);
assertEquals("SubTest", dataObj.getName());
assertEquals("xsd:string", dataObj.getItemSubjectRef().getStructureRef());
assertTrue(dataObj.getValue() instanceof String);
assertEquals("Testing", dataObj.getValue());
}
}
<?xml version="1.0" encoding="UTF-8"?>
<definitions xmlns="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" xmlns:sas="http://www.sas.com/bpmn" typeLanguage="http://www.w3.org/2001/XMLSchema" expressionLanguage="http://www.w3.org/1999/XPath" targetNamespace="http://www.activiti.org/test">
<process id="process" name="process1" isExecutable="true">
<sequenceFlow id="sid-04DAFAA0-34C1-48DF-BAD5-1038344BBFA9" sourceRef="start1" targetRef="userTask1"></sequenceFlow>
<subProcess id="subprocess1" name="subProcess">
<endEvent id="sid-565296D1-FCF9-4B31-9048-528B10A27C46"></endEvent>
<startEvent id="subStartEvent"></startEvent>
<sequenceFlow id="sid-C7145ECA-31A2-4A91-B20A-023CF0764155" sourceRef="subUserTask1" targetRef="sid-565296D1-FCF9-4B31-9048-528B10A27C46"></sequenceFlow>
<userTask id="subUserTask1" name="User task 2"></userTask>
<sequenceFlow id="subFlowId1" sourceRef="subStartEvent" targetRef="subUserTask1"></sequenceFlow>
<dataObject id="sid-AA1205FD-63BD-47BA-9FB3-AA9F7C1E31F0" name="SubTest" itemSubjectRef="xsd:string">
<extensionElements>
<activiti:value>Testing</activiti:value>
</extensionElements>
</dataObject>
</subProcess>
<startEvent id="start1"></startEvent>
<sequenceFlow id="sid-D6D5AFA6-7673-4DFB-B118-675622C58DF2" sourceRef="subprocess1" targetRef="sid-194696BA-1A7D-47D7-95A9-A77390D25048"></sequenceFlow>
<sequenceFlow id="sid-287D861F-4498-4A5C-8EC8-E07F79265E90" sourceRef="userTask1" targetRef="subprocess1"></sequenceFlow>
<endEvent id="sid-194696BA-1A7D-47D7-95A9-A77390D25048"></endEvent>
<userTask id="userTask1" name="User task 1" activiti:async="true" activiti:exclusive="false" activiti:candidateUsers="kermit" activiti:candidateGroups="management"></userTask>
</process>
<bpmndi:BPMNDiagram id="BPMNDiagram_process">
<bpmndi:BPMNPlane bpmnElement="process" id="BPMNPlane_process">
<bpmndi:BPMNShape bpmnElement="subprocess1" id="BPMNShape_subprocess1">
<omgdc:Bounds height="160.0" width="348.0" x="345.0" y="125.0"></omgdc:Bounds>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="sid-565296D1-FCF9-4B31-9048-528B10A27C46" id="BPMNShape_sid-565296D1-FCF9-4B31-9048-528B10A27C46">
<omgdc:Bounds height="35.0" width="35.0" x="585.0" y="190.0"></omgdc:Bounds>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="subStartEvent" id="BPMNShape_subStartEvent">
<omgdc:Bounds height="35.0" width="35.0" x="365.0" y="189.0"></omgdc:Bounds>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="subUserTask1" id="BPMNShape_subUserTask1">
<omgdc:Bounds height="80.0" width="100.0" x="440.0" y="164.0"></omgdc:Bounds>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="start1" id="BPMNShape_start1">
<omgdc:Bounds height="35.0" width="35.0" x="105.0" y="190.0"></omgdc:Bounds>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="sid-194696BA-1A7D-47D7-95A9-A77390D25048" id="BPMNShape_sid-194696BA-1A7D-47D7-95A9-A77390D25048">
<omgdc:Bounds height="35.0" width="35.0" x="738.0" y="191.0"></omgdc:Bounds>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="userTask1" id="BPMNShape_userTask1">
<omgdc:Bounds height="80.0" width="100.0" x="180.0" y="165.0"></omgdc:Bounds>
</bpmndi:BPMNShape>
<bpmndi:BPMNEdge bpmnElement="sid-04DAFAA0-34C1-48DF-BAD5-1038344BBFA9" id="BPMNEdge_sid-04DAFAA0-34C1-48DF-BAD5-1038344BBFA9">
<omgdi:waypoint x="140.0" y="207.0"></omgdi:waypoint>
<omgdi:waypoint x="180.0" y="205.0"></omgdi:waypoint>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="sid-C7145ECA-31A2-4A91-B20A-023CF0764155" id="BPMNEdge_sid-C7145ECA-31A2-4A91-B20A-023CF0764155">
<omgdi:waypoint x="540.0" y="204.0"></omgdi:waypoint>
<omgdi:waypoint x="585.0" y="207.0"></omgdi:waypoint>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="subFlowId1" id="BPMNEdge_subFlowId1">
<omgdi:waypoint x="400.0" y="206.0"></omgdi:waypoint>
<omgdi:waypoint x="440.0" y="204.0"></omgdi:waypoint>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="sid-D6D5AFA6-7673-4DFB-B118-675622C58DF2" id="BPMNEdge_sid-D6D5AFA6-7673-4DFB-B118-675622C58DF2">
<omgdi:waypoint x="693.0" y="205.0"></omgdi:waypoint>
<omgdi:waypoint x="738.0" y="208.0"></omgdi:waypoint>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="sid-287D861F-4498-4A5C-8EC8-E07F79265E90" id="BPMNEdge_sid-287D861F-4498-4A5C-8EC8-E07F79265E90">
<omgdi:waypoint x="280.0" y="205.0"></omgdi:waypoint>
<omgdi:waypoint x="345.0" y="205.0"></omgdi:waypoint>
</bpmndi:BPMNEdge>
</bpmndi:BPMNPlane>
</bpmndi:BPMNDiagram>
</definitions>
\ No newline at end of file
......@@ -98,6 +98,11 @@
<artifactId>jgraphx</artifactId>
<version>1.10.4.1</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<scope>provided</scope>
</dependency>
</dependencies>
<profiles>
......
......@@ -26,6 +26,7 @@ import javax.swing.SwingConstants;
import org.activiti.bpmn.model.BoundaryEvent;
import org.activiti.bpmn.model.BpmnModel;
import org.activiti.bpmn.model.CallActivity;
import org.activiti.bpmn.model.DataObject;
import org.activiti.bpmn.model.Event;
import org.activiti.bpmn.model.FlowElement;
import org.activiti.bpmn.model.FlowElementsContainer;
......@@ -288,7 +289,6 @@ public class BpmnAutoLayout {
// Always expanded when auto layouting
subProcessGraphicInfo.setExpanded(true);
}
}
}
......@@ -433,8 +433,8 @@ public class BpmnAutoLayout {
for (GraphicInfo graphicInfo : graphicInfos) {
graphicInfo.setX(graphicInfo.getX() + subProcessX + subProcessMargin);
graphicInfo.setY(graphicInfo.getY() + subProcessY + subProcessMargin);
}
} else {
}
} else if (flowElement instanceof DataObject == false) {
// Regular element
GraphicInfo graphicInfo = bpmnModel.getLocationMap().get(flowElement.getId());
......@@ -480,7 +480,6 @@ public class BpmnAutoLayout {
public void setGatewaySize(int gatewaySize) {
this.gatewaySize = gatewaySize;
}
public int getTaskWidth() {
return taskWidth;
......
......@@ -12,11 +12,17 @@
*/
package org.activiti.engine.test.api.event;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Collections;
import java.util.List;
import org.activiti.engine.delegate.event.*;
import org.activiti.engine.delegate.event.ActivitiActivityEvent;
import org.activiti.engine.delegate.event.ActivitiErrorEvent;
import org.activiti.engine.delegate.event.ActivitiEvent;
import org.activiti.engine.delegate.event.ActivitiEventType;
import org.activiti.engine.delegate.event.ActivitiMessageEvent;
import org.activiti.engine.delegate.event.ActivitiSignalEvent;
import org.activiti.engine.delegate.event.impl.ActivitiActivityEventImpl;
import org.activiti.engine.event.EventLogEntry;
import org.activiti.engine.impl.event.logger.EventLogger;
......@@ -504,15 +510,14 @@ public class ActivityEventsTest extends PluggableActivitiTestCase {
// Check timeout-events have been dispatched
assertEquals(3, listener.getEventsReceived().size());
ActivitiActivityEventImpl timeOutEvent = (ActivitiActivityEventImpl) listener.getEventsReceived().get(0);
assertEquals(ActivitiEventType.ACTIVITY_TIMEOUT, timeOutEvent.getType());
assertEquals("innerTask1", timeOutEvent.getActivityId());
timeOutEvent = (ActivitiActivityEventImpl) listener.getEventsReceived().get(1);
assertEquals(ActivitiEventType.ACTIVITY_TIMEOUT, timeOutEvent.getType());
assertEquals("innerTask2", timeOutEvent.getActivityId());
timeOutEvent = (ActivitiActivityEventImpl) listener.getEventsReceived().get(2);
assertEquals(ActivitiEventType.ACTIVITY_TIMEOUT, timeOutEvent.getType());
assertEquals("innerFork", timeOutEvent.getActivityId());
List<String> eventIdList = new ArrayList<String>();
for (ActivitiEvent event : listener.getEventsReceived()) {
assertEquals(ActivitiEventType.ACTIVITY_TIMEOUT, event.getType());
eventIdList.add(((ActivitiActivityEventImpl) event).getActivityId());
}
assertTrue(eventIdList.indexOf("innerTask1") >= 0);
assertTrue(eventIdList.indexOf("innerTask2") >= 0);
assertTrue(eventIdList.indexOf("innerFork") >= 0);
}
@Deployment
......@@ -530,18 +535,15 @@ public class ActivityEventsTest extends PluggableActivitiTestCase {
// Check timeout-events have been dispatched
assertEquals(4, listener.getEventsReceived().size());
ActivitiActivityEventImpl timeOutEvent = (ActivitiActivityEventImpl) listener.getEventsReceived().get(0);
assertEquals(ActivitiEventType.ACTIVITY_TIMEOUT, timeOutEvent.getType());
assertEquals("innerTask1", timeOutEvent.getActivityId());
timeOutEvent = (ActivitiActivityEventImpl) listener.getEventsReceived().get(1);
assertEquals(ActivitiEventType.ACTIVITY_TIMEOUT, timeOutEvent.getType());
assertEquals("innerTask2", timeOutEvent.getActivityId());
timeOutEvent = (ActivitiActivityEventImpl) listener.getEventsReceived().get(2);
assertEquals(ActivitiEventType.ACTIVITY_TIMEOUT, timeOutEvent.getType());
assertEquals("innerFork", timeOutEvent.getActivityId());
timeOutEvent = (ActivitiActivityEventImpl) listener.getEventsReceived().get(3);
assertEquals(ActivitiEventType.ACTIVITY_TIMEOUT, timeOutEvent.getType());
assertEquals("callActivity", timeOutEvent.getActivityId());
List<String> eventIdList = new ArrayList<String>();
for (ActivitiEvent event : listener.getEventsReceived()) {
assertEquals(ActivitiEventType.ACTIVITY_TIMEOUT, event.getType());
eventIdList.add(((ActivitiActivityEventImpl) event).getActivityId());
}
assertTrue(eventIdList.indexOf("innerTask1") >= 0);
assertTrue(eventIdList.indexOf("innerTask2") >= 0);
assertTrue(eventIdList.indexOf("innerFork") >= 0);
assertTrue(eventIdList.indexOf("callActivity") >= 0);
}
protected void assertDatabaseEventPresent(ActivitiEventType eventType) {
......
......@@ -572,6 +572,7 @@
<modules>
<module>modules/activiti-bpmn-model</module>
<module>modules/activiti-process-validation</module>
<module>modules/activiti-bpmn-layout</module>
<module>modules/activiti-image-generator</module>
<module>modules/activiti-bpmn-converter</module>
<module>modules/activiti-engine</module>
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册