Динамический доступ к 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