2017-02-20 3 views
0

Input Dataweavewie iterieren und eine XML-Tags filtern über und überprüfen Sie den Zustand in dataweave Funktion in mule

<root> 
    <client> 
     <name>abc<name> 
     <status>success</status> 
    </client> 
    <client> 
     <name>def<name> 
     <status>success</status> 
    </client> 
    <client> 
     <name>ghi<name> 
     <status>success</status> 
    </client> 
    <client> 
     <name>jkl<name> 
     <status>failed</status> 
    </client> 
    <client> 
     <name>mno<name> 
     <status>success</status> 
    </client> 
</root> 

Erwartete Ausgabe:

<root> 
    <clients> 
    <name>abc<name> 
    <name>def<name> 
    <name>ghi<name> 
    ........ 
    </clients> 
    <status>false</status> // if all status are success then true otherwise false 
</root> 

Hier kann ich in der Lage über jede xml iterieren Kennzeichnen und ordnen Sie den Namenswert unter clients-Tag mithilfe von dataweave zu. Aber ich muss einzelne Ausgabe für alle Status zuordnen. Wenn alle erfolgreich sind, wäre mein Status wahr. Wenn ein Status fehlschlägt, wäre mein Status falsch. Dazu müssen wir eine Funktion schreiben, die über jedes xml-Tag iteriert und die Ausgabe je nach Bedingung entweder trur oder false zurückgibt.

Danke,

Antwort

2

Filter die Liste der Status, die "nicht bestanden" entspricht. Wenn es keinen Datensatz zurückgibt, bedeutet dies, dass alle Status erfolgreich und dann wahr sind. Sonst (es gibt mehr als einen Datensatz zurück) false.

status: (sizeOf (payload.root.*client.status filter $ == "failed")) == 0 

Oder

status: not (payload.root.*client.status contains "failed") 
Verwandte Themen