camunda-workflow 0.1

Sign up to get free protection for your applications and to get access to all the features.
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>