在频道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。
答案 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传递对象的示例。