activiti学习(二十)

341 阅读2分钟

image.png 持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第20天,点击查看活动详情

Activiti的使用

今天我们来看下Activiti中的表达式(Expressions)。

Activiti中的表达式

Activiti使用JUEL进行表达式解析。JUEL代表统一表达式语言,是JAVA EE6规范的一部分(有关详细信息,请参阅EE6规范)。为了在所有环境中支持最新UEL规范的所有功能,Activiti对JUEL做了部分改动。
表达式可以用于Java服务任务、执行监听器、任务监听器和连线的条件等。虽然有两种类型的表达式,值表达式(value-expression)和方法表达式(method-expression),但Activiti对此进行了抽象,以便它们都可以在需要表达式的地方使用。

  • Value expression:解析为值。默认情况下,所有流程变量都可以使用。此外,所有Springbean(如果使用spring)都可以在表达式中使用。如下所示:
${myVar}
${myBean.myProperty}
  • Method expression:使用或不使用参数调用方法。调用不带参数的方法时,需要在方法名称后添加空括号(因为这用来区分表达式和值表达式)。传递的参数可以是文本值或自行解析的表达式。如下:
${printer.print()}
${myBean.addNewOrder('orderName')}
${myBean.doSomething(myVar, execution)}

需要注意的是,这些表达式支持解析原语(包括比较它们)、bean、列表、数组和映射。 在所有流程变量之上,有几个默认对象可在表达式中使用:

  • execution:DelegateExecution,它保存有关正在进行的执行的其他信息。
  • task:包含有关当前任务的其他信息的委派任务。注意:仅适用于从任务监听器计算的表达式。
  • authenticatedUserId:当前经过身份验证的用户的id。如果没有用户经过身份验证,则变量不可用。 有关更具体的用法和示例,需自行查看Spring中的表达式、Java Service Task、执行监听、任务监听器或条件顺序流。