Динамический доступ к FlowVar в DataWeave

Я пытаюсь получить доступ к имени FlowVar динамически в DataWeave.

Например: у меня есть flowVars с именем taxInfo123. Это связанный список и мой заявитель.ApplicantID = 123

В моем хранилище данных я хочу получить динамический доступ к этому. Что-то вроде следующего:

"TaxInfo": flowVars.'taxInfo'+applicant.ApplicantID map ((taxIdentificationDetail , indexOfTaxIdentificationDetail) -> {

Это, очевидно, не работает, и я надеюсь, что это возможно, и мне просто нужен правильный синтаксис.

2 ответа

Решение

Если вам нужно динамически создать имя переменной, вы можете использовать flowVars[key] синтаксис вместо flowVars.key синтаксис. В вашем сценарии:

"TaxInfo": flowVars[('taxInfo' ++ (flowVars.applicant.ApplicantID as :string))]

Я предположил applicant был также flowVar, но вы могли бы так же легко использовать payload.applicant.ApplicantID или как того требует ваша ситуация. Я также предположил, что это число, поэтому мне пришлось записать его как строку.

Когда вы используете этот синтаксис, вы хотите убедиться, что вы заключаете ключевое выражение в круглые скобки, чтобы оно сначала оценивалось, а затем выполнялся flowVar.

Итак, подведем итог:

Если вы знаете, что имя переменной - taxInfo123 -

flowVars.taxInfo123 или же flowVars[taxInfo123] оба действительны

Если вам нужно создать имя переменной динамически -

flowVars[(expression)]

Надеюсь, это поможет!

Формирование имени переменной требует оператора добавления, например ++. Пожалуйста, ознакомьтесь с документацией MuleSoft для операторов Dataweave, чтобы лучше понять, насколько гибка возможна в Dataweave.

https://docs.mulesoft.com/mule-user-guide/v/3.8/dataweave-operators

Другие вопросы по тегам