2016-03-18 3 views
0

1.Street Address: Если ABC пуста и ZXY заполнен, Map ZXY 2.Street Address UC: Если оба ZXY и ABC заполнены, и ABC не начинается с ' PO BOX ',' PO BOX ',' BP 'или' POSTBUS ', Map ABC; в противном случае MAP ZXY 3.Street Address: если P08 ABC заполнен, а ZXY пуста, только MAP ABC.Как сделать это отображение ind dataweave (Mulesoft)

Мне удалось отобразить 1-е условие и 3-е кондоминиум, как показано ниже, но я не уверен, как сделать второй.

{ 
ADDRESS_LINE1:ABC 
    } when ABC != "" 
    otherwise 
    { 

    ADDRESS_LINE1:ZXY 
    } 

ответ

0

Попробуйте это ... он должен работать.

Вы можете гнездиться, когда .. В противном случае вы бы сделали на любом языке.

%dw 1.0 
%output application/java 
--- 
{ 
    'Address': (payload.addr.ABC when (payload.addr.ABC[0..5] != 'PO BOX' 
             and payload.addr.ABC[0..7] != 'P.O. BOX') otherwise payload.addr.XYZ) 
        when (payload.addr.ABC != '' 
          and payload.addr.XYZ != '') 
        otherwise (payload.addr.ABC when payload.addr.ABC != '' otherwise payload.addr.XYZ) 

} 

Я проверил с входом Образец -

<?xml version='1.0' encoding='UTF-8'?> 
<addr> 
    <ABC>P.O. BOX 123</ABC> 
    <XYZ>DEFG</XYZ> 
</addr> 
+0

! знак не работает, и я могу знать, что 0..5 делает ?? –

+0

@SatheeshKumar, какой ошибка вы смотрите для!? [0..5] - селектор диапазона строк (например, подстрока). ABC [0..5] вернет первые 6 символов строки. Проверьте в документах https://docs.mulesoft.com/mule-user-guide/v/3.7/dataweave-reference-documentation#range-selector. Для приведенного выше ввода образца в моем сообщении, я получаю DEFG как адрес на выходе, потому что ABC начинается с 'P.O. BOX» –