3.10 activiti核心API详解——流程表达式Expressions

Activiti使用UEL进行表达式解析。
为了在所有环境上支持UEL标准的所有最新特性,我们使用JUEL的修改版本
 

 

1. JUEL介绍

官方网址: http://juel.sourceforge.net/guide/basic/index.html

3.10 activiti核心API详解——流程表达式Expressions

其他资料:Juel基本使用 - 简书

2.表达式在activiti中应用

Java服务任务 Java Service tasks

执行监听器 Execution Listeners

任务监听器 Task Listeners

条件流Conditional sequence flows


 

3.表达式用法

3.1 值表达式 Value expression

解析为一个值。默认情况下,在流程中设置的变量值,都可以通过此处的表达式展示,调用。
 

${myVar}
${myBean.myProperty}

 3.2 方法表达式 Method expression

注入一个方法,可以带或不带参数。方法表达式调用的方法用括号

${printer.print()}
${myBean.addNewOrder('orderName')}
${myBean.doSomething(myVar, execution)}

方法参数:(1)字面值,传什么值就是什么值 (2)表达式:表达式支持原始类型(primitive)、bean、list、array(数组)与map

总结

 无论是值表达式 还是 方法表达式,流程中设置的变量都可以引用。另外activiti中默认的对象也可以引用:

  1. execution : 持有进行中执行(execution)额外信息的 DelegateExecution 。
  2. task : 持有当前任务(task)额外信息的 DelegateTask 。请注意:只在任务监听器的表达式中可用。
  3. authenticatedUserId : 当前已验证的用户id。如果没有已验证的用户,该变量不可用。
     

4. 将spring bean注入到activiti中,通过表达式使用

4.1 xml集成方式

xml生命bean,然后通过activiti的 注入管理。

spring xml文件中:

<bean id="processEngineConfiguration" class="org.activiti.spring.SpringProcessEngineConfiguration">
    ...
    <property name="beans">
        <map>
            <entry key="printer" value‐ref="printer" />
        </map>
    </property>
</bean>

<bean id="printer" class="org.activiti.examples.spring.Printer" />



流程定义xml文件

<definitions id="definitions">
    <process id="helloProcess">
        <startEvent id="start" />
        <sequenceFlow id="flow1" sourceRef="start" targetRef="print" />
        <serviceTask id="print" activiti:expression="#{printer.printMessage()}" />
        <sequenceFlow id="flow2" sourceRef="print" targetRef="end" />
        <endEvent id="end" />
    </process>
</definitions>



bean对应的java类

public class Printer {
    public void printMessage() {
        System.out.println("hello world");
    }
}

4.2 注解集成

在Activiti中使用spring的Bean_多学习多思考-CSDN博客

activiti监听器中注入spring bean_bool的博客-CSDN博客

 

上一篇:Activiti简介(基于activiti6)


下一篇:工作流基础