<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      camunda_04_quickstart

      目標

      • 設計和部署第一個簡單流程
      • 使用Java實現流程處理
      • 完成流程啟動測試

      設計第一個流程

      建模注意事項

      • 模型文件和部署名其實并不重要,最重要是流程的Id, ProcessEngine是按照這個Id管理流程.
      • 流程要設定為 Executable.

      步驟

      1. 使用Model新建一個 camunda 7的模型文件, 命名為payment.bpm , 流程Id 設定為payment-retrieval , 并完成部署.

      2. 在流程中增加一個Service task, 類型選External,Topic設定為charge-card

      3. BPMN xml 代碼

      <?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_1xvrd7w" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="5.2.0" modeler:executionPlatform="Camunda Platform" modeler:executionPlatformVersion="7.17.0">
        <bpmn:process id="payment-retrieval" name="付款流程" isExecutable="true">
          <bpmn:startEvent id="StartEvent_1" name="付款請求">
            <bpmn:outgoing>Flow_0mcdkpl</bpmn:outgoing>
          </bpmn:startEvent>
          <bpmn:sequenceFlow id="Flow_0mcdkpl" sourceRef="StartEvent_1" targetRef="Activity_Charge" />
          <bpmn:serviceTask id="Activity_Charge" name="刷卡付款" camunda:type="external" camunda:topic="charge-card">
            <bpmn:incoming>Flow_0mcdkpl</bpmn:incoming>
            <bpmn:outgoing>Flow_16yugnw</bpmn:outgoing>
          </bpmn:serviceTask>
          <bpmn:endEvent id="EndEvent_1" name="付款完成">
            <bpmn:incoming>Flow_16yugnw</bpmn:incoming>
          </bpmn:endEvent>
          <bpmn:sequenceFlow id="Flow_16yugnw" sourceRef="Activity_Charge" targetRef="EndEvent_1" />
        </bpmn:process>
        <bpmndi:BPMNDiagram id="BPMNDiagram_1">
          <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="payment-retrieval">
            <bpmndi:BPMNEdge id="Flow_0mcdkpl_di" bpmnElement="Flow_0mcdkpl">
              <di:waypoint x="215" y="117" />
              <di:waypoint x="270" y="117" />
            </bpmndi:BPMNEdge>
            <bpmndi:BPMNEdge id="Flow_16yugnw_di" bpmnElement="Flow_16yugnw">
              <di:waypoint x="370" y="117" />
              <di:waypoint x="432" y="117" />
            </bpmndi:BPMNEdge>
            <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="45" height="14" />
              </bpmndi:BPMNLabel>
            </bpmndi:BPMNShape>
            <bpmndi:BPMNShape id="Activity_1dxqxj0_di" bpmnElement="Activity_Charge">
              <dc:Bounds x="270" y="77" width="100" height="80" />
              <bpmndi:BPMNLabel />
            </bpmndi:BPMNShape>
            <bpmndi:BPMNShape id="Event_0qnrvvd_di" bpmnElement="EndEvent_1">
              <dc:Bounds x="432" y="99" width="36" height="36" />
              <bpmndi:BPMNLabel>
                <dc:Bounds x="428" y="142" width="45" height="14" />
              </bpmndi:BPMNLabel>
            </bpmndi:BPMNShape>
          </bpmndi:BPMNPlane>
        </bpmndi:BPMNDiagram>
      </bpmn:definitions>
      
      

      開發Java實現刷卡付款業務

      maven 國內源

      maven 配置文件設置國內源, 文件:conf\settings.xml

        <mirrors>
               <mirror>
                  <id>aliyun</id>
                  <name>mirror from maven aliyun</name>
                  <url>https://maven.aliyun.com/repository/central</url>
                  <mirrorOf>central</mirrorOf>
              </mirror>
        </mirrors>
      

      pom.xml

      </dependency>
              <dependency>
                  <groupId>org.camunda.bpm</groupId>
                  <artifactId>camunda-external-task-client</artifactId>
                  <version>7.17.0</version>
              </dependency>
              <dependency>
                  <groupId>org.slf4j</groupId>
                  <artifactId>slf4j-simple</artifactId>
                  <version>1.6.1</version>
              </dependency>
              <dependency>
                  <groupId>javax.xml.bind</groupId>
                  <artifactId>jaxb-api</artifactId>
                  <version>2.3.1</version>
              </dependency>
      </dependencies>
      

      java 業務代碼

      camunda 的 ExternalTaskClient 是一個Listener類, 我們程序使用 ExternalTaskClient 就可以成為一個后臺daemon程序, 后面再專門寫個博客分析一下 camunda-external-task-client jar.
      在我們的程序中, 使用ExternalTaskClient可以非常方便監聽流程中的External Task Service設定的 topic, 完成業務處理, 并標記該Task為結束.

      package javatest;
      
      import java.text.MessageFormat;
      import java.util.logging.Logger;
      
      import org.camunda.bpm.client.ExternalTaskClient;
      
      public class ChargeCardWorker {
      	private final static Logger logger = Logger.getLogger(ChargeCardWorker.class.getName());
      
      	public static void main(String[] args) {
      		logger.info("ExternalTaskClient setup");
      		ExternalTaskClient client = ExternalTaskClient.create().baseUrl("http://localhost:8080/engine-rest")
      				.asyncResponseTimeout(10000).build();
      
      		// 訂閱并處理第1個ExternalTask的topic
      		client.subscribe("charge-card").lockDuration(1000).handler((externalTask, externalTaskService) -> {
      			// 獲取流程信息
      			String item = (String) externalTask.getVariable("item");
      			Long amount = (Long) externalTask.getVariable("amount");
      
      			// 業務邏輯
      			logger.info(
      					MessageFormat.format("Charging credit card with an amount of {0} for the item {1}", amount, item));
      
      			// 完成 Task
      			externalTaskService.complete(externalTask);
      		}).open();
      
      		// 訂閱并處理第2個ExternalTask的topic
      		// 省略
      
      		logger.info("Listening topics...");
      	}
      }
      
      

      啟動流程

      確保java程序提前運行, 然后使用VS code+Rest Client 發起一個啟動流程命令:

      POST http://localhost:8080/engine-rest/process-definition/key/payment-retrieval/start HTTP/1.1
      Content-Type: application/json
      
      {
          "variables": {
              "amount": {
                  "value":555,
                  "type":"long"
              },
              "item": {
                  "value": "item-xyz"
              }
          }
      }
      

      Rest API的返回信息:

      Java程序端的輸出:

      posted @ 2022-09-18 11:25  harrychinese  閱讀(96)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 襄垣县| 日本高清日本在线免费| 云浮市| 亚洲欧洲日产国无高清码图片| 日韩有码中文字幕国产| 永久天堂网 av手机版| 麻豆国产va免费精品高清在线| 成在线人永久免费视频播放| 动漫av网站免费观看| 亚洲精品视频一二三四区| 精品国产成人国产在线观看| 亚洲熟女乱色一区二区三区| 亚洲高清国产拍精品5G| 欧美牲交40_50a欧美牲交aⅴ| 国产精品男女爽免费视频| 久久涩综合一区二区三区| 超碰成人人人做人人爽| 中文字幕乱码中文乱码毛片 | 忍着娇喘人妻被中出中文字幕| 亚洲免费成人av一区| 亚洲综合av男人的天堂| 亚洲色婷婷婷婷五月基地| 国产AV影片麻豆精品传媒| 99精品国产在热久久无| 欧美做受视频播放| 不卡乱辈伦在线看中文字幕| 国产精品免费AⅤ片在线观看| AV最新高清无码专区| 亚洲国产区男人本色vr| 成人亚洲狠狠一二三四区| 华人在线亚洲欧美精品| 国产精品久久久福利| 亚洲无码a∨在线视频| 午夜高清福利在线观看| 日韩精品中文字一区二区| 国产免费AV片在线看| 大地资源高清免费观看| 日韩精品卡一卡二卡三卡四| 亚洲AV日韩AV综合在线观看| 欧美日本激情| 东京热一区二区三区在线|