如何指定应从 BPMN callActivity 调用哪个启动事件

2024-01-03

From http://www.omg.org/spec/BPMN/2.0.2/PDF http://www.omg.org/spec/BPMN/2.0.2/PDF第 238 页:

如果该进程用作全局进程(可调用进程 可以从其他进程的调用活动中调用)并且有 多个无启动事件,然后当流从 全局进程的父进程,仅全局进程之一 将触发开始事件。序列的 targetRef 属性 传入呼叫活动对象的流可以扩展以识别 适当的开始事件。

如何扩展 targetRef 属性? 不是必须是有效的 IDREF 吗? 也许他们的意思是应该使用自定义属性来扩展sequenceFlow 元素?

有这样的扩展的例子吗? 现有的 BPMN 工具支持吗?

这是我手工编辑的 BPMN 片段来说明问题:

<?xml version="1.0" encoding="UTF-8"?>
<definitions xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL">
  <process id="p1" name="Process 1" isExecutable="false" processType="Private">
    <sequenceFlow id="startAflow" sourceRef="start" targetRef="A"/>
    <sequenceFlow id="callActivityFlow" sourceRef="A" targetRef=" !? WHAT_GOES_HERE ?! "/>
    <startEvent id="start" name="Start">
      <outgoing>startAflow</outgoing>
    </startEvent>
    <task id="A">
      <incoming>startAflow</incoming>
      <outgoing>callActivityFlow</outgoing>
    </task>
    <callActivity id="call" calledElement="p2">
      <incoming>callActivityFlow</incoming>
    </task>
  </process>
  <process id="p2" name="Process 2" isExecutable="false" processType="Private">
    <sequenceFlow id="start2Aflow" sourceRef="start1" targetRef="2A"/>
    <sequenceFlow id="start2Bflow" sourceRef="start2" targetRef="2B"/>
    <startEvent id="start1" name="Start">
      <outgoing>start2Aflow</outgoing>
    </startEvent>
    <task id="2A">
      <incoming>start2Aflow</incoming>
    </task>
    <startEvent id="start2" name="Start in middle of process">
      <outgoing>start2Bflow</outgoing>
    </startEvent>
    <task id="2B">
      <incoming>start2Bflow</incoming>
    </task>
  </process>
</definitions>

我们实际上在 camunda 内部讨论了这个问题 - 但决定不支持它(现状)。到目前为止,我们还没有看到现实生活中对这种结构的真正需求。这是相当深奥的,我不认为它是最佳实践。

对于“将现有进程实例从另一个工具迁移到 camunda”的用例,我们使用了另一个构造来利用消息启动事件和调用活动的扩展在特定状态下启动子进程 - 这似乎更容易理解,请参阅https://network.camunda.org/whitepaper/5 https://network.camunda.org/whitepaper/5

干杯 贝恩德

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何指定应从 BPMN callActivity 调用哪个启动事件 的相关文章

  • Activiti 工作流引擎 详解

    Activiti 工作流引擎 详解 1 Activiti工作流概述 1 1 工作流概述 1 2 工作流系统 1 3 Activiti概述 1 4 BPM 2 Activiti工作流环境搭建 3 Activiti 类 配置文件之间的关系 3
  • 万字详解:Activiti 工作流引擎

    点击上方 芋道源码 选择 设为星标 管她前浪 还是后浪 能浪的浪 才是好浪 每天 10 33 更新文章 每天掉亿点点头发 源码精品专栏 原创 Java 2021 超神之路 很肝 中文详细注释的开源项目 RPC 框架 Dubbo 源码解析 网
  • Activiti使用教程

    1 概念 首先需要分清三个概念 流程 流程实例 任务实例 Activiti提供4个bean来操作流程 RepositoryService RuntimeService TaskService HistoryService 2 流程 针对于某
  • 请假流程

    作者 nogocn 在某一公司中 部门员工要休假的话需要部门主管的批准 如果休假天数大于10天的话 在部门主管的同意后 还必须上级主管批准 如果是部门主管要休假只要上级主管批准即可 在休假被批准之前 申请人可以撤销休假申请 每个员工还有多少
  • Activiti7源码分析

    文章目录 Activiti7源码分析 整体架构 命令模式 责任链模式 事务拦截器 命令上下文拦截器 流程定义解析 Activiti之PVM执行树 核心理念 PVM对流程定义期的描述 PVM对流程运行期的描述 PVM综述 ActivitiIm
  • Activiti 学习(二)—— Activiti 流程定义和部署

    概述 在这一节 我们将创建一个 Activit 工作流 并启动这个流程 主要包含以下几个步骤 定义流程 按照 BPMN 的规范 使用流程定义工具 用流程符号把整个流程描述出来 部署流程 把画好的流程定义文件 加载到数据库中 生成表的数据 流
  • Activiti启动流程实例,runtimeService.startProcessInstanceByKey

    启动流程实例 添加进businessKey 本质 act ru execution表中的businessKey的字段要存入业务标识 public class BusinessKeyAdd public static void main St
  • activiti学习之服务任务

    写在前面 对于工作流 我们使用最多的是用户任务节点 用户任务节点就是给用户来生成任务的 需要人来手动的处理 而与之对应的还有服务任务节点 这种类型的节点需要人手动的参与而是程序来执行 即执行某个类的某个方法 这个类一般是org activi
  • [Activiti 资料]Activiti 画图工具(activiti-designer,actiBPM,activiti-app)

    1 eclipse eclipse的画流程工具 activiti designer 1 1 直接下载Eclipse 或者下载已经安装了activiti designer的eclipse 既然你下载到了 怎么也礼节性的感谢一下哈 链接 htt
  • Springboot集成activiti的配置文件ActivitiConfig

    Configuration public class ActivitiConfig Bean public ProcessEngineConfiguration processEngineConfiguration DataSource d
  • Activiti定时器事件

    定时器事件用于在特定的日期 时间或者周期触发一个事件 它们可以用做开始事件 中间事件 边界事件 边界事件可以是中断的 也可以是非中断的 默认是中断事件 即当触发定时器时 原执行实例会被删除 开始事件定时器 定时器开始事件用于在指定的时间点或
  • 配置 workitemhandler 在 JBPM 7 中发送电子邮件

    下面是当前我们必须在 JBPM 7 32 中发送电子邮件的工作项处理程序 但我们收到错误java lang RuntimeException Unable to send email new org jbpm process workite
  • 【工作流Activiti】Activiti的使用

    1 数据库支持 Activiti 运行必须要有数据库的支持 支持的数据库有 mysql oracle postgres mssql db2 h2 2 Activiti环境 我们直接在当前项目 guigu oa parent做Activiti
  • 如何查询流程定义的运行实例?

    camunda引擎是否提供API来查询某个进程的所有正在运行的实例 此查询是否也包含挂起的实例 您可以使用以下代码查询某个流程的所有正在运行的流程实例 package org camunda bpm import org camunda b
  • 如何开发 visio 加载项

    我想创建一个 visio 插件 以便可以绘制 BPMN 图 业务流程建模符号 类似的工作可以在这里找到 http www interface com free visio bpmn modeler http www interfacing
  • 如何查询流程实例的位置?

    我想获取进程中单个实例的当前位置 除了 id 之外 是否可以获取活动的名称作为返回值 您可以使用以下代码获取流程实例的当前位置 当流程在多个位置等待时 该代码还将为您提供活动的名称 package org camunda bpm impor
  • 有适用于 .NET 的 BPMN 2.0 解析器吗?

    一般来说 我正在寻找一种对业务流程进行建模的方法 我经常找到 UML 和 BPMN 作为这个问题的答案 现在我想用程序检查这个模型 只有一个 UML 规范这个元素应该是什么样子 而不是这个不同的模型应该如何保存 这就是我仔细研究 BPMN
  • 包含或异或有什么区别?

    我一直在研究一些业务流程执行语言 BPEL 和相关的建模系统 BPMN 其中设计人员需要了解流程流的包容性和排他性网关 非常感谢您的帮助 假设适用相同的规则 对术语的一般解释就足够了 这是我试图理解的一些技术文本对马克的回应 对于连接两个活
  • 动态设置用户任务受让人

    我必须在 activiti 中创建需要以下用例的流程 1 表单有一个人员搜索字段 2 当有人填写表单并使用填充姓名的人员搜索字段完成任务时 我需要将分配的下一个任务的名称设置为可以对下一个任务执行操作的用户 如何使用 activiti 引擎
  • 如何导入和导出 JBPM 6.5 存储库

    我想问您是否知道如何在不同的 Kie Workbench 之间导出和导入 JBPM 项目 我正在使用 JBPM 6 5 谢谢 使用 Git 可能是唯一合理的方法 按照此顺序 可以将项目放入 git 存储库 然后将其导入到其他实例 在装有 j

随机推荐