什么是DMN
DMN全称是Decision Model and Notation(决策模型和标记),它是OMG(Object
Management Group)制定的关于决策建模的标准。
该规范定义了如下内容:
1. 一种称为FEEL的表达语言,用于表达约束和决策
2. 图形化语言来建模决策需求
3. 决策模型的元模型和运行时语义
4. 用于决策模型的基于XML的交换格式
DMN在在业务流程模型和决策逻辑模型之间架起桥梁:
左侧BPMN业务流程模型中在业务流程中定义决策发生所需的任务
右侧DMN的决策需求图将定义这些任务中要进行的决策,它们之间的相互关系以及决策逻辑的条件
决策逻辑将定义足够详细和必要的决策,以允许进行验证和自动
结合在一起,决策需求图和决策逻辑可以提供完整的决策模型。如下图:
左侧部分业务流程模型(如BPMN)业务处理过程中,在决策发生的地方通过定义特别的任务或活动描述决策是如何协作的。右下侧决策逻辑(例如,PRR,PMML)可以用来做单个决策的具体逻辑定义,例如业务规则,决策表,或可执行的分析模型。决策需求图和决策逻辑可以提供一个完整的决策模型,通过详细指定处理任务的决策过程,为业务流程模型做了很好的补充。
为什么需要DMN
DMN为分析人员提供一种工具,用于将业务决策逻辑与业务流程分离,这大大降低业务流程模型的复杂性提高了其可读性,使用DMN封装业务决策逻辑还允许业务流程或业务规则在不相互影响的情况下进行更改。
上图左侧有很多网关显示不同流程路径的分支,流程模型显得比较混乱。右侧用DMN将业务决策逻辑与业务流程分离简化了业务流程。
在EA中使用DMN模型的优势:
可以分析复杂的决策过程。它可以把复杂的决策拆分为相互关联的决策、业务规则、数据集和知识源的系统。
可以运行DMN模型的仿真以验证模型的正确性。验证模型后,可以使用Java,JavaScript,C
++或C#生成DMN模块。DMN模块可以与EA BPSim ,StateMachine 一起使用。
DMN有什么
DMN中决策模型包括一个或多个决策需求图Decision Requirements Graph(DRD)中描述的决策需求图形Decision
Requirements Diagrams(DRG)。
DRG模型显示了关键元素在其中的作用和他们以及它们之间的依赖性。元素包括决策(decisions),业务知识模型(business
knowledge),知识源,输入数据(input data)和决策服务(decision services):
EA中的DMN模型元素
EA中DMN模型元素具体说明如下:
元素列表 |
说明 |
|
Decision: 决策元素可以引用多个业务知识模型的决策逻辑来帮助进行决定。
Business Knowledge Model: 业务知识模型元素是封装业务知识,比如知识库,业务规则库,决策表或分析模型。
Input Data: 输入数据元素表示用于决策的一个或多个输入信息。
Item Definition: 项目定义元素用于定义输入数据的结构,并可选地限制数据的允许值的范围。
Decision Service:决策服务将决策模型中的一个或多个决策公开为可重用元素,可以在决策模型中的另一个决策内部调用,或者在BPMN流程模型中的任务外部调用。
Information Requirement: 表示输入数据或决策输出被用作决策的输入。
Knowledge Requirement: 表示对业务知识模型或决策服务的调用。
Authority Requirement: 表示DRG元素对另一个充当指导或知识源的DRG元素的依赖性。 |
下面我们具体介绍几种主要元素。
1、决策元素 Decision,决策元素的输出使用值表达式。值表达式包含四种类型:决策表,文字表达式,调用或框式上下文。
决策类型 |
描述 |
|
DecisionTable决策表是一组相关的输入和输出表达式的表格表示形式,组织成规则以指示哪个输出条目适用于一组特定的输入条目。 |
|
Invocation决策调用要求使用知识需求连接器引用业务知识模型元素。Decision元素仅包含提供评估业务知识模型(BKM)的上下文的参数。BKM返回的部分或全部结果可以设置为作为决策的输出传递。 |
|
LiteralExpression文字表达式是DMN表达式的最简单形式。通常将其定义为单行语句或if-else条件块。 |
|
Context是上下文条目的集合。每个上下文条目都包含一个变量和一个表达式。上下文也具有结果值。 |
2、业务知识模型元素 Business Knowledge Model,表示可重用的决策逻辑。通常,它连接到决策元素,该决策元素调用BKM并传递一组输入。BKM使用其内部逻辑来评估输出,该输出将传递回决策。
BKM通常需要定义一组输入参数以及输出的定义,也可以使用固定值。使用DMN表达式窗口定义参数和决策逻辑。
3、输入数据元素 Input Data,用于将来自模型外部的一组值输入到Decisions中。InputData元素的名称必须唯一,并且不得与任何其他决策,输入数据,业务知识模型,决策服务或决策模型中的导入的名称重复。双击InputData元素以打开DMN表达式窗口修改InputData元素的属性。
4、项目定义元素 Item Definition,用于定义输入数据的结构,并可选地用于限制数据的允许值的范围。
5、DMN仿真元素DMNSimConfiguration ,对DMN模型进行仿真。可以在DMN仿真窗口对其进行设置。
在EA中如何创建DMN模型
在EA中创建DMN 模型的方法有2种:
1、打开模型向导,选择Requirements建模类型->点击Decision Modeling->选择要创建的DMN模型示例->点击创建模式按钮,
如图所示:
2、选择新建图,打开如下界面,在类型中选择“Requirements”中的“Decision Modeling”,然后选择DMN图
,点击“OK”按钮。
无论上面哪种方式在建立DMN模型后,打开对应的工具箱Toolbox,里面列有决策模型元素,根据需要选择需要的元素拖动到画布上。
DMN建模示例
银行或者物流 业务流程比较繁琐,流程比较乱,有很多的情况需要去判断,决策 然后 进行后续流程。使用DMN建模,通过决策需求图表示业务需求,并能够将复杂的逻辑封装在决策表达式中。向银行申请房贷,银行会对申请人以及所申请的贷款进行审核。
通过一系列决策来判定申请人是否有还贷能力,是否批准贷款申请。申请人已经贷款,年龄、婚姻状况和就业状态等进行审核。房贷的税率、周期、还款总金额等信息
以下是用DMN决策表分析贷款请求的例子。决策根据用户定义的结构输入数据“要求”输入。通过一系列调用处理输入数据,并通过业务知识模型(BKM)产生最终决策。
Decision元素在右上角显示一个图标,指示其使用的是哪种类型的值表达式。上图中有2种决策 DecisionTable
和Invocation。
双击图上的DMN元素,打开DMN表达式窗口,在其中定义、查看和更新元素的详细信息。选定元素不同,显示内容不同,可以自定义。选择申请人数据,双击打开DMN表达式窗口,显示申请人的数据结构以及仿真时数据集的选择。如下图:
选择 Strategy决策元素,它的类型是决策表。决策表是用表格形式表示一组相关联的输入和输出表达式,组织成规则,说明一组特定的输入项所适用的输出项。打开
DMN表达式窗口。
如上图每一行都是一条规则。整个表由输入列、输出列、和命中策略构成:
U(Unique):只有一条规则可以匹配
A(Any):多个规则可能匹配
P(Priority):选择具有最高优先级的规则
F(First):选择第一个匹配规则(表中的顺序!)
决策表是“UC”表,意思是:单一,唯一和完整。
在EA中建立好DMN模型后 ,我们可以通过DMN仿真元素验证、运行、调试模型,以验证模型的正确性 。
要设置DMN仿真,您必须首先创建DMNSimConfiguration元素:
1、打开决策需求图,将“Simulation Configuration”元素从工具箱的“ DMN组件”页面拖到图上
2、双击打开DMN模拟窗口,所选包中的所有DMN元素(决策,BusinessKnowledgeModel,InputData和ItemDefinition)将被加载到DMN
Simulation窗口。“目标决策”组合框将列出所有决策。
3、选择目标决策-相关的InputData元素将在“元素”列中列出,通过单击列表中的“值”下拉箭头来设置已定义的数据集。
4、单击“运行”按钮,然后完成模拟。
好了,以上就是在EA中建立DMN模型的介绍。希望此文对大家了解DMN模型有所帮助。
此外,DMN模型还可以结合BPMN和CMMN进行建模。
我们网站还有很多DMN的资源,欢迎大家关注。
如果您希望了解更多信息:
下载 pdf版:
基于EA建立DMN模型
本文使用的建模工具为EA,可以下载试用版http://tool.uml.com.cn/ToolsEA/download.asp
后记
希望您读了此文后有所受益。
如果您有经验乐于分享,欢迎投稿给我们。
如果您对我们的培训、咨询和工具感兴趣:
|