2014-03-07 3 views
0

mule의 datamapper에 매개 변수를 전달하고 액세스하는 방법. (XSLT에서는 컨텍스트 매개 변수로 매개 변수를 전달하고 $ 기호를 사용하여 매개 변수로 받고 액세스합니다.) datamapper에서도 동일한 작업을 수행해야합니다. 모든 제안/링크/예를 들어 주시면 감사하겠습니다.Mule - datamapper에 매개 변수를 전달하고 xpath 조건에 액세스하십시오.

Approach1 : 우리는 datamapper

output.abc= invokeTransformer("MyTransformer",input.abcdef); 

이 MyTransformer의 방법을 invokeTransformer 사용하는 것은 오버라이드 (override)이 기본 방법이있는 자바 구성 요소입니다.

@Override 
public String transformMessage(MuleMessage message, String outputEncoding) 
     throws TransformerException { 
System.out.println("Inside transformer" +message.getProperty ("sessionVariable1",PropertyScope.SESSION)); 
    return message.getProperty("sessionVariable1",PropertyScope.SESSION); 

그러나 문제는 내가이 변압기를 노새 흐름에서 호출하지 않는다는 것입니다. 그러나 datamapper에서 호출합니다. 따라서 인수 'message'는 전달되지 않습니다. 따라서 datamapper로 돌아가려면 해당 세션 변수를 다시 검색 할 수 없습니다. 이 인수 (datamapper에서 MuleMessage)를 보낼 수있는 방법이 있습니까?

답변

1

당신은 DataMapper에 입력 인수를 사용하고 출력에서이를 참조 할 수 있습니다 :

<set-variable variableName="testvar" value="value of testvar"/> 
<data-mapper:transform config-ref="new_mapping_grf""> 
    <data-mapper:input-arguments> 
     <data-mapper:input-argument key="testvar">#[flowVars['testvar']]</data-mapper:input-argument> 
    </data-mapper:input-arguments> 
</data-mapper:transform> 

output.myField = invokeTransformer("MyTransformer",inputArguments.testvar); 

또는

output.myField = inputArguments.testvar; 

추가 입력 인수 사용할 수있는 DataMapper에 입력면 녹색 플러스 아이콘을 통한 GUI.

+0

xpath 조건에서 입력 인수를 어떻게 참조 할 수 있습니까? – user3359973

+0

할 수 있는지 잘 모르겠습니다. DataMapper 밖에서 xpath 기반 라우팅을 정의하거나 여러 DataMapper를 연결하여 xml 구조에 inputArgument를 삽입해야 할 수 있습니다. –