logo资料库

DMN FEEL表达语言.pdf

第1页 / 共47页
第2页 / 共47页
第3页 / 共47页
第4页 / 共47页
第5页 / 共47页
第6页 / 共47页
第7页 / 共47页
第8页 / 共47页
资料共47页,剩余部分请下载后查看
10. 表达语言(FEEL) 10.1. 介绍 在 DMN 中,所有的 decision logic 都是用 boxed expression 展现的。Clause 7.2 介绍了 boxed expression 的概念并且定义了两个简单类:boxed literal expressions 和 boxed invacations。 Clause 8 中定义的 decision tables 就是一种非常重要的 boxed expression。此章节通过定义其 他种类的 boxed expression,完善了 decision logic 的图形符号(graphical notation)。 Box 中的表达式都是 FEEL 表达式。FEEL 是 Friendly Enough Expression Language 的缩写, 具有以下特点:  没有副作用  简单的数据模型(通过 numbers, dates, strings, lists, contexts 搭建)  大众化的语法设计  基于 SQL 和 PMML 的三值逻辑(true,false,null) 此章节完整的规范了 FEEL 的语法和语义。语法被指定为 grammar (10.3.1)。一部分为了 被展现成 boxed expression 的语法被指定为 meta-model (10.5)。 在 DMN 中,FEEL 扮演了两个角色: 1.1 Boxed expression(比如 decision table)中的文字符号 1.2 作为一个稍大的语言来展现表达式和 DRG 的逻辑,为了统一简单的表达语义 10.2. 符号 10.2.1. Boxed Expressions 此章节是建立在 decision logic 和 boxed expressions(clause 7.2)的一般符号之上。 我们把一个 decision logic 的图形符号定义为 boxed expressions。这个符号可以将 decision logic 模型分解成能和 DRG artifacts 关联的小模块。DRG 加上来自完善的图形化的语言的 boxed expressions 共同定义了 decision models. 一个 boxed expression 是  一个 decision table,  一个 boxed FEEL expression,  一个 boxed invocation,  一个 boxed context,  一个 boxed list,  一个 relation, 或者  一个 boxed function.
Boxed expressions是被循环的定义的,也就是,boxed expressions可以包含其他的 boxed expressions。顶层的boxed expression对应了一个DRG artifact的decision logic。 这个boxed expression必须包含一个name box,其中含有对应DRG artifact的名字。 Name box可以被附加在一个Box的顶部,如图38: 图38:Boxed expression 或者,可以用虚线来连接name box和expression box,如图39: 图 39:Name box 和 expression box 分离的 Boxed expression Name 是DRG元素和decision logic元素之间唯一的联系。图形化工具是用来支持图形化联系 的,比如,点击一个decision shape可以打开一个decision table。 10.2.1.1. Decision tables 这里的可执行的 decision table 和 Clause 8 中定义的 decision table 使用相同的符号。执行语 义在 Clause 10.3.2.7 中定义了。 10.2.1.2. Boxed FEEL expression Boxed Feel expression 是在表单元格中的 FEEL 表达式 e,(定义在 Clause 10.3.1),如图 40: 图 40:Boxed Feel expression 一个包含 e 的 boxed expression 的意义是 FEEL(e, s),s 是范围。这个范围包括了 DRD 推导出 的 context(见 10.4)和任何包含 e 的 boxed context。 实际操作中,我们会用一个相对简单的 e,然后通过小的 boxed expression 组合成较大的 boxed expression。
10.2.1.3. Boxed Invocation Boxed invation 的语法的定义在 Clause 7.2.3。次语法可以用在调用各种函数(比如: business knowledge model, FEEL builtin function, boxed function definition)。 标有“invoked business knowledge model”的 box 可以是任何值是函数的 boxed expression,如图 41: 图 41:Boxed invocation 这个盒子化的语法(boxed syntax)对应了文本语法(定义在 grammar rules 40, 41, 42, 43)。 Boxed invocation 使 用 了 named parameters 。 包 含 positional invocation 文 本 的 Boxed expression 可以实现 Positional invocation。 这个盒子化的语法(boxed syntax)需要至少一个参数。没有参数的函数必须通过文本语法 调用,比如: Boxed invovation 的 正 规 意 义 是 通 过 等 价 的 文 本 invocaiton 的 语 义 给 出 的 , 比 如 : function-valued expression(parameter: binding expression, parameter: binding expression, …)。 10.2.1.4. Boxed Context Boxed context 是 n 个(name,value)组合的集合,选择性的可以有一个 result value。每个 组合是一个 context entry。Context entry 可以通过空格分开,用虚线来连接(在顶部或者左 侧)。这样通过看纵向 context 的左侧边缘或者看横向 context 的顶部边缘就可以轻松的分辨 出所有的 entry。 单元格必须按一下方式排列(图 42,43):
图 42:纵向 context 图 43:横向 context Context 中的 context entry 常用于把复杂的 expression 分解成多个较简单的 expression,每 个分解后的 expression 都有命名。可以把这些 context entry 当做中间结果。比如,没有最终 结果的 box 可以用来展现案例数据(图 44)。 图 44:context entry 的用途 有最终结果的 box 用来展现计算过程(图 45)。
图 45:最终结果 box 的使用 当 decision table 是(没结果)的 context entry,输出单元格可以用来命名 entry,从而节省空 间。任何格式的 decision table (format decision table???)都可以用在纵向 context。右 侧边缘不用对齐。Context entry 之间可以用空格隔开。 图 46:有 decision table entry 的纵向 context 建议使用不同颜色。 Name 必须是合法的 FEEL name。 Value 和 result 都是 boxed expression。 Boxed context 可以把 decision table 作为 result, 是命名好的 context entry 计算输入并给输入 命名。例(图 47):
图 47:有 decision table 的 boxed expression 的用法 如果没有 result,Boxed context 的意义是{ “Name 1”: Value 1, “Name 2”: Value 2, …, “Name n”: Value n }。如果有,则是{ “Name 1”: Value 1, “Name 2”: Value 2, …, “Name n”: Value n, “result”: Result }.result。粗体代表了都是 FEEL 语义定义域里的元素。范 围包括了 containing DRG 推导出的 context(见 10.4)。 10.2.1.5. Boxed List Boxed list 是 n 个 item 的列表。单元格必须按一下方式排列(图 48,49)。
图 48:纵向列表 图 49:横向列表 线的样式是标准的。Item 是 boxed expression。Boxed list 的意义和 list 的意义相同:[ Item 1, Item 2, …, Item n ]。范围包括了 containing DRG 推导出的 context(见 10.4)。 10.2.1.6. Relation 一个同类 context(没有 result 单元格)的纵列表可以被显示成如图 50,名字只在列表顶部 出现一次,像关系表一样。 图 50:Relation 10.2.1.7. Boxed Function 关联一个 Business Knowledge Model 的 boxed expression 必须是一个 boxed function。 一个 boxed function 有 3 个单元格: 1. Kind,包含了以下其中之一的首字母:    FEEL PMML Java 在 Feel Function 中,包括 decision table,Kind box 可以被省略。 2. Parameters:0 个或以上逗号隔开的 name,在圆括号内。 3. Body:一个 boxed expression
这 3 个单元格必须按一下方式排列,图 51: 图 51:Boxed function 在 FEEL function 中,Body 是一个应用了 parameter 的 expression。在外部定义的 function 中, Body 是一个 context(见 10.3.2.10.2)。 如果 Kind 是 FEEL, Boxed function 的意义和 function 的意义相同:FEEL(function(Parameter1, Parameter2, …) Body),如果是其他:FEEL(function(Parameter1, Parameter2, …) external Body)。范围包括了 containing DRG 推导出的 context(见 10.4)。 10.2.2. FEEL 下一章中定义的一部分 FEEL 是为了 boxed expression 服务的。FEEL 扩展了 JSON 对象。一个 JSON 对象是一个 number,一个 string,一个 context(JSON 中称作 maps)或者是一个 JSON 对象的列表。FEEL 添加了 date,time 和 duration 对象,函数,对于文本值更友好的语法, 并且不需要引用 context key。(does not require the context keys to be quoted???) 我们从几个简单的例子开始接触这个语言。 10.2.2.1. range 的比较 range 和 range 列表会出现在 decision table 的 test 单元格。在表 27 中,这部分语法都用了粗 体显示。 表 27:FEEL range 比较 FEEL Expression 5 in <=5 5 in (5..10] 5 in [5..10] 5 in [ 4,5,6 ] Value true false true true 5 in [ <5,>5 ] false 也可以比较 String。但 Date,time 和 duration 只有在被命名后(变成 context entry 后)才能 进行比较。例如,假设如下 context entry: Christmas 2012: date("2012-12-25"), New Year's Eve 2012: date("2012-12-31"), Valentine's Day 2013: date("2013-02-14"), 下面的表达式为 true:
分享到:
收藏