camunda-workflow 0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (35) hide show
  1. checksums.yaml +7 -0
  2. data/CONTRIBUTING.md +20 -0
  3. data/LICENSE.md +31 -0
  4. data/README.md +209 -0
  5. data/lib/camunda.rb +54 -0
  6. data/lib/camunda/bpmn_xml.rb +52 -0
  7. data/lib/camunda/deployment.rb +29 -0
  8. data/lib/camunda/external_task.rb +83 -0
  9. data/lib/camunda/external_task_job.rb +35 -0
  10. data/lib/camunda/incident.rb +3 -0
  11. data/lib/camunda/matchers.rb +20 -0
  12. data/lib/camunda/model.rb +26 -0
  13. data/lib/camunda/poller.rb +8 -0
  14. data/lib/camunda/process_definition.rb +29 -0
  15. data/lib/camunda/process_instance.rb +21 -0
  16. data/lib/camunda/signal.rb +9 -0
  17. data/lib/camunda/task.rb +28 -0
  18. data/lib/camunda/variable_serialization.rb +48 -0
  19. data/lib/camunda/workflow.rb +39 -0
  20. data/lib/generators/camunda/bpmn_classes/USAGE +10 -0
  21. data/lib/generators/camunda/bpmn_classes/bpmn_classes_generator.rb +67 -0
  22. data/lib/generators/camunda/bpmn_classes/templates/bpmn_class.rb.template +10 -0
  23. data/lib/generators/camunda/bpmn_classes/templates/bpmn_module.rb.template +5 -0
  24. data/lib/generators/camunda/install/USAGE +10 -0
  25. data/lib/generators/camunda/install/install_generator.rb +11 -0
  26. data/lib/generators/camunda/install/templates/camunda_job.rb +7 -0
  27. data/lib/generators/camunda/spring_boot/USAGE +12 -0
  28. data/lib/generators/camunda/spring_boot/spring_boot_generator.rb +69 -0
  29. data/lib/generators/camunda/spring_boot/templates/Camunda.java +28 -0
  30. data/lib/generators/camunda/spring_boot/templates/ProcessScenarioTest.java +85 -0
  31. data/lib/generators/camunda/spring_boot/templates/application.properties +48 -0
  32. data/lib/generators/camunda/spring_boot/templates/camunda.cfg.xml +20 -0
  33. data/lib/generators/camunda/spring_boot/templates/pom.xml +173 -0
  34. data/lib/generators/camunda/spring_boot/templates/sample.bpmn +94 -0
  35. metadata +230 -0
@@ -0,0 +1,28 @@
1
+ package camunda;
2
+ /*
3
+ * Copyright Camunda Services GmbH and/or licensed to Camunda Services GmbH
4
+ * under one or more contributor license agreements. See the NOTICE file
5
+ * distributed with this work for additional information regarding copyright
6
+ * ownership. Camunda licenses this file to you under the Apache License,
7
+ * Version 2.0; you may not use this file except in compliance with the License.
8
+ * You may obtain a copy of the License at
9
+ *
10
+ * http://www.apache.org/licenses/LICENSE-2.0
11
+ *
12
+ * Unless required by applicable law or agreed to in writing, software
13
+ * distributed under the License is distributed on an "AS IS" BASIS,
14
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
+ * See the License for the specific language governing permissions and
16
+ * limitations under the License.
17
+ */
18
+ import org.camunda.bpm.spring.boot.starter.annotation.EnableProcessApplication;
19
+ import org.springframework.boot.SpringApplication;
20
+ import org.springframework.boot.autoconfigure.SpringBootApplication;
21
+
22
+ @SpringBootApplication
23
+ @EnableProcessApplication("camunda-bpm-springboot")
24
+ public class Camunda {
25
+ public static void main(String... args) {
26
+ SpringApplication.run(Camunda.class, args);
27
+ }
28
+ }
@@ -0,0 +1,85 @@
1
+ package example;
2
+
3
+ import org.apache.ibatis.logging.LogFactory;
4
+ import org.camunda.bpm.engine.ProcessEngine;
5
+ import org.camunda.bpm.engine.test.Deployment;
6
+ import org.camunda.bpm.engine.test.ProcessEngineRule;
7
+ import org.camunda.bpm.scenario.ProcessScenario;
8
+ import org.camunda.bpm.spring.boot.starter.test.helper.StandaloneInMemoryTestConfiguration;
9
+ import org.junit.Before;
10
+ import org.junit.ClassRule;
11
+ import org.junit.Rule;
12
+ import org.junit.Test;
13
+ import org.junit.runner.RunWith;
14
+ import org.mockito.Mock;
15
+ import org.mockito.MockitoAnnotations;
16
+ import org.springframework.beans.factory.annotation.Autowired;
17
+ import org.springframework.boot.test.context.SpringBootTest;
18
+ import org.springframework.boot.test.context.SpringBootTest.WebEnvironment;
19
+ import org.springframework.test.context.junit4.SpringRunner;
20
+ import org.camunda.bpm.extension.process_test_coverage.junit.rules.TestCoverageProcessEngineRuleBuilder;
21
+
22
+ import javax.annotation.PostConstruct;
23
+
24
+ import static org.mockito.Matchers.*;
25
+ import static org.mockito.Mockito.*;
26
+
27
+ import static org.junit.Assert.*;
28
+ import static org.assertj.core.api.Assertions.*;
29
+ import static org.camunda.bpm.engine.test.assertions.ProcessEngineTests.*;
30
+
31
+ /**
32
+ * Test case starting an in-memory database-backed Process Engine.
33
+ */
34
+ @RunWith(SpringRunner.class)
35
+ @SpringBootTest(webEnvironment = WebEnvironment.NONE)
36
+ public class ProcessScenarioTest {
37
+
38
+ private static final String PROCESS_DEFINITION_KEY = "timer";
39
+
40
+ static {
41
+ LogFactory.useSlf4jLogging(); // MyBatis
42
+ }
43
+
44
+ @Autowired
45
+ ProcessEngine processEngine;
46
+
47
+ @Rule
48
+ @ClassRule
49
+ public static ProcessEngineRule rule;
50
+
51
+ @Before
52
+ public void setup() {
53
+ MockitoAnnotations.initMocks(this);
54
+ }
55
+
56
+ @Mock
57
+ private ProcessScenario process;
58
+
59
+ @PostConstruct
60
+ void initRule() {
61
+ rule = TestCoverageProcessEngineRuleBuilder.create(processEngine).build();
62
+ }
63
+
64
+ @Test
65
+ public void testHappyPath() {
66
+ // Define scenarios by using camunda-bpm-assert-scenario:
67
+
68
+ //ExecutableRunner starter = Scenario.run(myProcess) //
69
+ // .startByKey(PROCESS_DEFINITION_KEY);
70
+
71
+ // when(myProcess.waitsAtReceiveTask(anyString())).thenReturn((messageSubscription) -> {
72
+ // messageSubscription.receive();
73
+ // });
74
+ // when(myProcess.waitsAtUserTask(anyString())).thenReturn((task) -> {
75
+ // task.complete();
76
+ // });
77
+
78
+ // OK - everything prepared - let's go and execute the scenario
79
+ //Scenario scenario = starter.execute();
80
+
81
+ // now you can do some assertions
82
+ //verify(myProcess).hasFinished("EndEvent");
83
+ }
84
+
85
+ }
@@ -0,0 +1,48 @@
1
+ #spring.datasource.url=jdbc:h2:./camunda-db;DB_CLOSE_ON_EXIT=false
2
+
3
+
4
+
5
+ spring.datasource.url=jdbc:h2:mem:camunda
6
+ spring.datasource.username=sa
7
+ spring.datasource.password=sa
8
+ spring.datasource.driverClassName=org.h2.Driver
9
+
10
+
11
+ #POSTGRESQL PROPERTIES LOCALHOST
12
+ # camunda.bpm.database.type=postgres
13
+
14
+ # spring.datasource.url=jdbc:postgresql://${CAMUNDA_DB_HOST:localhost}:${CAMUNDA_DB_PORT:5432}/${CAMUNDA_DB:camunda}
15
+
16
+ # spring.datasource.username=postgres
17
+ # spring.datasource.password=postgres
18
+
19
+ # spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.PostgreSQLDialect
20
+ # spring.datasource.driver-class-name=org.postgresql.Driver
21
+ # camunda.bpm.database.schema-update=true
22
+ # camunda.bpm.job-execution.active = true
23
+
24
+
25
+ # These are not supported when auto-creating the schema
26
+ #camunda.bpm.database.schema-name=camunda
27
+ #camunda.bpm.database.table-prefix=camunda.
28
+
29
+
30
+ #spring.jpa.show-sql=true
31
+ #spring.jpa.generate-ddl=true
32
+ #spring.jpa.hibernate.ddl-auto=create-drop
33
+ #spring.jpa.hibernate.naming-strategy=org.hibernate.cfg.ImprovedNamingStrategy
34
+
35
+ #spring.cloud.stream.bindings.output.destination=flowing-retail
36
+ #spring.cloud.stream.bindings.output.content-type=application/json
37
+ #spring.cloud.stream.bindings.input.destination=flowing-retail
38
+ #spring.cloud.stream.bindings.input.content-type=application/json
39
+ #spring.cloud.stream.bindings.input.group=order
40
+ #spring.cloud.stream.kafka.binder.zkNodes=localhost:2181
41
+ #spring.cloud.stream.kafka.binder.brokers=localhost:9092
42
+
43
+ #camunda.bpm.admin-user.id=demo
44
+ #camunda.bpm.admin-user.password=demo
45
+ #camunda.bpm.filter.create=All
46
+ #camunda.bpm.license-file=file:${user.home}/.camunda/license.txt
47
+
48
+ server.port=${CAMUNDA_PORT:8080}
@@ -0,0 +1,20 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+
3
+ <beans xmlns="http://www.springframework.org/schema/beans"
4
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
5
+ xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
6
+
7
+ <bean id="processEngineConfiguration"
8
+ class="org.camunda.bpm.extension.process_test_coverage.junit.rules.ProcessCoverageInMemProcessEngineConfiguration">
9
+ <property name="history" value="full"/>
10
+ <property name="jobExecutorActivate" value="true"/>
11
+ <property name="expressionManager">
12
+ <bean class="org.camunda.bpm.engine.test.mock.MockExpressionManager"/>
13
+ </property>
14
+ <property name="processEnginePlugins">
15
+ <list>
16
+ <bean class="org.camunda.spin.plugin.impl.SpinProcessEnginePlugin"/>
17
+ </list>
18
+ </property>
19
+ </bean>
20
+ </beans>
@@ -0,0 +1,173 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
3
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
4
+ <modelVersion>4.0.0</modelVersion>
5
+
6
+ <groupId>camunda.bpm</groupId>
7
+ <artifactId>camunda-bpm-springboot</artifactId>
8
+ <version>0.0.1-SNAPSHOT</version>
9
+ <packaging>jar</packaging>
10
+
11
+ <name>Camunda BPM Process Application</name>
12
+ <description>A Process Application for [Camunda BPM](http://docs.camunda.org).</description>
13
+
14
+ <properties>
15
+ <camunda.version>7.12.0-alpha3</camunda.version>
16
+ <!--
17
+ Adjust if you want to use Camunda Enterprise Edition (EE):
18
+ <camunda.version>7.11.0-ee</camunda.version>
19
+ Make sure you also switch to the ee webapp dependency
20
+ and EE repository below
21
+ -->
22
+ <camundaSpringBoot.version>3.3.1</camundaSpringBoot.version>
23
+ <springBoot.version>2.1.5.RELEASE</springBoot.version>
24
+
25
+ <maven.compiler.source>1.8</maven.compiler.source>
26
+ <maven.compiler.target>1.8</maven.compiler.target>
27
+ <version.java>1.8</version.java>
28
+ <start-class>camunda.Camunda</start-class>
29
+
30
+ <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
31
+ <failOnMissingWebXml>false</failOnMissingWebXml>
32
+ </properties>
33
+
34
+ <dependencyManagement>
35
+ <dependencies>
36
+ <dependency>
37
+ <groupId>org.camunda.bpm</groupId>
38
+ <artifactId>camunda-bom</artifactId>
39
+ <version>${camunda.version}</version>
40
+ <scope>import</scope>
41
+ <type>pom</type>
42
+ </dependency>
43
+ <dependency>
44
+ <groupId>org.springframework.boot</groupId>
45
+ <artifactId>spring-boot-dependencies</artifactId>
46
+ <version>${springBoot.version}</version>
47
+ <type>pom</type>
48
+ <scope>import</scope>
49
+ </dependency>
50
+ </dependencies>
51
+ </dependencyManagement>
52
+
53
+ <dependencies>
54
+ <dependency>
55
+ <groupId>org.camunda.bpm.springboot</groupId>
56
+ <artifactId>camunda-bpm-spring-boot-starter-webapp</artifactId>
57
+ <version>${camundaSpringBoot.version}</version>
58
+ <exclusions>
59
+ <exclusion>
60
+ <groupId>org.camunda.bpm</groupId>
61
+ <artifactId>camunda-engine-rest-core</artifactId>
62
+ </exclusion>
63
+ </exclusions>
64
+ </dependency>
65
+
66
+ <dependency>
67
+ <groupId>org.camunda.bpm.springboot</groupId>
68
+ <artifactId>camunda-bpm-spring-boot-starter-rest</artifactId>
69
+ <version>${camundaSpringBoot.version}</version>
70
+ </dependency>
71
+
72
+ <dependency>
73
+ <groupId>org.camunda.bpm.springboot</groupId>
74
+ <artifactId>camunda-bpm-spring-boot-starter-test</artifactId>
75
+ <version>${camundaSpringBoot.version}</version>
76
+ </dependency>
77
+
78
+ <dependency>
79
+ <groupId>com.h2database</groupId>
80
+ <artifactId>h2</artifactId>
81
+ </dependency>
82
+ <dependency>
83
+ <groupId>org.postgresql</groupId>
84
+ <artifactId>postgresql</artifactId>
85
+ <version>42.2.7</version>
86
+ </dependency>
87
+
88
+ <dependency>
89
+ <groupId>org.springframework.boot</groupId>
90
+ <artifactId>spring-boot-starter-jdbc</artifactId>
91
+ </dependency>
92
+
93
+ <!-- Required to use Spin dataformat support -->
94
+ <dependency>
95
+ <groupId>org.camunda.spin</groupId>
96
+ <artifactId>camunda-spin-dataformat-all</artifactId>
97
+ </dependency>
98
+ <dependency>
99
+ <groupId>org.camunda.bpm</groupId>
100
+ <artifactId>camunda-engine-plugin-spin</artifactId>
101
+ </dependency>
102
+
103
+ <dependency>
104
+ <groupId>org.springframework.boot</groupId>
105
+ <artifactId>spring-boot-starter-test</artifactId>
106
+ <scope>test</scope>
107
+ </dependency>
108
+
109
+ <dependency>
110
+ <groupId>org.camunda.bpm.extension</groupId>
111
+ <artifactId>camunda-bpm-assert-scenario</artifactId>
112
+ <version>0.2</version>
113
+ <scope>test</scope>
114
+ </dependency>
115
+ <dependency>
116
+ <!-- Used to generate test coverage reports, see https://github.com/camunda/camunda-consulting/tree/master/snippets/camunda-bpm-process-test-coverage -->
117
+ <groupId>org.camunda.bpm.extension</groupId>
118
+ <artifactId>camunda-bpm-process-test-coverage</artifactId>
119
+ <version>0.3.2</version>
120
+ <scope>test</scope>
121
+ </dependency>
122
+ <!-- java util logging => slf4j -->
123
+ <dependency>
124
+ <groupId>org.slf4j</groupId>
125
+ <artifactId>jul-to-slf4j</artifactId>
126
+ <scope>test</scope>
127
+ </dependency>
128
+
129
+ <!-- Add your own dependencies here, if in compile scope, they are added to the jar -->
130
+
131
+ </dependencies>
132
+
133
+ <repositories>
134
+ <repository>
135
+ <id>camunda-bpm-nexus</id>
136
+ <name>Camunda Maven Repository</name>
137
+ <url>https://app.camunda.com/nexus/content/groups/public</url>
138
+ </repository>
139
+ <!-- enable this for EE dependencies (requires credentials in ~/.m2/settings.xml)
140
+ <repository>
141
+ <id>camunda-bpm-nexus-ee</id>
142
+ <name>Camunda Enterprise Maven Repository</name>
143
+ <url>https://app.camunda.com/nexus/content/repositories/camunda-bpm-ee</url>
144
+ </repository>
145
+ -->
146
+ </repositories>
147
+
148
+ <build>
149
+ <finalName>${project.artifactId}</finalName>
150
+ <plugins>
151
+ <plugin>
152
+ <groupId>org.springframework.boot</groupId>
153
+ <artifactId>spring-boot-maven-plugin</artifactId>
154
+ <version>${springBoot.version}</version>
155
+ <configuration>
156
+ <layout>ZIP</layout>
157
+ </configuration>
158
+ <executions>
159
+ <execution>
160
+ <goals>
161
+ <goal>repackage</goal>
162
+ </goals>
163
+ </execution>
164
+ </executions>
165
+ </plugin>
166
+ <plugin>
167
+ <groupId>org.codehaus.mojo</groupId>
168
+ <artifactId>exec-maven-plugin</artifactId>
169
+ <version>1.6.0</version>
170
+ </plugin>
171
+ </plugins>
172
+ </build>
173
+ </project>
@@ -0,0 +1,94 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" id="Definitions_1" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="3.3.5">
3
+ <bpmn:process id="CamundaWorkflow" name="camunda-bpm-servlet-project" isExecutable="true">
4
+ <bpmn:startEvent id="StartEventProcessStarted" name="Process&#10;started">
5
+ <bpmn:outgoing>SequenceFlow1</bpmn:outgoing>
6
+ </bpmn:startEvent>
7
+ <bpmn:endEvent id="EndEventProcessEnded" name="Process&#10;ended">
8
+ <bpmn:incoming>SequenceFlow_1o8pywg</bpmn:incoming>
9
+ </bpmn:endEvent>
10
+ <bpmn:sequenceFlow id="SequenceFlow1" sourceRef="StartEventProcessStarted" targetRef="ExclusiveGateway_0si3l52" />
11
+ <bpmn:sequenceFlow id="SequenceFlow_07flmy9" sourceRef="ExclusiveGateway_0si3l52" targetRef="UserTask" />
12
+ <bpmn:serviceTask id="DoSomething" name="Do Something" camunda:type="external" camunda:topic="CamundaWorkflow">
13
+ <bpmn:incoming>SequenceFlow_1jruu78</bpmn:incoming>
14
+ <bpmn:outgoing>SequenceFlow_1cuiwcp</bpmn:outgoing>
15
+ </bpmn:serviceTask>
16
+ <bpmn:sequenceFlow id="SequenceFlow_17eprda" sourceRef="UserTask" targetRef="ExclusiveGateway_0zchwar" />
17
+ <bpmn:userTask id="UserTask" name="User Task">
18
+ <bpmn:incoming>SequenceFlow_07flmy9</bpmn:incoming>
19
+ <bpmn:outgoing>SequenceFlow_17eprda</bpmn:outgoing>
20
+ </bpmn:userTask>
21
+ <bpmn:parallelGateway id="ExclusiveGateway_0si3l52">
22
+ <bpmn:incoming>SequenceFlow1</bpmn:incoming>
23
+ <bpmn:outgoing>SequenceFlow_07flmy9</bpmn:outgoing>
24
+ <bpmn:outgoing>SequenceFlow_1jruu78</bpmn:outgoing>
25
+ </bpmn:parallelGateway>
26
+ <bpmn:sequenceFlow id="SequenceFlow_1o8pywg" sourceRef="ExclusiveGateway_0zchwar" targetRef="EndEventProcessEnded" />
27
+ <bpmn:parallelGateway id="ExclusiveGateway_0zchwar">
28
+ <bpmn:incoming>SequenceFlow_17eprda</bpmn:incoming>
29
+ <bpmn:incoming>SequenceFlow_1cuiwcp</bpmn:incoming>
30
+ <bpmn:outgoing>SequenceFlow_1o8pywg</bpmn:outgoing>
31
+ </bpmn:parallelGateway>
32
+ <bpmn:sequenceFlow id="SequenceFlow_1jruu78" sourceRef="ExclusiveGateway_0si3l52" targetRef="DoSomething" />
33
+ <bpmn:sequenceFlow id="SequenceFlow_1cuiwcp" sourceRef="DoSomething" targetRef="ExclusiveGateway_0zchwar" />
34
+ </bpmn:process>
35
+ <bpmndi:BPMNDiagram id="BPMNDiagram_1">
36
+ <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="CamundaWorkflow">
37
+ <bpmndi:BPMNShape id="_BPMNShape_StartEvent_2" bpmnElement="StartEventProcessStarted">
38
+ <dc:Bounds x="173" y="212" width="36" height="36" />
39
+ <bpmndi:BPMNLabel>
40
+ <dc:Bounds x="171" y="248" width="40" height="27" />
41
+ </bpmndi:BPMNLabel>
42
+ </bpmndi:BPMNShape>
43
+ <bpmndi:BPMNShape id="EndEvent_0fkea3f_di" bpmnElement="EndEventProcessEnded">
44
+ <dc:Bounds x="752" y="212" width="36" height="36" />
45
+ <bpmndi:BPMNLabel>
46
+ <dc:Bounds x="750" y="248" width="40" height="27" />
47
+ </bpmndi:BPMNLabel>
48
+ </bpmndi:BPMNShape>
49
+ <bpmndi:BPMNEdge id="SequenceFlow_08va5r8_di" bpmnElement="SequenceFlow1">
50
+ <di:waypoint x="209" y="230" />
51
+ <di:waypoint x="265" y="230" />
52
+ <bpmndi:BPMNLabel>
53
+ <dc:Bounds x="337.5" y="110" width="90" height="20" />
54
+ </bpmndi:BPMNLabel>
55
+ </bpmndi:BPMNEdge>
56
+ <bpmndi:BPMNEdge id="SequenceFlow_07flmy9_di" bpmnElement="SequenceFlow_07flmy9">
57
+ <di:waypoint x="290" y="205" />
58
+ <di:waypoint x="290" y="120" />
59
+ <di:waypoint x="410" y="120" />
60
+ </bpmndi:BPMNEdge>
61
+ <bpmndi:BPMNShape id="ServiceTask_0vzc2vr_di" bpmnElement="DoSomething">
62
+ <dc:Bounds x="400" y="300" width="100" height="80" />
63
+ </bpmndi:BPMNShape>
64
+ <bpmndi:BPMNEdge id="SequenceFlow_17eprda_di" bpmnElement="SequenceFlow_17eprda">
65
+ <di:waypoint x="510" y="120" />
66
+ <di:waypoint x="630" y="120" />
67
+ <di:waypoint x="630" y="205" />
68
+ </bpmndi:BPMNEdge>
69
+ <bpmndi:BPMNShape id="UserTask_1w736wx_di" bpmnElement="UserTask">
70
+ <dc:Bounds x="410" y="80" width="100" height="80" />
71
+ </bpmndi:BPMNShape>
72
+ <bpmndi:BPMNShape id="ParallelGateway_0afz9x3_di" bpmnElement="ExclusiveGateway_0si3l52">
73
+ <dc:Bounds x="265" y="205" width="50" height="50" />
74
+ </bpmndi:BPMNShape>
75
+ <bpmndi:BPMNEdge id="SequenceFlow_1o8pywg_di" bpmnElement="SequenceFlow_1o8pywg">
76
+ <di:waypoint x="655" y="230" />
77
+ <di:waypoint x="752" y="230" />
78
+ </bpmndi:BPMNEdge>
79
+ <bpmndi:BPMNShape id="ParallelGateway_0rz1ckz_di" bpmnElement="ExclusiveGateway_0zchwar">
80
+ <dc:Bounds x="605" y="205" width="50" height="50" />
81
+ </bpmndi:BPMNShape>
82
+ <bpmndi:BPMNEdge id="SequenceFlow_1jruu78_di" bpmnElement="SequenceFlow_1jruu78">
83
+ <di:waypoint x="290" y="255" />
84
+ <di:waypoint x="290" y="340" />
85
+ <di:waypoint x="400" y="340" />
86
+ </bpmndi:BPMNEdge>
87
+ <bpmndi:BPMNEdge id="SequenceFlow_1cuiwcp_di" bpmnElement="SequenceFlow_1cuiwcp">
88
+ <di:waypoint x="500" y="340" />
89
+ <di:waypoint x="630" y="340" />
90
+ <di:waypoint x="630" y="255" />
91
+ </bpmndi:BPMNEdge>
92
+ </bpmndi:BPMNPlane>
93
+ </bpmndi:BPMNDiagram>
94
+ </bpmn:definitions>