如何将Mule变量值分配给Property Key -Value查找?

时间:2015-02-26 22:30:13

标签: groovy mule

  1. 我想从变量
  2. 中找出careerName
  3. 我想将CareerName用作属性键。例。如果将careerName作为apple出现,我会对该关键值设置值= ST \ * 214 | ST \ * 210。
  4. 我有Mule Choice Expression的以下代码行,我尝试过,但我没有在这里取得成功。

    mule-esb.test1.properties

    ftp.inbound.carriers.path = 'CareerName1 /入站/', 'CareerName2 /入站/', 'CareerName3 /入站', 'CareerName4 /入站/', '苹果/入站/'

    CareerName1 = ST \ * 214 | ST \ * 210

    CareerName2 = ST \ * 214 | ST \ * 210

    CareerName3 = \ ST.214。\

    CareerName4 = ST \ * 214

    苹果= ST \ * 214

    <context:property-placeholder location="mule-esb.${mule.env}.properties" />
    
    <when expression="import java.util.regex.Pattern;Pattern p = Pattern.compile('${'+message.getInvocationProperty('careerName')+'}');return p.matcher(payload.toString()).find();" evaluator="groovy">
    

    在此脚本上寻找一些替代方案或解决方案。

2 个答案:

答案 0 :(得分:0)

MEL具有广泛的正则表达式支持,您不需要使用Groovy。请参阅:http://www.mulesoft.org/documentation/display/current/Mule+Expression+Language+Tips#MuleExpressionLanguageTips-RegexSupport

您需要在Map中加载属性,您可以从注册表中查询,也可以在属性占位符解析器中使用。所以这样做:

<util:properties id="configProperties"
      location="classpath:mule-esb.${mule.env}.properties" />

<context:property-placeholder properties-ref="configProperties"  />

有了这个,以下应该有效:

<when expression="#[regex(app.registry.configProperties[careerName])]">

答案 1 :(得分:0)

定义一个全局配置bean的键值对属性的spring bean。 bean定义应该接受spring属性和接受键的方法并返回相应的值。

样本bean定义如下
<spring:bean id="entityMapper" name="entityMapper" class="com.xx.xx.commons.ClassNameXX"> <spring:property name="entities"> <spring:props> <spring:prop key="CareerName1">${CareerName1}</spring:prop> . . </spring:props> </spring:property> </spring:bean>

所以在流程级别中,您可以通过以下表达式从bean获取值 #[app.registry.entityMapper.getEntity(message.getInvocationProperty('careerName'))]

其中entityMapper将是bean名称,getEntity是bean中定义的方法,它接受careerName并返回相应的值。

希望这会有所帮助。 动态地,您无法直接从上下文占位符访问该值。