德國人壽保險公司LV 1871如何做到使業務專家能夠參與軟體開發的?附開源建模和程式碼生成工具 - David Ibl

banq發表於2020-04-04

在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

 

相關文章