如何将 Mule 变量值分配给 属性 键值查找?

How can i assign Mule Variable Value to Property Key -Value lookup?

  1. 我想从变量中找出careerName
  2. 我想使用那个 CareerName 作为 属性 Key。例子。如果 careerName 出现为 apple,我将针对该键 apple=ST\*214|ST\*210 设置值。

我有以下 Mule Choice Expression 代码行,我尝试使用它,但在这里没有成功。

mule-esb.test1.properties

ftp.inbound.carriers.path='CareerName1/InBound/','CareerName2/InBound/','CareerName3/InBound','CareerName4/InBound/','apple/InBound/'

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

正在寻找有关此脚本的替代方案或解决方案。

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])]">

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

示例 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 和 return 相应的值。

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