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

passing javascript object from one channel to other channel in mirth

本文关键字:通道 一个 另一个 对象 javascript      更新时间:2023-09-26

通道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>

我正在源代码的Edit Transformer中解析这个XML,并制作JavaScript对象,并将这个JavaScript对象放入一个通道映射中,如下所示:

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对象从Channel A的目的地传递到其他ChannelBChannel B

我使用的是Mirth版本2.2.1.5861。

在保存通道变量之前,请序列化它(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讨论JSON

另外:请参阅我们的HealthcareIT项目提案,网址为area51StackExchange。这将是一个很好的问题。

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

这里有一个使用全局通道贴图传递对象的示例。