Activiti觸發消息事件實戰

一 代碼

/**
* Copyright (C), 2020-2020, 軟件公司
* FileName: MessageEvent.java
* Author:   cakin
* Date:     2020/4/23
* Description: messageEventReceived觸發消息事件
*/
package com.syc.activiti.chapter9;

import org.activiti.engine.ProcessEngine;
import org.activiti.engine.ProcessEngines;
import org.activiti.engine.RepositoryService;
import org.activiti.engine.RuntimeService;
import org.activiti.engine.runtime.Execution;

/**
* @className: MessageEvent
* @description: messageEventReceived觸發消息事件
* @date: 2020/4/23
* @author: cakin
*/
public class MessageEvent {
    public static void main( String[] args ) {
        // 創建流程引擎
        ProcessEngine engine = ProcessEngines.getDefaultProcessEngine();
        // 得到流程存儲服務實例
        RepositoryService repositoryService = engine.getRepositoryService();
        // 得到運行時服務組件
        RuntimeService runtimeService = engine.getRuntimeService();
        // 部署流程描述文件
        repositoryService.createDeployment()
                .addClasspathResource("bpmn/chapter9/MessageEvent.bpmn").deploy();
        // 開始流流程
        runtimeService.startProcessInstanceByKey("testProcess");
        // 查詢當前節點
        Execution exe = runtimeService.createExecutionQuery()
                .activityId("messageintermediatecatchevent1").singleResult();

/****************************************************************************
mysql> select ID_, REV_,PROC_INST_ID_ ,BUSINESS_KEY_ ,PARENT_ID_ ,PROC_DEF_ID_ ,SUPER_EXEC_,ROOT_PROC_INST_ID_ ,ACT_ID_ from act_ru_execution;
+--------+------+---------------+---------------+------------+----------------------+-------------+--------------------+--------------------------------+
| ID_    | REV_ | PROC_INST_ID_ | BUSINESS_KEY_ | PARENT_ID_ | PROC_DEF_ID_         | SUPER_EXEC_ | ROOT_PROC_INST_ID_ | ACT_ID_                        |
+--------+------+---------------+---------------+------------+----------------------+-------------+--------------------+--------------------------------+
| 195005 |    1 | 195005        | NULL          | NULL       | testProcess:2:195004 | NULL        | 195005             | NULL                           |
| 195006 |    1 | 195005        | NULL          | 195005     | testProcess:2:195004 | NULL        | 195005             | messageintermediatecatchevent1 |
+--------+------+---------------+---------------+------------+----------------------+-------------+--------------------+--------------------------------+

mysql> select * from act_ru_event_subscr;
+--------+------+-------------+-------------+---------------+---------------+--------------------------------+----------------+-------------------------+----------------------+------------+
| ID_    | REV_ | EVENT_TYPE_ | EVENT_NAME_ | EXECUTION_ID_ | PROC_INST_ID_ | ACTIVITY_ID_                   | CONFIGURATION_ | CREATED_                | PROC_DEF_ID_         | TENANT_ID_ |
+--------+------+-------------+-------------+---------------+---------------+--------------------------------+----------------+-------------------------+----------------------+------------+
| 195009 |    1 | message     | testMsg     | 195006        | 195005        | messageintermediatecatchevent1 | NULL           | 2020-04-23 20:51:18.247 | testProcess:2:195004 |            |
+--------+------+-------------+-------------+---------------+---------------+--------------------------------+----------------+-------------------------+----------------------+------------+
1 row in set (0.00 sec)
*****************************************************************************/

        System.out.println("當前流程節點:" + exe.getActivityId());
        // 觸發消息事件
        runtimeService.messageEventReceived("testMsg", exe.getId());
        // 查詢當前事件
        exe = runtimeService.createExecutionQuery().activityId("usertask1")
                .singleResult();

/****************************************************************************
mysql> select * from act_ru_event_subscr;
+--------+------+-------------+-------------+---------------+---------------+--------------------------------+----------------+-------------------------+----------------------+------------+
| ID_    | REV_ | EVENT_TYPE_ | EVENT_NAME_ | EXECUTION_ID_ | PROC_INST_ID_ | ACTIVITY_ID_                   | CONFIGURATION_ | CREATED_                | PROC_DEF_ID_         | TENANT_ID_ |
+--------+------+-------------+-------------+---------------+---------------+--------------------------------+----------------+-------------------------+----------------------+------------+
| 195009 |    1 | message     | testMsg     | 195006        | 195005        | messageintermediatecatchevent1 | NULL           | 2020-04-23 20:51:18.247 | testProcess:2:195004 |            |
+--------+------+-------------+-------------+---------------+---------------+--------------------------------+----------------+-------------------------+----------------------+------------+
1 row in set (0.00 sec)


mysql> select ID_, REV_,PROC_INST_ID_ ,BUSINESS_KEY_ ,PARENT_ID_ ,PROC_DEF_ID_ ,SUPER_EXEC_,ROOT_PROC_INST_ID_ ,ACT_ID_ from act_ru_execution;
+--------+------+---------------+---------------+------------+----------------------+-------------+--------------------+-----------+
| ID_    | REV_ | PROC_INST_ID_ | BUSINESS_KEY_ | PARENT_ID_ | PROC_DEF_ID_         | SUPER_EXEC_ | ROOT_PROC_INST_ID_ | ACT_ID_   |
+--------+------+---------------+---------------+------------+----------------------+-------------+--------------------+-----------+
| 195005 |    1 | 195005        | NULL          | NULL       | testProcess:2:195004 | NULL        | 195005             | NULL      |
| 195006 |    2 | 195005        | NULL          | 195005     | testProcess:2:195004 | NULL        | 195005             | usertask1 |
+--------+------+---------------+---------------+------------+----------------------+-------------+--------------------+-----------+
2 rows in set (0.00 sec)


mysql> select * from act_ru_event_subscr;
Empty set (0.00 sec)


mysql> select ID_ ,REV_, EXECUTION_ID_, PROC_INST_ID_ , PROC_DEF_ID_, NAME_ , PARENT_TASK_ID_ , DESCRIPTION_ , TASK_DEF_KEY_ , OWNER_, ASSIGNEE_  from act_ru_task;
+--------+------+---------------+---------------+----------------------+----------+-----------------+--------------+---------------+--------+-----------+
| ID_    | REV_ | EXECUTION_ID_ | PROC_INST_ID_ | PROC_DEF_ID_         | NAME_    | PARENT_TASK_ID_ | DESCRIPTION_ | TASK_DEF_KEY_ | OWNER_ | ASSIGNEE_ |
+--------+------+---------------+---------------+----------------------+----------+-----------------+--------------+---------------+--------+-----------+
| 195011 |    1 | 195006        | 195005        | testProcess:2:195004 | End Task | NULL            | NULL         | usertask1     | NULL   | NULL      |
+--------+------+---------------+---------------+----------------------+----------+-----------------+--------------+---------------+--------+-----------+
1 row in set (0.00 sec)
*****************************************************************************/

        System.out.println("當前流程節點:" + exe.getActivityId());
    }
}

二 流程

<?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: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" typeLanguage="http://www.w3.org/2001/XMLSchema"
    expressionLanguage="http://www.w3.org/1999/XPath" targetNamespace="http://www.activiti.org/test">


    <message id="testMsg" name="testMsg"></message>


    <process id="testProcess" name="testProcess">
        <startEvent id="startevent1" name="Start"></startEvent>
        <userTask id="usertask1" name="End Task"></userTask>
        <intermediateCatchEvent id="messageintermediatecatchevent1"
            name="MessageCatchEvent">
            <messageEventDefinition messageRef="testMsg"></messageEventDefinition>
        </intermediateCatchEvent>
        <endEvent id="endevent1" name="End"></endEvent>
        <sequenceFlow id="flow1" name="" sourceRef="startevent1"
            targetRef="messageintermediatecatchevent1"></sequenceFlow>
        <sequenceFlow id="flow2" name=""
            sourceRef="messageintermediatecatchevent1" targetRef="usertask1"></sequenceFlow>
        <sequenceFlow id="flow3" name="" sourceRef="usertask1"
            targetRef="endevent1"></sequenceFlow>
    </process>
</definitions>

三 結果

當前流程節點:messageintermediatecatchevent1
當前流程節點:usertask1

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章