【问题标题】:How to find current flow name in mule?如何在骡子中找到当前的流名称?
【发布时间】:2017-11-14 22:18:02
【问题描述】:

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

我尝试使用 #[flow.name] 但在 mule 3.8.0 中没有运气

有人可以帮助我吗?

【问题讨论】:

    标签: mule mule-el


    【解决方案1】:

    根据这篇文章中的答案:How to get caller flow name in private flow in Mule

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

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

    【讨论】:

    • @Thiru 虽然它是一个相当古老的线程,但或者,您可以直接在变量中使用表达式#[mule:context.serviceName] 来设置当前流名称.. 请参阅下面的答案
    • flow.Name 将不起作用,如果您在从 DataWeave 调用的全局 MEL 函数中执行它。 (骡 ESB 3.9.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"/>
    

    这将直接在变量中设置您当前的流名称

    【讨论】:

      【解决方案3】:

      在 mule 3.8.5 中使用 Groovy 脚本组件,

      flowVars.currentFlowName = eventContext.getFlowConstruct().getName();
      

      【讨论】:

        【解决方案4】:

        我一直在 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。

        【讨论】:

          【解决方案5】:

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

          希望这会有所帮助。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2010-09-07
            • 2017-05-02
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多