SimpleContext 怎么支持flowable内置函数
时间: 2024-03-13 07:47:40 浏览: 20
SimpleContext 支持 Flowable 内置函数的方式是通过在 SimpleContext 中添加对应的函数实现。Flowable 内置函数可以通过 Flowable 的函数库进行调用,而 SimpleContext 中的函数实现则可以将 Flowable 的函数库中对应的函数映射到 SimpleContext 中。
例如,Flowable 中的内置函数 min() 可以通过在 SimpleContext 中定义一个名为 min 的函数来实现。该函数可以接受任意数量的参数,并返回这些参数中的最小值。在 SimpleContext 中调用这个函数时,它将调用 Flowable 函数库中的 min() 函数,并将传递给它的参数作为参数。
下面是一个在 SimpleContext 中实现 min() 函数的示例:
```
public class SimpleContext {
public int min(int... values) {
return Flowable.min(values);
}
}
```
通过这种方式,SimpleContext 就可以支持 Flowable 内置函数了。
相关问题
ExpressionFactory 支持flowable 内部函数
ExpressionFactory 是一个用于解析表达式的工厂类,Flowable 内置函数的调用可以通过在表达式中使用 ExpressionFactory 来实现。
以下是 ExpressionFactory 如何支持 Flowable 内置函数的示例:
1. 创建 ExpressionFactory 对象
```
ExpressionFactory expressionFactory = new ExpressionFactoryImpl();
```
2. 创建 Expression 对象
```
Expression expression = expressionFactory.createExpression(expressionString);
```
其中,expressionString 表示包含 Flowable 内置函数调用的表达式字符串。
3. 在表达式中调用 Flowable 内置函数
在表达式中调用 Flowable 内置函数的语法为:`fn:functionName(arg1, arg2, ...)`,其中 functionName 表示要调用的函数名,arg1、arg2 等表示函数的参数。
例如,要在表达式中调用 Flowable 内置函数 min(),可以使用以下语法:
```
fn:min(1, 2, 3)
```
这将返回参数中的最小值。
需要注意的是,使用 ExpressionFactory 调用 Flowable 内置函数时,必须先启用变量支持,即在流程引擎配置中设置 `enableProcessDefinitionInfoCache` 和 `enableVariableSupport` 为 true。例如:
```
ProcessEngineConfiguration cfg = new StandaloneProcessEngineConfiguration()
.setJdbcUrl("jdbc:h2:mem:flowable;DB_CLOSE_DELAY=1000")
.setJdbcUsername("sa")
.setJdbcPassword("")
.setJdbcDriver("org.h2.Driver")
.setDatabaseSchemaUpdate(ProcessEngineConfiguration.DB_SCHEMA_UPDATE_TRUE)
.setAsyncExecutorActivate(false)
.setEnableProcessDefinitionInfoCache(true)
.setEnableVariableSupport(true);
ProcessEngine processEngine = cfg.buildProcessEngine();
```
这样,就可以使用 ExpressionFactory 来调用 Flowable 内置函数了。
flowable TreeValueExpression 函数
在 Flowable 中,可以使用 TreeValueExpression 类创建树形结构的表达式对象,用于在流程定义、任务定义等中使用表达式语言。TreeValueExpression 类提供了一些常用的函数,方便对树形结构的数据进行处理和操作。以下是一些 TreeValueExpression 常用的函数:
1. `node('nodeId')`:获取指定节点的值,其中 `nodeId` 为节点的 ID。
2. `parent(node('nodeId'))`:获取指定节点的父节点的值。
3. `children(node('nodeId'))`:获取指定节点的子节点的值,返回值为一个数组。
4. `siblings(node('nodeId'))`:获取指定节点的兄弟节点的值,返回值为一个数组。
5. `root(node('nodeId'))`:获取指定节点所在树的根节点的值。
下面是一些使用 TreeValueExpression 函数的示例:
1. 获取指定节点的值:
```
${treeVar.node('nodeId')}
```
2. 获取指定节点的父节点的值:
```
${treeVar.parent(treeVar.node('nodeId'))}
```
3. 获取指定节点的子节点的值:
```
${treeVar.children(treeVar.node('nodeId'))[0]}
```
4. 获取指定节点的兄弟节点的值:
```
${treeVar.siblings(treeVar.node('nodeId'))[0]}
```
5. 获取指定节点所在树的根节点的值:
```
${treeVar.root(treeVar.node('nodeId'))}
```
需要注意的是,TreeValueExpression 函数的使用需要根据具体的场景和需求进行调整和扩展,以满足实际的应用需求。
相关推荐
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)