天天看點

基于ESB權限初始化流程開發總結

在集團資訊化系統的建設過程中,由于應用系統數量日益增多,很多集團缺少一個能有效地将衆多系統身份認證、賬号管理,授權等功能內建的軟體系統。由此IDM應運而生,在IDM中統一權限的功能資源子產品是對下遊系統的平台進行功能資源的統一管控。在管控之前需要将下遊系統的功能資源導入到IDM系統中進行管理。但是在統一管理之前,需要将系統的曆史資料進行初始化導入。後續通過新增、修改将資料逐漸調整為符合設定标準的資料。

權限資料導入需要調用IDM的導入接口,是以需要ESB進行權限資料的流程開發,對接IDM與下遊系統,ESB可以快速開發各種服務流程,滿足各種資料的對接,資料映射等需求,通過服務流程開發将下遊系統的出參資料進行調整和修改,并根據IDM提供的入參資訊,通過ESB進行資料處理将功能部分的權限資料進行初始化導入。本次介紹服務流程的開發思路和過程為後續項目人員流程調整提供參考。 

1需求說明 

IDM的統一權限子產品是通過對标準角色、實際角色、功能資源等進行統一規劃,在IDM中進行權限的管控,在下遊系統對相應子產品進行操作時會讀取我們IDM的對應接口檢視該子產品是否對于對應人員或角色進行授權,實作統一權限的管理。 

1.1業務背景 

在IDM中,如果想要進行下遊系統功能的統一權限管理,需要擷取各個下遊系統的功能資源資料進行權限指派,通過IDM提供的标準,功能菜單、功能節點,控制器資料和操作資訊四層資料,在權限管理子產品進行節點資料的授權,也為後續對其他業務系統的曆史資料進行清洗和更新,為此需要将下遊系統的功能菜單等資料導入到IDM中。 

1.2需求溝通 

1.IDM需要通過接口導入将控制器節點下的操作資訊資料進行導入; 

2.與相關人員進行溝通,提出IDM需要的入參資料,相關人員為來源資料擷取提供接口; 

3.接口擷取後需要進行接口功能的測試,明确拼接成導入接口所需要的入參格式,實作快速将資料導入到IDM中。 

2實作思路 

在開發ESB流程之前需要明确流程的作用,知道這個流程的最終目的。由于是擷取資料并進行資料導入,是以要明确源系統的資料出參和IDM系統提供的入參格式。 

2.1資料提供 

本次對接的下遊系統一共需要提供四層資料,分别是功能菜單、功能節點、控制器和對應的操作。 

根據提供的資料格式,在功能菜單根據固定入參擷取到對應的資料後需要通過id循環擷取功能節點,在通過功能節點的id循環擷取控制器,最後通過控制器的id循環擷取對應的操作資訊。 

2.2資料導入 

在IDM提供的資料接口中,可以根據層級的格式将功能菜單、功能節點、控制器和操作資訊拼接成一個大的Json導入到功能資源中,但是功能菜單和功能節點隻是依靠一個字段進行區分并且層級是相同的,而且功能菜單并不會關聯控制器,是以在通過接口擷取完第一層資料後,直接将功能菜單資料拼接成單獨的一個入參格式,再後續進行第二、三、四層的資料拼接,拼接成第二個Json然後調用IDM的資料導入接口進行功能的實作。 

3服務開發 

基于資料提供和資料導入的實作思路進行服務的開發,由于本次是直接擷取的全量資料并且也隻會進行一次導入,是以開發Http流程在浏覽器執行後,一次性将資料導入到IDM中即可,在參考原有的流程思路的同時也根據實際的新需求,進行流程的調整和優化。 

3.1資料擷取 

如果想要擷取本次對接的下遊系統資料,需要通過兩次認證拿到的access_token進行資料擷取。在SoapUi中先對兩個認證接口進行測試,明确出參格式,利用Http的調用節點和擴充代碼節點擷取到對應的入參所需資料。 

後續的四次資料調用都需要用到access_token才能擷取到資料,結合token和對應的id依次對接口調用,整理好出參。 

3.2開發思路 

1.在開發前需要将來源業務系統提供的接口和IDM的接口進行測試,檢查出參和入參資料; 

2.通過流程接口調用擷取來源業務系統的資料擷取令牌; 

3.通過令牌擷取來源系統的功能菜單的資料; 

4.将功能菜單的資料調整為兩種出參: 

第一種:直接将擷取到的資料存進一個自定的JsonArray中,後續功能節點進行調用時循環擷取每個功能菜單的id資料; 

第二種:将功能菜單的資料拼接成IDM對應的入參格式,在後邊的節點首先将功能菜單的資料導入到IDM中; 

5.在通過循環擷取到的功能節點資料依次存入到一個JsonArray中,為後續控制器提供資料。 

6.由于想要将功能節點、控制器和操作類型導入到IDM中需要拼接三層Json才能夠一次性導入,是以雖然這樣會讓流程的運作速度很慢,也需要擷取到控制器後需要嵌套循環操作資訊,在擷取好操作資訊後将控制器和操作資訊拼接成IDM的入參格式,在通過這層功能節點将資料拼接起來。 

7.最後當功能節點全部拼接完畢後根據IDM的入參需求拼接成對應的入參資訊,在功能菜單調用完節點後,再用功能節點拼接好的入參資訊調用IDM的資料導入節點。 

3.3開發過程 

1.在開始設定四個節點、用于擷取access_token。 

基于ESB權限初始化流程開發總結

2.通過調用蒼穹接口擷取功能菜單的資料。 

基于ESB權限初始化流程開發總結

3.根據IDM的導入接口,将出參資料拼接成需要的格式。 

基于ESB權限初始化流程開發總結

4.拼接完資料後,聲明oneResult對象後續直接調用接口将資料導入到IDM中。循環擷取的onePermJsonArray主要用于查詢後續功能菜單。 

基于ESB權限初始化流程開發總結

5.通過循環設定功能菜單和控制器的資料擷取,在控制器循環中在插入對操作資訊進行循環。在業務應用權限資料處理節點。将循環的控制器和操作資訊拼接到一個大的傳回值中。 

基于ESB權限初始化流程開發總結

6.當操作資訊的流程循環結束後,需要對控制器和操作的json資訊拼接到功能菜單的json中。

基于ESB權限初始化流程開發總結

7.将拼接出來的控制器Json用FUNC_HANDLER作為key放到功能菜單中,并且每次循環的功能菜單放到一個JsonArray中。 

基于ESB權限初始化流程開發總結

8.最後将結果資料拼寫後分兩次導入到IDM中。 

基于ESB權限初始化流程開發總結

4流程測試 

至此權限初始化流程已經開發完畢,在開發結束後需要對流程進行測試,功能菜單的資料一次查詢并存儲即可,但是功能節點所牽扯的流程引用次數較多,需要對整個流程運作進行監控并排查是否有疏漏的地方。 

4.1功能菜單 

1.首先将兩個分支節點的流程設定不走,便于快速檢視功能菜單資料是否可以導入。 

基于ESB權限初始化流程開發總結

2.列印出參資訊,然後到網頁中進行測試。 

基于ESB權限初始化流程開發總結

3.用Xshell檢視ESB背景檢查是否有報錯資訊。 

4.确認無誤後可以将第一個節點的資料導入到IDM中。 

5.執行成功後可以在功能資源頁面看到已經導入到IDM中。 

基于ESB權限初始化流程開發總結

4.2功能節點 

1.在HANDLER的循環出參後将連線直接連接配接在出參節點中。并進行參數調整確定循環不會進入到HANDLER循環中。 

基于ESB權限初始化流程開發總結

2.在功能菜單循環節點列印輸出目标,可以在背景檢查循環中是否有報錯資訊。 

基于ESB權限初始化流程開發總結

3.在浏覽器中執行流程并用Xshell檢視背景是否報錯。 

4.确認無誤後調整流程,關閉IDM的接口調用并将整個流程執行。 

基于ESB權限初始化流程開發總結

5.列印循環節點和兩個接口調用節點的資訊。然後執行該流程并檢視背景日志。 

基于ESB權限初始化流程開發總結

6.在循環過程中如果出現報錯情況,退出日志資訊,記錄循環節點資訊。 

7.設定初始化節點資訊以及流程結束節點限制,確定再一次檢查時能夠快速定位到節點。 

基于ESB權限初始化流程開發總結

8.再次執行流程就可以快速看到日志的報錯資訊。 

9.根據日志報錯資訊對擴充代碼進行調整。 

基于ESB權限初始化流程開發總結

10.逐漸排查問題和報錯資訊完善流程。 

11.當沒有報錯資訊後連接配接所有節點執行該流程。 

5心得總結 

本次的權限初始化流程是對其他業務系統的資料進行調整并調用IDM接口導入到IDM中,在對接過程中我也積累了很多的開發流程和系統對接時的所需的準備工作經驗和對接經驗。 

5.1資料對接 

首先在對接前需要對本次流程所需要的所有接口進行測試,確定接口,如果出現了一些不明确的入參問題和出參類型,或者接口的資料調用不符合業務規範,需要與相關人員及時溝通和解決,避免在寫流程時出現問題,其次明确入參和出參情況,知曉調用的業務系統的出參格式和IDM接口的入參格式,這樣才能在ESB的流程中通過擴充代碼将資料進行調整和拼接以實作最終目的。 

5.2思維發散 

5.3心得體會