我有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">
在此脚本上寻找一些替代方案或解决方案。
答案 0 :(得分:0)
您需要在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并返回相应的值。
希望这会有所帮助。 动态地,您无法直接从上下文占位符访问该值。