预订演示

请注意 : 本帮助页面不适用于最新版本的Enterprise Architect. 最新的帮助文档在这里.

前页 后页

集成BPSim进行仿真

DMN 的优势在于它能够通过决策需求图来描述业务需求,并将复杂的逻辑封装在多种表达方式中,例如决策表和 Boxed Context。

同样,BPMN 的优势在于它能够用任务和事件的序列流来描述业务流程,或者用信息流来描述流程的协作。

决策需求图在业务流程模型和决策逻辑模型之间架起了一座桥梁:

  • 业务流程模型定义业务流程中需要决策的任务
  • 决策需求图定义了在这些任务中要做出的决策、它们的相互关系以及它们对决策逻辑的要求
  • 决策逻辑以足够的细节定义所需的决策,以允许验证和/或自动化
决策提供了一个完成决策模型,通过在细节中指定在流程任务中执行的决策来补充业务流程模型。

本主题中演示的两个示例可以从以下位置访问:

  • EA示例模型|模型仿真| BPSim 模型
  • 蓝图|业务建模| BP模拟 | BPSim 案例研究
BPSim 表达式使用 DMN模型有两种方式:
  • DMN 的决策服务 - 由贷款申请进程演示
  • DMN 的 BusinessKnowledgeModel - 由交付成本计算证明
将 DMN模型与 BPSim模型集成的过程包括:
  • DMN模型验证、仿真、代码生成和生成模块的测试
  • 设置从 BP工件到工件使用依赖关系
  • 从 DMN 数据集中生成或更新 BPMN 数据对象
  • 在 BPSim 中创建属性参数以用于从网关流出的任务和序列
  • 将 DMN 接口绑定到属性Parameters

针对Java等编译语言的 DMN模型验证

当您创建 DMN模型并在Enterprise Architect中对其进行仿真时,驱动仿真的代码是JavaScript ;这意味着不需要显式键入变量(变量类型是从分配给它的值推断出来的)。

但是,对于 C++、C#、 Java等语言,编译器会报一个变量没有类型的错误。

要生成这些语言,您必须在模型上运行验证并使用结果来查找需要其类型集的变量。例如:

  • 业务知识模型参数——选择要在DMN 表达式窗口中查看的BKM元素,点击第二个按钮打开“参数”对话框,指定参数类型
  • 决策类型 - 选择决策元素,打开属性窗口,对于属性'variableType'从'Value'字段中选择
  • 决策表输入/输出- 在决策表输入/输出子句上,右键显示输出上下文菜单并选择类型

Java中的DMN代码生成

在使用验证修复任何变量类型问题后,我们可以进入 DMN仿真窗口中的“生成模块”页面。

  • 在顶部工具栏数据输入字段中选择DecisionService1DecisionService1中涉及的所有元素现在都将包含在列表中
  • 项目定义和业务知识模型是全局元素
  • 输入数据和决策被封装在 DecisionService元素中
  • 支持的语言有C++、C#、 Java和JavaScript ;注记对于JavaScript生成的.js文件与模拟脚本相同(“仿真”选项卡|运行按钮下拉菜单|生成新脚本(脚本窗口))除了省略了仿真相关的代码
  • 对于Java ,“模块路径”值必须与包结构匹配;在本例中,必须将 DMNModule.java 生成到一个目录以形成一个以“\com\sparxsystems\dmn\DMNModule.java”结尾的文件路径 - 您必须手动为现在创建目录结构
单击工具栏上的生成代码按钮 ( )。这个例子将使用Java ;但是,C++ 和 C# 是相同的。执行这些操作:
  • .java 文件生成到指定的路径
  • 为这个工件创建的分析器编译脚本)
  • 这个分析器脚本编译脚本被执行
  • 在系统输出窗口中报告进度消息
如果模型有效,此过程将返回消息:

如果出现编译错误,您可以通过点击工具栏上按钮旁边的按钮打开生成的.java文件,手动修复问题,并使用生成的脚本编译,直到成功。

编译失败的一个常见原因是语言可以有不同的表达式语法。您可能需要为一种语言提供一个值以覆盖默认值(右键单击 DMN Literal Expression | Edit Expression)。

在外部使用之前测试DMN Modules

将模型生成到 java 代码并成功编译后,我们现在想要:

  • 测试这个模块的正确性
  • 为其提供输入
  • 获取输出决策值

生成BPMN数据对象

所选数据集携带的数据将生成到BPMN DataObject的“注记”字段。

  • 单击按钮(“生成模块”选项卡工具栏右侧第二个)打开“测试模块”选项卡
  • 单击工具栏上的以选择输入 BPMN DataObject 元素
  • 从“决策”组合框中选择可用的输出,例如决策(),然后单击工具栏上的运行按钮

执行结果将显示在调试窗口中。也可以打开测试模块文件,在行上设置断点,在DMN模块中调试,进行行级调试。

我们强烈建议您使用此窗口测试您的 DMN 模块,以确保 DMN 模块在给定输入(来自 BPMN 数据对象)下正常工作,并且可以成功计算输出结果。

注记模块路径:工件保存在 DMN 的 'Filepath属性中。

现在,是时候将 DMN 模块与 BPSim模型集成了。

第一步是在工件和工件仿真之间建立使用依赖关系。

注记:如果需要, A工件可以使用多个 DMN 模块。这只是简单地将所有工件支持的图表放在这个图表上,并从该图表中绘制出从 BP 到每个工件仿真的连接工件。

这些帮助主题提供了使用这些方法的两个示例。看:

  • 示例:将 DMN 决策服务集成到决策数据物件和属性参数中
  • 示例:将 DMN业务知识模型集成到属性参数中

学到更多