0

Mirth は ActiveMQ JMS トピックから Java オブジェクトを受信して​​います。Mirth チャネルでソース コネクタのインバウンド データ型をDelimited Textに設定し、Connector Type はJMS Readerです。preprocessorフェーズでは、この Java オブジェクトを XML にマーシャリングしたいと考えています。ロガーをこのように配置しました。

logger.info("incoming data "+message);

そしてそれはOrderDetails@240aaf81を印刷しています

今、Java オブジェクトを XML にマーシャリングするためのカスタム Java クラスを呼び出しています。

// 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;
    }

これらの 2 つのクラスで jar ファイルを作成し、Mirth のcustom-libフォルダーに配置しました。Mirth のpreprocessorスクリプトで実際の Java オブジェクトを取得するにはどうすればよいですか? Mirth バージョン 2.2.1.5861 を使用しています

4

1 に答える 1

0

このような結果は、[概要] タブの添付ファイル スクリプトを使用して実現できます。そこでは、生の形式でメッセージを扱います。そこでオブジェクトを抽出し、他の 2 つのマップとは異なり、オブジェクトを渡すこともできるグローバル チャネル マップに保存できます。プリプロセッサ スクリプトは生のメッセージも処理します。これら 2 つの違いは、メッセージが添付ファイル ハンドラーにヒットしたときにデータベースに格納されず、後で格納されることです。

さらに読むために、「非公式 Mirth Connect 開発者ガイド」をお勧めします。(免責事項: 私はこの本の著者です。)

于 2013-11-08T23:11:15.977 に答える