前页 后页

将DMN模块集成到BPSim中进行仿真

DMN的优势在于它能够通过决策需求图描述业务需求,并能够将复杂的逻辑封装在诸如决策表和盒装上下文之类的通用表达式中。

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

决策需求图构成了业务流程模型和决策逻辑模型之间的桥梁:

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

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

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

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

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

但是,对于诸如C ++,C#和Java之类的语言,编译器将报告错误,指出变量没有类型。

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

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

Java中的DMN代码生成

使用验证解决所有变量类型问题后,我们可以进入DMN Simulation窗口中的“ Generate Module”页面。

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

如果存在编译错误,则可以通过单击工具栏上按钮旁边的按钮打开生成的.java文件,手动解决问题,并使用生成的脚本进行编译,直到成功。

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

外部使用之前测试DMN模块

在将模型生成为Java代码并成功编译之后,我们现在要:

  • 测试此模块的正确性
  • 提供输入
  • 获取输出决策值

生成BPMN DataObject

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

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

执行结果将显示在“调试”窗口中。您还可以打开测试模块文件,在线路上设置断点,然后在DMN模块中进行调试以进行线路级调试。

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

注意: DMN模块路径保存在DMNSimConfiguration工件的“文件路径”属性中。

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

第一步是在BPSim Artifact和DMN Simulation Artifact之间建立使用依赖关系。

注意:如有必要,BPSim Artifact可以使用多个DMN模块。只需将所有DMN工件放在此图上,并绘制从BPSim工件到每个DMN Simulation工件的从属连接器,即可支持这一点。

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

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

学到更多