Обработка логики фильтра мулов в dataweave - PullRequest
0 голосов
/ 13 сентября 2018

У меня есть полезная нагрузка Json, т.е.

{
    "Numbers": [
        0
    ],
    "title": "string",
    "Ids": [
        0, 1, 2
    ],
    "group": 0
}

и я нажимаю http, чтобы получить коллекцию записей для всех клиентов, присутствующих в БД, т. Е.

{
    "details": [{
            "detailId": 0,
            "Id": 0,
            "name": "string",
            "place": "string",
            "country": "string",
            "bloodgroup": "string",
            "area": "string"
        },
        {
            "detailId": 0,
            "Id": 1,
            "name": "string",
            "place": "string",
            "country": "string",
            "bloodgroup": "string",
            "area": "string"
        }
    ]
}

Теперь я хочу отфильтровать и извлечь данные для тех идентификаторов, для которых я получаю полезную нагрузку в поле «Идентификаторы», и сопоставить их в полезной нагрузке ответа сбора.

Поле идентификатора является общим в полезной нагрузке запроса и в ответной нагрузке

Пожалуйста, помогите мне в этом.

1 Ответ

0 голосов
/ 13 сентября 2018

Предположим, вы храните первую полезную нагрузку в переменной с именем flowVars.ids.Вы хотите использовать метод contains, который работает и возвращает true, если проверяемое значение содержится в массиве, в противном случае возвращается false.Вот пара примеров:

// Returns true
[1,2,3,4,5] contains 5

// Returns false
[1,2,3,4,5] contains "Hello"

Таким образом, вы можете структурировать ваш filter следующим образом (предполагая Mule 3.x и DataWeave 1.0):

%dw 1.0
%output application/java

%var ids = flowVars.ids.Ids
---
payload.details filter (ids contains $.Id)
...