我要求mule根据文件名进行路由...我有一个文件端点,文件将被放置,根据文件名,它将路由到不同的流...我的流程是: -
<flow name="Db1Flow3" doc:name="Db1Flow3" initialState="started">
<file:inbound-endpoint responseTimeout="10000" connector-ref="File_Input" doc:name="File" path="E:\backup\test">
<file:filename-regex-filter pattern="SoapRequestInsert.xml,SoapRequestUpdate.xml,SoapRequestRetrieve.xml" caseSensitive="false"/>
</file:inbound-endpoint>
<set-property propertyName="QuerySelect" value="${QuerySelect}" doc:name="To_Set_Query_In_Property_File"/>
<choice doc:name="Choice">
<when expression="#[message.outboundProperties['QuerySelect'] contains 'insert'] && #[message.inboundProperties['originalFilename'].contains('SoapRequestInsert.xml')]">
//Do something ....
</when>
<when expression="#[message.outboundProperties['QuerySelect'] contains 'update'] && #[message.inboundProperties['originalFilename'].contains('SoapRequestUpdate.xml')]">
//Do something other
</when>
<when expression="#[message.outboundProperties['QuerySelect'] contains 'select'] && #[message.inboundProperties['originalFilename'].contains('SoapRequestRetrieve.xml')]">
//Do something
</when>
<otherwise>
//Do default
</otherwise>
</choice>
</flow>
现在,当我在输入文件夹中放置文件时,我遇到以下异常: -
[Error: unbalanced braces]
[Near : {... '] contains 'insert'] && #[message.inboundProperti ....}]
[Line: 1, Column: 60] (org.mule.api.expression.InvalidExpressionException). Message payload is of type: ReceiverFileInputStream
Code
: MULE_ERROR--2
请根据输入文件名
告诉我MEL是否正确答案 0 :(得分:2)
试试这个:
<when expression="#[(message.outboundProperties['QuerySelect']).contains('insert') && (message.inboundProperties['originalFilename']).contains('SoapRequestInsert.xml')]">
//Do something ....
</when>
答案 1 :(得分:0)
不要使用#[]倍的时间,最好将它们隐藏在一个#[]下。它应该工作。
<choice doc:name="Choice">
<when expression="#[(message.outboundProperties['QuerySelect'] contains 'insert') && (message.inboundProperties['originalFilename'].contains('SoapRequestInsert.xml'))]">
//Do something ....
</when>
<when expression="#[(message.outboundProperties['QuerySelect'] contains 'update') && (message.inboundProperties['originalFilename'].contains('SoapRequestUpdate.xml'))]">
//Do something other
</when>
<when expression="#[(message.outboundProperties['QuerySelect'] contains 'select') && (message.inboundProperties['originalFilename'].contains('SoapRequestRetrieve.xml'))]">
//Do something
</when>
<otherwise>
//Do default
</otherwise>
</choice>