根据DMN规范,DMN元模型(Metamodel)是基于MOF(元对象设施)定义的抽象语法,它规定了决策模型的结构、元素属性及其相互关系。DMN元模型确保了模型在不同工具之间的可交换性。

以下是DMN元模型的核心组成部分详解:
1.核心基类与层级结构
DMNElement(抽象基类):所有DMN元素的超类。它提供可选的id(模型内唯一)、description(描述)和label(短说明)属性。
NamedElement(抽象类):继承自DMNElement,增加了强制性的name(名称)属性。
Definitions(根容器):DMN决策模型的最外层容器。它定义了可见性范围、命名空间(Namespace)、默认的表达式语言和类型语言,并包含所有的DRG元素、项目定义和导入信息。
2.决策需求图(DRG)元素元模型
DRGElement是所有在DRD中有图形表示的元素的抽象基类:
Decision(决策):核心元素,由decisionLogic(表达式形式的决策逻辑)和各类需求(信息、知识、权威需求)组成。它还定义了一个InformationItem来存储输出结果。
InputData(输入数据):定义模型外部输入的变量,通过InformationItem存储值。
Invocable(可调用元素):
BusinessKnowledgeModel(BKM):封装可重用的决策逻辑(如函数或决策表),必须包含一个FEEL框式函数定义。
DecisionService(决策服务):封装一组决策逻辑,定义了输入数据、输入决策、封装决策和输出决策的接口。
KnowledgeSource(知识来源):表示权威机构或知识源,用于提供指导或约束。
3.需求(Requirements)元模型
需求用于连接DRG元素,表示它们之间的依赖关系:
InformationRequirement:建模决策对输入数据或其他决策的依赖(实线箭头)。
KnowledgeRequirement:建模对Invocable元素(BKM或服务)的调用(虚线箭头)。
AuthorityRequirement:建模元素对KnowledgeSource的权威依赖(带实心圆头的虚线箭头)。
4.决策逻辑与表达式元模型
Expression是所有决策逻辑元素的抽象超类:
LiteralExpression(文字表达式):以文本(如FEEL语言)描述逻辑的简单表达式。
DecisionTable(决策表):包含输入子句(InputClause)、输出子句(OutputClause)和一组规则(DecisionRule)。它具有hitPolicy(命中策略)和aggregation(聚合函数)等关键属性。
Invocation(调用):用于调用BKM或决策服务,包含一系列绑定(Binding),将实际输入参数与形式参数关联。
框式表达式(BoxedExpressions):FEEL扩展定义的元模型,包括Context(键值对集合)、List(列表)、Relation(关系表)、FunctionDefinition(函数定义)等。
5.数据建模元模型
ItemDefinition(项目定义):定义数据的结构和取值范围。支持通过引用内置类型、组合嵌套定义(itemComponent)或定义函数签名(FunctionItem)来实现。
InformationItem(信息项):在逻辑层代表变量或参数,通过typeRef引用ItemDefinition。
6.图表交换(DMNDI)元模型
DMNDI专门用于记录图表的视觉外观,而非逻辑语义:
DMNDI:包含所有DMNDiagram和共享样式的容器。
DMNShape&DMNEdge:分别表示图表中的形状(节点)和边(连线)。它们通过dmnElementRef属性引用上述抽象语法中的DMNElement。
DMNStyle:存储非规范性的视觉属性,如填充颜色、边框颜色和字体。
7.扩展性(Extensibility)
DMN元模型设计为可扩展的,允许通过ExtensionElements(容器)和ExtensionAttribute(带名属性)将其他元模型(如自定义属性或第三方工具元数据)附加到任何DMN元素上,而不会破坏标准的一致性。