1

通道 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 对象放入一个通道映射中,如下所示:

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 中是否可能?

我正在使用 Mirth 版本 2.2.1.5861。

4

2 回答 2

1

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

这里有一个使用 Global Channel Map 传递对象的示例。

于 2013-11-21T03:21:43.207 回答
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());

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

参见关于 JSON 的 Mirth Discussion

另外:请参阅area51.StackExchange上的 HealthcareIT 项目提案。这将是一个很好的问题。

于 2013-07-18T13:21:36.383 回答