Mirth从ActiveMQ JMS Topic接收java对象。我已将源连接器入站数据类型设置为Mirth Channel中的分隔文本,连接器类型为 JMS Reader 。现在在preprocessor
阶段,我想把这个java对象编组成XML。我已经把这个记录器放到了这个
logger.info("incoming data "+message);
正在打印 OrderDetails @ 240aaf81
现在我调用自定义java类来将java对象编组为XML。但是这个传入的消息在预处理器脚本中被Mirth.Code转换为String,如下所示:
// Modify the message variable below to pre process data
logger.info("incoming data "+message);
var object = new Packages.coms.controller.JAXBMarshalling();
object.marshallJavaObjectToXml(message);
return message;
在将传入消息传递给方法时,它显示错误该方法不存在,因为方法期望自定义java对象作为方法参数,但它将作为String。 方法如下所示:
public void marshallJavaObjectToXml(OrderDetails orderDetails) {
JAXBContext jaxbContext;
try {
File file = new File(
"C:\\Program Files (x86)\\Mirth Connect\\conf\\xml\\xmlrepresentation.xml");
jaxbContext = JAXBContext.newInstance(OrderDetails.class);
Marshaller jaxbMarshaller = jaxbContext.createMarshaller();
// output pretty printed
jaxbMarshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
jaxbMarshaller.marshal(orderDetails, file);
jaxbMarshaller.marshal(orderDetails, System.out);
} catch (JAXBException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
传递对象的类看起来像这样:
@XmlRootElement
public class OrderDetails implements Serializable{
private static final long serialVersionUID = -4617153110762983450L;
private Long mrn;
private Long orderNo;
private Long patientId;
private Long orderId;**strong text**
private Long encounterId;
}
我已经用这两个类创建了jar文件并放入了Mirth的 custom-lib 文件夹中。如何在Mirth的preprocessor
脚本中获取实际的java对象?
我正在使用Mirth版本2.2.1.5861
答案 0 :(得分:0)
使用“摘要”选项卡上的“附件”脚本可以实现此类结果。在那里,您以原始格式处理邮件。您可以在那里提取您的对象并将其存储到全局通道地图中,该地图也允许传递对象,与其他两个地图相反。预处理器脚本也处理原始消息。这两者之间的区别在于,当消息到达附件处理程序时,消息不会存储在数据库中,但它会在之后存储。
作为进一步阅读,我建议使用“ Unofficial Mirth Connect Developer's Guide ”。 (免责声明:我是本书的作者。)