使用Groovy获取ESB Mule消息的入站属性

时间:2016-07-06 18:47:44

标签: groovy mule esb

我有一个groovy变换器组件,它将获取入站属性并将其设置在流量变量中,如下所示。

if(message.inboundProperties.'http.query.params'.Brand != null){
    flowVars ['Brand'] = message.inboundProperties.'http.query.params'.Brand
}
return payload;

但是我得到了指定的错误。似乎inboundProperties不在groovy的范围内。你能告诉我如何访问groovy中的入站属性。

注意:我不想改变有效载荷。我的目标是基于queryparms创建flowVars。

错误的一部分:

No such property: inboundProperties for class: org.mule.DefaultMuleMessage (groovy.lang.MissingPropertyException)
  org.codehaus.groovy.runtime.ScriptBytecodeAdapter:51 (null)

3 个答案:

答案 0 :(得分:4)

我看不到getInboundProperties()方法on DefaultMuleMessage

我猜你想要:

if(message.getInboundProperty('http.query.params')?.Brand){
    flowVars ['Brand'] = message.getInboundProperty('http.query.params').Brand
}

答案 1 :(得分:1)

您可以通过两种方式从入站属性设置变量:

  1. 用MEL替换groovy组件,将<scripting:component doc:name="Groovy">替换为<expression-component doc:name="Expression">
  2. 继续使用groovy组件,然后修改现有代码

    if(message.getInboundProperty('http.query.params').get('Brand') != null) {
    flowVars ['Brand'] = message.getInboundProperty('http.query.params').get('Brand');
    }
    return payload;
    

答案 2 :(得分:1)

使用message.getInboundProperty。

Intent fileManagers = new Intent();
fileManagers.setAction(Intent.ACTION_GET_CONTENT);
File dir = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES)
                .getAbsolutePath());
Uri uri = Uri.fromFile(dir);
fileManagers.setDataAndType(uri, "file/*");
startActivity(Intent.createChooser(fileManagers, null));