Mule load属性值来自flow Variable而不是datawave

时间:2017-05-16 15:36:23

标签: mule

我有一个场景,我需要从属性文件中获取值,而我需要获取的值将来自变量。

我的道具档案

org1 =active
org1_oracle_user = blah
org1_oracle_password = blahblah
org2 =active
org2_oracle_user = blah2
org2_oracle_password = blah2blah2
org3 = Active
org3_oracle_user = blah3
org3_oracle_password = blah3blah3

现在我通过一些输入得到了组织的价值,我能够保存到某个变量中。

现在,如何使用不带数据编织的流变量从属性文件中获取值。 我知道如何通过dataweave获取值如下

<set-variable variableName="orgTypeStatus" value="#[dw('p(flowVars.org_name)')]" doc:name="orgTypeStatusVariable" />

但无法知道如何在没有数据编织的情况下获取值。

我给出了一个示例示例,因为有其他基于组织名称的道具,我无法对其进行硬编码

1 个答案:

答案 0 :(得分:1)

通常,如果您需要从属性文件中选择值,可以使用${}之类的内容: -

<logger level="INFO" message="${org1}" doc:name="Logger"/>   

但根据您的问题here,我可以看到您想在不使用dataweave的情况下尝试此操作。 因此,要动态化并动态选择属性值,您需要使用spring加载属性文件: -

 <spring:beans>
         <spring:bean id="appProps" class="org.springframework.beans.factory.config.PropertiesFactoryBean">
             <spring:property name="singleton" value="true"/>
             <spring:property name="location" value="classpath:dev.properties"/>
         </spring:bean>
     </spring:beans>  

现在,在流程中,您可以尝试动态关注:

<logger level="INFO" message="${org1}" doc:name="Logger"/>
<set-variable variableName="org_name" value="org1" doc:name="OrgNameVariable" />
<set-variable variableName="orgTypeStatus" value="#[app.registry.appProps[flowVars.org_name]]" doc:name="orgTypeStatusVariable" />
<set-variable variableName="m_user" value="#[app.registry.appProps[flowVars.org_name +'_oracle_user']]" doc:name="user"/>
<logger message="Logging variables:- m_user: #[flowVars.m_user] orgTypeStatus: #[flowVars.orgTypeStatus]" level="INFO" doc:name="Logger" />