程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> Rational

Rational Team Concert Item Connector 開發指南:跨部門資料同步框架實作

     編輯:Rational

企業內不同部門(如客服與開發)常使用獨立問題追蹤系統,導致資訊孤島。Rational Team Concert (RTC) 的 Item Connector 可擴展框架,能將外部儲存庫物件與 Jazz 儲存庫永久物件關聯並同步,實現跨系統協作追蹤。

Item Connector 核心架構

三大核心 Jazz 物件類型

  • ExternalProxy:持有外部物件與 Jazz 物件的連結(以 URL 標識)
  • ExternalState:外部物件屬性容器,作為同步暫存
  • SyncRule:定義外部屬性名到 Jazz 屬性名的映射規則

四大擴展元件

  1. Item Connector Client:客戶端,七步驟將外部物件推送至 Jazz(取得 Proxy/State/Rule → 映射屬性 → 複製 → 附加 Rule → 儲存)
  2. Item Manager(Server Plugin,com.ibm.team.interop.service.itemManager):建立/更新 Jazz 物件
  3. External Repository Manager(Server Plugin,com.ibm.team.interop.service.externalManager):建立/查詢/更新外部物件
  4. Value Transformer(com.ibm.team.interop.service.valueTransformer):屬性值轉換(本文不深入)

開發模式選擇決定整體架構

模式Client 運行於外部系統前提對應場景
1.1外部伺服器可定制 Save 操作外部系統主動推送
2.1Jazz 伺服器事件通知機制Jazz 輪詢外部更新
2.2Jazz 伺服器獲取/設定資料服務Jazz 定時查詢外部
3.1獨立 JVM獲取/設定資料服務獨立同步排程器(本文採用)
3.2獨立 JVM獲取/設定資料服務伺服器端定時同步

模式 3.1 實作詳解(以 ClassicTalk 範例為例)

專案結構

  • 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 Manager
  • com.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 服務

Item Manager 關鍵方法


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 }

External Repository Manager 關鍵方法


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=true
  • log4j.properties:啟用 com.ibm.team.interop DEBUG 日誌
  • 建立 Jazz Project Area、External Project Area、External Repository Connection、Sync Rule
  • 啟動 Jazz Server (9443)、External Server (7443)、Client 執行 Use Case

衝突處理機制

  • Incoming Conflict:外部更新推送至 Jazz 時版本衝突 → Synchronization Status Editor 選擇 Accept External State 或 Accept Item State
  • Outgoing Conflict:Jazz 更新推送至外部時衝突 → 同樣透過編輯器解決

總結

Item Connector 以三層擴展點(Client、Item Manager、External Manager)實現雙向同步。選擇正確開發模式、設計 EMF 儲存模型、實作四大核心介面、配置同步規則,即可打通部門系統資料孤島,實現自動化追蹤與協作。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved