Flowable主要子流程介绍

1. 内嵌子流程

(1)说明
        内嵌子流程又叫嵌入式子流程,它是一个可以包含其它活动、分支、事件,等的活动。我们通常意义上说的子流程通常就是指的内嵌子流程,它表现为将一个流程(子流程)定义在另一个流程(父流程)的内部,子流程作为父流程的一部分。子流程是主流程中的一部分流程片段,并非独立的流程定义,一般作为局部通用逻辑处理,或者因为特定业务需要,使比较复杂的单个主流程设计清晰直观。
        主流程执行到子流程时启动子流程,当子流程结束后继续执行主流程。

(2)示例

  <process id="demo" name="demo" isExecutable="true"><startEvent id="sid-507da2f8-ca68-4e25-a256-c9e4e98a8e30"/><endEvent id="sid-312fd1bd-1a79-46f1-956c-b89aab8a03af"/><userTask id="sid-2b45eebc-75fa-465c-b870-4159a15df689" name="业务1" flowable:assignee="zj1"/><subProcess id="sid-b8b56b6f-35ae-4367-8c40-628321034b15" flowable:exclusive="true" name="子流程"><startEvent id="sid-fa9462e7-e72f-4489-a0d8-6d4aef4a8709"/><userTask id="sid-4774809a-d1b2-4c1b-96d5-86b9faf8c0f6" name="业务2" flowable:assignee="zj2"/><endEvent id="sid-39a81a5f-b2ae-4a3a-aea4-750eead4229b"/><sequenceFlow id="sid-1cf422bf-075b-49d0-8480-bc26859431cf" sourceRef="sid-fa9462e7-e72f-4489-a0d8-6d4aef4a8709" targetRef="sid-4774809a-d1b2-4c1b-96d5-86b9faf8c0f6"/><sequenceFlow id="sid-10847d4f-0f3f-4032-9116-9c14bbcef60e" sourceRef="sid-4774809a-d1b2-4c1b-96d5-86b9faf8c0f6" targetRef="sid-39a81a5f-b2ae-4a3a-aea4-750eead4229b"/></subProcess><sequenceFlow id="sid-c0064993-d7bc-4b80-97cd-18a3aef704c5" sourceRef="sid-2b45eebc-75fa-465c-b870-4159a15df689" targetRef="sid-b8b56b6f-35ae-4367-8c40-628321034b15"/><sequenceFlow id="sid-5a6e8042-f8d6-4df5-a9e1-8d2ebdb782a0" sourceRef="sid-507da2f8-ca68-4e25-a256-c9e4e98a8e30" targetRef="sid-2b45eebc-75fa-465c-b870-4159a15df689"/><sequenceFlow id="sid-38d41002-c4d5-4e24-94dd-f783a76eafac" sourceRef="sid-b8b56b6f-35ae-4367-8c40-628321034b15" targetRef="sid-312fd1bd-1a79-46f1-956c-b89aab8a03af"/></process>

       

2. 事件子流程

(1)说明
        和内嵌子流程类似,把一系列的活动归结到一起处理,不同之处在于事件子流程不能直接启动,要被动地由其它的事件触发启动。事件子流程可以通过消息事件、错误事件、信号事件、定时器事件或补偿事件等触发。不能在事件子流程中使用空启动事件。

(2)示例

  <error id="errorName" errorCode="500"/><process id="demo" name="demo" isExecutable="true"><startEvent id="sid-507da2f8-ca68-4e25-a256-c9e4e98a8e30"/><userTask id="sid-2b45eebc-75fa-465c-b870-4159a15df689" name="业务1" flowable:assignee="zj1"/><sequenceFlow id="sid-5a6e8042-f8d6-4df5-a9e1-8d2ebdb782a0" sourceRef="sid-507da2f8-ca68-4e25-a256-c9e4e98a8e30" targetRef="sid-2b45eebc-75fa-465c-b870-4159a15df689"/><sequenceFlow id="sid-6f4a2116-6f18-4bd6-b65c-c8fe7206e0ed" sourceRef="sid-2b45eebc-75fa-465c-b870-4159a15df689" targetRef="sid-312fd1bd-1a79-46f1-956c-b89aab8a03af"/><endEvent id="sid-312fd1bd-1a79-46f1-956c-b89aab8a03af"><errorEventDefinition errorRef="errorName"/></endEvent><subProcess triggeredByEvent="true" id="sid-45854983-401e-4b42-a19b-c7b1b329fea7" flowable:exclusive="true"><startEvent id="sid-9e7d64f5-69d6-4a3a-a91f-c0fadd2f85d4"><errorEventDefinition errorRef="errorName"/></startEvent><userTask id="sid-272840fa-915e-4fc6-a118-9d5b3357f438" name="业务2" flowable:assignee="zj2"/><endEvent id="sid-7cb94afc-5c74-4195-ba9f-6782b0797c8f"/><sequenceFlow id="sid-98cedd4b-0da3-493e-9645-97ec51404bde" sourceRef="sid-9e7d64f5-69d6-4a3a-a91f-c0fadd2f85d4" targetRef="sid-272840fa-915e-4fc6-a118-9d5b3357f438"/><sequenceFlow id="sid-926b5b9c-ea1d-4000-a3fe-2af432a2021e" sourceRef="sid-272840fa-915e-4fc6-a118-9d5b3357f438" targetRef="sid-7cb94afc-5c74-4195-ba9f-6782b0797c8f"/></subProcess></process>

3. 调用活动

(1)说明
        调用活动可以引用流程定义外部的流程,当执行到调用活动时启动引用的外部流程,当外部流程执行完后转到当前流程下一节点。

(2)示例

  <process id="demo" name="demo" isExecutable="true"><startEvent id="sid-507da2f8-ca68-4e25-a256-c9e4e98a8e30"/><userTask id="sid-2b45eebc-75fa-465c-b870-4159a15df689" name="业务1" flowable:assignee="zj1"/><sequenceFlow id="sid-5a6e8042-f8d6-4df5-a9e1-8d2ebdb782a0" sourceRef="sid-507da2f8-ca68-4e25-a256-c9e4e98a8e30" targetRef="sid-2b45eebc-75fa-465c-b870-4159a15df689"/><callActivity id="sid-bb4cd254-3b40-4c57-a27d-a7f855001cd7" name="调用活动" calledElement="processId"/><sequenceFlow id="sid-31dc97ee-52a5-4d1d-b62a-cb4609102abf" sourceRef="sid-2b45eebc-75fa-465c-b870-4159a15df689" targetRef="sid-bb4cd254-3b40-4c57-a27d-a7f855001cd7"/><userTask id="sid-b4291f3a-0b40-46e3-9048-480904d956bc"/><endEvent id="sid-91b8b5a7-e377-426b-9380-6557d2199343"/><sequenceFlow id="sid-246011bc-4109-4857-9f91-bdfefec621f7" sourceRef="sid-b4291f3a-0b40-46e3-9048-480904d956bc" targetRef="sid-91b8b5a7-e377-426b-9380-6557d2199343"/><sequenceFlow id="sid-a52c08d4-99e0-4925-9ed5-3b6b5f482f7a" sourceRef="sid-bb4cd254-3b40-4c57-a27d-a7f855001cd7" targetRef="sid-b4291f3a-0b40-46e3-9048-480904d956bc"/></process>

4. 自组织子流程

(1)说明
        自组织子流程是子流程的一种,其内部包含一组无需定义先后顺序和依赖的活动。在流程中事先定义好一组活动,但活动的执行顺序是活动的执行者确定。
        completionCondition标签需要在内部任务的最后面,可在代码中指定要实现的任务,该表达式成立时退出子流程流转到主流程下一节点。

(2)示例

  <process id="demo" name="demo" isExecutable="true"><startEvent id="sid-507da2f8-ca68-4e25-a256-c9e4e98a8e30"/><userTask id="sid-2b45eebc-75fa-465c-b870-4159a15df689" name="业务1" flowable:assignee="zj1"/><sequenceFlow id="sid-5a6e8042-f8d6-4df5-a9e1-8d2ebdb782a0" sourceRef="sid-507da2f8-ca68-4e25-a256-c9e4e98a8e30" targetRef="sid-2b45eebc-75fa-465c-b870-4159a15df689"/><endEvent id="sid-91b8b5a7-e377-426b-9380-6557d2199343"/><adHocSubProcess id="sid-4d483bad-7247-49ca-bea6-75d0d0c6ee04"><userTask id="sid-1c48808c-00c4-45bb-96c2-db7e3db810b7"/><serviceTask id="sid-45246be8-bdc2-4951-979e-cece074d5f1a" flowable:exclusive="true"/><completionCondition>${flag}</completionCondition></adHocSubProcess><sequenceFlow id="sid-7fa29c4a-91d0-4104-9454-09f48c38267c" sourceRef="sid-2b45eebc-75fa-465c-b870-4159a15df689" targetRef="sid-4d483bad-7247-49ca-bea6-75d0d0c6ee04"/><sequenceFlow id="sid-d08ed212-288a-4c17-b228-6691774bd2cc" sourceRef="sid-4d483bad-7247-49ca-bea6-75d0d0c6ee04" targetRef="sid-91b8b5a7-e377-426b-9380-6557d2199343"/></process>

// 查询子流程的执行流
Execution exe = runtimeService.createExecutionQuery().processInstanceId(String instanceId).activityId(String activityId).singleResult();
// 让执行流到指定任务
runtimeService.executeActivityInAdhocSubProcess(String executionId,String activityId);

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/116289.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

十四、流式编程(2)

本章概要 中间操作 跟踪和调试流元素排序移除元素应用函数到元素在 map() 中组合流 中间操作 中间操作用于从一个流中获取对象&#xff0c;并将对象作为另一个流从后端输出&#xff0c;以连接到其他操作。 跟踪和调试 peek() 操作的目的是帮助调试。它允许你无修改地查看…

Learn Prompt- Midjourney 图片生成:基本设置和预设

/settings指令为模型版本、样式值、质量值和升级器版本等常用选项提供切换按钮。 备注 添加到提示末尾的参数将覆盖/settings中的设置。 模型版本​ 1️⃣ MJ Version 12️⃣ MJ Version 23️⃣ MJ Version 34️⃣ MJ Version 45️⃣ MJ Version 5&#x1f308; Niji Mode&a…

数据结构与算法-时间复杂度与空间复杂度

数据结构与算法 &#x1f388;1.概论&#x1f52d;1.1什么是数据结构&#xff1f;&#x1f52d;1.2什么是算法&#xff1f; &#x1f388;2.算法效率&#x1f52d;2.1如何衡量一个算法的好坏&#xff1f;&#x1f52d;2.2算法的复杂度&#x1f52d;2.3时间复杂度&#x1f4d6;2…

Swift SwiftUI 隐藏键盘

如果仅支持 iOS 15 及更高版本&#xff0c;则可以通过聚焦和取消聚焦来激活和关闭文本字段的键盘。 在最简单的形式中&#xff0c;这是使用 FocusState 属性包装器和 focusable() 修饰符完成的-第一个存储一个布尔值&#xff0c;用于跟踪第二个当前是否被聚焦。 Code struct C…

分类预测 | MATLAB实现WOA-CNN-GRU-Attention数据分类预测

分类预测 | MATLAB实现WOA-CNN-GRU-Attention数据分类预测 目录 分类预测 | MATLAB实现WOA-CNN-GRU-Attention数据分类预测分类效果基本描述模型描述程序设计参考资料 分类效果 基本描述 1.MATLAB实现WOA-CNN-GRU-Attention数据分类预测&#xff0c;运行环境Matlab2021b及以上&…

使用python处理MNIST数据集

文章目录 一. MNIST数据集1.1 什么是MNIST数据集1.2MNIST数据集文件格式1.3使用python访问MNIST数据集文件内容 附录程序源码 一. MNIST数据集 1.1 什么是MNIST数据集 MNIST数据集是入门机器学习/识别模式的最经典数据集之一。最早于1998年Yan Lecun在论文:[Gradient-based l…

yolo增加slide loss,改善样本不平衡问题

slide loss的主要作用是让模型更加关注难例&#xff0c;可以轻微的改善模型在难例检测上的效果 论文地址&#xff1a;https://arxiv.org/pdf/2208.02019.pdf 代码&#xff1a;GitHub - Krasjet-Yu/YOLO-FaceV2: YOLO-FaceV2: A Scale and Occlusion Aware Face Detector 样本不…

2023年“羊城杯”网络安全大赛 决赛 AWDP [Break+Fix] Web方向题解wp 全

终于迎来了我的第一百篇文章。 这次决赛赛制是AWDP。BreakFix&#xff0c;其实就是CTFFix&#xff0c;Fix规则有点难崩。Break和Fix题目是一样的。 总结一下&#xff1a;败北&#xff0c;还是太菜了得继续修炼一下。 一、Break ezSSTI 看到是SSTI&#xff0c;焚靖直接一把梭…

软件设计模式系列之十三——享元模式

1 模式的定义 享元模式&#xff08;Flyweight Pattern&#xff09;是一种结构型设计模式&#xff0c;它旨在减少内存占用或计算开销&#xff0c;通过共享大量细粒度对象来提高系统的性能。这种模式适用于存在大量相似对象实例&#xff0c;但它们的状态可以外部化&#xff08;e…

2023华为杯数学建模竞赛E题

一、前言 颅内出血&#xff08;ICH&#xff09;是由多种原因引起的颅腔内出血性疾病&#xff0c;既包括自发性出血&#xff0c;又包括创伤导致的继发性出血&#xff0c;诊断与治疗涉及神经外科、神经内科、重症医学科、康复科等多个学科&#xff0c;是临床医师面临的重要挑战。…

免费获取独立ChatGPT账户!!

GPT对于每个科研人员已经成为不可或缺的辅助工具&#xff0c;不同的研究领域和项目具有不同的需求。如在科研编程、绘图领域&#xff1a;1、编程建议和示例代码: 无论你使用的编程语言是Python、R、MATLAB还是其他语言&#xff0c;都可以为你提供相关的代码示例。2、数据可视化…

2023 年 Android 毕业设计选题推荐,200 道 Android 毕业设计题目,避免踩坑

前言 选择一个Android毕业设计题目是一个重要的决策&#xff0c;它将影响你未来几个月的工作。以下是一些关于如何选择一个合适的Android毕业设计题目以及如何避免踩坑的建议&#xff1a; 兴趣和热情&#xff1a;首先&#xff0c;选择你真正感兴趣的领域。如果你对某个领域充…