MEL Выражение для фильтрации значения переменной - PullRequest
0 голосов
/ 13 мая 2019

Я сохранил значение в переменной.Это ID, похоже, это 1-2823596-1 или CAT-R131-L6267.Теперь мне нужно написать выражение, которое фильтрует этот идентификатор на основе первого значения идентификатора (то есть, если это число или алфавит).По этому я поставлю свой выбор роутера.Может кто-нибудь, пожалуйста, дайте мне знать, как написать это выражение, так как я относительно новичок в Mulesoft

, пробовал на данном примере, но не смог создать

enter code here {  a: payload.a match {
case is Object -> 'OBJECT'
case is String -> 'STRING'
case is Number -> 'NUMBER'
case is Boolean -> 'BOOLEAN'
case is Array -> 'ARRAY'
case is Null -> 'NULL'
else -> 'ANOTHER TYPE'  },  b: payload.b match {
case y is Object -> { 'Type': { 'OBJECT' : y} }
case y is String -> { 'Type': { 'STRING' : y} }
case y is Number -> { 'Type': { 'NUMBER' : y} }
case y is Boolean -> { 'Type': { 'BOOLEAN' : y} }
case y is Array -> { 'Type': { 'ARRAY' : y} }
case y is Null -> { 'Type': { 'NULL' : y} }
else -> { 'Type': { 'ANOTHER TYPE' : payload.b} }  }}

Также пробовал использовать подстроку

enter code here #[vars.reqTcpn == vars.reqTcpn[0..0] match[0-9]]

Требуется проверить, является ли первое значение строки символом или числом, чтобы можно было выбрать маршрутизатор выбора

1 Ответ

0 голосов
/ 14 мая 2019

Вы используете Mule 4, поэтому MEL был заменен на Dataweave в качестве языка выражений.

В Mule 4.2 и Dataweave 2.2.0, недавно выпущенных, есть новая функция isNumeric, которая делает именно это:

import isNumeric from dw::core::Strings output application/java --- isNumeric(vars.reqTcpn[0 to 0])

https://docs.mulesoft.com/mule-runtime/4.2/dw-strings-functions-isnumeric

MulE 4 версии <4.2 вы можете использовать комбинацию подстроки <code>[0 to 0] и match для регулярного выражения, чтобы проверить его число.Затем sizeOf, чтобы проверить, что есть хотя бы 1 совпадение:

#[sizeOf(match(vars.reqTcpn[0 to 0], '[0-9]')) > 0]
...