如何在使用 mule 中的属性文件中的键调用键值时调用 MEL 表达式

How to call MEL expression while invoking the key value with key from properties file in mule

我有如下属性

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

通常我们会使用${path.order}来获取键值。我想动态传递类型(订单或地址)以获取键值。喜欢下面

${path.#[flowVars.type]}

我厌倦了上面的表情。它不起作用。你能帮忙准备并动态获取密钥吗

您的要求可以使用dataweave函数来实现。我正在 post 截取一个片段。 我尝试使用最终的 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"/>

我也在这个here上写了一个post。

我在我的变量中定义了一个字典

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"/>

通过插入以下代码访问 .属性 文件。

<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

<set-variable variableName="type" value="order" doc:name="Variable"/>

    <expression-component doc:name="Expression"><![CDATA[flowVars.propertyName='path.'+flowVars.type;
    flowVars.propertyValue =dw("p(flowVars.propertyName)");]]></expression-component>

<logger message="#[flowVars.propertyValue]" level="INFO" doc:name="Logger"/>