2011-12-08

[Jboss] ESB SQL Provider

公司的異質系統傳輸資料幾乎都是採用 DB 交換. EDI 與 ERP 之間的資料交換, 除了文件內容的Table 外. 另外多建立了一個  Document_Change Table , 裡頭存有 Document Type, Document Name 等等. 每一個系統各自去建立相關的 Schedule , 去檢查該Table 是否有自己需要的 Document. 這樣的整合也沒有說不好, 再沒有整合工具的前提下, 是一個可以接受的方案.

Jboss ESB 有提供 SQL-Provider 的工具.  應該是JBoss ESB 在遇到很多公司都有同樣的需求時, 所發展出來的 Provider.  可以讓 SOA 採用漸進的方式替換掉原有系統整合.

SQL-Provider 有其使用前提, JBoss ESB 並沒有清楚的解釋. 只能從 相關的sample code 去看出一些端倪.  下面就先介紹 前置作業.

1. Table Column 需要的欄位
  • message-id-column :  也就是 Table primary Key , 不能是 combo Key
  • message-column : ESB 只會抓取單一欄位的內容
  • status-column :   ESB 會填入相關的 Status.
    org.jboss.soa.esb.listeners.gateway.SqlTableGatewayListener 針對欄位所做的解釋
    A field that will be used to mark a row as 'P' (pending), 'W' (in process), 'D' (done) or 'E' (error). When adding a pending row, make sure that the status_col value if an upper-cased 'P', as upper-cased characters are used as a convention.

    所以簡單的說, 如果要 ESB 把該資料抓去處理, 一定要放 'P'. ESB 處理中 會被改成'W', 最後的解過就是 'D' or 'E'.

  • insert-timestamp-column : ESB 會填入最後的時間
2. SQL-Provider 設定
  • 下面是 ESB sample code
    <sql-provider name="SQLprovider" url="jdbc:hsqldb:hsql://localhost:1704" driver="org.hsqldb.jdbcDriver" username="sa" password=""> <sql-bus busid="helloSQLChannel" > <sql-message-filter tablename="GATEWAY_TABLE" status-column="STATUS_COL" order-by="DATA_COLUMN" where-condition="DATA_COLUMN like 'data%'" message-column="message" message-id-column="UNIQUE_ID" insert-timestamp-column="TIMESTAMP_COL" /> </sql-bus> </sql-provider>
  • 這是我自己改用Datasource 的方式

沒有留言:

張貼留言