DMN中能否用FEEL/字面量表达式初始化局部变量并按OOP方式使用?
在DMN中使用FEEL初始化局部变量的方法
可以在DMN的FEEL表达式中初始化并使用局部变量,无需依赖BKM,但FEEL作为表达式语言,写法和你示例中的OOP命令式风格不同,以下是两种标准实现方式:
1. 使用let...in表达式定义局部变量
这是FEEL中定义局部变量最直接的方式,能将变量的作用域限定在后续表达式内,完美适配你需要的条件初始化场景:
let newVar = if somecondition then newVal else null in if newVar == someVal then /* 你的业务逻辑 */ else /* 你的业务逻辑 */
let关键字用来声明变量并完成条件初始化,in后面的表达式可以直接引用这个局部变量。
2. 通过FEEL上下文(Context)定义局部变量
你也可以通过上下文对象来封装局部变量和后续逻辑,最终取结果字段即可:
{ newVar: if somecondition then newVal else null, finalResult: if newVar == someVal then /* 你的业务逻辑 */ else /* 你的业务逻辑 */ }.finalResult
上下文里的newVar可以被同上下文的其他字段直接引用,最后通过.finalResult提取最终计算结果。
需要注意:FEEL不支持你示例中那种在if块内直接赋值变量的命令式写法,因为FEEL是纯表达式语言,所有操作都必须通过表达式结构完成,而非语句块内的赋值动作。
内容的提问来源于stack exchange,提问作者Anup Patil
相关产品推荐
相关产品推荐

