云平台与OData的集成-如何处理传入的$ filter查询参数

2020-08-31 05:05发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)我们定义了一个iFlow,它公开...

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


我们定义了一个iFlow,它公开了OData服务并使用了接收方OData服务。 我们希望允许最终用户使用$ filter查询参数来查询此iFlow OData服务。 我们希望iFlow能够从传入的URL中提取$ filter,并将其传递给接收方OData服务。

我们如何做到这一点?

我们认为解决方案涉及以下内容:

$ {header.filter}在" OData Receiver"连接的"处理"选项卡的"自定义查询选项"字段中

但是我们不知道要使用什么$ {header}属性,也找不到任何能够明确标识可用$ {header}属性的文档。

对此事的任何指导表示赞赏。

15条回答
微wx笑
2020-08-31 05:49

嗨维伦德拉,

触发iflow时,会创建一个Camel消息对象,这就是通过iflow传递的内容。

有"标头"值,"交换属性"值和消息对象的正文。

您可以使用content修饰符将Header数据和Exchange属性数据从Header值拉到主体中。

在"内容修改器"的"正文"标签中,您可以输入例如;

标题" orderNo"为$ {header.orderNo}

 属性" msgOut"为$ {property.msgOut} 

然后您将它们拉入人体。

1。 "我们认为该解决方案涉及以下内容:$ {header.filter}"

是的,只要消息对象中实际上有一个名为" filter"的标头,然后就可以使用$ {header.filter}来访问它。

2。 "但是,我们不知道要使用什么$ {header}属性,我们找不到任何能够明确标识可用$ {header}属性的文档。"

您可以使用Groovy脚本步骤将所有标头和属性传输到主体,然后根据需要在其中查看它们。 使用我为您创建的以下脚本来完善此功能:

导入com.sap.gateway.ip.core.customdev.util.Message;
 导入java.util.HashMap;
 导入java.util.List;

 def消息processData(消息消息)
 {

//将主体作为字符串获取(由于groovy是动态语言,因此无需类型转换)
 def body_as_string = message.getBody();

//从Message对象获取标头
 def message_headers = message.getHeaders();

//从Message对象获取属性
 def message_properties = message.getProperties();

//创建一个新的字符串以显示在正文中
 def new_body_string =
 ""
 该消息是使用Apache Groovy语言创建的。

 所有标头:$ {message_headers}

 所有属性:$ {message_properties}
 ""

//使用我们现在创建的新字符串设置Message对象的主体
 message.setBody(new_body_string);

 返回消息;
 }

 

您还可以将正文作为附件登录到MPL,然后可以对其进行查看。

此处说明了操作方法: https://blogs.sap.com/2017/01/09/hci-payload-logging-sorted-using-groovy-script /

一周热门 更多>