2017-04-24 41 views
1

在我的源連接器中,由於我的要求和參數,我使用javascript來處理數據庫工作。來源JavaScript中的歡樂頻道地圖

最終結果是存儲數據。

ifxResults = ifxConn.executeCachedQuery(ifxQuery); //var is declared 

我需要在目標轉換器中使用這些結果。

我試過channelMap.put("results", ifxResults);

我收到以下錯誤ReferenceError: "channelMap" is not defined.

我也曾嘗試使用return ifxResults,但我不知道如何訪問這個在目的地變壓器。

回答

0

是否要通過您的頻道將每一行作爲單獨的消息發送?如果是這樣,聽起來像你想在JavaScript模式下使用數據庫讀取器。只要返回ResultSet(如果使用executeCachedQuery,它就是一個CachedRowSet),通道將處理剩下的部分,並將每行的XML表示分配爲離散消息。

如果你想在合併爲一個消息的結果集發送所有行,這將有可能與數據庫讀者很快:MIRTH-2337

歡樂連接3.5將在下週發佈,所以你可以然後利用它。但是,如果你不能等待或不想再升級你仍然可以做到這一點通過一段JavaScript讀者:

var processor = new org.apache.commons.dbutils.BasicRowProcessor(); 
var results = new com.mirth.connect.donkey.util.DonkeyElement('<results/>'); 

while (ifxResults.next()) { 
    var result = results.addChildElement('result'); 
    for (var entries = processor.toMap(ifxResults).entrySet().iterator(); entries.hasNext();) { 
     var entry = entries.next(); 
     result.addChildElement(entry.getKey(), java.lang.String.valueOf(entry.getValue())); 
    } 
} 

return results.toXml();