master
meethigher 3 years ago
commit e89a34a348
  1. 8
      .idea/.gitignore
  2. 7
      .idea/codeStyles/Project.xml
  3. 5
      .idea/codeStyles/codeStyleConfig.xml
  4. 13
      .idea/compiler.xml
  5. 8
      .idea/encodings.xml
  6. 20
      .idea/jarRepositories.xml
  7. 12
      .idea/misc.xml
  8. 13
      .idea/saveactions_settings.xml
  9. 124
      .idea/uiDesigner.xml
  10. 231
      pom.xml
  11. 13
      src/main/java/com/example/workflow/Application.java
  12. 12
      src/main/java/com/example/workflow/listener/SayHaloWodeListener.java
  13. 75
      src/main/java/com/example/workflow/rest/controller/ProcessController.java
  14. 24
      src/main/resources/application.yml
  15. 31
      src/main/resources/payment-form.form
  16. 44
      src/main/resources/payment-retrieval.bpmn
  17. 58
      src/main/resources/payment-retrieval1.bpmn
  18. 41
      src/main/resources/process.bpmn
  19. 37
      src/test/java/com/example/workflow/rest/controller/ChargeCardWorker.java
  20. 48
      src/test/java/com/example/workflow/rest/controller/ProcessControllerTest.java
  21. 24
      target/classes/application.yml
  22. BIN
      target/classes/com/example/workflow/Application.class
  23. BIN
      target/classes/com/example/workflow/listener/SayHaloWodeListener.class
  24. BIN
      target/classes/com/example/workflow/rest/controller/ProcessController.class
  25. 31
      target/classes/payment-form.form
  26. 44
      target/classes/payment-retrieval.bpmn
  27. 58
      target/classes/payment-retrieval1.bpmn
  28. 41
      target/classes/process.bpmn
  29. BIN
      target/test-classes/com/example/workflow/rest/controller/ChargeCardWorker.class
  30. BIN
      target/test-classes/com/example/workflow/rest/controller/ProcessControllerTest.class

8
.idea/.gitignore vendored

@ -0,0 +1,8 @@
# Default ignored files
/shelf/
/workspace.xml
# Editor-based HTTP Client requests
/httpRequests/
# Datasource local storage ignored files
/dataSources/
/dataSources.local.xml

@ -0,0 +1,7 @@
<component name="ProjectCodeStyleConfiguration">
<code_scheme name="Project" version="173">
<ScalaCodeStyleSettings>
<option name="MULTILINE_STRING_CLOSING_QUOTES_ON_NEW_LINE" value="true" />
</ScalaCodeStyleSettings>
</code_scheme>
</component>

@ -0,0 +1,5 @@
<component name="ProjectCodeStyleConfiguration">
<state>
<option name="PREFERRED_PROJECT_CODE_STYLE" value="Default" />
</state>
</component>

@ -0,0 +1,13 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="CompilerConfiguration">
<annotationProcessing>
<profile name="Maven default annotation processors profile" enabled="true">
<sourceOutputDir name="target/generated-sources/annotations" />
<sourceTestOutputDir name="target/generated-test-sources/test-annotations" />
<outputRelativeToContentRoot value="true" />
<module name="camunda" />
</profile>
</annotationProcessing>
</component>
</project>

@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="Encoding" defaultCharsetForPropertiesFiles="UTF-8">
<file url="file://$PROJECT_DIR$/src/main/java" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/src/main/resources" charset="UTF-8" />
<file url="PROJECT" charset="UTF-8" />
</component>
</project>

@ -0,0 +1,20 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="RemoteRepositoriesConfiguration">
<remote-repository>
<option name="id" value="central" />
<option name="name" value="Central Repository" />
<option name="url" value="https://repo.maven.apache.org/maven2" />
</remote-repository>
<remote-repository>
<option name="id" value="central" />
<option name="name" value="Maven Central repository" />
<option name="url" value="https://repo1.maven.org/maven2" />
</remote-repository>
<remote-repository>
<option name="id" value="jboss.community" />
<option name="name" value="JBoss Community repository" />
<option name="url" value="https://repository.jboss.org/nexus/content/repositories/public/" />
</remote-repository>
</component>
</project>

@ -0,0 +1,12 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ExternalStorageConfigurationManager" enabled="true" />
<component name="MavenProjectsManager">
<option name="originalFiles">
<list>
<option value="$PROJECT_DIR$/pom.xml" />
</list>
</option>
</component>
<component name="ProjectRootManager" version="2" languageLevel="JDK_1_8" default="true" project-jdk-name="1.8" project-jdk-type="JavaSDK" />
</project>

@ -0,0 +1,13 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="SaveActionSettings">
<option name="actions">
<set>
<option value="activateOnShortcut" />
<option value="organizeImports" />
<option value="reformat" />
</set>
</option>
<option name="configurationPath" value="" />
</component>
</project>

@ -0,0 +1,124 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="Palette2">
<group name="Swing">
<item class="com.intellij.uiDesigner.HSpacer" tooltip-text="Horizontal Spacer" icon="/com/intellij/uiDesigner/icons/hspacer.png" removable="false" auto-create-binding="false" can-attach-label="false">
<default-constraints vsize-policy="1" hsize-policy="6" anchor="0" fill="1" />
</item>
<item class="com.intellij.uiDesigner.VSpacer" tooltip-text="Vertical Spacer" icon="/com/intellij/uiDesigner/icons/vspacer.png" removable="false" auto-create-binding="false" can-attach-label="false">
<default-constraints vsize-policy="6" hsize-policy="1" anchor="0" fill="2" />
</item>
<item class="javax.swing.JPanel" icon="/com/intellij/uiDesigner/icons/panel.png" removable="false" auto-create-binding="false" can-attach-label="false">
<default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3" />
</item>
<item class="javax.swing.JScrollPane" icon="/com/intellij/uiDesigner/icons/scrollPane.png" removable="false" auto-create-binding="false" can-attach-label="true">
<default-constraints vsize-policy="7" hsize-policy="7" anchor="0" fill="3" />
</item>
<item class="javax.swing.JButton" icon="/com/intellij/uiDesigner/icons/button.png" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="0" hsize-policy="3" anchor="0" fill="1" />
<initial-values>
<property name="text" value="Button" />
</initial-values>
</item>
<item class="javax.swing.JRadioButton" icon="/com/intellij/uiDesigner/icons/radioButton.png" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="0" hsize-policy="3" anchor="8" fill="0" />
<initial-values>
<property name="text" value="RadioButton" />
</initial-values>
</item>
<item class="javax.swing.JCheckBox" icon="/com/intellij/uiDesigner/icons/checkBox.png" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="0" hsize-policy="3" anchor="8" fill="0" />
<initial-values>
<property name="text" value="CheckBox" />
</initial-values>
</item>
<item class="javax.swing.JLabel" icon="/com/intellij/uiDesigner/icons/label.png" removable="false" auto-create-binding="false" can-attach-label="false">
<default-constraints vsize-policy="0" hsize-policy="0" anchor="8" fill="0" />
<initial-values>
<property name="text" value="Label" />
</initial-values>
</item>
<item class="javax.swing.JTextField" icon="/com/intellij/uiDesigner/icons/textField.png" removable="false" auto-create-binding="true" can-attach-label="true">
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1">
<preferred-size width="150" height="-1" />
</default-constraints>
</item>
<item class="javax.swing.JPasswordField" icon="/com/intellij/uiDesigner/icons/passwordField.png" removable="false" auto-create-binding="true" can-attach-label="true">
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1">
<preferred-size width="150" height="-1" />
</default-constraints>
</item>
<item class="javax.swing.JFormattedTextField" icon="/com/intellij/uiDesigner/icons/formattedTextField.png" removable="false" auto-create-binding="true" can-attach-label="true">
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1">
<preferred-size width="150" height="-1" />
</default-constraints>
</item>
<item class="javax.swing.JTextArea" icon="/com/intellij/uiDesigner/icons/textArea.png" removable="false" auto-create-binding="true" can-attach-label="true">
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
<preferred-size width="150" height="50" />
</default-constraints>
</item>
<item class="javax.swing.JTextPane" icon="/com/intellij/uiDesigner/icons/textPane.png" removable="false" auto-create-binding="true" can-attach-label="true">
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
<preferred-size width="150" height="50" />
</default-constraints>
</item>
<item class="javax.swing.JEditorPane" icon="/com/intellij/uiDesigner/icons/editorPane.png" removable="false" auto-create-binding="true" can-attach-label="true">
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
<preferred-size width="150" height="50" />
</default-constraints>
</item>
<item class="javax.swing.JComboBox" icon="/com/intellij/uiDesigner/icons/comboBox.png" removable="false" auto-create-binding="true" can-attach-label="true">
<default-constraints vsize-policy="0" hsize-policy="2" anchor="8" fill="1" />
</item>
<item class="javax.swing.JTable" icon="/com/intellij/uiDesigner/icons/table.png" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
<preferred-size width="150" height="50" />
</default-constraints>
</item>
<item class="javax.swing.JList" icon="/com/intellij/uiDesigner/icons/list.png" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="6" hsize-policy="2" anchor="0" fill="3">
<preferred-size width="150" height="50" />
</default-constraints>
</item>
<item class="javax.swing.JTree" icon="/com/intellij/uiDesigner/icons/tree.png" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
<preferred-size width="150" height="50" />
</default-constraints>
</item>
<item class="javax.swing.JTabbedPane" icon="/com/intellij/uiDesigner/icons/tabbedPane.png" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3">
<preferred-size width="200" height="200" />
</default-constraints>
</item>
<item class="javax.swing.JSplitPane" icon="/com/intellij/uiDesigner/icons/splitPane.png" removable="false" auto-create-binding="false" can-attach-label="false">
<default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3">
<preferred-size width="200" height="200" />
</default-constraints>
</item>
<item class="javax.swing.JSpinner" icon="/com/intellij/uiDesigner/icons/spinner.png" removable="false" auto-create-binding="true" can-attach-label="true">
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1" />
</item>
<item class="javax.swing.JSlider" icon="/com/intellij/uiDesigner/icons/slider.png" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1" />
</item>
<item class="javax.swing.JSeparator" icon="/com/intellij/uiDesigner/icons/separator.png" removable="false" auto-create-binding="false" can-attach-label="false">
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3" />
</item>
<item class="javax.swing.JProgressBar" icon="/com/intellij/uiDesigner/icons/progressbar.png" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="0" hsize-policy="6" anchor="0" fill="1" />
</item>
<item class="javax.swing.JToolBar" icon="/com/intellij/uiDesigner/icons/toolbar.png" removable="false" auto-create-binding="false" can-attach-label="false">
<default-constraints vsize-policy="0" hsize-policy="6" anchor="0" fill="1">
<preferred-size width="-1" height="20" />
</default-constraints>
</item>
<item class="javax.swing.JToolBar$Separator" icon="/com/intellij/uiDesigner/icons/toolbarSeparator.png" removable="false" auto-create-binding="false" can-attach-label="false">
<default-constraints vsize-policy="0" hsize-policy="0" anchor="0" fill="1" />
</item>
<item class="javax.swing.JScrollBar" icon="/com/intellij/uiDesigner/icons/scrollbar.png" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="6" hsize-policy="0" anchor="0" fill="2" />
</item>
</group>
</component>
</project>

@ -0,0 +1,231 @@
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.example.workflow</groupId>
<artifactId>camunda</artifactId>
<version>1.0.0-SNAPSHOT</version>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
</properties>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>2.5.4</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>org.camunda.bpm</groupId>
<artifactId>camunda-bom</artifactId>
<version>7.15.0</version>
<scope>import</scope>
<type>pom</type>
</dependency>
<!-- groovy -->
<dependency>
<groupId>org.codehaus.groovy</groupId>
<artifactId>groovy-all</artifactId>
<version>2.4.21</version>
</dependency>
<dependency>
<groupId>org.codehaus.groovy.modules.http-builder</groupId>
<artifactId>http-builder</artifactId>
<version>0.7.1</version>
</dependency>
<!-- camunda rest api -->
<dependency>
<groupId>org.camunda.bpm.springboot</groupId>
<artifactId>camunda-bpm-spring-boot-starter-rest</artifactId>
<version>7.15.0</version>
</dependency>
<!-- spin-->
<dependency>
<groupId>org.camunda.spin</groupId>
<artifactId>camunda-spin-dataformat-all</artifactId>
<version>1.9.0</version>
</dependency>
<!-- camunda rest openapi-->
<!-- http://localhost:11001/swagger.json -->
<dependency>
<groupId>org.camunda.bpm.extension.swagger</groupId>
<artifactId>camunda-bpm-swagger-json</artifactId>
<version>7.8.0</version>
</dependency>
<!-- camunda swagger-->
<!-- http://localhost:11001/webjars/swagger-ui/3.20.9/index.html?docExpansion=false&url=/swagger.json -->
<dependency>
<groupId>org.webjars</groupId>
<artifactId>swagger-ui</artifactId>
<version>${swagger-ui.version}</version>
</dependency>
<dependency>
<groupId>org.webjars.bower</groupId>
<artifactId>swagger-ui-themes</artifactId>
<version>3.0.0</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>${springfox.version}</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>${springfox.version}</version>
</dependency>
<!-- <dependency>-->
<!-- <groupId>com.github.xiaoymin</groupId>-->
<!-- <artifactId>knife4j-spring-boot-starter</artifactId>-->
<!-- <version>2.0.3</version>-->
<!-- </dependency>-->
<!-- HTTP 连接器-->
<dependency>
<groupId>org.camunda.connect</groupId>
<artifactId>camunda-connect-bom</artifactId>
<version>1.5.2</version>
<scope>import</scope>
<type>pom</type>
</dependency>
<!-- 邮件连接器-->
<!-- <dependency>
<groupId>org.camunda.bpm.extension</groupId>
<artifactId>camunda-bpm-mail-core</artifactId>
<version>1.3.1-SNAPSHOT</version>
</dependency>-->
<!-- 全局监听连接器-->
<dependency>
<groupId>org.camunda.bpm.extension.reactor</groupId>
<artifactId>camunda-bpm-reactor-spring-starter</artifactId>
<version>2.1.2</version>
</dependency>
<!-- 连接器基础包-->
<dependency>
<groupId>org.camunda.connect</groupId>
<artifactId>camunda-connect-core</artifactId>
<version>1.5.2</version>
</dependency>
<dependency>
<groupId>org.camunda.connect</groupId>
<artifactId>camunda-connect-connectors-all</artifactId>
<version>1.5.2</version>
</dependency>
<dependency>
<groupId>org.camunda.bpm</groupId>
<artifactId>camunda-engine-plugin-connect</artifactId>
<version>7.15.0</version>
</dependency>
<dependency>
<groupId>org.camunda.bpm.springboot</groupId>
<artifactId>camunda-bpm-spring-boot-starter-webapp</artifactId>
<version>7.15.0</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.postgresql</groupId>
<artifactId>postgresql</artifactId>
<version>42.5.0</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.2.6</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.78</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<version>2.5.4</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.13.2</version>
<scope>test</scope>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
</dependency>
<dependency>
<groupId>org.camunda.bpm.springboot</groupId>
<artifactId>camunda-bpm-spring-boot-starter-rest</artifactId>
</dependency>
<dependency>
<groupId>org.camunda.bpm.springboot</groupId>
<artifactId>camunda-bpm-spring-boot-starter-webapp</artifactId>
</dependency>
<dependency>
<groupId>org.camunda.bpm</groupId>
<artifactId>camunda-engine-plugin-spin</artifactId>
</dependency>
<dependency>
<groupId>org.camunda.spin</groupId>
<artifactId>camunda-spin-dataformat-all</artifactId>
</dependency>
<dependency>
<groupId>org.camunda.bpm</groupId>
<artifactId>camunda-external-task-client</artifactId>
<version>7.15.0</version>
</dependency>
<dependency>
<groupId>org.postgresql</groupId>
<artifactId>postgresql</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>

@ -0,0 +1,13 @@
package com.example.workflow;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class Application {
public static void main(String... args) {
SpringApplication.run(Application.class, args);
}
}

@ -0,0 +1,12 @@
package com.example.workflow.listener;
import org.camunda.bpm.engine.delegate.DelegateTask;
import org.camunda.bpm.engine.delegate.TaskListener;
public class SayHaloWodeListener implements TaskListener {
@Override
public void notify(DelegateTask delegateTask) {
System.out.println("halo wode");
}
}

@ -0,0 +1,75 @@
package com.example.workflow.rest.controller;
import org.camunda.bpm.engine.RepositoryService;
import org.camunda.bpm.engine.RuntimeService;
import org.camunda.bpm.engine.TaskService;
import org.camunda.bpm.engine.repository.Deployment;
import org.camunda.bpm.engine.repository.ProcessDefinition;
import org.camunda.bpm.engine.runtime.ProcessInstance;
import org.camunda.bpm.engine.task.Task;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import java.util.List;
import java.util.stream.Collectors;
/**
* 一个常规的说HaloWode的流程
* k
*
* @author chenchuancheng
* @since 2022/11/21 10:08
*/
@RestController
public class ProcessController {
@Resource
private RepositoryService repositoryService;
@Resource
private RuntimeService runtimeService;
@Resource
private TaskService taskService;
@GetMapping("/deploy")
public String deploy() {
Deployment deploy = repositoryService.createDeployment()
.name("流程")
.addClasspathResource("process.bpmn")
.deploy();
return deploy.getId();
}
@GetMapping("/queryProcess/{deployId}")
public List<String> queryProcess(@PathVariable("deployId") String deployId) {
List<ProcessDefinition> list = repositoryService.createProcessDefinitionQuery()
.deploymentId(deployId)
.list();
return list.stream().map(ProcessDefinition::getId).collect(Collectors.toList());
}
@GetMapping("/start/{processDefinitionId}")
public String start(@PathVariable("processDefinitionId") String processDefinitionId) {
ProcessInstance processInstance = runtimeService
.startProcessInstanceById(processDefinitionId);
return processInstance.getId();
}
@GetMapping("/queryTask/{processInstanceId}")
public List<String> queryTask(@PathVariable("processInstanceId") String processInstanceId) {
List<Task> list = taskService.createTaskQuery()
.processInstanceId(processInstanceId)
.list();
return list.stream().map(Task::getId).collect(Collectors.toList());
}
@GetMapping("/finishTask/{taskId}")
public void finishTask(@PathVariable("taskId") String taskId) {
taskService.complete(taskId);
}
}

@ -0,0 +1,24 @@
spring:
datasource:
url: jdbc:postgresql://192.168.110.198:5432/camunda
type: com.zaxxer.hikari.HikariDataSource
driver-class-name: org.postgresql.Driver
hikari:
username: postgres
password: postgres
server:
port: 1111
#camunda.bpm.admin-user:
# id: admin
# password: admin
camunda:
bpm:
admin-user:
id: admin
password: admin
database:
# 乱写类型会出错,不如不写,camunda会自己判断。Error while building ibatis SqlSessionFactory: null
# type: postgresql
schema-update: drop-create
auto-deployment-enabled: false

@ -0,0 +1,31 @@
{
"components": [
{
"label": "Amount",
"type": "number",
"id": "Field_13olf2v",
"key": "amount"
},
{
"label": "Item",
"type": "textfield",
"id": "Field_01i827y",
"key": "item"
},
{
"label": "Approved?",
"type": "checkbox",
"id": "Field_01klvvc",
"key": "approved"
}
],
"type": "default",
"id": "payment-form",
"exporter": {
"name": "Camunda Modeler",
"version": "5.5.0"
},
"executionPlatform": "Camunda Platform",
"executionPlatformVersion": "7.18.0",
"schemaVersion": 5
}

@ -0,0 +1,44 @@
<?xml version="1.0" encoding="UTF-8"?>
<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:modeler="http://camunda.org/schema/modeler/1.0" id="Definitions_0dtfda4" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="5.5.0" modeler:executionPlatform="Camunda Platform" modeler:executionPlatformVersion="7.18.0">
<bpmn:process id="payment-retrieval" name="付款" isExecutable="true">
<bpmn:startEvent id="StartEvent_1" name="开始">
<bpmn:outgoing>Flow_0c2ozia</bpmn:outgoing>
</bpmn:startEvent>
<bpmn:sequenceFlow id="Flow_0c2ozia" sourceRef="StartEvent_1" targetRef="Activity_0ep2qfb" />
<bpmn:endEvent id="Event_1rzxmly" name="结束">
<bpmn:incoming>Flow_14ceptg</bpmn:incoming>
</bpmn:endEvent>
<bpmn:sequenceFlow id="Flow_14ceptg" sourceRef="Activity_0ep2qfb" targetRef="Event_1rzxmly" />
<bpmn:serviceTask id="Activity_0ep2qfb" name="付款">
<bpmn:incoming>Flow_0c2ozia</bpmn:incoming>
<bpmn:outgoing>Flow_14ceptg</bpmn:outgoing>
</bpmn:serviceTask>
</bpmn:process>
<bpmndi:BPMNDiagram id="BPMNDiagram_1">
<bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="payment-retrieval">
<bpmndi:BPMNShape id="_BPMNShape_StartEvent_2" bpmnElement="StartEvent_1">
<dc:Bounds x="179" y="99" width="36" height="36" />
<bpmndi:BPMNLabel>
<dc:Bounds x="186" y="142" width="22" height="14" />
</bpmndi:BPMNLabel>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Event_1rzxmly_di" bpmnElement="Event_1rzxmly">
<dc:Bounds x="432" y="99" width="36" height="36" />
<bpmndi:BPMNLabel>
<dc:Bounds x="439" y="142" width="22" height="14" />
</bpmndi:BPMNLabel>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Activity_1n7oaxl_di" bpmnElement="Activity_0ep2qfb">
<dc:Bounds x="270" y="77" width="100" height="80" />
</bpmndi:BPMNShape>
<bpmndi:BPMNEdge id="Flow_0c2ozia_di" bpmnElement="Flow_0c2ozia">
<di:waypoint x="215" y="117" />
<di:waypoint x="270" y="117" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_14ceptg_di" bpmnElement="Flow_14ceptg">
<di:waypoint x="370" y="117" />
<di:waypoint x="432" y="117" />
</bpmndi:BPMNEdge>
</bpmndi:BPMNPlane>
</bpmndi:BPMNDiagram>
</bpmn:definitions>

@ -0,0 +1,58 @@
<?xml version="1.0" encoding="UTF-8"?>
<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:modeler="http://camunda.org/schema/modeler/1.0" id="Definitions_1h0z0z1" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="5.5.0" modeler:executionPlatform="Camunda Platform" modeler:executionPlatformVersion="7.18.0">
<bpmn:process id="Process_16mtg4x" isExecutable="true">
<bpmn:startEvent id="StartEvent_1" name="付款申请">
<bpmn:outgoing>Flow_17chpj9</bpmn:outgoing>
</bpmn:startEvent>
<bpmn:sequenceFlow id="Flow_17chpj9" sourceRef="StartEvent_1" targetRef="Activity_1mv1vg0" />
<bpmn:sequenceFlow id="Flow_0jc5m04" sourceRef="Activity_1mv1vg0" targetRef="Activity_0i4hchg" />
<bpmn:endEvent id="Event_1a62gsy" name="结束">
<bpmn:incoming>Flow_1maa5hg</bpmn:incoming>
</bpmn:endEvent>
<bpmn:sequenceFlow id="Flow_1maa5hg" sourceRef="Activity_0i4hchg" targetRef="Event_1a62gsy" />
<bpmn:userTask id="Activity_1mv1vg0" name="批准" camunda:formRef="payment-form" camunda:formRefBinding="latest" camunda:assignee="chenchuancheng">
<bpmn:extensionElements />
<bpmn:incoming>Flow_17chpj9</bpmn:incoming>
<bpmn:outgoing>Flow_0jc5m04</bpmn:outgoing>
</bpmn:userTask>
<bpmn:serviceTask id="Activity_0i4hchg" name="付款" camunda:type="external" camunda:topic="charge-card">
<bpmn:extensionElements />
<bpmn:incoming>Flow_0jc5m04</bpmn:incoming>
<bpmn:outgoing>Flow_1maa5hg</bpmn:outgoing>
</bpmn:serviceTask>
</bpmn:process>
<bpmndi:BPMNDiagram id="BPMNDiagram_1">
<bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="Process_16mtg4x">
<bpmndi:BPMNShape id="_BPMNShape_StartEvent_2" bpmnElement="StartEvent_1">
<dc:Bounds x="179" y="99" width="36" height="36" />
<bpmndi:BPMNLabel>
<dc:Bounds x="175" y="142" width="44" height="14" />
</bpmndi:BPMNLabel>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Event_1a62gsy_di" bpmnElement="Event_1a62gsy">
<dc:Bounds x="592" y="99" width="36" height="36" />
<bpmndi:BPMNLabel>
<dc:Bounds x="599" y="142" width="22" height="14" />
</bpmndi:BPMNLabel>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Activity_0llgjen_di" bpmnElement="Activity_1mv1vg0">
<dc:Bounds x="270" y="77" width="100" height="80" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Activity_01vln1f_di" bpmnElement="Activity_0i4hchg">
<dc:Bounds x="430" y="77" width="100" height="80" />
</bpmndi:BPMNShape>
<bpmndi:BPMNEdge id="Flow_17chpj9_di" bpmnElement="Flow_17chpj9">
<di:waypoint x="215" y="117" />
<di:waypoint x="270" y="117" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_1maa5hg_di" bpmnElement="Flow_1maa5hg">
<di:waypoint x="530" y="117" />
<di:waypoint x="592" y="117" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_0jc5m04_di" bpmnElement="Flow_0jc5m04">
<di:waypoint x="370" y="117" />
<di:waypoint x="430" y="117" />
</bpmndi:BPMNEdge>
</bpmndi:BPMNPlane>
</bpmndi:BPMNDiagram>
</bpmn:definitions>

@ -0,0 +1,41 @@
<?xml version="1.0" encoding="UTF-8"?>
<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" id="Definitions_0fr9mxs" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="5.5.0">
<bpmn:process id="camunda-process" isExecutable="true">
<bpmn:startEvent id="StartEvent_1">
<bpmn:outgoing>SequenceFlow_1fp17al</bpmn:outgoing>
</bpmn:startEvent>
<bpmn:sequenceFlow id="SequenceFlow_1fp17al" sourceRef="StartEvent_1" targetRef="say-hello" />
<bpmn:endEvent id="EndEvent_0x6ir2l">
<bpmn:incoming>SequenceFlow_16gzt2m</bpmn:incoming>
</bpmn:endEvent>
<bpmn:sequenceFlow id="SequenceFlow_16gzt2m" sourceRef="say-hello" targetRef="EndEvent_0x6ir2l" />
<bpmn:userTask id="say-hello" name="Say Halo Wode" camunda:candidateUsers="admin">
<bpmn:extensionElements>
<camunda:taskListener class="com.example.workflow.listener.SayHaloWodeListener" event="create" />
</bpmn:extensionElements>
<bpmn:incoming>SequenceFlow_1fp17al</bpmn:incoming>
<bpmn:outgoing>SequenceFlow_16gzt2m</bpmn:outgoing>
</bpmn:userTask>
</bpmn:process>
<bpmndi:BPMNDiagram id="BPMNDiagram_1">
<bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="camunda-process">
<bpmndi:BPMNShape id="_BPMNShape_StartEvent_2" bpmnElement="StartEvent_1">
<dc:Bounds x="179" y="99" width="36" height="36" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="EndEvent_0x6ir2l_di" bpmnElement="EndEvent_0x6ir2l">
<dc:Bounds x="432" y="99" width="36" height="36" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="UserTask_08mft2c_di" bpmnElement="say-hello">
<dc:Bounds x="270" y="77" width="100" height="80" />
</bpmndi:BPMNShape>
<bpmndi:BPMNEdge id="SequenceFlow_1fp17al_di" bpmnElement="SequenceFlow_1fp17al">
<di:waypoint x="215" y="117" />
<di:waypoint x="270" y="117" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="SequenceFlow_16gzt2m_di" bpmnElement="SequenceFlow_16gzt2m">
<di:waypoint x="370" y="117" />
<di:waypoint x="432" y="117" />
</bpmndi:BPMNEdge>
</bpmndi:BPMNPlane>
</bpmndi:BPMNDiagram>
</bpmn:definitions>

@ -0,0 +1,37 @@
package com.example.workflow.rest.controller;
import org.camunda.bpm.client.ExternalTaskClient;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.awt.*;
import java.net.URI;
public class ChargeCardWorker {
private static final Logger log = LoggerFactory.getLogger(ChargeCardWorker.class);
public static void main(String[] args) {
ExternalTaskClient client = ExternalTaskClient.create()
.baseUrl("http://localhost:8080/engine-rest")
.asyncResponseTimeout(10000) // 长轮询超时时间
.build();
// 订阅指定的外部任务
client.subscribe("charge-card")
.lockDuration(1000)
.handler(((externalTask, externalTaskService) -> {
// 获取流程变量
String item = (String) externalTask.getVariable("item");
Integer amount = (Integer) externalTask.getVariable("amount");
System.out.println("item--->"+item + " amount-->" + amount);
try {
Desktop.getDesktop().browse(new URI("https://docs.camunda.org/get-started/quick-start/complete"));
} catch (Exception e) {
e.printStackTrace();
}
// 完成任务
externalTaskService.complete(externalTask);
})).open();
}
}

@ -0,0 +1,48 @@
package com.example.workflow.rest.controller;
import org.camunda.bpm.engine.RepositoryService;
import org.camunda.bpm.engine.RuntimeService;
import org.camunda.bpm.engine.TaskService;
import org.camunda.bpm.engine.repository.Deployment;
import org.camunda.bpm.engine.repository.ProcessDefinition;
import org.camunda.bpm.engine.repository.ProcessDefinitionQuery;
import org.camunda.bpm.engine.runtime.ProcessInstance;
import org.camunda.bpm.engine.task.Task;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import javax.annotation.Resource;
import java.util.List;
import static org.junit.jupiter.api.Assertions.*;
@SpringBootTest
class ProcessControllerTest {
@Resource
private RepositoryService repositoryService;
@Resource
private RuntimeService runtimeService;
@Resource
private TaskService taskService;
@Test
void finishTask() {
Deployment deploy = repositoryService.createDeployment()
.name("流程")
.addClasspathResource("process.bpmn")
.deploy();
List<ProcessDefinition> processDefinitionList = repositoryService.createProcessDefinitionQuery()
.deploymentId(deploy.getId())
.list();
ProcessInstance processInstance = runtimeService.startProcessInstanceById(processDefinitionList.get(0).getId());
List<Task> taskList = taskService.createTaskQuery().processInstanceId(processInstance.getId()).list();
Task task = taskList.get(0);
taskService.complete(task.getId());
}
}

@ -0,0 +1,24 @@
spring:
datasource:
url: jdbc:postgresql://192.168.110.198:5432/camunda
type: com.zaxxer.hikari.HikariDataSource
driver-class-name: org.postgresql.Driver
hikari:
username: postgres
password: postgres
server:
port: 1111
#camunda.bpm.admin-user:
# id: admin
# password: admin
camunda:
bpm:
admin-user:
id: admin
password: admin
database:
# 乱写类型会出错,不如不写,camunda会自己判断。Error while building ibatis SqlSessionFactory: null
# type: postgresql
schema-update: drop-create
auto-deployment-enabled: false

@ -0,0 +1,31 @@
{
"components": [
{
"label": "Amount",
"type": "number",
"id": "Field_13olf2v",
"key": "amount"
},
{
"label": "Item",
"type": "textfield",
"id": "Field_01i827y",
"key": "item"
},
{
"label": "Approved?",
"type": "checkbox",
"id": "Field_01klvvc",
"key": "approved"
}
],
"type": "default",
"id": "payment-form",
"exporter": {
"name": "Camunda Modeler",
"version": "5.5.0"
},
"executionPlatform": "Camunda Platform",
"executionPlatformVersion": "7.18.0",
"schemaVersion": 5
}

@ -0,0 +1,44 @@
<?xml version="1.0" encoding="UTF-8"?>
<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:modeler="http://camunda.org/schema/modeler/1.0" id="Definitions_0dtfda4" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="5.5.0" modeler:executionPlatform="Camunda Platform" modeler:executionPlatformVersion="7.18.0">
<bpmn:process id="payment-retrieval" name="付款" isExecutable="true">
<bpmn:startEvent id="StartEvent_1" name="开始">
<bpmn:outgoing>Flow_0c2ozia</bpmn:outgoing>
</bpmn:startEvent>
<bpmn:sequenceFlow id="Flow_0c2ozia" sourceRef="StartEvent_1" targetRef="Activity_0ep2qfb" />
<bpmn:endEvent id="Event_1rzxmly" name="结束">
<bpmn:incoming>Flow_14ceptg</bpmn:incoming>
</bpmn:endEvent>
<bpmn:sequenceFlow id="Flow_14ceptg" sourceRef="Activity_0ep2qfb" targetRef="Event_1rzxmly" />
<bpmn:serviceTask id="Activity_0ep2qfb" name="付款">
<bpmn:incoming>Flow_0c2ozia</bpmn:incoming>
<bpmn:outgoing>Flow_14ceptg</bpmn:outgoing>
</bpmn:serviceTask>
</bpmn:process>
<bpmndi:BPMNDiagram id="BPMNDiagram_1">
<bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="payment-retrieval">
<bpmndi:BPMNShape id="_BPMNShape_StartEvent_2" bpmnElement="StartEvent_1">
<dc:Bounds x="179" y="99" width="36" height="36" />
<bpmndi:BPMNLabel>
<dc:Bounds x="186" y="142" width="22" height="14" />
</bpmndi:BPMNLabel>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Event_1rzxmly_di" bpmnElement="Event_1rzxmly">
<dc:Bounds x="432" y="99" width="36" height="36" />
<bpmndi:BPMNLabel>
<dc:Bounds x="439" y="142" width="22" height="14" />
</bpmndi:BPMNLabel>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Activity_1n7oaxl_di" bpmnElement="Activity_0ep2qfb">
<dc:Bounds x="270" y="77" width="100" height="80" />
</bpmndi:BPMNShape>
<bpmndi:BPMNEdge id="Flow_0c2ozia_di" bpmnElement="Flow_0c2ozia">
<di:waypoint x="215" y="117" />
<di:waypoint x="270" y="117" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_14ceptg_di" bpmnElement="Flow_14ceptg">
<di:waypoint x="370" y="117" />
<di:waypoint x="432" y="117" />
</bpmndi:BPMNEdge>
</bpmndi:BPMNPlane>
</bpmndi:BPMNDiagram>
</bpmn:definitions>

@ -0,0 +1,58 @@
<?xml version="1.0" encoding="UTF-8"?>
<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:modeler="http://camunda.org/schema/modeler/1.0" id="Definitions_1h0z0z1" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="5.5.0" modeler:executionPlatform="Camunda Platform" modeler:executionPlatformVersion="7.18.0">
<bpmn:process id="Process_16mtg4x" isExecutable="true">
<bpmn:startEvent id="StartEvent_1" name="付款申请">
<bpmn:outgoing>Flow_17chpj9</bpmn:outgoing>
</bpmn:startEvent>
<bpmn:sequenceFlow id="Flow_17chpj9" sourceRef="StartEvent_1" targetRef="Activity_1mv1vg0" />
<bpmn:sequenceFlow id="Flow_0jc5m04" sourceRef="Activity_1mv1vg0" targetRef="Activity_0i4hchg" />
<bpmn:endEvent id="Event_1a62gsy" name="结束">
<bpmn:incoming>Flow_1maa5hg</bpmn:incoming>
</bpmn:endEvent>
<bpmn:sequenceFlow id="Flow_1maa5hg" sourceRef="Activity_0i4hchg" targetRef="Event_1a62gsy" />
<bpmn:userTask id="Activity_1mv1vg0" name="批准" camunda:formRef="payment-form" camunda:formRefBinding="latest" camunda:assignee="chenchuancheng">
<bpmn:extensionElements />
<bpmn:incoming>Flow_17chpj9</bpmn:incoming>
<bpmn:outgoing>Flow_0jc5m04</bpmn:outgoing>
</bpmn:userTask>
<bpmn:serviceTask id="Activity_0i4hchg" name="付款" camunda:type="external" camunda:topic="charge-card">
<bpmn:extensionElements />
<bpmn:incoming>Flow_0jc5m04</bpmn:incoming>
<bpmn:outgoing>Flow_1maa5hg</bpmn:outgoing>
</bpmn:serviceTask>
</bpmn:process>
<bpmndi:BPMNDiagram id="BPMNDiagram_1">
<bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="Process_16mtg4x">
<bpmndi:BPMNShape id="_BPMNShape_StartEvent_2" bpmnElement="StartEvent_1">
<dc:Bounds x="179" y="99" width="36" height="36" />
<bpmndi:BPMNLabel>
<dc:Bounds x="175" y="142" width="44" height="14" />
</bpmndi:BPMNLabel>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Event_1a62gsy_di" bpmnElement="Event_1a62gsy">
<dc:Bounds x="592" y="99" width="36" height="36" />
<bpmndi:BPMNLabel>
<dc:Bounds x="599" y="142" width="22" height="14" />
</bpmndi:BPMNLabel>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Activity_0llgjen_di" bpmnElement="Activity_1mv1vg0">
<dc:Bounds x="270" y="77" width="100" height="80" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Activity_01vln1f_di" bpmnElement="Activity_0i4hchg">
<dc:Bounds x="430" y="77" width="100" height="80" />
</bpmndi:BPMNShape>
<bpmndi:BPMNEdge id="Flow_17chpj9_di" bpmnElement="Flow_17chpj9">
<di:waypoint x="215" y="117" />
<di:waypoint x="270" y="117" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_1maa5hg_di" bpmnElement="Flow_1maa5hg">
<di:waypoint x="530" y="117" />
<di:waypoint x="592" y="117" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_0jc5m04_di" bpmnElement="Flow_0jc5m04">
<di:waypoint x="370" y="117" />
<di:waypoint x="430" y="117" />
</bpmndi:BPMNEdge>
</bpmndi:BPMNPlane>
</bpmndi:BPMNDiagram>
</bpmn:definitions>

@ -0,0 +1,41 @@
<?xml version="1.0" encoding="UTF-8"?>
<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" id="Definitions_0fr9mxs" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="5.5.0">
<bpmn:process id="camunda-process" isExecutable="true">
<bpmn:startEvent id="StartEvent_1">
<bpmn:outgoing>SequenceFlow_1fp17al</bpmn:outgoing>
</bpmn:startEvent>
<bpmn:sequenceFlow id="SequenceFlow_1fp17al" sourceRef="StartEvent_1" targetRef="say-hello" />
<bpmn:endEvent id="EndEvent_0x6ir2l">
<bpmn:incoming>SequenceFlow_16gzt2m</bpmn:incoming>
</bpmn:endEvent>
<bpmn:sequenceFlow id="SequenceFlow_16gzt2m" sourceRef="say-hello" targetRef="EndEvent_0x6ir2l" />
<bpmn:userTask id="say-hello" name="Say Halo Wode" camunda:candidateUsers="admin">
<bpmn:extensionElements>
<camunda:taskListener class="com.example.workflow.listener.SayHaloWodeListener" event="create" />
</bpmn:extensionElements>
<bpmn:incoming>SequenceFlow_1fp17al</bpmn:incoming>
<bpmn:outgoing>SequenceFlow_16gzt2m</bpmn:outgoing>
</bpmn:userTask>
</bpmn:process>
<bpmndi:BPMNDiagram id="BPMNDiagram_1">
<bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="camunda-process">
<bpmndi:BPMNShape id="_BPMNShape_StartEvent_2" bpmnElement="StartEvent_1">
<dc:Bounds x="179" y="99" width="36" height="36" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="EndEvent_0x6ir2l_di" bpmnElement="EndEvent_0x6ir2l">
<dc:Bounds x="432" y="99" width="36" height="36" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="UserTask_08mft2c_di" bpmnElement="say-hello">
<dc:Bounds x="270" y="77" width="100" height="80" />
</bpmndi:BPMNShape>
<bpmndi:BPMNEdge id="SequenceFlow_1fp17al_di" bpmnElement="SequenceFlow_1fp17al">
<di:waypoint x="215" y="117" />
<di:waypoint x="270" y="117" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="SequenceFlow_16gzt2m_di" bpmnElement="SequenceFlow_16gzt2m">
<di:waypoint x="370" y="117" />
<di:waypoint x="432" y="117" />
</bpmndi:BPMNEdge>
</bpmndi:BPMNPlane>
</bpmndi:BPMNDiagram>
</bpmn:definitions>
Loading…
Cancel
Save