前页 后页

将DMN模块集成到UML类元素中

创建并模拟了决策模型后,您可以使用Java,JavaScript,C ++或C#生成DMN模块并进行测试。

DMN模块可以与UML Class元素集成在一起,因此从该Class元素生成的代码可以重用DMN Module并具有良好的结构。由于Class元素可以定义StateMachine,因此在与DMN模块集成之后,可执行StateMachine仿真将通常能够使用DMN模块的功能。

在本主题中,我们将考虑将DMN模型与UML Class元素集成在一起的过程:

  • 类元素的要求
  • DMN模型
  • DMN绑定到类和智能感知
  • 类元素上的代码生成

类元素的要求

假设我们有一个类别申请人 ,其操作AffordabilityForProduct评估申请人是否可以负担贷款产品。

一个简化的模型类似于:

A view of Class element to be used for integration with a DMN model using Sparx Systems Enterprise Architect.

类别申请人包含两个属性,它们实际上是根据更基本的数据计算得出的,例如申请人的月收入,支出,现有还款,年龄和就业状况。

但是,在此示例中,我们通过跳过这些步骤并直接提供可支配收入和风险评分来简化模型。

DMN模型

在此示例中,我们有两个不相交的DMN模型,以显示UML类可以集成多个DMN模型。

分期付款计算器

该DMN模型根据金额,费率和条款计算每月还款额。它由InputData,决策和业务知识模型组成。

An example of DMN Module showing it in simulation mode using Sparx Systems Enterprise Architect.

信用意外因素计算器

该DMN模型根据申请人的风险评分来计算信用意外因素。它由一个InputData,两个决策和两个业务知识模型组成。

An example of DMN Module showing it in simulation mode using Sparx Systems Enterprise Architect.

注意:在此示例中,我们集中于如何将DMN模块集成到Class元素中。 DMN元素的细节在此不再描述。

为两个DMN模型生成代码

单击Generate Code图标,然后检查是否可以在“ System Output”窗口的“ DMN”选项卡中看到此字符串:

DMN模块已成功编译。

注意:由于此模型使用内置功能PMT,因此必须包括DMN库:

单击Generate Code图标,然后检查是否可以在“ System Output”窗口的“ DMN”页面中看到此字符串:

DMN模块已成功编译。

DMN绑定到类和智能感知

将两个DMNSimConfiguration工件放在类图上。

Integrate a DMN Model and Class Element by placing DMNSimConfiguration artifacts on the class diagram in Sparx Systems Enterprise Architect.

使用快速链接器创建从类申请人到每个DMN工件的从属连接器。

创建连接器时,将出现一个对话框,提示您选择要绑定到DMN模块的操作。

当DMN模块绑定到该操作时:

  • 该操作采用构造型<< dmnBinding >>
  • 依赖关系连接器链接到该操作
可以将多个DMN工件绑定到同一操作。

A diagram showing a Class that that is connected to two DMN Simulaiton Artifacts setting the integration of a Class to a DMN module.

在DMN绑定之后,该操作的代码编辑器的Intelli-sense将支持DMN模块。要触发Intelli-sense,请使用以下按键组合:

  • Ctrl +空格键-在大多数情况下
  • Ctrl + Shift +空格键-括号(()后面的Ctrl +空格键不起作用时;例如,函数的参数或'If'条件的括号内
  • 将列出类属性-m_RiskScore,m_DisposableIncome
  • 将列出操作参数-金额,费率,期限
  • 将列出操作-AffordabilityForProduct
  • 将列出所有绑定的DMN模块-Contingency_Factor_Calculator,Installment_Calculator
借助Intelli-sense支持,编写代码非常容易。访问DMN模块时,将列出所有输入数据,决策和业务知识模型供选择。

该图显示了我们正在从Installment_Calculator中选择“ Get_Required_monthly_installment()”。

这是该操作的最终实现。

类的代码生成(与DMN集成)

“在类申请人上生成代码”产生以下代码:

  • DMN模块作为类的属性生成
  • dmnBinding操作的代码已更新
注意:无论生成选项是'Overwrite'还是'Synchronize',如果操作的代码具有构造型'dmnBinding',则将对其进行更新。

学到更多