第 14 章 过程定义语言
过程定义语言 (jPDL)是一种表示法,用于定义由 jBPM 框架识别的进程,并表示为 XML 模式。除了 jPDL 文档外,流程定义还需要支持文件。所有这些文件都打包到用于部署 的进程存档中。
14.1. 进程归档 复制链接链接已复制到粘贴板!
复制链接链接已复制到粘贴板!
进程存档只是具有特定内容布局的 ZIP 存档。进程存档中的中央文件称为
processdefinition.xml
,该文件以 jPDL 表示法定义业务进程,并提供有关自动操作和人类任务的信息。进程存档还包含与进程相关的其他文件,如操作处理程序类和用户界面任务表单。
14.1.1. 部署进程归档 复制链接链接已复制到粘贴板!
复制链接链接已复制到粘贴板!
您可以通过以下任一方式部署
进程存档
:
- 通过 流程设计器工具
- 使用 ant 任务
- programatically
要使用 流程设计器工具 部署进程存档,请右键单击进程存档文件夹并选择 选项。
jBPM 应用服务器集成模块包括 gpd-deployer Web 应用程序,它有一个 servlet 来上传进程存档,称为
GPD Deployer Servlet
。此 servlet 能够接收进程存档并将其部署到配置的数据库中。
要使用 ant 任务部署进程存档,请按如下所示定义并调用任务:
要一次部署更多进程存档,请使用嵌套 fileset 元素。以下是
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
方法loadProcessDefinition
、findProcessDefinition
或通过关联遍历访问的进程定义没有限制。然而,使用几个调用(如setStartState(null)
!) 非常容易 地设置进程。 - 因为进程定义不应更改,因此提供的 Hibernate 配置指定了
nonstrict-read-write
缓存策略来定义类和集合。此策略可使未提交的更新对其他事务可见。
14.1.4. 迁移过程实例 复制链接链接已复制到粘贴板!
复制链接链接已复制到粘贴板!
更改进程定义的替代方法是将每个进程实例迁移到新版本。请考虑,由于业务流程的长期性质,迁移并不是微小的。
注意
这是一个实验性功能。
定义数据、执行数据和日志数据之间存在明显的区别。因此,必须首先部署新版本的进程,然后进程实例将迁移到新版本。如果令牌或任务实例指向目标进程定义中已删除的节点或任务定义,则迁移涉及转换。请注意,日志数据最终分布到两个进程定义中。这在开发工具和进行统计计算时可能会造成挑战。
要将进程实例迁移到新版本,请执行
ChangeProcessInstanceVersionCommand
,如下所示。
new ChangeProcessInstanceVersionCommand() .processName("commute") .nodeNameMappingAdd("drive to destination", "ride bike to destination") .execute(jbpmContext);
new ChangeProcessInstanceVersionCommand()
.processName("commute")
.nodeNameMappingAdd("drive to destination", "ride bike to destination")
.execute(jbpmContext);
14.2. 委派 复制链接链接已复制到粘贴板!
复制链接链接已复制到粘贴板!
使用委派 机制在进程执行中包含自定义代码。
14.2.1. jBPM Class Loader 复制链接链接已复制到粘贴板!
复制链接链接已复制到粘贴板!
jBPM 类加载程序是加载了 jBPM 类的加载。要使类对 xmvn 类加载器可见,将它们打包到 JAR 文件中,并将 JAR 与
jbpm-jpdl.jar
并置在一起。如果是 Web 应用,请将自定义 JAR 文件放在 WEB-INF/lib
和 jbpm-jpdl.jar
中。
14.2.2. Process Class Loader 复制链接链接已复制到粘贴板!
复制链接链接已复制到粘贴板!
委派类通过相应的 进程类加载器 加载。进程类加载器将 lsblk 类加载器作为其父项。它添加了使用特定进程定义部署的类。要在进程定义中添加类,请将它们放在进程存档
的类
目录中。请注意,这只在您要版本添加到进程定义的类时才有用。如果不需要版本控制,请使类可供 jBPM 类加载程序使用。
如果资源名称没有以斜杠开头,则资源也会从进程存档
的类
目录中加载。要载入位于这个目录之外的资源,请使用双正斜杠(//
)启动路径。例如:要加载位于进程归档 root 中的 data.xml
,请调用 class.getResource("//data.xml")
。
14.2.3. 配置委派 复制链接链接已复制到粘贴板!
复制链接链接已复制到粘贴板!
委派类包含从进程执行期间调用的用户代码,最常见的示例就是一个 操作。如果是操作,可在进程的事件上调用
ActionHandler
接口的实施。委派在 processdefinition.xml
文件中指定。您可以在指定委托时提供这三个数据:
- 类名称(必需):这是委派类的完全限定名称。
- 配置类型(可选):这指定了实例化和配置委派对象的方法。默认情况下,使用构造器并忽略配置信息。
- 配置(可选):这是委派对象的配置,必须采用配置类型所需的格式。
以下是每种配置类型的描述:
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>
<numbers> <element>one</element> <element>two</element> <element>three</element> </numbers>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 您可以将元素中的文本转换为具有字符串构造器的任何对象。要使用字符串以外的类型,请在 字段中指定 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>
<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 Copied! Toggle word wrap Toggle overflow - 在这种情况下,每个字段元素都应该有一个 key 和一个 value 子元素。使用转换规则递归解析这两个规则。与集合一样,如果您没有指定 type 属性,它将假定转换为
java.lang.String
。 org.dom4j.Element
- 对于任何其他类型,使用字符串构造器。
查看这个类:
这是该类的有效配置:
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}"
注意
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 文档将根据模式进行验证:
- 该 schema 在 XML 文档中引用:
<process-definition xmlns="urn:jbpm.org:jpdl-3.2"> ... </process-definition>
<process-definition xmlns="urn:jbpm.org:jpdl-3.2"> ... </process-definition>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 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 复制链接链接已复制到粘贴板!
复制链接链接已复制到粘贴板!
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 复制链接链接已复制到粘贴板!
复制链接链接已复制到粘贴板!
Name | 类型 | Multiplicity | 描述 |
---|---|---|---|
{action|script|create-timer|cancel-timer} | 元素 | 1 | 这是一个自定义操作,它代表了此节点的行为 |
常见节点元素 | 第 14.4.4 节 “常见节点元素” |
14.4.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 复制链接链接已复制到粘贴板!
复制链接链接已复制到粘贴板!
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 复制链接链接已复制到粘贴板!
复制链接链接已复制到粘贴板!
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 复制链接链接已复制到粘贴板!
复制链接链接已复制到粘贴板!
Name | 类型 | Multiplicity | 描述 |
---|---|---|---|
常见节点元素 | 请查看 第 14.4.4 节 “常见节点元素” |
14.4.8. task-node 复制链接链接已复制到粘贴板!
复制链接链接已复制到粘贴板!
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 复制链接链接已复制到粘贴板!
复制链接链接已复制到粘贴板!
Name | 类型 | Multiplicity | 描述 |
---|---|---|---|
子进程 | 元素 | 1 | 这是与此节点关联的子进程。 |
变量 | 元素 | [0..*] | 这将指定数据如何从多进程复制到进程开始的子进程,并在完成子进程后从子进程复制到多进程。 |
常见节点元素 | 请查看 第 14.4.4 节 “常见节点元素” |
14.4.10. super-state 复制链接链接已复制到粘贴板!
复制链接链接已复制到粘贴板!
Name | 类型 | Multiplicity | 描述 |
---|---|---|---|
{end-state|state|node|task-node|process-state|super-state|fork|join|decision} | 元素 | [0..*] | 这些是超级状态的节点。超级状态可以嵌套。 |
常见节点元素 | 请查看 第 14.4.4 节 “常见节点元素” |
14.4.11. fork 复制链接链接已复制到粘贴板!
复制链接链接已复制到粘贴板!
Name | 类型 | Multiplicity | 描述 |
---|---|---|---|
常见节点元素 | 请查看 第 14.4.4 节 “常见节点元素” |
14.4.12. join 复制链接链接已复制到粘贴板!
复制链接链接已复制到粘贴板!
Name | 类型 | Multiplicity | 描述 |
---|---|---|---|
常见节点元素 | 请查看 第 14.4.4 节 “常见节点元素” |
14.4.13. 决策 复制链接链接已复制到粘贴板!
复制链接链接已复制到粘贴板!
Name | 类型 | Multiplicity | 描述 |
---|---|---|---|
handler | 元素 | 应该指定"handler"元素或转换条件 | org.jbpm.jpdl.Def.DecisionHandler 实现的名称 |
转换条件 | 离开决定的转换上的属性或元素文本 |
每个转换都可能具有保护条件。决策节点检查保留具有条件的转换,然后选择第一个条件为 true 的转换。
如果没有满足条件,则进行 默认 转换。如果存在,或者第一个条件转换,则默认转换是第一个无条件转换。转换以文档顺序考虑。
如果只有条件("保证")转换可用,并且转换时没有条件评估为 true,则会抛出异常。
| |
常见节点元素 | 请查看 第 14.4.4 节 “常见节点元素” |
14.4.14. event 复制链接链接已复制到粘贴板!
复制链接链接已复制到粘贴板!
Name | 类型 | Multiplicity | 描述 |
---|---|---|---|
type | attribute | required | 这是相对于放置事件的元素表示的事件类型 |
{action|script|create-timer|cancel-timer} | 元素 | [0..*] | 这是应在此事件上执行的操作列表 |
14.4.15. Trans 复制链接链接已复制到粘贴板!
复制链接链接已复制到粘贴板!
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 复制链接链接已复制到粘贴板!
复制链接链接已复制到粘贴板!
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 复制链接链接已复制到粘贴板!
复制链接链接已复制到粘贴板!
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 复制链接链接已复制到粘贴板!
复制链接链接已复制到粘贴板!
Name | 类型 | Multiplicity | 描述 |
---|---|---|---|
{content} | bean shell 脚本。 |
14.4.19. 变量 复制链接链接已复制到粘贴板!
复制链接链接已复制到粘贴板!
Name | 类型 | Multiplicity | 描述 |
---|---|---|---|
name | attribute | required | 进程变量名称 |
access | attribute | optional | 默认为 read,write 。它是以逗号分隔的访问指定符列表。目前唯一使用的访问指定符是 read 、write 和 required 。"必需"只在将任务变量提交到进程变量时才相关。 |
mapped-name | attribute | optional | 默认为变量名称。它指定变量名称映射到的名称。mapping-name 的含义取决于使用此元素的上下文。对于脚本,这将是 script-variable-name。对于任务控制器,这将是任务表单参数的标签。对于进程状态,这将是子进程中使用的变量名称。 |
14.4.20. handler 复制链接链接已复制到粘贴板!
复制链接链接已复制到粘贴板!
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 复制链接链接已复制到粘贴板!
复制链接链接已复制到粘贴板!
Name | 类型 | Multiplicity | 描述 |
---|---|---|---|
name | attribute | optional | 计时器的名称。如果没有指定名称,则会获取所属节点的名称。请注意,每个计时器都应该具有唯一的名称。 |
duedate | attribute | required | 持续时间(可选以工作小时表示),用于指定创建计时器和执行计时器之间的时间段。有关语法,请参阅 第 11.1.1 节 “ Duration ”。 |
重复 | attribute | optional | {duration | 'yes' | 'true'} 在过期时执行计时器后,'repeat' (可选)指定重复计时器执行之间的持续时间,直到节点保留为止。如果指定了 yes 或 true ,则重复执行与过期日期相同的持续时间。有关语法,请参阅 第 11.1.1 节 “ Duration ”。 |
Trans | attribute | optional | 触发计时器事件并执行操作(若有)后,执行计时器执行时要执行的一个 Convert-name。 |
cancel-event | attribute | optional | 此属性仅用于任务的计时器。它指定应取消计时器的事件。默认情况下,这是 task-end 事件,但可以设置为 task-assign 或 task-start 。通过在属性的逗号分隔列表中指定 cancel-event 类型可以合并它们。 |
{action|script|create-timer|cancel-timer} | 元素 | [0..1] | 应该在这个计时器触发时执行的操作 |
14.4.22. create-timer 复制链接链接已复制到粘贴板!
复制链接链接已复制到粘贴板!
Name | 类型 | Multiplicity | 描述 |
---|---|---|---|
name | attribute | optional | 计时器的名称。名称可用于使用 cancel-timer 操作取消计时器。 |
duedate | attribute | required | 持续时间(可选以工作小时表示),用于指定创建计时器和计时器执行之间的时间段。有关语法,请参阅 第 11.1.1 节 “ Duration ”。 |
重复 | attribute | optional | {duration | 'yes' | 'true'} 在过期时执行计时器后,'repeat' (可选)指定重复计时器执行之间的持续时间,直到节点保留为止。如果指定了 yes 的 true ,则重复执行与过期日期相同的持续时间。有关语法,请参阅 第 11.1.1 节 “ Duration ”。 |
Trans | attribute | optional | 触发计时器事件并执行操作(若有)后,执行计时器执行时要执行的一个 Convert-name。 |
14.4.23. cancel-timer 复制链接链接已复制到粘贴板!
复制链接链接已复制到粘贴板!
Name | 类型 | Multiplicity | 描述 |
---|---|---|---|
name | attribute | optional | 要取消的计时器的名称。 |
14.4.24. task 复制链接链接已复制到粘贴板!
复制链接链接已复制到粘贴板!
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 ,我们向它添加了一个非持久性的属性 previousActorId 。 TaskInstance |
exception-handler | 元素 | [0..*] | 适用于此进程节点中丢弃的所有异常的异常处理程序列表。 |
timer | 元素 | [0..*] | 指定监控此任务中执行持续时间的计时器。特别是任务计时器,可以指定 cancel-event 。默认情况下,cancel-event 为 task-end ,但可以自定义它,例如 task-assign 或 task-start 。 |
controller | 元素 | [0..1] | 指定进程变量如何转换为任务表单参数。用户界面使用任务表单向用户呈现任务表单。 |
14.4.25. Swimlane 复制链接链接已复制到粘贴板!
复制链接链接已复制到粘贴板!
Name | 类型 | Multiplicity | 描述 |
---|---|---|---|
name | attribute | required | swimlane 的名称。可通过引用和查找 Swimlanes TaskMgmtDefinition |
分配 | 元素 | [1..1] | 指定此 swimlane 的分配。当在这个 swimlane 中创建第一个参数实例时,将执行分配。 |
14.4.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 复制链接链接已复制到粘贴板!
复制链接链接已复制到粘贴板!
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. 子进程 复制链接链接已复制到粘贴板!
复制链接链接已复制到粘贴板!
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. 条件 复制链接链接已复制到粘贴板!
复制链接链接已复制到粘贴板!
Name | 类型 | Multiplicity | 描述 |
---|---|---|---|
选项是 {content} 。为向后兼容,还可使用 expression 属性输入条件,但该属性自 Version 3.2 起已被弃用 | required | condition 元素的内容是一个 jPDL 表达式,应评估布尔值。一个决定会采用表达式解析为 true 的第一个转换(如 进程definition.xml 文件中排序)。如果没有条件解析为 true ,则会执行默认离开转换(第一个情况)。只有离开决策节点时,才允许条件。 |
14.4.30. exception-handler 复制链接链接已复制到粘贴板!
复制链接链接已复制到粘贴板!
Name | 类型 | Multiplicity | 描述 |
---|---|---|---|
exception-class | attribute | optional | 这将指定 Java"throwable"类的完全限定名称,该名称应与这个异常处理程序匹配。如果没有指定此属性,它将匹配所有例外(java.lang.Throwable )。 |
action | 元素 | [1..*] | 这是此异常处理程序处理错误时要执行的操作列表。 |