概述
flowable 并行网关
即同时执行并行网关后的多个作业(task/事件/任务)
即同时收回执行多条后继续主流程中的后续一条事件
我这里也只是跑了一个较为简单的并行网关demo
以下是我跑的流程图:
以下是BPMN2.0 的XML:
<process id="Eventgateway" name="Eventgateway" isExecutable="true">
<documentation>并行网关dome</documentation>
<startEvent id="start" name="开始"></startEvent>
<parallelGateway id="parallelgatewaysend"></parallelGateway>
<userTask id="usertask1" name="usertask1"></userTask>
<userTask id="usertask2" name="usertask2"></userTask>
<userTask id="usertask3" name="usertask3"></userTask>
<userTask id="usertask4" name="usertask4"></userTask>
<parallelGateway id="parallelgatewayput"></parallelGateway>
<userTask id="usertask5" name="usertask5"></userTask>
<endEvent id="end" name="结束"></endEvent>
<sequenceFlow id="start-usertask1" sourceRef="start" targetRef="usertask1"></sequenceFlow>
<sequenceFlow id="usertask5-end" sourceRef="usertask5" targetRef="end"></sequenceFlow>
<sequenceFlow id="eventgateway-usertask5" sourceRef="parallelgatewayput" targetRef="usertask5"></sequenceFlow>
<sequenceFlow id="usertask4-eventgateway" sourceRef="usertask4" targetRef="parallelgatewayput"></sequenceFlow>
<sequenceFlow id="usertask3-eventgateway" sourceRef="usertask3" targetRef="parallelgatewayput"></sequenceFlow>
<sequenceFlow id="usertask2-eventgateway" sourceRef="usertask2" targetRef="parallelgatewayput"></sequenceFlow>
<sequenceFlow id="eventgateway-usertask2" sourceRef="parallelgatewaysend" targetRef="usertask2"></sequenceFlow>
<sequenceFlow id="eventgateway-usertask4" sourceRef="parallelgatewaysend" targetRef="usertask4"></sequenceFlow>
<sequenceFlow id="eventgateway-usertask3" sourceRef="parallelgatewaysend" targetRef="usertask3"></sequenceFlow>
<sequenceFlow id="usertask1-eventgateway" sourceRef="usertask1" targetRef="parallelgatewaysend"></sequenceFlow>
</process>
以下是JAVA API编程代码
//主体流程的开始
//创建数据库链接信息 链接库名、用户名、密码请输入自己的
ProcessEngineConfiguration cfg = new StandaloneProcessEngineConfiguration()
.setJdbcUrl("jdbc:mysql://127.0.0.1:3306/*******?characterEncoding=UTF-8")
.setJdbcUsername("****")
.setJdbcPassword("****")
.setJdbcDriver("com.mysql.jdbc.Driver")
.setDatabaseSchemaUpdate(ProcessEngineConfiguration.DB_SCHEMA_UPDATE_FALSE);
// 通过数据库链接信息 创建Flowable流程引擎 Create Flowable process engine
ProcessEngine processEngine = cfg.buildProcessEngine();
// 获取Flowable服务 Get Flowable repositoryService 定义流程和部署流程
RepositoryService repositoryService = processEngine.getRepositoryService();
// 获取Flowable服务 Get Flowable runtimeService 开始新流程实例和查询
RuntimeService runtimeService = processEngine.getRuntimeService();
// 获取taskService对象 Get the first task 任务查询与操作
TaskService taskService = processEngine.getTaskService();
Deployment deploy = repositoryService.createDeployment().addClasspathResource("processes/gateway/EventGateway.bpmn20.xml").deploy();
ProcessInstance process = runtimeService.startProcessInstanceByKey("XMEventgateway");
Task task = taskService.createTaskQuery().processInstanceId(process.getId()).singleResult();
System.out.println("1 task is="+task);
if (task!=null) {
System.out.println("提交 task 服务 is="+task.getName());
taskService.complete(task.getId());
}
//查询多个节点任务
List<Task> list = taskService.createTaskQuery().processInstanceId(process.getId()).list();
System.out.println("lists is="+list.toString());
for (Task tasks : list) {
System.out.println("提交任务 is="+tasks.getName());
taskService.complete(tasks.getId());
}
task = taskService.createTaskQuery().processInstanceId(process.getId()).singleResult();
System.out.println("2 task is="+task);
if (task!=null) {
System.out.println("提交任务 is="+task.getName());
taskService.complete(task.getId());
}
task = taskService.createTaskQuery().processInstanceId(process.getId()).singleResult();
processEngine.close();
if (task==null) {
System.out.println("所有任务执行完成");
}else {
System.out.println("还有任务等待执行");
}
System.exit(0);
以下是成功打印信息截图(由于有log日志不在一起打印所以一块一块截图) :
以上如有问题可评论 我看到立马回答
请不要所以转载 !!!
最后
以上就是怡然心锁为你收集整理的flowable并行网关实现flowable 并行网关请不要所以转载 !!!的全部内容,希望文章能够帮你解决flowable并行网关实现flowable 并行网关请不要所以转载 !!!所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复