2014-11-01 2 views
0

Я определил глобальную функцию, как показано нижеMEL Expression Выдает

<configuration doc:name="Configuration"> 
    <expression-language autoResolveVariables="true"> 
     <import class="java.text.SimpleDateFormat" /> 
     <global-functions> 
      def convertDate(shiftDate){ 
       dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); 
       return dateFormat.format(shiftDate); 
      }    
     </global-functions>   
    </expression-language> 
</configuration> 

Но при вызове через регистратора ничего, кажется, происходит

<logger message="Convert Date #[convertDate(xpath://address/@timestamp)]" level="DEBUG" doc:name="Logger"/> 

Выражение XPath XPath: // адрес/@ метки времени урожаи 2014 -10-29T15: 23: 07

Но перед регистратором я вижу

XPath-ветвь:/адрес/@ ти mestamp является: [email protected] [Атрибут: имя значение временной метки "2014-10-29T15: 23: 07"]

сообщение об ошибке, как показано ниже

org.mule.api.expression.InvalidExpressionException: [Error: unexpected end of statement] 
[Near : {... convertDate(xpath://address/@payloadID) ....}] 

Что же я делаете неправильно здесь? Большое спасибо.

ответ

0

Вы смешиваете MEL и старый стиль выражений.

Это старый стиль: xpath://address/@payloadID

Это MEL: xpath('//address/@payloadID').value

Таким образом, вы должны использовать:

<logger 
    message="Convert Date #[convertDate(xpath('//address/@payloadID').value)]" 
    level="DEBUG" /> 

См: http://www.mulesoft.org/documentation/display/current/Mule+Expression+Language+Tips#MuleExpressionLanguageTips-XPathSupport

+0

Как всегда спасибо за помощь. – hpandalai