前页 | 后页 |
在Enterprise Architect构建决策模型
在“ 决策建模示例”中描述的模型中 ,我们展示了如何使用决策表建模决策,其中决策结果是通过在表中找到一行来确定的,其中表中的输入值与输入值匹配在考虑中,给出特定的输出结果。
现在,我们将逐步解决为“机舱升级”示例创建决策模型的过程,研究如何在Enterprise Architect创建此类模型。
此示例中涉及许多模型元素,例如输入数据元素,用于描述输入数据(定义数据类型)的项目定义,决策元素以及保存决策表的业务知识模型元素定义。
创建决策需求图
这些步骤将指导您创建简单的决策需求图(DRD)。在此示例中,我们将从头开始创建模型,而不是使用“模型向导”中的模式。
步 |
描述 |
也可以看看 |
---|---|---|
1个 |
选择透视图“需求|决策建模”。 (将显示“模型向导”,但在本示例中将不使用它,因此请关闭“模型向导”。) |
|
2 |
创建一个新的DMN图。将其命名为“航空公司客舱升级”。 |
|
3 |
使用图工具箱,在图上放置一个Decision元素。选择“调用”作为类型-我们将使用此元素从业务知识模型元素“调用”决策。将元素命名为“确定要升级的客舱”。 |
调用方式 输入用于仿真的参数值 |
4 |
在图上放置一个InputData元素。将此元素命名为“客户”。 |
输入数据 |
5 |
在图上放置另一个InputData元素。将此元素命名为“机舱状态”。 |
|
6 |
将业务知识模型元素放在图上。选择类型“决策表”。将此元素命名为“机舱升级策略”。 |
输入用于仿真的参数值 决策表 |
7 |
从决策“确定要升级的机舱” 到输入数据“客户”绘制一个“信息需求”连接器。 |
|
8 |
从决策“确定要升级的机舱” 到输入数据“机舱状态”绘制一个“信息需求”连接器。 |
|
9 |
从决策“确定要升级的机舱” 到 BKM“机舱升级策略”,绘制一个“知识要求”连接器。 |
在这个阶段,我们应该有一个简单的DRD,类似于:
现在,我们可以为组成该模型的每个元素指定详细信息。
定义决策表
通过双击业务知识模型元素“机舱升级策略”,将显示“ DMN表达式”窗口,其中显示一个空的决策表。在这里,我们将定义机舱升级政策的规则。
默认情况下,将创建具有两个输入列和一个输出列,一个标题行和三个空规则行的新决策表。
表格最左侧的列显示“匹配策略”,并为规则编号。默认情况下,“匹配策略”为“唯一”的“ U”。这是我们将在示例中使用的策略,因此您无需更改此列标题。
有关“命中策略”的更多信息,请参阅“ 决策表命中策略帮助”主题。
决策表输入和输出的名称和定义类型
步 |
描述 |
也可以看看 |
---|---|---|
1个 |
在“ DMN表达式”窗口的工具栏上,单击“编辑参数”按钮 。 显示“编辑参数”对话框。 |
|
2 |
将参数名称“输入1”替换为“ Pax Num of Booked”。 如有必要,请单击“类型”下拉箭头,然后将此参数的类型设置为“数字”。 |
|
3 |
将参数名称“输入2”替换为“ Pass上个月的航班数”。 还将此参数的类型设置为“数字”。 关闭“编辑参数”对话框。 |
|
4 |
编辑将对列1求值的输入表达式。 选择标题单元格(包含文本“输入1”),然后再次单击或按F2进入“编辑”模式。选择所有单元格文本,然后按空格键。显示输入参数列表。单击“ Pax Num of Pax Overbooked”,然后按“ Enter”。列1的表达式设置为“ Pax Num of Booked”。 注意 :为每一列求值的输入表达式通常只使用相应的输入参数;但是,您可以使用复杂的表达式。 |
|
5 |
右键单击第1列表达式,并检查其数据类型是否设置为“数字”。 |
|
6 |
编辑将对列2求值的输入表达式。 选择所有文本,然后按空格键。显示输入参数列表。选择“上个月要通过的航班数量”,然后按“ Enter”。 第2列的表达式设置为“上个月通行证的航班数”。 |
|
7 |
右键单击第2列表达式,然后将其数据类型设置为“数字”。 |
|
8 |
编辑决策表输出的名称。 将“输出1”替换为“升级机舱”,然后按“ Enter”。 |
|
9 |
设置决策输出的数据类型。 右键单击输出列标题,然后选择“字符串”。 |
|
10 |
设置决策输出的允许值。 在输出列标题正下方(但在行1上方)的单元格中,定义允许的输出值。输入“商务舱,头等舱”。 注意 :由于数据类型已指定为“字符串”,因此不需要在值周围使用引号。 |
定义决策表的规则
在表格单元格中输入值以匹配该图像。
单击一个单元格以将其选中,然后再次单击以对其进行编辑。
您可以通过选择要复制的行来复制和粘贴现有规则(按住Shift键并单击以添加到选择中),右键单击并选择“复制”,然后右键单击并选择“附加”。
完成规则编辑后,单击“保存”按钮 。
最后,单击Validate按钮 ,以检查规则表中的错误。
创建ItemDefinition元素
向图中添加两个ItemDefinition元素,每个InputData元素一个。将一个元素命名为“ CustomerDefinition”,将另一个命名为“ CabinStatusDefinition”。
双击名为“ CustomerDefinition”的ItemDefinition以编辑定义。显示“ DMN表达式”窗口。
右键单击“ CustomerDefinition”单元,然后选择“添加子组件”。用“上个月的航班数”改写子组件的名称,并用“数字”改写其数据类型。单击“保存”按钮以保存更改,然后关闭窗口。
同样,双击名为“ CabinStatusDefinition”的ItemDefinition,添加一个名为“ Num of Pax Pabook Overbooked”的子组件,并将其数据类型设置为“ number”。保存更改并关闭窗口。
为每个InputData元素指定数据类型
选择InputData元素“客户”。在“属性”窗口中,选择属性“ typeRef”,然后单击按钮。
选择ItemDefinition“客户定义”作为类型。点击“确定”。
同样,将“机舱状态定义”指定为“机舱状态”的类型。
指定决策元素的输入
双击决策元素“确定要升级的客舱”
在“ DMN表达式”窗口中,找到第一行中包含文本“ Pax Num of Booked”的表格行。单击此行第二列中的单元格,然后按空格键。显示可能的输入值列表。选择“机舱状态”。人数超出预定人数”,然后按“ Enter”。选择内容将写入单元格中。
对第二个表格行“上个月的航班数”重复此过程,选择“客户”。上个月的航班数”。
单击保存按钮。
单击验证按钮。
定义数据集
通过使用一系列有代表性的数据集运行仿真,以验证决策模型在所有情况下都能产生正确的结果,可以测试决策模型的“正确性”。
您可以使用一系列数据值来创建具有各种名称的大量数据集。您可以将数据集之一设置为默认值 。
现在,我们将为每个InputData元素创建一个数据集。
步 |
描述 |
也可以看看 |
---|---|---|
1个 |
双击InputData元素“ Customer”。 显示DMN表达式窗口。 |
|
2 |
在DMN表达式窗口中,单击“编辑数据集”按钮 。 显示“编辑数据集”窗口。 |
|
3 |
单击按钮。 创建一个新的数据集。 |
|
4 |
如果需要,请覆盖数据集的名称。 将“类型”保留为“数字”。输入一个值,例如3。 单击保存图标和确定按钮。 |
|
5 |
重复输入数据“机舱状态”。输入一个值,例如4。 |
添加DMNSimConfiguration工件
在图工具箱中找到DMN“仿真配置”工件。也将其中之一拖放到图上。
双击它以在'Simulate'选项卡上打开DMN Simulation窗口。
在DMN Simulation窗口中,您可以运行完整的决策模型的模拟。您还可以执行验证,生成代码和生成测试模块。
步 |
描述 |
也可以看看 |
---|---|---|
1个 |
在此窗口的工具栏中找到编辑字段。 |
|
2 |
单击此字段中的下拉箭头。 将显示一个列表,显示与DMNSim配置工件关联的软件包中的所有决策服务和决策元素。在这种情况下,“确定要升级的客舱”是列表中的唯一项目。 |
|
3 |
单击“确定要升级的客舱”。 |
|
4 |
窗口的主体现在显示InputData元素和决策结果,这些数据可用作所选决策的输入。 单击保存按钮。 |
|
5 |
使用“值”列为InputValues选择预定义的数据集之一,然后可以单击下部工具栏中的“运行”按钮来使用所选数据集运行模拟。 |