预订演示
前页 后页

集成到UML类元素

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

DMN Module 可以与UML类元素集成,因此从类元素生成的代码可以重用 DMN Module 并且结构良好。由于类元素是一个状态机,在与DMN Module集成后,可以可执行状态机模拟通用地使用DMN Module的强大功能。

在本主题中,我们将解释将 DMN模型与UML类元素集成的过程,考虑到:

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

类元素的需求

假设我们有一个类Applicant ,其操作AffordabilityForProduct评估申请人是否能够负担得起贷款产品。

A简化的模型类似于:

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

Applicant包含两个属性,实际上是根据申请人的月收入、支出、现有还款、年龄和就业状态等更基础的数据计算得出的。

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

DMN 模型

在这个例子中,我们有两个不相交的 DMN 模型来展示一个UML类可以集成多个 DMN 模型。

分期付款计算器

此 DMN模型根据金额、费率和条款计算每月还款额。它由输入数据、决策和决策业务知识模型组成。

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

信用应急因子计算器

该 DMN模型根据申请人的风险评分计算信用或有因素。它由一个InputData、两个Decision和两个业务模型组成。

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

注记:在本例中,我们聚焦关注如何将 DMN 模块集成到类元素中; DMN 元素的细节在此不作描述。

为两个 DMN 模型生成代码

单击生成代码图标,并检查您是否可以在系统输出窗口的“DMN”选项卡中看到此string :

DMN 模块已成功编译。

注记:由于本模型使用内置函数PMT,因此必须包含 DMN 库:

单击生成代码图标,并检查您是否可以在系统输出窗口的“DMN”页面中看到此string :

DMN 模块已成功编译。

DMN捆绑到类&智能感知

把两个工件放在类图上。

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

使用快速链接器创建一个从类应用程序到每个工件依赖关系的快速链接器。

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

DMN模块绑定操作时:

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

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 Bindings之后,智能感知操作的代码编辑器将支持DMN Modules。要触发智能感知,请使用以下组合键:

  • Ctrl+空格 - 在大多数情况下
  • Ctrl+Shift+Space - 当 Ctrl+Space 在括号 '(' 之后不起作用时;例如,函数的参数,或在 'If' 条件的括号内
  • 将列出类属性 - m_RiskScore、m_DisposableIncome
  • 将列出操作参数 - 金额、费率、团队
  • 操作将被列出 - AffordabilityForProduct
  • 将列出所有绑定的 DMN 模块 - Contingency_Factor_Calculator、Installment_Calculator
使用智能感知支持编写代码非常容易。在访问 DMN 模块时,所有的输入数据、决策和业务模型将被列出以供选择。

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

这是操作的最终实现。

类的代码生成(使用 DMN集成)

'生成代码生成' 生成类代码:

  • DMN 模块作为类的属性生成
  • dmnBinding 操作的代码已更新
注记:无论生成选项是 'Overwrite' 还是 'Synchronize',如果操作的代码具有构造型 'dmnBinding',都会更新。

了解更多