我需要将当前流名称捕获到变量中。
我尝试使用#[flow.name],但在mule 3.8.0中没有运气
任何人都可以帮助我吗?
答案 0 :(得分:3)
根据这篇文章中的答案:How to get caller flow name in private flow in Mule
有一种最简单的方法来获取流名称并将其放入变量中:
<expression-component doc:name="Expression"><![CDATA[flowVars.flowName = flow.name;]]></expression-component>
答案 1 :(得分:2)
或者,您可以在变量中直接使用表达式#[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"/>
这将直接在变量
中设置您的当前流名称答案 2 :(得分:1)
在使用Groovy脚本组件的mule 3.8.5中,
flowVars.currentFlowName = eventContext.getFlowConstruct().getName();
答案 3 :(得分:0)
我一直在3.7.3中使用#[flow.name]并且只是在3.8.0中尝试确保它没有被删除,并且它在logger中设置了一个flowVars值并且工作正常。我建议至少发布你的流程片段,也许我们可以发现你遇到的问题。
PS,不确定为什么flow.name不是标准格式或Mule真正记录的,因为它不会继续存在一些担心他们将删除它。我已经看到它不仅仅在这里声明它在MEL中无法访问,但#[flow.name]是MEL表达式并且确实有效。要在异常策略中使用if I Parse Template,我使用sulthony的形式,在表达式中设置flowVars值并在模板中引用flowVars。
答案 4 :(得分:-1)
您可以使用#[flow.name]访问记录器中的流名称,但在MEL中无法访问它。使用flowconstruct获取流名称。请参阅此answer
希望这有帮助。