企業內不同部門(如客服與開發)常使用獨立問題追蹤系統,導致資訊孤島。Rational Team Concert (RTC) 的 Item Connector 可擴展框架,能將外部儲存庫物件與 Jazz 儲存庫永久物件關聯並同步,實現跨系統協作追蹤。
com.ibm.team.interop.service.itemManager):建立/更新 Jazz 物件com.ibm.team.interop.service.externalManager):建立/查詢/更新外部物件com.ibm.team.interop.service.valueTransformer):屬性值轉換(本文不深入)| 模式 | Client 運行於 | 外部系統前提 | 對應場景 |
|---|---|---|---|
| 1.1 | 外部伺服器 | 可定制 Save 操作 | 外部系統主動推送 |
| 2.1 | Jazz 伺服器 | 事件通知機制 | Jazz 輪詢外部更新 |
| 2.2 | Jazz 伺服器 | 獲取/設定資料服務 | Jazz 定時查詢外部 |
| 3.1 | 獨立 JVM | 獲取/設定資料服務 | 獨立同步排程器(本文採用) |
| 3.2 | 獨立 JVM | 獲取/設定資料服務 | 伺服器端定時同步 |
ClassicTalkConnectorClient (Java Project):Client 邏輯com.example.classictalk.common:Jazz 儲存庫模型(EMF Ecore)與服務介面com.example.classictalk.services:服務實作(RESTful)com.example.classictalk.interop.managers:Item Manager / External Repository Managercom.example.classictalk.launches:啟動設定檔繼承 Auditable(支援線性歷史),包含 ChatThread(id、text)。Item Connector 僅支援可審計類型,需有唯一識別屬性。
common 專案 MANIFEST.MF 以 com.ibm.team.repository.common.components 擴展點註冊services 專案以 com.ibm.team.repository.service.serviceProvider 註冊getAllObjects、getObject、postObject、putObject REST 服務
public IItem createItem(Map<String,?> state, ...) { return ChatThread.ITEM_TYPE.createItem(); }
public IItem saveState(IItem item, Map<String,?> newState, ...) {
ChatThread ct = (ChatThread)item;
for (Entry e : newState.entrySet()) setProperty(e.getKey(), e.getValue(), ct);
return getClassicTalkService().saveChatThread(ct);
}
public Map<String,?> getState(IItem item, List<String> props, ...) { ... }
public ITypeInfoDTO[] getSupportedTypeInfo(...) { // 定義同步屬性 id、text }
public CreationInfo createObject(String type, Map state, Map returned, List props, ...) {
// 呼叫外部 postObject,解析回傳 ID,建立 URI 返回
}
public Map<String,?> getState(URI uri, List props, ...) { // 呼叫 getObject }
public boolean updateState(String type, URI uri, Map newState, Map last, Map returned, ...) {
// 呼叫 putObject,比較新舊狀態返回 boolean
}
public URI findObject(String type, String idProp, Map state, Map returned, List props, ...) {
// 呼叫 getObject 查找,建立 URI 返回
}
public ITypeInfoDTO[] getSupportedTypeInfo(...) { // 定義外部類型與屬性 }
於 RTC 客戶端 Synchronization Rules 視圖:建立 External Repository Connection → 新增 Synchronization Rule → 選擇 Item Manager / External Manager → 點擊 Initialize 自動映射同名屬性 → 儲存。
teamserver.properties:com.ibm.team.repository.ws.allow.identity.assertion=true、com.ibm.team.interop.OutgoingSyncTask.fixedDelay=30、com.ibm.team.interop.service.outgoingSyncEnabled=truelog4j.properties:啟用 com.ibm.team.interop DEBUG 日誌Item Connector 以三層擴展點(Client、Item Manager、External Manager)實現雙向同步。選擇正確開發模式、設計 EMF 儲存模型、實作四大核心介面、配置同步規則,即可打通部門系統資料孤島,實現自動化追蹤與協作。