2016-11-29 69 views
1

我不得不從表中每條記錄寫入到一個XML文件中的要求。我能想到下面的解決方案寫入每個記錄到文件中BPEL文件適配器

有一個DB適配器從表
查詢記錄放入一個循環的DB輸出集合和調用轉換(傳遞參數,通常迭代器值)寫的第n個記錄文件輸入變量
寫有通過(通常與表中的記錄中的一列的值)
重複下一個記錄,創建另一個文件動態文件名的文件

但我個人不喜歡這種方式我只是試圖找出是否有任何最好的辦法可以做同樣的事情?我必須僅使用BPEL來執行此操作。

感謝,並隨時要求進一步澄清需要

回答

0

我的理解是,你不希望從數據庫中一個去選擇的所有記錄,並遍歷它寫入文件。如果是這樣的話,你有沒有想過下面的方法?

  1. 選擇的(表1,從那裏myCondition1)選擇(數量(ID))將滿足您的選擇標準記錄的總數,並保持在一個 BPEL變量,說TOTALCNT。

  2. 申報BPEL變量START = 1。

  3. 聲明一個BPEL變量END = 50.Lets說,有1000條記錄DB滿足我們的條件,我們將只選擇50條記錄 從DB時間和寫入到文件。

  4. 現在激發選擇查詢以選擇數據(從table1中選擇field1,field2,其中myCondition1 AND ROWNUM> = START AND ROWNUM < = END)。這將爲您提供符合選擇標準的前50條記錄。開始和結束將被傳遞到由BPEL流程 適配器。

  5. 在轉換後將這些記錄寫入文件。

  6. 檢查END < TOTALCNT。如果是的話,設置開始= END和增量END 50,選擇接下來的50條記錄。並轉到步驟4.重複這個過程,直到END> = TOTALCNT。

檢查此鏈接爲ROWNUM- http://www.oracle.com/technetwork/issue-archive/2006/06-sep/o56asktom-086197.html

+0

哈濱您好,感謝您的回覆。但我的要求是將每條記錄寫入一個新文件。我想避免頻繁的數據庫命中,所以我想一次選擇所有記錄(最大記錄數小於100),然後將每條記錄寫入一個新文件。所以最後,我將有100個文件的100個記錄。 – user3005980