Мул 4 : Пакетная обработка : Ошибка в выражении «Принять» на этапе пакетной обработки

#mule #mule4

Вопрос:

Я использую пакетную обработку, которая имеет более одного пакетного шага.

Результатом одного пакетного шага является :

 [
  {
    "CustomerId": "00",
    "TotalPurchase": 0
  },
  {
    "CustomerId": "11",
    "TotalPurchase": 1
  },
  {
    "CustomerId": "22",
    "TotalPurchase": 8
  },
  {
    "CustomerId": "33",
    "TotalPurchase": 27
  },
  {
    "CustomerId": "44",
    "TotalPurchase": 64
  },
  {
    "CustomerId": "55",
    "TotalPurchase": 125
  },
  {
    "CustomerId": "66",
    "TotalPurchase": 216
  },
  {
    "CustomerId": "77",
    "TotalPurchase": 343
  },
  {
    "CustomerId": "88",
    "TotalPurchase": 512
  },
  {
    "CustomerId": "99",
    "TotalPurchase": 729
  },
  {
    "CustomerId": "1010",
    "TotalPurchase": 1000
  }
]

 

На следующем этапе пакетной обработки я использую поле «ПРИНЯТЬ ВЫРАЖЕНИЕ» со значением как :

 #[payload.TotalPurchase > 100]
 

Но я получаю ошибку :

 Types `Array` and `Number` can not be compared.
payload.TotalPurchase > 100
   ^^^^^^^^^^^^^^^^^^^^^

 

Есть какие-нибудь идеи, почему это происходит?

Ответ №1:

Возможно, вы хотите обработать каждый элемент массива как запись, но для этой полезной нагрузки значение #[payload.TotalPurchase] равно:

 [
  0,
  1,
  8,
  27,
  64,
  125,
  216,
  343,
  512,
  729,
  1000
]
 

Это связано с тем, что DataWeave возвращает массив всех элементов TotalPurchase в массиве. Таким образом, невозможно сравнить этот вычисленный массив с числом.