复习步骤8-Activiti流程操作与数据查询
此章节学习的⽬的,怎么样让流程往下⾛,不同的⽅式有不同的⽅法
如任务流程节点是UserTask
那么使⽤ Id());使流程往下⾛
如任务流程节点是ReceiveTask
那么使⽤Id());
使流程往下⾛
流程触发
触发信号事件:
捕获事件(Catching):概念 流程⼀旦碰到捕获事件的时候,流程就会停在这⾥,等待外部发信号,⼀直处于捕获状态,直⾄收到外部给它发的信号,才会继续往下⾛
抛出事件(Throwing):流程⼀旦碰到抛出事件的时候,回往外抛出⼀个信息,不会等待,
流程继续往下⾛
捕获事件,抛出事件是放在流程中间,因此也叫中间事件 ,⽽开始节点是放在流程开始,因此叫开始事件
如任务流程停在SignalCatchingEvent事件(信号捕获事件--也可叫信号捕获中间事件),如何使流程往下⾛
捕获事件的 signalEvent.bpmn的流程图画好后,还需再signalEvent.bpmn中
加标签对 信号捕获事件进⾏定义并引⽤
如下定义信号事件并引⽤
代码中使⽤ runService.signalEventReceived("testSignal");//signalEvent.bpmn 的 <signal id="testSignal" name="testSignal"> </signal>
给它发信号,使流程往下⾛
消息捕获中间事件 ,如何使流程往下⾛--
// 让它往前⾛ --外部给 testMessage  发消息
//messageEvent.bpmn 的 <message id="testMsg" name="testMsg"></message>
/*
百度RuntimeService API  messageEventReceived(String messageName, String executionId)
多第⼆参数执⾏流ID是于消息捕获中间事件通知往下个节点⾛的最⼤区别,消息捕获事件没有执⾏流I
D,相当于⼴播,⽽消息捕获中间事件相当于订阅,只有此执⾏流继续往下⾛,其他执⾏流仍然等待中
*/
项⽬结构如图
HandleTest.java
package com.xiangshuai.act.c12;
import ine.ProcessEngine;
import ine.ProcessEngines;
import ine.RepositoryService;
import ine.RuntimeService;
import ine.TaskService;
import pository.Deployment;
import pository.ProcessDefinition;
import ine.runtime.Execution;
import ine.runtime.ProcessInstance;
/**
* * @author lqx
* ⽂件在 E:\学习⽂档⼦⽬录压缩\框架\⼯作流引擎\Activiti6.0\window\复习步骤8-Activiti流程操作与数据查询
* 或 我的⽹盘\我的笔记学习⽂档⼦⽬录压缩\框架\⼯作流引擎\Activiti6.0\window\复习步骤8-Activiti流程操作与数据查询
*
*/
public class HandleTest {
public static void main(String[] args) {
//receiveTaskTest();
createprocessa//singleEventCatchingTest();
messageCatchingEventTest();
}
//任务流程节点是ReceiveTask,如何流转到下⼀个流程节点测试-通过Id()) 流转到下⼀个流程节点;
public static void receiveTaskTest(){
ProcessEngine engine = DefaultProcessEngine();
// 存储服务
RepositoryService rs = RepositoryService();
// 运⾏时服务
RuntimeService runService = RuntimeService();
// 任务服务
TaskService taskService = TaskService();
// 部署
Deployment dep = rs.createDeployment()
.addClasspathResource("receiveTask.bpmn").deploy();
ProcessDefinition pd = rs.createProcessDefinitionQuery()
.Id()).singleResult();
// 启动流程
ProcessInstance pi = runService.Id());
// 查当前的⼦执⾏流(此流程只有⼀个),Execution 对应act_ru_execution表  -- 此表保存运⾏时 当前节点 下的 主流程(主执⾏流)和⼦执⾏流 数据
Execution exe = ateExecutionQuery()
.Id()).onlyChildExecutions()//查当前的⼦执⾏流(此流程只有⼀个)
.singleResult();
System.out.Id() + ", 当前节点:" + ActivityId());
// 让它往前⾛
exe = ateExecutionQuery()
.Id()).onlyChildExecutions()
.singleResult();
System.out.Id() + ", 当前节点:" + ActivityId());
}
/*
任务流程 停在SignalCatchingEvent事件(信号捕获事件),如何流转到下⼀个流程节点测试--通过
runService.signalEventReceived("testSignal");//singleEvent.bpmn 的 <signal id="testSignal" name="testSignal">
</signal>
给它发信号,使流程往下⾛
*/
public static void singleEventCatchingTest(){
ProcessEngine engine = DefaultProcessEngine();
// 存储服务
RepositoryService rs = RepositoryService();
// 运⾏时服务
RuntimeService runService = RuntimeService();

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。