将javascript对象从一个通道传递到另一个通道

时间:2013-07-18 11:27:09

标签: javascript channel mirth

频道A 中,我将XML作为输入。下面提到的传入XML:

 <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<bookstore>
<books>
<book>
<title>SpringInAction</title>
<NoOfCopies>10</NoOfCopies>
</book>
<book>
<title>HibernateInAction</title>
<NoOfCopies>8</NoOfCopies>
</book>
<book>
<title>JSFInAction</title>
<NoOfCopies>5</NoOfCopies>
</book>
<book>
<title>StrutsInAction</title>
<NoOfCopies>9</NoOfCopies>
</book>
<book>
<title>JSPInAction</title>
<NoOfCopies>4</NoOfCopies>
</book>
</books>
</bookstore>

我在Source的Edit Transformer中解析这个XML并制作JavaScript对象并将这个JavaScript对象放入一个这样的通道Map:

var book=new Object();
book.title = msg['books']['book'][0]['title'].toString();
book.copies = msg['books']['book'][0]['NoOfCopies'].toString();
logger.info("book "+book);
channelMap.put("book",book);

现在我想将此JavaScript对象从频道A 的目的地传递到其他频道B 频道B 接收此JavaScript对象作为输入并完成其余的处理。是否有可能在欢笑?

我正在使用Mirth版本2.2.1.5861。

2 个答案:

答案 0 :(得分:1)

在保存通道变量之前,将其序列化(json对象)。

在您的频道目的地,写出“book”变量。

这样的事情:

在变形金刚

var book=new Object();
book.title = msg['books']['book'][0]['title'].toString();
book.copies = msg['books']['book'][0]['NoOfCopies'].toString();
logger.info("book "+book);

var Jbook = JSON.stringify(book);
channelMap.put("Jbook",Jbook );

目的地模板

${jbook}

然后在接收频道上

var book = JSON.parse(msg.toString());

我尚未验证此代码,但它应该为您提供编码策略。

请参阅Mirth Discussion about JSON

另外:请在area51.StackExchange查看我们的HealthcareIT项目提案。这是一个很好的问题。

答案 1 :(得分:1)

可以使用全局通道图传递对象。其他两个映射将持久保存到数据库,因此Mirth Connect引擎将它们序列化为字符串。但是,对于全局通道映射,您应该在脚本中处理上下文(顾名思义,它不仅存在于消息或通道上下文中)。

有一个使用全局频道图here传递对象的示例。