Как вызвать выражение MEL при вызове значения ключа с помощью ключа из файла свойств в муле

У меня есть свойства, как показано ниже

path.order=/order
path.address=/address

Обычно мы будем использовать ${path.order} для получения значения ключа. Я хочу динамически передать тип (заказ или адрес), чтобы получить значение ключа. Как ниже

${path.#[flowVars.type]}

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


person Gopi    schedule 08.08.2017    source источник


Ответы (3)


Ваше требование может быть достигнуто с помощью функции dataweave. Выкладываю фрагмент. Я попытался объединить с окончательным выражением dw, но это не сработало. Дайте мне знать, если это соответствует вашим требованиям.

<message-properties-transformer scope="invocation" doc:name="Message Properties">
            <add-message-property key="type1" value="address"/>
            <add-message-property key="type2" value="object"/>
        </message-properties-transformer>
<message-properties-transformer scope="invocation" doc:name="Message Properties">
     <add-message-property key="property1" value="#['path.' + flowVars.type1]"/>
     <add-message-property key="property2" value="#['path.' + flowVars.type2]"/>
        </message-properties-transformer>
<logger message="#[dw('p(flowVars.property1)')]" level="INFO" doc:name="Logger"/>

Я написал сообщение об этом здесь , также.

person Abhay Singh    schedule 08.08.2017
comment
Я должен вызвать ключ свойства в пути http - person Gopi; 08.08.2017
comment
Таким образом, вы можете вставить MEL #[dw('p(flowVars.property1)')] в конфигурацию запросчика HTTP. Дай мне знать, если это работает. - person Abhay Singh; 08.08.2017

У меня есть словарь, определенный в моих переменных

var.dictionary=#[['key':'value', 'key': 'value']]

Затем в моем Dataweave я ссылаюсь на него и передаю ему ключ

node: flowVars.var.dictionary[payload01.key]

Итак (к сожалению, непроверенный) ваш пример должен иметь переменную:

var.dictionary=#[['order':'/order', 'address': '/address']]

И ссылайтесь на него как на

flowVars.var.dictionary[#[flowVars.type]]

Итак, это должно выглядеть так:

<logger message="#[path.#flowVars.var.dictionary[#[flowVars.type]]]" level="INFO" doc:name="Logger"/>
person Reece Paterson    schedule 09.08.2017

Получите доступ к файлу .property, вставив следующий код.

<context:property-placeholder location="smtp.properties"/>

И используйте это так.

<logger message="${propertyFromFile}" doc:name="System Property Set in Property File"/>

https://www.youtube.com/watch?v=D95iw_ny8J4

person Hemin    schedule 29.08.2017