如何在Mule的私有流中获取调用方流名称

如何在Mule的私有流中获取调用方流名称,mule,Mule,我有一个私有流,它由许多公共流使用flow ref共享。我希望在私有流中使用MEL,使用Mule 3.3.0获取调用方流名称。这可能吗?Mule通过flow ref调用私有流时,不会向事件添加任何属性,因此您可以选择: 在调用私有流之前,使用设置具有流名称的变量,并使用#[flowVars.yourVariableName]读取此变量 使用呼叫流的入站端点作为通知呼叫者的方式。您可以使用#[message.inboundProperties.MULE_endpoint]获取入站端点URL,也可

我有一个私有流,它由许多公共流使用
flow ref
共享。我希望在私有流中使用
MEL
,使用Mule 3.3.0获取调用方流名称。这可能吗?

Mule通过
flow ref
调用私有流时,不会向事件添加任何属性,因此您可以选择:

  • 在调用私有流之前,使用
    设置具有流名称的变量,并使用
    #[flowVars.yourVariableName]
    读取此变量
  • 使用呼叫流的入站端点作为通知呼叫者的方式。您可以使用
    #[message.inboundProperties.MULE_endpoint]
    获取入站端点URL,也可以使用
    #[message.inboundProperties.MULE_origing_endpoint]
    获取其名称
  • 创建一个实现的自定义:这样您将获得流名称,并能够在
    MuleEvent
    的消息中将其自动设置为调用变量。将其与所有父流中的
    自定义处理器
    元素一起使用,在
    流引用
    之前

Mule通过
flow ref
调用私有流时,不会向事件添加任何属性,因此您可以选择:

  • 在调用私有流之前,使用
    设置具有流名称的变量,并使用
    #[flowVars.yourVariableName]
    读取此变量
  • 使用呼叫流的入站端点作为通知呼叫者的方式。您可以使用
    #[message.inboundProperties.MULE_endpoint]
    获取入站端点URL,也可以使用
    #[message.inboundProperties.MULE_origing_endpoint]
    获取其名称
  • 创建一个实现的自定义:这样您将获得流名称,并能够在
    MuleEvent
    的消息中将其自动设置为调用变量。将其与所有父流中的
    自定义处理器
    元素一起使用,在
    流引用
    之前

David,此表达式正在引发异常
。例外情况是:
1。无法解析令牌:无法解析变量“flow”(org.mvel2.UnsolveablePropertyException)org.mvel2.integration.impl.BaseVariableResolveFactory:60(null)2。表达式“flow.name”的执行失败。(org.mule.api.expression.ExpressionRuntimeException)
。但这很好:
#[flow.name]
无效:
flow
变量不是MEL中的隐式顶级变量-请参阅:再次说明,Mule不会将任何变量与流名称绑定,您必须自己设置:
。顺便说一句,我添加了第三个选项:)我同意flow不是顶级变量,但当这个语句起作用时:,它让我尝试了非理性的东西。你能告诉我为什么#[flow.name]使用loggerMan吗?看看源代码,似乎有一个名为
flow
的未记录MEL变量,但它何时绑定和何时不绑定都不清楚。显然在
记录器中是这样,但在
设置变量中不是这样。也许您可以尝试使用表达式组件:它可能会被绑定,因此您可以在
表达式组件中执行以下操作:
flowVars.callerFlowName=flow.name
。David,此表达式正在引发异常
。例外情况是:
1。无法解析令牌:无法解析变量“flow”(org.mvel2.UnsolveablePropertyException)org.mvel2.integration.impl.BaseVariableResolveFactory:60(null)2。表达式“flow.name”的执行失败。(org.mule.api.expression.ExpressionRuntimeException)
。但这很好:
#[flow.name]
无效:
flow
变量不是MEL中的隐式顶级变量-请参阅:再次说明,Mule不会将任何变量与流名称绑定,您必须自己设置:
。顺便说一句,我添加了第三个选项:)我同意flow不是顶级变量,但当这个语句起作用时:,它让我尝试了非理性的东西。你能告诉我为什么#[flow.name]使用loggerMan吗?看看源代码,似乎有一个名为
flow
的未记录MEL变量,但它何时绑定和何时不绑定都不清楚。显然在
记录器中是这样,但在
设置变量中不是这样。也许您可以尝试使用表达式组件:它可能会被绑定,因此您可以在
表达式组件中执行以下操作:
flowVars.callerFlowName=flow.name