camunda怎么进行判断示例
时间: 2024-05-10 12:20:18 浏览: 173
query-example:Camunda示例查询
在 Camunda 中进行判断通常使用表达式语言,常用的表达式语言有 JUEL 和 SpEL。以下是一个使用 JUEL 表达式的示例:
假设我们需要判断一个订单的总价是否超过 100 元,如果超过则需要进行特殊处理,否则则进行普通处理。可以在 BPMN 模型中使用一个 service task,在该任务中定义一个输出参数 totalPrice,然后使用一个 exclusive gateway 进行判断,如下图所示:
![camunda-judge-example1](https://camo.githubusercontent.com/0a4b10c7a2a1a8d7d0b5aef23c6ecb50c9d9a5a0/68747470733a2f2f7777772e63616d756e64612e636f6d2f73697465732f64656661756c74732f66696c65732f63616d756e64615f6a756467655f6578616d706c65312e706e67)
在 service task 中,我们可以使用 JUEL 表达式计算订单的总价:
```
${order.items.stream().map(item -> item.price * item.quantity).reduce(0, (a, b) -> a + b)}
```
该表达式会先将订单的每个商品的单价和数量相乘,然后将所有结果累加起来,得到订单的总价。
在 exclusive gateway 中,我们可以使用 JUEL 表达式判断订单的总价是否超过 100 元:
```
${execution.getVariable("totalPrice") > 100}
```
该表达式会从流程变量中获取订单的总价,并判断是否大于 100 元。
根据判断结果,我们可以定义两个出口,一个用于超过 100 元的特殊处理,另一个用于普通处理,如下图所示:
![camunda-judge-example2](https://camo.githubusercontent.com/ac181cc7d8cf2b1a270b0c031640a83c9fc9d3f3/68747470733a2f2f7777772e63616d756e64612e636f6d2f73697465732f64656661756c74732f66696c65732f63616d756e64615f6a756467655f6578616d706c65322e706e67)
阅读全文