2013-08-02 3 views
0

Mirth이 ActiveMQ JMS Topic에서 Java 객체를 수신 중입니다. 소스 커넥터 인바운드 데이터 유형을 으로 설정했습니다. 구분 된 텍스트의 출생 채널 및 커넥터 유형이 JMS 리더입니다. 이제 preprocessor 단계에서 내가 XML.I로이 자바 객체가이Mirth의 전처리 기 (preprocessor phase)에서 XML에 자바 객체 마샬링?

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

같은 로거를 넣어 가지고 그리고 지금 내가 자바를 마샬링에 대한 사용자 정의 Java 클래스를 호출하고 240aaf81

@OrderDetails의를 인쇄 마샬링 할 이 수신 메시지 처리기 스크립트에서 Mirth.Code에 의해 문자열로 변환 XML.But으로 객체는 다음과 같습니다 방법에 들어오는 메시지를 전달하는 것이 showi이

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

클래스는 다음과 같습니다

나는이 두 클래스와 jar 파일을 생성 환희의 맞춤 LIB 폴더에 넣어 가지고
@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; 
    } 

. 어떻게하면 preprocessor Mirth의 스크립트에서 실제 자바 객체를 얻을 수 있습니까? Mirth 버전 2.2.1.5861

답변

0

이러한 결과는 요약 탭의 첨부 파일 스크립트를 사용하여 얻을 수 있습니다. 거기에 형식의 메시지를 처리합니다. 그곳에서 오브젝트를 추출하여 Global Channel Map에 저장할 수 있습니다.이 맵은 다른 두 맵과 달리 오브젝트 전달을 허용합니다. Preprocessor 스크립트는 원시 메시지도 처리합니다. 이 두 가지의 차이점은 메시지가 Attachment 핸들러에 도달 할 때 데이터베이스에 저장되지 않지만 나중에 저장된다는 것입니다.

"Unofficial Mirth Connect Developer's Guide"을 추천합니다. (면책 조항 : 저는이 책의 저자입니다.)