2017-01-11 8 views
2

In einer Logik-App, die ich entwickle, möchte ich die Objekte in Array A haben, von denen keine Entität in Array B existiert. Die Arrays haben die folgende Struktur:Ist es möglich, ein Array in Logic-Apps basierend auf einem anderen Array zu filtern?

Array A

[{"ExternalId": 1}, {"ExternalId": 2}] 

Array B

[{"Id": 2}] 

Neben der ID ist diese Arrays viel mehr Eigenschaften enthalten, die ich weg Einfachheit halber verlassen wird.

Das Ergebnis, das ich will, ist das Array eine filterd auf ExternalId der Basis zu haben, die in Array B nicht verfügbar sind, so dass diese in der folgenden gefilterten Reihe führen soll:

[{"ExternalId": 1}] 

Ich versuchte, die FilterArray Aktion zu verwenden dafür, aber ich weiß nicht, wie man das modelliert. Laut der Workflow Definition Language gibt es eine @ contains-Funktion, aber ich bin nicht in der Lage, es richtig zu konstruieren.

Ist es möglich, dies auf diese Weise zu tun? Gibt es eine andere Möglichkeit, dieses Ergebnis in Azure Logic Apps zu erzielen?

Antwort

3

Ja, ich denke nicht, dass dies noch möglich wäre - der einzige Weg, wie Sie es bekommen könnten, wäre wie folgt, aber vielleicht ist es einfacher, jetzt einfach in einer Azure-Funktion zu laufen.

  1. Erstellen Sie eine neue Anordnung von nur "ExternalId" Werte (dies ist so können Sie es mit @Contains verwenden() innerhalb Filter)
    1. mit jedem Element in Array B eine foreach-Schleife erstellen
    2. Innerhalb der foreach-Schleife eine compose mit { "body": "@item()['ExternalId']" }

Außerhalb der foreach-Schleife fügen Sie @body tun könnte (‚Compose‘) jetzt, und Sie würden eine Reihe von ExternalI haben d Werte ([ 1 ] in diesem Fall oben).

nun das Filterarray auf Array A erstellen, und die Filterbedingung ist, wo @Contains (Körper ('Compose'), Punkt())

In Zukunft planen wir @Select unterstützen() @where() @ orderby() gibt Konstrukte ein, die dies vereinfachen würden, sowie eine Map-Array-Aktion - aber immer noch im Design. Für den Moment könntest du oben eine App wählen oder eine Azure-Funktion aufrufen, die du mit javascript/C#

+0

machen kanntest. Ich habe diese Antwort bereits erwartet, war mir aber nicht ganz sicher, ob es schon über das FilterArray möglich war. Die Methode @select() sollte in diesem Fall sehr viel Zeit sparen. –

Verwandte Themen