Mule – 如何在Java Component中访问流名称?

我们确实在许多流之间共享子流。 我想在我的子流程中找到Flow是一个呼叫…

MEL: –

#[flow.name] 

仅在Logger中工作。

我甚至无法将此值传递给Session / Anyother属性(通过set属性连接器),因此我可以使用message.getProperty方法进行访问。

提前致谢。

尝试制作组件org.mule.api.construct.FlowConstructAware。 然后你应该能够得到它的名字。

HTH

我的情况我创建了其他具有VM入站的日志记录流。 然后我通过Java组件调用它。 请参阅下面的示例代码

 public class TestCallVm implements Callable{ @Override public Object onCall(MuleEventContext eventContext) throws Exception { MuleMessage message = eventContext.getMessage(); String tid = message.getProperty("tid", PropertyScope.SESSION).toString(); MuleClient client = new MuleClient(eventContext.getMuleContext()); Map map = new HashMap(); map.put("tid", message.getProperty("tid", PropertyScope.SESSION).toString()); message.setPayload("Hello"); client.sendNoReceive("vm://vmLogger", "Hello", map); client.send("vm://vmLogger", "Hello", map); client.send("vm://vmLogger", message, null); MuleMessage response = client.send("vm://vmLogger", "Ross", null); System.out.println("response = "); return null; } } 

希望这会有所帮助:)

您可以使用以下代码获取java组件中的流名称

 import org.mule.api.MuleEventContext; import org.mule.api.construct.FlowConstruct; import org.mule.api.construct.FlowConstructAware; import org.mule.api.lifecycle.Callable; public class LogFlowName implements Callable, FlowConstructAware { private FlowConstruct flowConstruct; @Override public void setFlowConstruct(FlowConstruct flowConstruct) { this.flowConstruct = flowConstruct; } @Override public Object onCall(MuleEventContext eventContext) throws Exception { //TODO your code goes here System.out.println("Flow Name is : " +flowConstruct.getName()); //TODO your code goes here return eventContext.getMessage().getPayload(); } } 

希望这可以帮助。

另一种简单的方法,将其设置为变量,然后在java组件中访问该变量。