[英]Mule - How to access flow name inside Java Component?
我们确实在许多流之间共享子流。 我想在子流程中找到哪个流程是调用方...
MEL:-
#[flow.name]
仅在Logger中工作。
我什至无法将此值传递给Session / Anyother属性(通过set属性连接器),因此可以使用message.getProperty方法进行访问。
提前致谢。
尝试使组件为org.mule.api.construct.FlowConstructAware。 然后,您应该能够得到它的名字。
高温超导
以我为例,我创建了另一个具有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<String, Object> map = new HashMap<String, Object>();
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组件中访问该变量。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.