Mirth从ActiveMQ JMS接收java对象,我在Mirth中将源连接器入站数据类型设置为分隔的文本,连接器类型是JMS 。现在,在preprocessor阶段,我想将这个java对象编组到XML.I中,我已经将这样的记录器放置在
logger.info("incoming data "+message);它正在打印OrderDetails@240aaf81
现在,我调用自定义的java类将java对象封送到XML.But中,传入的消息由Mirth.Code在预处理器脚本中转换为字符串,如下所示:
// 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对象作为方法参数,但它作为字符串。方法如下所示:
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.How文件夹中,可以在preprocessor脚本中获得实际的Mirth.How对象吗?我正在使用Mirth版本2.2.1.5861
发布于 2013-11-08 23:11:15
这样的结果可以使用摘要选项卡上的附件脚本来实现。在那里,您可以处理原始格式的消息。您可以在那里提取对象并将其存储到,这也允许传递对象,这与其他两个映射相反。预处理器脚本也处理原始消息。这两者的区别在于,当消息到达附件处理程序时,它不会存储在数据库中,而是存储在附件处理程序之后。
作为进一步的阅读,我建议使用"http://mirthconnect.isarp.com/“。(免责声明:我是本书的作者。)
https://stackoverflow.com/questions/18020363
复制相似问题