前页 | 后页 |
集成BPSim进行仿真
DMN 的优势在于它能够通过决策需求图来描述业务需求,并将复杂的逻辑封装在多种表达方式中,例如决策表和 Boxed Context。
同样,BPMN 的优势在于它能够用任务和事件的序列流来描述业务流程,或者用信息流来描述流程的协作。
决策需求图在业务流程模型和决策逻辑模型之间架起了一座桥梁:
- 业务流程模型定义业务流程中需要决策的任务
- 决策需求图定义了在这些任务中要做出的决策、它们的相互关系以及它们对决策逻辑的要求
- 决策逻辑以足够的细节定义所需的决策,以允许验证和/或自动化
本主题中演示的两个示例可以从以下位置访问:
- EA示例模型|模型仿真| BPSim 模型
- 蓝图|业务建模| BP模拟 | BPSim 案例研究
- DMN 的决策服务 - 由贷款申请进程演示
- DMN 的 BusinessKnowledgeModel - 由交付成本计算证明
- DMN模型验证、仿真、代码生成和生成模块的测试
- 设置从 BP工件到工件使用依赖关系
- 从 DMN 数据集中生成或更新 BPMN 数据对象
- 在 BPSim 中创建属性参数以用于从网关流出的任务和序列
- 将 DMN 接口绑定到属性Parameters
针对Java等编译语言的 DMN模型验证
当您创建 DMN模型并在Enterprise Architect中对其进行仿真时,驱动仿真的代码是JavaScript ;这意味着不需要显式键入变量(变量类型是从分配给它的值推断出来的)。
但是,对于 C++、C#、 Java等语言,编译器会报一个变量没有类型的错误。
要生成这些语言,您必须在模型上运行验证并使用结果来查找需要其类型集的变量。例如:
- 业务知识模型参数——选择要在DMN 表达式窗口中查看的BKM元素,点击第二个按钮打开“参数”对话框,指定参数类型
- 决策类型 - 选择决策元素,打开属性窗口,对于属性'variableType'从'Value'字段中选择
- 决策表输入/输出- 在决策表输入/输出子句上,右键显示输出上下文菜单并选择类型
- Boxed Context 变量 - 请参阅盒装上下文帮助主题
Java中的DMN代码生成
在使用验证修复任何变量类型问题后,我们可以进入 DMN仿真窗口中的“生成模块”页面。
- 在顶部工具栏数据输入字段中选择DecisionService1 ; DecisionService1中涉及的所有元素现在都将包含在列表中
- 项目定义和业务知识模型是全局元素
- 输入数据和决策被封装在 DecisionService元素中
- 支持的语言有C++、C#、 Java和JavaScript ;注记对于JavaScript生成的.js文件与模拟脚本相同(“仿真”选项卡|运行按钮下拉菜单|生成新脚本(脚本窗口))除了省略了仿真相关的代码
- 对于Java ,“模块路径”值必须与包结构匹配;在本例中,必须将 DMNModule.java 生成到一个目录以形成一个以“\com\sparxsystems\dmn\DMNModule.java”结尾的文件路径 - 您必须手动为现在创建目录结构
- .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业务知识模型集成到属性参数中