BPMN 2.0 用户任务表单可移植性

BPMN 2.0 user task forms portability

我遇到了 BPMN 2.0 可移植性的障碍。我们一直在使用 Activiti Eclipse 插件来编辑方案,并且在某种程度上它运行良好。然后我们遇到了Activiti Eclipse插件编辑器无法添加边界错误事件的问题。因此,我们尝试使用 Camunda Eclipse 插件,并且能够添加错误边界事件。

我们使用Activiti引擎来实际执行这些场景。

现在,使用这两个编辑器,我注意到它们表示用户任务表单的方式不同:

<userTask id="usertask3" activiti:formKey="choice" name="handle error">
  <extensionElements>
    <!-- This is produced by Activiti Eclipse plug-in editor. -->
    <activiti:formProperty id="ut" name="ut" type="string" variable="ut">
      <activiti:value id="u0" name="u0"/>
      <activiti:value id="u1" name="u1"/>
      <activiti:value id="u2" name="u2"/>
    </activiti:formProperty>
    <!-- This is produced by Camunda Eclipse plug-in editor.  -->
    <activiti:formData>
      <activiti:formField id="nextAction" label="Next action" type="string">
        <activiti:properties>
          <activiti:property id="task1" value="task1"/>
          <activiti:property id="task2" value="task2"/>
          <activiti:property id="task3" value="task3"/>
        </activiti:properties>
      </activiti:formField>
    </activiti:formData>
  </extensionElements>
  <incoming>_5</incoming>
  <incoming>_10</incoming>
  <incoming>_12</incoming>
  <outgoing>_8</outgoing>
</userTask>

在我看来,Activiti 引擎忽略了 Camunda Eclipse 插件编辑器保存的内容。

我很困惑为什么用户表单有两种不同的表示形式?这不规范吗?

用户表单不是 BPMN 标准的一部分。

如您所见,与表单相关的标签位于 extensionElements 标签下,属于使用前缀 activiti.

的特定命名空间

extensionElements 标签是 BPMN 标准的一部分(参见 BPMN 标准 2.0.2 的第 8.2.3 节或 XML schema),其目的是允许供应商对标准进行特定扩展(例如表格)。

Camunda 是 Activiti 的一个分支,我认为他们可能对那些特定的扩展点做了一些修改,导致一些不兼容。