【发布时间】:2016-11-24 20:21:15
【问题描述】:
Mule 表达式组件中变量的范围是什么,它与流变量有什么关系?我有一个带有set-variable 的流程,并且惊讶地发现该值被expression-component 中的赋值覆盖。例如,
<flow name="HelloWorldFlow1" doc:name="HelloWorldFlow1">
<http:inbound-endpoint exchange-pattern="request-response"
host="localhost" port="9999" doc:name="HTTP"
doc:description="This endpoint receives an HTTP message." path="helloworld"/>
<set-variable variableName="asdf" value="firstvalue" doc:name="Variable"/>
<logger message="#[flowVars["asdf"]]" level="INFO" doc:name="Logger"/>
<expression-component doc:name="Expression"><![CDATA[asdf = "secondvalue";]]></expression-component>
<logger message="#[flowVars["asdf"]]" level="INFO" doc:name="Logger"/>
<expression-component doc:name="Expression"><![CDATA[qwer = "thirdvalue";]]></expression-component>
<logger message="#[flowVars["qwer"]]" level="INFO" doc:name="Logger"/>
</flow>
这个的输出是:
INFO 2014-04-25 08:58:46,889 [[helloworld].connector.http.mule.default.receiver.02] org.mule.api.processor.LoggerMessageProcessor: firstvalue
INFO 2014-04-25 08:58:46,893 [[helloworld].connector.http.mule.default.receiver.02] org.mule.api.processor.LoggerMessageProcessor: secondvalue
INFO 2014-04-25 08:58:46,895 [[helloworld].connector.http.mule.default.receiver.02] org.mule.api.processor.LoggerMessageProcessor: null
如果可能,您能否指出范围规则的文档?我尝试了一些不同的搜索,但不断得到无关的结果。
澄清:在expression-component 中,Mule 是否首先检查是否存在具有给定名称的流变量,然后使用该变量而不是创建新变量?如果表达式组件创建一个变量,范围是否仅限于表达式组件代码?在http://blogs.mulesoft.org/mule-school-the-mulemessage-property-scopes-and-variables/ 中,它说 Mule 流变量“表现得像实例属性”,但我找不到实例属性的定义。 scope 一词也不在表达式组件参考页 (http://www.mulesoft.org/documentation/display/current/Expression+Component+Reference) 中。
【问题讨论】:
标签: scope expression mule