XML 結構由下面四大區塊組成。
<tmd xmlns="http://tmd.uia/model/xml">
<jobSpace />
<taskSpace />
<tableSpace />
<databaseSpace />
</tmd>
- jobSpace - 工作定義
- taskSpace - 任務定義
- tableSpace - 表格定義
- databaseSpace - 資料庫定義
由多個工作 (job) 組成,每個工作可包含多個項目 (item),每個項目對應一個任務 (task)。
<jobSpace>
<job name="job1" source="svr1" target="svr2">
<item taskName="T1" />
<item taskName="T2" />
</job>
<job name="job2" source="svr1" target="svr2">
<item taskName="T3" />
</job>
</executorSpace>
定義執行個體,描述來源資料庫、目的資料庫和指定執行的工作。
- name - 名稱。
- source - 來源資料庫。參考 databaseSpace 中的資料庫設定。
- target - 目的資料庫。參考 databaseSpace 中的資料庫設定。
定義工作項目,描述對應的任務。
- taskName - 任務名稱。
由多個 task 組成。每個 task 可包含一個以上的子任務 (plan)。
<taskSpace>
<task name="T1">
<sourceSelect table="table1" />
<targetUpdate />
<next>
<plan taskName="T2" where="xxx=?">
<param sourceColumn="id" />
</plan>
</next>
</task>
<task name="T2">
<sourceSelect table="table2" />
<targetUpdate />
<next />
</task>
</taskSpace>
定義任務,描述處理的表格與相關聯任務。
- name - 任務名稱,item 中 taskName 的參考值。
定義來源表格
- name - 表格名稱,參考 tableSpace 中的表格定義。
定義更新表格
- name - 表格名稱,參考 tableSpace 中的表格定義。
定義 task 定義 task 完成後接續的工作。
定義接續的工作
- taskName - 任務名稱。
- where - 根據主 task 的 row 資料進行搜尋。
- plan.param sourceColumn - 來源資料的欄位名稱。
<task name="A">
<sourceSelect table="ORDER" />
<targetUpdate />
<next>
<plan taskName="B" where="DEPT_ID=?">
<param sourceColumn="ID" />
</plan>
</next>
</task>
<task name="B">
<sourceSelect table="EMP" />
<targetUpdate />
<next />
</task>
-
執行 Task: A。
-
Task A 來源表格名稱為
ORDER
,同步資料為select * from ORDER
。 -
目標表格無描述,故與來源同名為
ORDER
,對步驟 2 select 到的 rows 執行insert ORDER(...) values(...)
。 -
對 每一筆 row 進行 plan: B,執行時套用
where DEPT_ID=?
,? 為 row 的 ID 值。 -
Task B 來源表格名稱為
EMP
,同步資料為select * from EMP where DEPT_ID=?
。 -
目標表格無描述,故與來源同名為
EMP
,對步驟 5 select 到的 rows 執行insert EMP(...) values(...)
。
由多個 table 組成。主要目的為補充 Primary key,若表格已有設定,可忽略設定。
<tableSpace>
<table name="ORDER">
<pk>
<column>ID</column>
</pk>
</table>
<table name="EMP">
<pk>
<column>ID</column>
</pk>
</table>
</tableSpace>
由多個 database 組成。
<databaseSpace>
<database>
<id>local1</id>
<host>localhost</host>
<port>5432</port>
<dbName>db1</dbName>
<user>user1</user>
<password>1234</password>
<driverClass>uia.tmd.access.PGSQLAccess</driverClass>
</database>
<database>
<id>local2</id>
<host>localhost</host>
<port>5432</port>
<dbName>db2</dbName>
<user>user2</user>
<password>1234</password>
<driverClass>uia.tmd.access.PGSQLAccess</driverClass>
</database>
</databaseSpace>
- id - 識別名稱,executor 中 source 和 target 參數的參考值。
- host - 主機位置
- port - 通訊埠
- dbName - 資料庫名稱。
- user - 使用者帳號
- password - 密碼
- driverClass - 資料庫驅動。
- uia.tmd.IdleAccess Test Only
- uia.tmd.access.HanaAccess - SAP HANA
- uia.tmd.access.ORAAccess - Oracle
- uia.tmd.access.PGSQLAccess - PostgreSQL
<database>
<id>ME</id>
<host>192.168.1.1</host>
<port>30015</port>
<dbName>WIP</dbName>
<user>WIP</user>
<password>1234567890</password>
<driverClass>uia.tmd.access.HanaAccess</driverClass>
</database>
<database>
<id>YOUS</id>
<host>localhost</host>
<port>5432</port>
<dbName>wip</dbName>
<user>wip</user>
<password>1234567890</password>
<driverClass>uia.tmd.access.PGSQLAccess</driverClass>
</database>
<database>
<id>IDLE</id>
<host>0.0.0.0</host>
<port>0</port>
<dbName></dbName>
<user></user>
<password></password>
<driverClass>uia.tmd.IdleAccess</driverClass>
</database>