如何在 mule 中找到当前流名称?

How to find current flow name in mule?

我需要将当前流名称捕获到变量中。

我尝试使用#[flow.name],但在 mule 3.8.0

中没有成功

有人可以帮助我吗?

您可以使用#[flow.name] 在记录器中访问流程名称,但在 MEL 中无法访问。使用 flowconstruct 获取流程名称。参考这个 answer

希望对您有所帮助。

基于此 post 中的答案:How to get caller flow name in private flow in Mule

有一种获取流程名称并将其放入变量的最简单方法:

<expression-component doc:name="Expression"><![CDATA[flowVars.flowName = flow.name;]]></expression-component>

我一直在 3.7.3 中使用 #[flow.name] 并且刚刚在 3.8.0 中尝试以确保它没有被删除并且它在记录器和设置 flowVars 值时对我来说工作正常。我建议至少发布您的流程片段,也许我们可以发现您遇到的问题。

PS,不确定为什么 flow.name 不是标准格式或没有被 Mule 真正记录下来,因为它不是,所以仍然有人担心他们会删除它。我看到它不仅在这里说明它在 MEL 中不可访问,但#[flow.name] 是一个 MEL 表达式并且确实有效。要在异常策略中使用 if 之类的 I Parse Template,我使用 sulthony 的形式,在表达式中设置一个 flowVars 值并在我的模板中引用该 flowVars。

或者,您可以直接在变量中使用表达式 #[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();