COBOL 應用系統轉換 J2EE/SOA 架構

2009-01-01

許多 Mainframe 用戶紛紛計畫將過去穩定的 COBOL 應用系統,轉換在開放平台(如:AIX)上之 J2EE/SOA 架構,但是如何著手卻莫衷於是。

首先先要瞭解 Mainframe 下 COBOL 有以下特性:

  • 依處理性質分:
    • 線上處理
    • 批次處理
  • 依存取資料分:
    • 本地檔案
      • 循序檔
      • 相對檔
    • 資料庫
      • 關聯式
      • 階層式
      • IMS …

除關聯資料庫外,我們需要轉換資料至開放平台,其步驟如下:

  1. 在 Mainframe 上撰寫 COBOL 程式,將各種資料檔轉出為 CSV 文字檔
  2. Mainframe 上資料轉出 COBOL 程式,不再使用 COBOL 特有數值欄描述子如:各種 COMP 等
  3. 將 CSV 文字檔下載至開放平台
  4. 利用字碼轉換工具將 CSV 文字檔中文 EBCDIC 轉換為 UTF-8
  5. 建立關聯式資料庫表格
  6. 利用資料庫匯入工具,將 CSV 文字檔匯入關聯式資料庫表格
  7. 依關聯式資料庫表格,撰寫 J2EE Entity Bean

至於關聯資料庫, 轉換資料至開放平台,其步驟如下:

  1. 利用資料庫匯出工具,資料庫表格匯出為 CSV 文字檔
  2. 將 CSV 文字檔下載至開放平台
  3. 利用字碼轉換工具將 CSV 文字檔中文 EBCDIC 轉換為 UTF-8
  4. 建立關聯式資料庫表格
  5. 利用資料庫匯入工具,將 CSV 文字檔匯入關聯式資料庫表格
  6. 依關聯式資料庫表格,撰寫 J2EE Entity Bean

COBOL 程式轉換成 Java Class,其步驟如下:

  1. 使用 COBOL-Java 語法轉換工具,如:PERCobol,將 COBOL 程式轉換成 Java Class 再加以修改。
  2. 撰寫 Session Bean 將 Java Class 封裝成 EJB。
  3. 存取資料部份,調用轉換時之 Entity Bean。
  4. 將 EJB 再封裝成 Web Service 以便 BPEL 調用。

另一種方案是將 COBOL 封裝成 C 函式庫,許多 COBOL 編譯器均有此功能,
利用Java Native Interface(JNI) 技術,使得 Java Class 能直接調用 COBOL 程式。這種方式適用於:

  • 轉換專案時程短,COBOL 程式又早已無人理解內部商業邏輯時所採用。
  • 採用這種方式,除關聯式資料庫外,原 COBOL 程式均可繼續使用,相當穩當。

至於說線上處理,可以使用 Portal(JSR 268/168)統一 Web 呈現層風格。
而 COBOL SCREEN-IO 部份,便與 Portlet 對映。
同時透過 Portal 解決帳號應用系統一致性需求,可謂好處多多。

在這種不牽涉到 Business Process Reengineering(BPR)應用系統轉換專案,是軟體工程及 SOA 架構的表演。
與應用系統原開發者或廠商,關係不大,但是往往整合廠商掉入此種迷思。
關係不大的原因很簡單,就是技術屬性(Skill Sets/Attributes)不同,畢竟客戶終極目標是 SOA 而不再是孤島式的 COBOL 程式。

因此在專案組織上應該有以下技術成員:

  • 系統分析組:使用 CASE 工具,釐清 COBOL 與 COBOL 程式間關係,COBOL 程式與資料關係等等,產出資料結構關係圖。
  • 資料轉換組:依前述資料轉換工作。
  • COBOL 解譯組:閱讀 COBOL 程式,使用 COBOL-Java 轉譯工具,產出 COBOL-Java 對應 Class。
  • J2EE 設計組:將 COBOL 程式轉換為服務導向 EJB/Web Service 架構。
  • Portlet 設計組:將 COBOL 線上程式轉換為 Portlet,產出整體人機介面。
  • 產品技術支援組:對本專案所使用之軟硬體工具設備,提出專案技術支援。
  • 系統驗證組:使用新 SOA 架構下系統與原 COBOL 程式驗證產出。
廣告
%d 位部落客按了讚: