如何在 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();
我需要将当前流名称捕获到变量中。
我尝试使用#[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();