德国人寿保险公司LV 1871如何做到使业务专家能够参与软件开发的?附开源建模和代码生成工具 - David Ibl


在LV 1871,最重要的战略目标之一就是使业务专家能够参与软件开发。使用便捷和出色的工具表达业务规则是通往全自动、数字和敏捷保险公司的关键方式。而可读、可配置的业务规则对于高度自动化的业务至关重要。

DMN起初是基于Camunda DMN编辑器工具包,它是作为任何软件组件的一部分来满足此要求的好方法。通过XML语言和注释定义决策模型来表达业务规则。这种可视化的设计和业务规则的定义得到了众多建模者的支持。

业务规则的执行由不同的执行引擎支持。这些引擎通常提供方便的API,以将业务决策与任何软件集成在一起。在LV 1871,我们使用Camunda引擎执行业务决策,因为它是我们在业务流程自动化方面的默认引擎。通过使用DMN,我们可以将业务开发流程与软件开发流程深度集成,从而实现产品变更。
作为数字化的IT升级的结果,与客户服务或产品有关的更改越来越多,导致更频繁的IT系统更改。因此需要让业务专家能够自失血己对IT系统进行更改。

作为跨职能团队的下一个阶段,业务专家和软件专家可以并排开发软件项目,引入他们对具体领域的特殊知识。

当我们为业务专家提供强大的功能时,对配置系统本身最重要的要求是,它必须与常见的开发流程(如CI / CD和自动化测试)集成在一起。

由于标准的DMN编辑器仅提供有关建模的功能,因此我们决定扩展Camunda DMN编辑器工具包,以创建直接集成到基于GIT的开发过程中的建模器。此外,扩展的编辑器应提供测试和决策模拟等功能,以简化业务规则的开发。

DMN管理器
因此,我们推出了DMN管理器,这是一种用于基于DMN的应用程序的IDE,具有调试和测试等功能。
1.基础
系统的核心是客户端的Camunda DMN建模器工具包和服务器端的决策引擎。客户端基于Javascript Angular应用程序,并打包为Electron App

2.通用架构和工作流程
通常,系统由三个组件组成。客户端建模器,用于仿真的Web服务和测试驱动程序。

主要组件是支持DMN建模的客户电子应用程序。客户端无需服务器端组件即可使用。服务器组件提供Web服务,以模拟,测试和验证决策。最后但并非最不重要的一点是,有一个测试驱动程序组件,该组件将DMN测试定义与任何Java项目中的任何ci管道集成在一起。
我们决定在服务器端进行任何与执行相关的工作,以使用真实的Camunda引擎执行模拟真实的运行时行为。

功能性
DMN管理器使用多种功能扩展了Camunda DMN Modeler,从而改善了DMN开发经验。以下部分列出了最重要的功能。

  • 输入数据模型定义

数据建模工具提供了定义任何类型的数据结构的功能。它用于定义决策的输入模型的数据结构。
输入数据模型也可以通过加载Open API 3定义(swagger)来定义。
一旦建立了数据模型,就可以使用它提供输入表单来模拟或测试决策。数据模型定义以及测试定义与原始DMN文件并排存储在一个额外的文件中。该基于JSON的项目文件包含与DMN不直接相关的所有信息。为了将这些文件分隔在Java程序中,它们可以位于自己的目录中,并且原始DMN文件通过项目文件中的路径链接。
  • 决策模拟

该工具嵌入了一个UI,以使用用户定义的输入数据来模拟决策。模拟决策后,需求图中所有已执行的决策都会在需求图中突出显示,并且可以通过所有相关表来调试决策。
也可以将任何模拟决策定义为持久性测试。通过使用Java Camunda决策引擎的Web服务在服务器端进行仿真。
可以使用提供给定API的任何种类的基于休息的服务来模拟或测试决策。毕竟,任何决策模拟都可以通过这种方式由靠近发动机的生产来完成。
  • DMN验证

该工具提供了DMN的一些基本验证。我们正在使用由某些自定义验证程序扩展的red6 dmn-check库。客户端工具会在每次保存或打开文件时进行验证。
验证结果显示在集成状态栏中。指向具体的警告或错误将打开具体的决策表并标记线条。验证需要运行和配置服务器组件。
  • 自动化测试和测试定义

测试窗格用于定义测试用例。这些是简单的输入输出测试。定义输入数据和相应的输出数据并进行比较。
在需求图中为每个表定义了测试用例,因此可以某种方式隔离表的测试。
每个测试用例都保存在原始DMN旁边的项目文件中。如果DMN项目是Java项目的一部分,则可以使用测试驱动程序将测试与Java项目本身的CI流程集成在一起。每次触发构建过程时,都会执行测试。测试驱动程序将创建一个测试套件,并可以识别失败的测试。
使用“所有测试”对话框,可以运行一个DMN文件的所有测试,然后跳转到失败的测试。
  • 工作区视图

打开任何DMN文件后,工作区视图将显示当前文件夹的所有DMN文件。只需单击另一文件即可切换文件。此视图还包含GIT历史记录。GIT历史记录显示任何提交注释,提交者的姓名和电子邮件以及提交日期。
  • 基本的Git支持

DMN管理器嵌入了对GIT存储库的基本支持。当文件作为GIT存储库的一部分打开时,将启用GIT支持。该工具提供以下功能:
  1. 克隆存储库
  2. 推/拉当前存储库(仅向前快速拉)
  3. 使用自定义消息将当前更改作为一次提交提交
  4. 重置工作区中的当前更改
  5. 创建和签出分支
  6. 从历史中以独立负责人的身份签出提交
  7. 查看当前存储库的提交历史记录
  8. 显示当前存储库状态和分支

GIT支持使用lib2git绑定,并要求在设置页面上设置ssh-key。存储库必须配置正确。
  • 编辑工具

  1. 搜索和替换搜索和替换可用于按单元格内容查找规则。替换功能是一个强大的工具,可以编辑大量细胞。可以通过一个单元格的内容搜索一堆规则,并用不同的搜索字符串替换另一个单元格中的内容。
  2. 复制和粘贴规则可以将当前显示的规则复制并粘贴到同一表或另一个表中。可以搜索一些规则,然后将其复制。
  3. CSV导入和导出导出功能可用于将不带单元格标题的当前表导出到CSV文件。任何CSV数据都可以导入到当前表中。因此,可以在excel之间编辑DMN表内容。

开源地址:https://github.com/davidibl/dmnmgr-server
客户端:https://github.com/davidibl/dmnmgr-client