2017-04-24 5 views
1

내 소스 커넥터에서 필자는 요구 사항과 매개 변수 때문에 데이터베이스 작업에 javascript를 사용하고 있습니다.소스 채널 내 매핑 소스 JavaScript

최종 결과는 데이터를 저장하는 것입니다.

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

이러한 결과는 대상 변환기에서 사용해야합니다.

시도했습니다 channelMap.put("results", ifxResults);.

나는 나는 또한 return ifxResults를 사용하려고 한 다음 오류를 ReferenceError: "channelMap" is not defined.

를 얻을 수 있지만 대상 변압기에이 액세스하는 방법을 모르겠어요.

답변

0

각 행을 채널을 통해 별도의 메시지로 보내시겠습니까? 그렇다면 자바 스크립트 모드에서 데이터베이스 리더를 사용하려는 것 같습니다. 그냥 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();