2017-02-21 40 views
0

Я использую Anypoint Studio 6.1 и Mule 3.8.1 и имею это выражение MEL, которое заменяет любой текст \ n новым возвратом строки/каретки.Как использовать MEL в dataweave для замены символов в строке

payload.replace('\\n', System.getProperty('line.separator')) 

Я хотел бы переместить эту функцию в Dataweave, но не может получить выражение MEL на работу или найти способ сделать это в Dataweave.

Как я могу повторно использовать выражение MEL в Dataweave?

Благодаря

ответ

0

DW является собственной мини-язык в Mule помимо MEL, как это было описано для меня и использует другой синтаксис, чтобы делать то, что вы пытаетесь. Я не делал новых строк специально, так как мои выражения DW используют разделители строк в качестве разделителей записей, но такая же общая тактика должна работать. Ниже приведен пример изменения запятые пространств в отображении с.в. полезной нагрузки:

AcctID: $ .ACCOUNT_ID заменить "" с "",

1

Вы должны исследовать глобальные функции

Как:

<configuration doc:name="Global MEL-Functions"> \t 
 
    \t \t <expression-language> \t \t \t \t 
 
\t \t  <global-functions file="mel/extraFunctions.mvel"> 
 
\t \t \t </global-functions> 
 
\t \t </expression-language> \t 
 
</configuration>

И создать глобальную функцию в resoruce файл для повторного использования

\t \t def UUID()  { 
 
\t \t \t return java.util.UUID.randomUUID().toString(); 
 
\t \t } 
 
     def decode(value) { 
 
      return java.util.Base64.getDecoder().decode(value); 
 
     } 
 
     def encode(value) { 
 
      return java.util.Base64.getEncoder().encodeToString(value.getBytes()); 
 
     } 
 
     def stringToAscii(value) { 
 
\t \t \t StringBuilder sb = new StringBuilder(); 
 
\t \t \t for (char c : value.toCharArray())sb.append((int)c); 
 
\t \t \t return new BigInteger(sb.toString()); 
 
     }

И ссылаться на ваши глобальные функции в вашем dataweave

payload map 
 
{ 
 
\t target: stringToAscii($) as :string 
 
}