flowable uel表达式
时间: 2023-08-23 12:16:21 浏览: 269
Flowable使用UEL(Unified Expression Language)进行表达式解析。UEL在Flowable中有两种类型的表达式:值表达式和方法表达式。值表达式可以用于Java服务任务、执行监听器、任务监听器和条件顺序流等。Flowable通过抽象使得值表达式和方法表达式都可以在需要表达式的地方使用。注意,如果UEL表达式中引用的流程变量名不存在,则会报错。如果流程变量值为空null,则流程不按照UEL表达式执行,而是直接结束。如果所有的UEL表达式都不满足条件,则流程也会结束。如果连线没有设置条件,流程会走flow序号较小的那条线。
相关问题
flowable 嵌套表达式
Flowable 支持在模板中嵌套表达式,可以使用 `${expression}` 语法来嵌套表达式。例如:
```
Dear ${employee.name},
Your salary for this month is ${employee.salary * 0.9}.
Best regards,
HR Department
```
在上面的例子中,`${employee.name}` 和 `${employee.salary * 0.9}` 都是嵌套表达式,它们会被解析为相应的值并插入到模板中。注意,嵌套表达式中可以包含任何 Java 表达式,包括函数调用、条件语句等。
flowable 投票表达式
在 flowable 中实现投票节点的投票表达式可以通过任务监听器或者流程变量来实现。以下是两种实现方式:
1. 任务监听器方式:
在投票节点上添加任务监听器,监听器可以在任务完成时触发。在监听器中可以编写投票表达式,如下所示:
```
public class VoteTaskListener implements TaskListener {
@Override
public void notify(DelegateTask delegateTask) {
// 获取投票结果
Boolean voteResult = (Boolean) delegateTask.getVariable("voteResult");
// 获取投票比例
Integer voteRatio = (Integer) delegateTask.getVariable("voteRatio");
// 获取已投票数
Integer votedCount = (Integer) delegateTask.getVariable("votedCount");
// 获取总票数
Integer totalCount = (Integer) delegateTask.getVariable("totalCount");
// 判断是否通过投票
if (voteResult && votedCount >= totalCount * voteRatio / 100) {
// 投票通过
delegateTask.setVariable("result", "approved");
} else {
// 投票不通过
delegateTask.setVariable("result", "rejected");
}
}
}
```
2. 流程变量方式:
在投票节点上添加流程变量,变量可以在流程中传递和计算。在投票节点的出口条件中使用表达式来计算投票结果,如下所示:
```
${approvedCount >= totalCount * voteRatio / 100}
```
其中 approvedCount 为通过投票的数量,totalCount 为总投票数量,voteRatio 为投票比例。
以上是两种实现方式,可以根据具体业务需求选择适合的方式来实现投票节点的投票表达式。
阅读全文