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

时间:2017-08-08 10:36:41

标签: mule mule-studio mule-component mule-el mule-cluster

我有以下属性

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

通常我们会使用$ {path.order}来获取键值。我想动态传递类型(顺序或地址)以获取键值。如下所示

${path.#[flowVars.type]}

我厌倦了上面的表情。那没起效。你可以帮忙准备并动态获取密钥

4 个答案:

答案 0 :(得分:0)

您可以使用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"/>

我也在这个here上发了一篇文章。

答案 1 :(得分:0)

我在变量中定义了字典

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

答案 2 :(得分:0)

通过插入以下代码访问.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

答案 3 :(得分:0)

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