簡體   English   中英

源JavaScript中的Mirth channelMap

[英]Mirth channelMap in source JavaScript

在我的源連接器中,由於我的要求和參數,我正在使用javascript進行數據庫工作。

最終結果是存儲數據。

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

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

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

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

我也嘗試使用return ifxResults但我不知道如何在目標轉換器中訪問它。

您想通過頻道將每一行作為單獨的郵件發送嗎? 如果是這樣,聽起來好像你想在JavaScript模式下使用數據庫閱讀器。 只返回ResultSet(如果你像這樣使用executeCachedQuery,它實際上是一個CachedRowSet),並且通道將處理其余部分,將每行的XML表示作為離散消息分派。

如果要將聚合的結果集中的所有行發送到單個消息中,很快就可以使用數據庫讀取器: MIRTH-2337

Mirth Connect 3.5將於下周發布,以便您可以利用它。 但是,如果您不能等待或不想升級,那么您仍然可以使用JavaScript Reader執行此操作:

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();

我知道這個問題有點陳舊,但這里只是記錄的答案。

對於這個答案,我假設您正在使用源連接器類型的JavaScript Reader ,並且您正在嘗試在JavaScript Reader Settings編輯窗格中使用channelMap

問題是channelMap變量在這部分頻道中不可用。 它僅適用於濾波器和變壓器。

您可以通過使用globalChannelMap變量來完成您想要的任務,例如

globalChannelMap.put("results", ifxResults);

當我一次處理一條記錄並需要將一些設置傳遞到目標通道時,我通常需要這樣做。 如果你像我過去那樣做,那么你首先要在源通道的變換器中創建一個globalChannelMap鍵/值:

globalchannelMap.put("ProcID","TestValue");

然后轉到“目的地”選項卡並選擇目標頻道,以確保將其發送到目的地(我從未嘗試過針對具有多個目的地的頻道,所以我不確定是否需要做任何不同的事情)。

源渠道的目標選項卡

請注意,ProcID現在列在“ 目標映射”框中。 單擊Map Variable框旁邊的New按鈕,您將看到Variable 1出現。 雙擊它並輸入映射鍵,在本例中為ProcID。

現在轉到目標通道的源變換器。 在那里你可以輸入以下代碼:

var SentValue = sourceMap.get("ProcID");

現在,當您的源通道放棄控制時,目標轉換器中的SentValue具有ProcID中的任何內容。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM