【发布时间】:2017-11-14 22:18:02
【问题描述】:
我需要将当前流名称捕获到一个变量中。
我尝试使用 #[flow.name] 但在 mule 3.8.0 中没有运气
有人可以帮助我吗?
【问题讨论】:
我需要将当前流名称捕获到一个变量中。
我尝试使用 #[flow.name] 但在 mule 3.8.0 中没有运气
有人可以帮助我吗?
【问题讨论】:
根据这篇文章中的答案:How to get caller flow name in private flow in Mule
有一种最简单的方法来获取流名称并将其放入变量中:
<expression-component doc:name="Expression"><![CDATA[flowVars.flowName = flow.name;]]></expression-component>
【讨论】:
#[mule:context.serviceName] 来设置当前流名称.. 请参阅下面的答案
或者,您可以直接在变量中使用表达式#[mule:context.serviceName]:-
<set-variable variableName="myFlowName" value="#[mule:context.serviceName]" doc:name="Variable"/>
<!-- Print the value of variale in logger -->
<logger message="#[flowVars.myFlowName]" level="INFO" doc:name="Logger"/>
这将直接在变量中设置您当前的流名称
【讨论】:
在 mule 3.8.5 中使用 Groovy 脚本组件,
flowVars.currentFlowName = eventContext.getFlowConstruct().getName();
【讨论】:
我一直在 3.7.3 中使用 #[flow.name] 并在 3.8.0 中尝试确保它没有被删除,并且它在记录器中对我来说工作正常并设置了 flowVars 值。我建议至少发布您的流程的 sn-p,也许我们可以发现您遇到的问题。
PS,不知道为什么 flow.name 不是标准格式,也不是 Mule 真正记录的,因为它不是,所以他们会继续担心他们会删除它。我已经看到它不仅仅是在这里声明它在 MEL 中不可访问,但 #[flow.name] 是一个 MEL 表达式并且确实有效。要将 if 用于异常策略中的 I Parse Template 之类的东西,我使用 sulthony 的形式,在表达式中设置一个 flowVars 值并在我的模板中引用该 flowVars。
【讨论】:
您可以使用 #[flow.name] 在记录器中访问流名称,但在 MEL 中无法访问。使用 flowconstruct 获取流名称。参考这个answer
希望这会有所帮助。
【讨论】: