前言:在集成Slickflow.NET 引擎組件過程中,引擎組件需要將用戶,角色等資源數據讀取進來,供引擎內部調用;而企業客戶都是有自己的組織架構模型,在引入模塊化架構設計后,引擎組件的集成性更加友好便捷。
1. 未采用模塊化設計之前的項目結構
在引擎內部,創建了Resource的目錄,用於組織機構模型數據的處理,而且僅作了用戶和角色相關的數據讀取,未涉及到組織機構模型;比如部門和員工等信息。這樣當用戶集成自己的組織架構模型時候,就要擴展此部分代碼,對引擎內部的統一性造成一定影響,不便於用戶的后期版本升級。

2. 采用模塊化設計之后的項目結構
新增加了Slickflow.Module項目,用於統一定義所有的模塊化接口,包含組織機構模型接口。后期可能新增加的模型有權限模型,數據對接模型等。在Slickflow.Module項目里面主要申明標准接口和實體的定義。實體用於引擎組件內部使用,假如企業客戶所使用的實體屬性字段不同,需要做實體之間的轉換。
添加Slickflow.Module項目之后,也就是要對標准接口和實體進行實現,比如Slickflow.Module.Resource項目就是對組織機構模型的具體實現,每個企業客戶關於自有的組織機構模型業務代碼,就可以添加到這里。用戶不用關注引擎內部,而直接在該項目中修改增加代碼即可。這樣做到了組織機構模型跟引擎內部邏輯的分離。

3. 模塊化架構設計原則
為何要進行模塊化設計? 在引擎組件集成過程中,引擎內部功能雖然比較穩定,但是組織架構等模塊卻容易引起變化,如何方便用戶修改擴展通常帶來一定的困擾。而采用模塊化架構設計后,問題被分離出來,首先定義好標准化的接口和實體,然后客戶自己實現自有的模塊項目就可以。這樣保證了系統在整體性上的穩定。
1) 始終分離容易變化的部分
個體功能的多樣性是一種自然存在的法則,不能強求用戶的意志,而要從系統上做到包容。包容的方式就是將變化的部分分離出來,讓用戶自己去實現各種特性,從而達到對業務集成的滿意度。
2) 保持核心功能的穩定性
在分離變化的部分后,引擎提供的核心功能會更加穩定,模塊化的組件會被按照依賴注入的方式被引入到引擎組件內部,外部的模塊和引擎內部做到了一種合理的交流交互。
3) 方便核心功能的后期升級
引擎版本會不斷升級,模塊的標准化接口也會不斷升級。在采用模塊化架構設計后,用戶會關注兩個升級指標,一個是引擎核心功能,一個是標准化的模塊定義。職責上的分離,將會幫助客戶認識系統核心和外部模塊的邊界,保持對引擎組件的熟悉。
4. 總結
Slickflow項目組致力於良好的軟件架構設計,模塊化架構設計和實踐是我們在設計引擎組件過程中的原創思路,其目的是讓用戶始終能夠升級和擴展工作流系統,保持整個系統的穩定性。歡迎讀者繼續關注和使用Slickflow.NET 引擎組件。
