在Mirth的预处理器阶段将java对象编组为XML?

时间:2013-08-02 15:10:46

标签: java xml preprocessor marshalling mirth

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

1 个答案:

答案 0 :(得分:0)

使用“摘要”选项卡上的“附件”脚本可以实现此类结果。在那里,您以原始格式处理邮件。您可以在那里提取您的对象并将其存储到全局通道地图中,该地图也允许传递对象,与其他两个地图相反。预处理器脚本也处理原始消息。这两者之间的区别在于,当消息到达附件处理程序时,消息不会存储在数据库中,但它会在之后存储。

作为进一步阅读,我建议使用“ Unofficial Mirth Connect Developer's Guide ”。 (免责声明:我是本书的作者。)