第 14 章  过程定义语言


过程定义语言 (jPDL)是一种表示法,用于定义由 jBPM 框架识别的进程,并表示为 XML 模式。除了 jPDL 文档外,流程定义还需要支持文件。所有这些文件都打包到用于部署 的进程存档中

14.1.  进程归档

进程存档只是具有特定内容布局的 ZIP 存档。进程存档中的中央文件称为 processdefinition.xml,该文件以 jPDL 表示法定义业务进程,并提供有关自动操作和人类任务的信息。进程存档还包含与进程相关的其他文件,如操作处理程序类和用户界面任务表单。

14.1.1.  部署进程归档

您可以通过以下任一方式部署 进程存档
  • 通过 流程设计器工具
  • 使用 ant 任务
  • programatically
要使用 流程设计器工具 部署进程存档,请右键单击进程存档文件夹并选择 Deploy process archive 选项。
jBPM 应用服务器集成模块包括 gpd-deployer Web 应用程序,它有一个 servlet 来上传进程存档,称为 GPD Deployer Servlet。此 servlet 能够接收进程存档并将其部署到配置的数据库中。
要使用 ant 任务部署进程存档,请按如下所示定义并调用任务:
<target name="deploy-process">
  <taskdef name="deployproc" classname="org.jbpm.ant.DeployProcessTask">
    <classpath location="jbpm-jpdl.jar" />
  </taskdef> 
  <deployproc process="build/myprocess.par" />
</target>
Copy to Clipboard Toggle word wrap
要一次部署更多进程存档,请使用嵌套 fileset 元素。以下是 DeployProcessTask 属性。
Expand
表 14.1. DeployProcessTask 属性
属性 描述 必需?
process
进程存档的路径。
是,除非使用了嵌套资源 collection 元素。
jbpmcfg
在部署过程中加载的 jBPM 配置资源。
no; 默认为 jbpm.cfg.xml
failonerror
如果为 false,记录警告消息,但不会停止构建,当进程定义无法部署时。
否;默认为 true
要以编程方式部署进程存档,请使用 org.jbpm.graph.def.ProcessDefinition 类的 parseXXX 方法之一。

14.1.2.  进程版本控制

进程实例始终与启动它们相同的进程定义上执行。但是,Eroon 允许多个同名的进程定义在数据库中共存。通常,一个进程实例在当前可用的最新版本中启动,它会在其完整生命周期内保留在同一进程定义中执行。部署新版本时,新创建的实例将在最新版本中启动,旧的进程实例则保留在旧的进程定义中执行。
如果进程包含对 Java 类的引用,则可以通过以下两种方式之一提供给 jBPM 运行时环境:
  • 通过确保这些类对 jBPM 类加载程序可见。
    为此,请将委派类放在 .jar 文件 "next to" jbpm-jpdl.jar 中,以便所有进程定义都将看到该类文件。Java 类也可以包含在进程存档中。当您在进程存档中包含委派类(且它们对 jbpm 类加载器不可见)时,QVIUS 也会在进程定义中版本这些类。
    注意
    通过阅读了解更多有关进程分类的信息 第 14.2 节 “委派”
部署进程存档时,会在 192.168.1.0/24 数据库中创建 一个进程定义。版本进程定义的名称。部署命名进程存档时,部署程序会为它分配一个版本号。它通过搜索分配给相同名称的进程定义的最大数字,然后将一个添加到该值中。(未命名的进程定义始终被版本为 -1。)

14.1.3.  更改部署的进程定义

警告
在部署后更改进程定义不是推荐的做法。最好将进程实例迁移到进程定义的新版本。
在进入此过程前请考虑这些因素:
  • 更新通过 org.jbpm.db.GraphSession 方法 loadProcessDefinitionfindProcessDefinition 或通过关联遍历访问的进程定义没有限制。然而,使用几个调用(如 setStartState(null)!) 非常容易 地设置进程。
  • 因为进程定义不应更改,因此提供的 Hibernate 配置指定了 nonstrict-read-write 缓存策略来定义类和集合。此策略可使未提交的更新对其他事务可见。

14.1.4.  迁移过程实例

更改进程定义的替代方法是将每个进程实例迁移到新版本。请考虑,由于业务流程的长期性质,迁移并不是微小的。
注意
这是一个实验性功能。
定义数据、执行数据和日志数据之间存在明显的区别。因此,必须首先部署新版本的进程,然后进程实例将迁移到新版本。如果令牌或任务实例指向目标进程定义中已删除的节点或任务定义,则迁移涉及转换。请注意,日志数据最终分布到两个进程定义中。这在开发工具和进行统计计算时可能会造成挑战。
要将进程实例迁移到新版本,请执行 ChangeProcessInstanceVersionCommand,如下所示。
new ChangeProcessInstanceVersionCommand()
  .processName("commute")
  .nodeNameMappingAdd("drive to destination", "ride bike to destination")
  .execute(jbpmContext);
Copy to Clipboard Toggle word wrap

14.2. 委派

使用委派 机制在进程执行中包含自定义代码。

14.2.1.  jBPM Class Loader

jBPM 类加载程序是加载了 jBPM 类的加载。要使类对 xmvn 类加载器可见,将它们打包到 JAR 文件中,并将 JAR 与 jbpm-jpdl.jar 并置在一起。如果是 Web 应用,请将自定义 JAR 文件放在 WEB-INF/libjbpm-jpdl.jar 中。

14.2.2.  Process Class Loader

委派类通过相应的 进程类加载器 加载。进程类加载器将 lsblk 类加载器作为其父项。它添加了使用特定进程定义部署的类。要在进程定义中添加类,请将它们放在进程存档 的类 目录中。请注意,这只在您要版本添加到进程定义的类时才有用。如果不需要版本控制,请使类可供 jBPM 类加载程序使用。
如果资源名称没有以斜杠开头,则资源也会从进程存档 的类 目录中加载。要载入位于这个目录之外的资源,请使用双正斜杠(//)启动路径。例如:要加载位于进程归档 root 中的 data.xml,请调用 class.getResource("//data.xml")

14.2.3.  配置委派

委派类包含从进程执行期间调用的用户代码,最常见的示例就是一个 操作。如果是操作,可在进程的事件上调用 ActionHandler 接口的实施。委派在 processdefinition.xml 文件中指定。您可以在指定委托时提供这三个数据:
  1. 类名称(必需):这是委派类的完全限定名称。
  2. 配置类型(可选):这指定了实例化和配置委派对象的方法。默认情况下,使用构造器并忽略配置信息。
  3. 配置(可选):这是委派对象的配置,必须采用配置类型所需的格式。
以下是每种配置类型的描述:

14.2.3.1.  config-type 字段

这是默认配置类型。config-type 字段首先实例化委派类的对象,然后在配置中指定的对象字段中设置值。配置存储在 XML 文件中。在这个文件中,元素名称必须与类的字段名称对应。元素的内容文本放在对应的字段中。如果同时需要这样做,则元素的内容文本将转换为字段类型。
以下是支持的类型转换:
  • 字符串会被修剪,但不会转换。
  • 原语类型,如 int, long, float, double, ...
  • 原语类型的基本打包程序类。
  • 列出、集合和集合。在这些情况下,xml-content 的每个元素都被视为集合的元素,并递归解析,并应用转换。如果元素类型与 java.lang.String 不同,则通过指定具有完全限定类型名称的 type 属性来指示这一点。例如,这个代码将字符串的 ArrayList 注入 numbers 字段中:
    <numbers>
      <element>one</element>
      <element>two</element>
      <element>three</element>
    </numbers>
    Copy to Clipboard Toggle word wrap
    您可以将元素中的文本转换为具有字符串构造器的任何对象。要使用字符串以外的类型,请在 字段中指定 element-type (本例中为numbers )。
    以下是映射的另一个示例:
    <numbers>
      <entry><key>one</key><value>1</value></entry>
      <entry><key>two</key><value>2</value></entry>
      <entry><key>three</key><value>3</value></entry>
    </numbers>
    Copy to Clipboard Toggle word wrap
  • 在这种情况下,每个字段元素都应该有一个 key 和一个 value 子元素。使用转换规则递归解析这两个规则。与集合一样,如果您没有指定 type 属性,它将假定转换为 java.lang.String
  • org.dom4j.Element
  • 对于任何其他类型,使用字符串构造器。
查看这个类:
public class MyAction implements ActionHandler {
  // access specifiers can be private, default, protected or public
  private String city;
  Integer rounds;
  ...
}
Copy to Clipboard Toggle word wrap
这是该类的有效配置:
...
<action class="org.test.MyAction">
  <city>Atlanta</city>
  <rounds>5</rounds>
</action>
...
Copy to Clipboard Toggle word wrap

14.2.3.2.  config-type bean

这与 config-type 字段相同,但在这种情况下,属性是通过"setter"方法配置的。它们直接在字段中设置。使用相同的转换。

14.2.3.3.  config-type constructor

此方法采用 delegation XML 元素的完整内容,并将它们作为文本传递给委派类构造器。

14.2.3.4.  config-type configuration-property

如果您使用默认构造器,这个方法将使用 delegation XML 元素的完整内容,并在 void configure(String); 方法中将其传递为文本。

14.3.  表达式

对类似 JSP/JSP EL 的表达式语言有有限的支持。在操作、分配和决策条件中,您可以编写这类表达式: expression="#{myVar.handler[assignments].assign}"
注意
要了解此表达式语言,请教程: http://java.sun.com/j2ee/1.4/docs/tutorial/doc/JSPIntro7.html
jPDL 和 JSF 表达式语言类似。jPDL EL 基于 JSF EL,但与后者相反,它使用 #{...} 表示法并包括对 method-binding 的支持。
根据上下文,进程和任务实例变量可用作启动变量,就像以下隐式对象一样:
  • taskInstance (org.jbpm.taskmgmt.exe.TaskInstance)
  • processInstance (org.jbpm.graph.exe.ProcessInstance)
  • processDefinition (org.jbpm.graph.def.ProcessDefinition)
  • token (org.jbpm.graph.exe.Token)
  • taskMgmtInstance (org.jbpm.taskmgmt.exe.TaskMgmtInstance)
  • contextInstance (org.jbpm.context.exe.ContextInstance)
JBoss SEAM 环境中使用时,此功能变得强大http://www.jboss.com/products/seam。由于 J114 和 SEAM 之间的集成,每个支持的 bean、企业 Java Bean 等都可从进程定义内访问。

14.4.  jPDL XML Schema

jPDL 模式是进程归档的进程 definition.xml 文件中使用的模式。

14.4.1.  验证

在解析 jPDL XML 文档时,在满足这两个条件时,QPDL XML 文档将根据模式进行验证:
  1. 该 schema 在 XML 文档中引用:
    <process-definition xmlns="urn:jbpm.org:jpdl-3.2">
      ...
    </process-definition>
    Copy to Clipboard Toggle word wrap
  2. Xerces 解析器位于 class-path 中。
注意
${jbpm.home}/src/java.jbpm/org/jbpm/jpdl/xml/jpdl-3.2.xsd 或 at 中找到 http://jbpm.org/jpdl-3.2.xsd jPDL 模式。

14.4.2.  process-definition

Expand
表 14.2. 进程定义架构
Name 类型 Multiplicity 描述
name attribute optional 这是进程的名称
swimlane 元素 [0..*] 这些是在进程中使用的 swim-lanes。swim-lanes 代表进程角色,用于任务分配。
start-state 元素 [0..1] 这是进程的启动状态。请注意,没有 start-state 的进程有效,但不能执行。
{end-state|state|node|task-node|process-state|super-state|fork|join|decision} 元素 [0..*] 这些是进程定义的节点。请注意,没有节点的进程有效,但不能执行。
event 元素 [0..*] 它们充当操作的容器
{action|script|create-timer|cancel-timer} 元素 [0..*] 这些是全局定义的操作,可以从事件和转换中引用。请注意,这些操作必须指定名称才能被引用。
task 元素 [0..*] 这些是全局定义的任务,可用于操作。
exception-handler 元素 [0..*] 这是这些异常处理程序的列表,适用于此进程定义中委派类抛出的所有错误。

14.4.3. node

Expand
表 14.3. 节点架构
Name 类型 Multiplicity 描述
{action|script|create-timer|cancel-timer} 元素 1 这是一个自定义操作,它代表了此节点的行为
常见节点元素 第 14.4.4 节 “常见节点元素”

14.4.4. 常见节点元素

Expand
表 14.4. 常见节点架构
Name 类型 Multiplicity 描述
name attribute required 这是节点的名称
async attribute { true | false }, false 是默认值 如果设置为 true,则此节点将异步执行。另请参阅 第 10 章 异步约定
Trans 元素 [0..*] 这些是离开的转换。每个离开节点的转换都必须有不同的名称。最多允许保留转换之一没有名称。指定的第一个转换称为默认转换。当节点没有指定转换时,进行默认转换。
event 元素 [0..*] 支持的事件类型有两种: {node-enter|node-leave}
exception-handler 元素 [0..*] 这是一个异常处理程序列表,适用于此进程节点中委派类抛出的每个 bug。
timer 元素 [0..*] 这将指定监控此节点中执行的持续时间的计时器。

14.4.5. start-state

Expand
表 14.5. Start State Schema
Name 类型 Multiplicity 描述
name attribute optional 这是节点的名称
task 元素 [0..1] 这是用于为此过程启动新实例或捕获进程发起方的任务。请查看 第 8.7 节 “ Start Task 中的 Swimlane ”
event 元素 [0..*] 这是支持的事件类型: {node-leave}
Trans 元素 [0..*] 这些是离开的转换。每个离开节点的转换都必须具有不同的名称。
exception-handler 元素 [0..*] 这是一个异常处理程序列表,适用于此进程节点中委派类抛出的每个 bug。

14.4.6. end-state

Expand
表 14.6. 结束状态架构
Name 类型 Multiplicity 描述
name attribute required 这是结束状态的名称
end-complete-process attribute optional 如果 end-complete-process 设置为 false,则只有令牌包含此结束状态已完成。如果这个令牌是结尾的最后一个子令牌,则父令牌将递归结束。将此属性设置为 true,以确保结束整个进程实例。
event 元素 [0..*] 支持的事件类型是 {node-enter}
exception-handler 元素 [0..*] 这是一个异常处理程序列表,适用于此进程节点中委派类抛出的每个 bug。

14.4.7. state

Expand
表 14.7. State Schema
Name 类型 Multiplicity 描述
常见节点元素 请查看 第 14.4.4 节 “常见节点元素”

14.4.8. task-node

Expand
表 14.8. 任务节点架构
Name 类型 Multiplicity 描述
signal attribute optional 这可以是 {unsynchronized|never|first|first-wait|last|last-wait},默认值为 last。它指定任务完成对进程执行持续的影响 的方式
create-tasks attribute optional 这可以是 {yes|no|true|false},默认值为 true。当必须在运行时计算时,将其设置为 false,以确定必须创建哪些任务。在这种情况下,在 node-enter 中添加一个操作,在操作中创建任务,并将 create-tasks 设置为 false
end-tasks attribute optional 这可以是 {yes|no|true|false},默认值为 false。如果在 remove-tasks 上将 true 设置为 node-leave,则每个打开的任务都会结束。
task 元素 [0..*] 这些是在执行此任务节点时创建的任务。
常见节点元素 请查看 第 14.4.4 节 “常见节点元素”

14.4.9. process-state

Expand
表 14.9. 进程状态架构
Name 类型 Multiplicity 描述
子进程 元素 1 这是与此节点关联的子进程。
变量 元素 [0..*] 这将指定数据如何从多进程复制到进程开始的子进程,并在完成子进程后从子进程复制到多进程。
常见节点元素 请查看 第 14.4.4 节 “常见节点元素”

14.4.10. super-state

Expand
表 14.10. 超级状态架构
Name 类型 Multiplicity 描述
{end-state|state|node|task-node|process-state|super-state|fork|join|decision} 元素 [0..*] 这些是超级状态的节点。超级状态可以嵌套。
常见节点元素 请查看 第 14.4.4 节 “常见节点元素”

14.4.11. fork

Expand
表 14.11. fork 架构
Name 类型 Multiplicity 描述
常见节点元素 请查看 第 14.4.4 节 “常见节点元素”

14.4.12. join

Expand
表 14.12. 加入架构
Name 类型 Multiplicity 描述
常见节点元素 请查看 第 14.4.4 节 “常见节点元素”

14.4.13. 决策

Expand
表 14.13. 决策架构
Name 类型 Multiplicity 描述
handler 元素 应该指定"handler"元素或转换条件 org.jbpm.jpdl.Def.DecisionHandler 实现的名称
转换条件 离开决定的转换上的属性或元素文本
每个转换都可能具有保护条件。决策节点检查保留具有条件的转换,然后选择第一个条件为 true 的转换。
如果没有满足条件,则进行 默认 转换。如果存在,或者第一个条件转换,则默认转换是第一个无条件转换。转换以文档顺序考虑。
如果只有条件("保证")转换可用,并且转换时没有条件评估为 true,则会抛出异常。
常见节点元素 请查看 第 14.4.4 节 “常见节点元素”

14.4.14. event

Expand
表 14.14. 事件架构
Name 类型 Multiplicity 描述
type attribute required 这是相对于放置事件的元素表示的事件类型
{action|script|create-timer|cancel-timer} 元素 [0..*] 这是应在此事件上执行的操作列表

14.4.15. Trans

Expand
表 14.15. 转换架构
Name 类型 Multiplicity 描述
name attribute optional 这是转换的名称。请注意,每个转换都离开节点,必须有不同的名称。
to attribute required 这是目标节点的层次结构名称。有关分层名称的更多信息,请参阅 第 6.6.3 节 “ 层次结构名称 ”
条件 属性或元素文本 optional 这是一个 保护条件表达式。在决策节点上使用这些条件属性(或子元素),或者在运行时计算令牌上的可用转换。只有离开决策节点时,才允许条件。
{action|script|create-timer|cancel-timer} 元素 [0..*] 这些是在进行此转换时要执行的操作。请注意,一个转换的操作不需要放入事件中(因为只有一个操作)。
exception-handler 元素 [0..*] 这是一个异常处理程序列表,适用于此进程节点中委派类抛出的每个 bug。

14.4.16. action

Expand
表 14.16. 操作架构
Name 类型 Multiplicity 描述
name attribute optional 这是操作的名称。当赋予名称时,可以从进程定义中查找它们。这可用于运行时操作和声明操作一次。
attibute ref-name 或表达式 这是实施 org.jbpm.graph.def.ActionHandler 接口的类的完全限定域名。
ref-name attibute 这个或类 这是引用的操作的名称。如果指定了引用的操作,则不会进一步处理此操作的内容。
expression attribute 这可以是类或 ref-name 这是一个可解析到方法的 jPDL 表达式。另请参阅 第 14.3 节 “ 表达式 ”
accept-propagated-events attribute optional 这些选项为 {yes|no|true|false}。默认值为 yes|true。如果设置为 false,则操作只会在此操作的元素中触发的事件上执行。如需更多信息,请参阅 第 6.5.3 节 “ 传递事件 ”
config-type attribute optional 这些选项为 {field|bean|constructor|configuration-property}。这将指定如何构建 action-object,以及此元素的内容应如何用作该 action-object 的配置信息。
async attribute {true|false} 'async="true" 仅在事件中触发时才受支持。默认值为 false,这意味着 操作会 在执行的线程中执行。如果设置为 true,则会向命令执行者发送一条信息,该组件将在一个单独的事务中异步执行操作。
{content} optional 操作的内容可用作自定义操作实现的配置信息。这允许创建可重复使用的委托类。

14.4.17. script

Expand
表 14.17. 脚本架构
Name 类型 Multiplicity 描述
name attribute optional 这是 script-action 的名称。当赋予名称时,可以从进程定义中查找它们。这可用于运行时操作和声明操作一次。
accept-propagated-events attribute optional [0..*] {yes|no|true|false}。默认为 yes|true。如果设置为 false,则仅在此操作的元素上触发的事件执行操作。如需更多信息,请参阅 第 6.5.3 节 “ 传递事件 ”
expression 元素 [0..1] beanshell 脚本。如果没有指定变量元素,您可以将表达式编写为 script 元素的内容(忽略 expression 元素标签)。
变量 元素 [0..*] 在脚本的变量中。如果未指定变量,则当前令牌的所有变量都将加载到脚本评估中。如果要限制载入到脚本评估中的变量数量,请使用 in 变量。

14.4.18. expression

Expand
表 14.18. 表达式架构
Name 类型 Multiplicity 描述
{content} bean shell 脚本。

14.4.19. 变量

Expand
表 14.19. 变量架构
Name 类型 Multiplicity 描述
name attribute required 进程变量名称
access attribute optional 默认为 read,write。它是以逗号分隔的访问指定符列表。目前唯一使用的访问指定符是 readwriterequired。"必需"只在将任务变量提交到进程变量时才相关。
mapped-name attribute optional 默认为变量名称。它指定变量名称映射到的名称。mapping-name 的含义取决于使用此元素的上下文。对于脚本,这将是 script-variable-name。对于任务控制器,这将是任务表单参数的标签。对于进程状态,这将是子进程中使用的变量名称。

14.4.20. handler

Expand
表 14.20. 处理器架构
Name 类型 Multiplicity 描述
expression attribute 这或一个类 jPDL 表达式。返回的结果使用 toString ()方法转换为字符串。生成的字符串应与保留转换之一匹配。另请参阅 第 14.3 节 “ 表达式 ”
attribute 这个或 ref-name 实现 org.jbpm.graph.node.DecisionHandler 接口的类的完全限定域名。
config-type attribute optional {field|bean|constructor|configuration-property}。指定如何构建 action-object,以及此元素的内容应如何用作该 action-object 的配置信息。
{content} optional 处理程序的内容可用作自定义处理程序实现的配置信息。这允许创建可重复使用的委托类。

14.4.21. timer

Expand
表 14.21. 计时器架构
Name 类型 Multiplicity 描述
name attribute optional 计时器的名称。如果没有指定名称,则会获取所属节点的名称。请注意,每个计时器都应该具有唯一的名称。
duedate attribute required 持续时间(可选以工作小时表示),用于指定创建计时器和执行计时器之间的时间段。有关语法,请参阅 第 11.1.1 节 “ Duration ”
重复 attribute optional {duration | 'yes' | 'true'} 在过期时执行计时器后,'repeat' (可选)指定重复计时器执行之间的持续时间,直到节点保留为止。如果指定了 yestrue,则重复执行与过期日期相同的持续时间。有关语法,请参阅 第 11.1.1 节 “ Duration ”
Trans attribute optional 触发计时器事件并执行操作(若有)后,执行计时器执行时要执行的一个 Convert-name。
cancel-event attribute optional 此属性仅用于任务的计时器。它指定应取消计时器的事件。默认情况下,这是 task-end 事件,但可以设置为 task-assigntask-start。通过在属性的逗号分隔列表中指定 cancel-event 类型可以合并它们。
{action|script|create-timer|cancel-timer} 元素 [0..1] 应该在这个计时器触发时执行的操作

14.4.22. create-timer

Expand
表 14.22. 创建计时器架构
Name 类型 Multiplicity 描述
name attribute optional 计时器的名称。名称可用于使用 cancel-timer 操作取消计时器。
duedate attribute required 持续时间(可选以工作小时表示),用于指定创建计时器和计时器执行之间的时间段。有关语法,请参阅 第 11.1.1 节 “ Duration ”
重复 attribute optional {duration | 'yes' | 'true'} 在过期时执行计时器后,'repeat' (可选)指定重复计时器执行之间的持续时间,直到节点保留为止。如果指定了 yestrue,则重复执行与过期日期相同的持续时间。有关语法,请参阅 第 11.1.1 节 “ Duration ”
Trans attribute optional 触发计时器事件并执行操作(若有)后,执行计时器执行时要执行的一个 Convert-name。

14.4.23. cancel-timer

Expand
表 14.23. 取消计时器架构
Name 类型 Multiplicity 描述
name attribute optional 要取消的计时器的名称。

14.4.24. task

Expand
表 14.24. 任务架构
Name 类型 Multiplicity 描述
name attribute optional 任务的名称。可以通过引用和查找命名的任务 TaskMgmtDefinition
阻塞 attribute optional {yes|no|true|false},默认为 false。如果 blocking 设为 true,则当任务没有完成时,节点将无法保留。如果设置为 false (默认)则允许令牌中的信号继续执行并使节点保留。默认值为 false,因为通常由用户界面强制使用阻塞。
signalling attribute optional {yes|no|true|false},默认为 true。如果信号设置为 false,则此任务永远不会具有验证令牌的延时能力。
duedate attribute optional 是以绝对或工作小时表示的持续时间,如 第 11 章 业务逻辑
swimlane attribute optional 对 swimlane 的引用。如果在任务上指定了 swimlane,则忽略分配。
priority attribute optional {highest, high, normal, low, low} 中的一个。或者,可以为优先级指定任何整数。DanI: (highest=1, minimum=5)
分配 元素 optional 描述在任务创建时将任务分配给执行者的委派。
event 元素 [0..*] 支持的事件类型:{task-create|task-start|task-assign|task-end}。特别是对于 task-assign,我们向它添加了一个非持久性的属性 previousActorIdTaskInstance
exception-handler 元素 [0..*] 适用于此进程节点中丢弃的所有异常的异常处理程序列表。
timer 元素 [0..*] 指定监控此任务中执行持续时间的计时器。特别是任务计时器,可以指定 cancel-event。默认情况下,cancel-eventtask-end,但可以自定义它,例如 task-assigntask-start
controller 元素 [0..1] 指定进程变量如何转换为任务表单参数。用户界面使用任务表单向用户呈现任务表单。

14.4.25. Swimlane

Expand
表 14.25. Swimlane Schema
Name 类型 Multiplicity 描述
name attribute required swimlane 的名称。可通过引用和查找 Swimlanes TaskMgmtDefinition
分配 元素 [1..1] 指定此 swimlane 的分配。当在这个 swimlane 中创建第一个参数实例时,将执行分配。

14.4.26. 分配

Expand
表 14.26. 分配架构
Name 类型 Multiplicity 描述
expression attribute optional 出于历史的原因,此属性表达式 引用 jPDL 表达式,而是是 jBPM 身份组件的分配表达式。有关如何编写 IaaS 身份组件表达式的更多信息,请参阅 第 8.11.2 节 “分配表达式”。请注意,此实施依赖于 jbpm 身份组件。
actor-id attribute optional actorId。可与 pooled-actors 一起使用。actor-id 被解析为表达式。因此,您可以引用类似此 actor-id="bobthebuilder" 的固定 actorId。或者,您可以引用返回字符串的属性或方法: actor-id="myVar.actorId",它会在任务实例变量 "myVar" 上调用 getActorId 方法。
pooled-actors attribute optional 以逗号分隔的 actorIds 列表。可与 actor-id 一起使用。可以指定一组池 actors,如下所示: pooled-actors="chicagobulls, pointersisters"。pooled-actors 将解析为表达式。因此,您还可以引用必须返回的属性或方法、字符串[]、Collection 或以逗号分隔的 actor 列表。
attribute optional 实施的完全限定域名 org.jbpm.taskmgmt.def.AssignmentHandler
config-type attribute optional {field|bean|constructor|configuration-property}。指定 assignment-handler-object 的构建方式,以及此元素的内容应用作该 assignment-handler-object 的配置信息。
{content} optional assignment-element 的内容可用作您的分配处理程序实现的配置信息。这允许创建可重复使用的委托类。

14.4.27. Controller

Expand
表 14.27. 控制器架构
Name 类型 Multiplicity 描述
attribute optional 实施的完全限定域名 org.jbpm.taskmgmt.def.TaskControllerHandler
config-type attribute optional {field|bean|constructor|configuration-property}。这将指定如何构建 assignment-handler-object,以及此元素的内容应用作该 assignment-handler-object 的配置信息。
{content} 这是控制器的内容是指定任务控制器处理器的配置(如果指定了 class 属性)。如果没有指定任务控制器处理器,内容必须是变量元素的列表。
变量 元素 [0..*] 如果没有通过 class 属性指定任务控制器处理器,controller 元素的内容必须是变量的列表。

14.4.28. 子进程

Expand
表 14.28. 子进程架构
Name 类型 Multiplicity 描述
name attribute required 要调用的子进程的名称。可以是 EL 表达式,它必须评估为 字符串
version attribute optional 要调用的子进程的版本。如果没有指定 version,则 process-state 会获取给定进程的最新版本。
binding attribute optional 定义处理进程被解决的时间。这些选项为: {early|late}。默认值为在部署时解析 early。如果 binding 定义为 late,则 进程状态 会在每次执行时解析给定进程的最新版本。最后绑定与固定版本相结合,因此如果 version,则忽略 binding="late" 属性。

14.4.29. 条件

Expand
表 14.29. 条件架构
Name 类型 Multiplicity 描述
选项是 {content}。为向后兼容,还可使用 expression 属性输入条件,但该属性自 Version 3.2 起已被弃用 required condition 元素的内容是一个 jPDL 表达式,应评估布尔值。一个决定会采用表达式解析为 true 的第一个转换(如 进程definition.xml 文件中排序)。如果没有条件解析为 true,则会执行默认离开转换(第一个情况)。只有离开决策节点时,才允许条件。

14.4.30. exception-handler

Expand
表 14.30. 异常处理程序架构
Name 类型 Multiplicity 描述
exception-class attribute optional 这将指定 Java"throwable"类的完全限定名称,该名称应与这个异常处理程序匹配。如果没有指定此属性,它将匹配所有例外(java.lang.Throwable)。
action 元素 [1..*] 这是此异常处理程序处理错误时要执行的操作列表。
返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat