EMD(Enterprise MetaData Discovery) 企業元數據發現簡介
Enterprise Metadata Discovery (EMD) 是定義元數據發現和擴展 JCA(Java Connector Architecture) 資源適配器功能的導入模型的規范。這個模型為工具和運行時提供了 Enterprise Application Integration (EAI) 框架: 開發人員可以使用 EMD 工具來生成 EIS(Enterprise Information System)中定義的各類元數據或函數,同時生成相應的接口文件。利用 EMD,開發人員可以忽略 EIS 端的接口實現,利用友好的可視化界面進行操作,極大提高了開發效率。
圖 1. EMD 體系結構
WebSphere Adapters 7.0 中 EMD 的新功能—迭代開發
簡介
迭代開發,從軟件開發角度來定義,就是增量式開發,我們可以理解為它是通過對核心開發活動的重復應用,包括了對問題,解決方案定義以及解決方案實現的連續的細化,因此,它是一個迭代的過程。 我們在 WebSphere Adapters 7.0 中將這種思想應用到了企業元數據發現工具,即在元數據發生更新的情況下,開發人員無需重現構建新模塊來進行重復開發,只需在原有開發模塊的基礎上通過迭代開發新功能即可實現已有模塊的重用。 傳統的企業元數據發現工具的使用流程如下所示:
新建開發模塊,作為元數據及接口文件的載體;
利用企業元數據開發工具進行開發;
企業信息系統需要更改元數據定義;
刪除原有開發模塊
重復步驟 1 和 2 進行再次開發。
利用迭代開發新功能後,現在的使用流程如下所示:
新建開發模塊,作為元數據及接口文件的載體;
利用企業元數據開發工具進行開發;
企業信息系統需要更改元數據定義;
直接在原有開發模塊上進行迭代開發;
設計概述
為了能夠在第一次開發模塊的基礎上進行迭代開發,我們就必須保存第一次開發階段的有效信息,這些有效信息即為企業元數據開發工具的圖形化界面上各種不同類型的屬性,例如:簡單類型輸入框,樹結構類型,包裝屬性組等等。為了能夠結構化存儲這些不同類型屬性,迭代開發利用 XML 來存儲信息,不同類型屬性定義各自的 XML 數據結構。以下分別是各種屬性的 XML 結構示意圖。
清單 1. 簡單屬性
<SVP NAME="Database">
<VALUE>SAMPLE</VALUE>
</SVP>
清單 2. 多值屬性
<MVP NAME="Operations">
<VALUE>Create</VALUE>
<VALUE>Update</VALUE>
<VALUE>Delete</VALUE>
<VALUE>Retrieve</VALUE>
<VALUE>RetrieveAll</VALUE>
<VALUE>ApplyChanges</VALUE>
<VALUE>Exists</VALUE>
</MVP>
清單 3. 封裝組合屬性
<PG NAME="WrapperPG" VERSION="7.0">
<CONF NAME="TestWrapper">
<MVP NAME="TestWrapperBusinessObjects">
<VALUE>ADDRESS</VALUE>
<VALUE>CUSTOMER</VALUE>
</MVP>
<MVP NAME="TestWrapperServiceFunctions">
<VALUE>Create</VALUE>
<VALUE>Delete</VALUE>
</MVP>
</CONF>
</PG>
清單 4. 樹形屬性
<tree NAME="TreeProp">
- <ROOTNODE NAME="Database Manager">
- <NODE NAME="DB2 UDB">
<HIGNLIGHT>false</HIGNLIGHT>
<SELECTED>true</SELECTED>
。。。
- <NODE NAME="9.3">
<HIGNLIGHT>false</HIGNLIGHT>
<SELECTED>false</SELECTED>
- <PG NAME="MachineCredentials" VERSION="7.0">
- <SVP NAME="Database">
<VALUE>pubs</VALUE>
</SVP>
- <SVP NAME="DBHost">
<VALUE>localhost</VALUE>
</SVP>
- <SVP NAME="DBPort">
<VALUE>1526</VALUE>
</SVP>
- <SVP NAME="ServerName">
<VALUE>server</VALUE>
</SVP>
- <SVP NAME="JdbcDriverClass">
<VALUE>com.informix.jdbc.IfxDriver</VALUE>
</SVP>
- <SVP NAME="DatabaseURL">
<VALUE>jdbc:informix-sqli://localhost:1526/pubs:INFORMIXSERVER=server</VALUE>
</SVP>
</PG>
</NODE>
- <NODE NAME="9.2">
<HIGNLIGHT>false</HIGNLIGHT>
<SELECTED>false</SELECTED>
- <PG NAME="MachineCredentials" VERSION="7.0">
- <SVP NAME="Database">
<VALUE>pubs</VALUE>
</SVP>
- <SVP NAME="DBHost">
<VALUE>localhost</VALUE>
</SVP>
- <SVP NAME="DBPort">
<VALUE>1526</VALUE>
</SVP>
- <SVP NAME="ServerName">
<VALUE>server</VALUE>
</SVP>
- <SVP NAME="JdbcDriverClass">
<VALUE>com.informix.jdbc.IfxDriver</VALUE>
</SVP>
- <SVP NAME="DatabaseURL">
<VALUE>jdbc:informix-sqli://localhost:1526/pubs:INFORMIXSERVER=server</VALUE>
</SVP>
</PG>
</NODE>
</NODE>
+ <NODE NAME="Generic JDBC">
<HIGNLIGHT>false</HIGNLIGHT>
<SELECTED>false</SELECTED>
- <PG NAME="MachineCredentials" VERSION="7.0">
- <SVP NAME="DatabaseURL">
<VALUE>jdbc:</VALUE>
</SVP>
</PG>
- <NODE NAME="1.0">
<HIGNLIGHT>false</HIGNLIGHT>
<SELECTED>false</SELECTED>
- <PG NAME="MachineCredentials" VERSION="7.0">
- <SVP NAME="DatabaseURL">
<VALUE>jdbc:</VALUE>
</SVP>
</PG>
</NODE>
</NODE>
</ROOTNODE>
</tree>
運行實例
在此我們給出一個模擬場景,客戶需要利用 WebSphere JDBC Adapter7.0 進行元數據開發。開發人員 A 和 B 在兩地共同進行項目開發工作,A 首先完成 WebSphere Adapters 的開發工作,通過 EMD 開發工具完成元數據的開發(其中包括元數據 CUSTOMER)。此時 B 發現項目中需要在 CUSTOMER 添加一些新的字段,同時添加一個新的元數據 ADDRESS。以下分別詳述 A 和 B 的具體操作步驟。 開發人員 A 按照以下步驟進行開發:
進入 WebSphere Integration Develop 7.0,新建開發模塊“IterativeEMDTesting”;
選擇“外部服務”External Service 開始元數據開發。
圖 2. 外部服務選擇頁面
進入 Adapter 選擇頁面,選擇 IBM WebSphere Adapter for JDBC 7.0。
圖 3.WebSphere JDBC Adapter 7.0 選擇頁面
進入連接信息指定頁面,選擇相應數據庫並填入相關連接信息 ( 系統號,主機名,端口號,用戶名,密碼等 )。
圖 4. 連接信息頁面
進入元數據選擇頁面,選擇元數據“Customer”和後續操作,完成第一次元數據開發工作。
圖 5. 元數據選擇頁面
用開發視圖打開當前工作空間,可以看到此時在開發模塊下所有的文件列表如下圖所示,其中的 *.importex 文件即為迭代過程的數據信息。
圖 6. 開發視圖文件列表
雙擊選擇元數據文件 SystemCustomer.xsd,此時的數據定義如下圖所示:
圖 7. 元數據 Customer 定義一
開發人員 A 開發完畢後,開發人員 B 發現原有數據庫中缺少一些元數據的定義,需要給元數據 Customer 新加一個字段 NewField 以及添加一個新的元數據 Address。開發人員 A 隨機將現有開發模塊打包為項目交換文件發送給 B,開發人員 B 按照以下步驟在原有基礎上進行二次開發。
更新數據庫信息,為表 Customer 添加新字段;
圖 8. 元數據 Customer 數據表定義
創建元數據表 Address;
將項目交換文件導入工作空間;
打開業務整合視圖,右鍵打開接口文件,選擇“編輯綁定 -Edit Binding …”,開始二次迭代開發;
圖 9. 編輯綁定選擇菜單
此時向導頁面自動讀取數據信息文件 *.importex 然後填充相應字段,無需再次手工輸入連接信息 ( 用戶名,密碼等 ),自動轉入下一頁面;
圖 10. 迭代開發連接信息頁面
在元數據選擇頁面,對 Customer 保持不變,選擇 Address,如下圖所示
圖 11. 迭代開發元數據選擇頁面
後續頁面保持信息不變,完成二次迭代開發,此時打開開發視圖,我們可以發現原有開發模塊中文件列表中已經包括元數據 Address;
圖 12. 迭代開發視圖文件列表
雙擊打開元數據文件 SystemCustomer.xsd,可以發現新字段 NewField 已經正確加入。
圖 13. 元數據 Customer 定義二
至此,開發人員 B 完成二次迭代開發過程。
總結
本文通過一個模擬業務開發實例,詳細介紹了如何利用 WebSphere Adapters 7.0 中的迭代開發功能實現已有開發模塊的二次開發。文中著重介紹了迭代開發功能的實現方式以及開發人員之間如何協同工作,提高業務開發效率。