云服务器价格_云数据库_云主机【优惠】最新活动-搜集站云资讯

云数据库_爸爸去哪儿第五季百度云_好用

小七 141 0

在iFlow投入生产之前,必须对其进行端到端测试

正如我上次承诺的,今天我将详细介绍iFlow测试。您需要确保每一个新的iFlow,也就是要在您的云平台集成租户上工作的iFlow,都能够处理各种输入,并在消息处理期间以及从目标系统回调之后创建有意义的响应。我将把重点放在有一个源系统和一个目标系统的场景上,因为通常情况是这样的。

可能的错误场景可能是授权或网络问题,格式不正确的web服务消息和有效负载上的无效值或涉及的服务器组件之一的停机时间。

让我们更详细地了解无效值场景。假设您希望使用云平台集成(CPI)iFlow将业务合作伙伴从源系统复制到SAP Cloud for Customer(C4C)。为此,您在源系统上触发了web服务,并且由于某些原因,业务伙伴没有出现在C4C中的customers视图中?

有三个地方你可以查出来问题所在。

查什么

在这个博客我想为你提供另一套工具来处理可能的错误。我称之为"伪装"错误,因为这些消息显示为已完成的CPI消息,尽管目标系统强调消息有问题。

CPI将HTTP返回状态代码为200的消息视为成功。但是,接收系统可能理解请求,但无法完全处理它。在这种情况下,爱淘客,您将从目标系统的响应中发现有效负载上的错误和警告。

上面的屏幕截图来自我们iFlow的CPI消息监视,它使它看起来像是使用SOAP服务管理器CustomerIn在C4C上创建的新客户,因为消息状态为"已完成"。但是来自消息跟踪的有效负载显示如下:

图2 SOAP服务管理器CustomerIn的C4C响应的有效负载

因此"消息完成"有点误导,因为由于无效的id号范围,无法创建客户。不过,CPI认为该消息已完成,因为目标系统(C4C)接收到该消息并返回状态码200。但首先要做的是

消息验证让你的生活更轻松

最好从一开始就避免消息中的结构性问题。为此,您可以应用验证逻辑来确保来自源系统的消息符合您的需求。SAP提供了一个只验证XML消息的组件。这意味着您需要先将JSON或CSV负载转换为XML,然后才能应用任何验证。

标准验证程序组件根据XML架构定义(XSD)检查XML内容,其中包含XML结构定义、允许的数据类型和允许的值范围。通常,您可以从源系统和目标系统的WSDL文件派生XSD。这适用于基于SOAP的web服务。对于基于REST的服务,如OData等,您需要查看文档。还值得检查OData服务的$metadata响应(https://:/yourOdatService?$元数据)。但是,您不会得到这里提到的任何值范围。SAP在此提供公共API描述。

可能的验证异常应由异常子流程处理。看看这里的例子,开始异常处理。通常情况下,您会在CPI中收到一条失败的消息,表明存在问题,理想情况下会向管理员发送一封电子邮件。可以使用变量${Exception.*}访问异常详细信息。只需在异常子流程中添加一个内容修饰符即可创建一条错误消息,该消息可以通过电子邮件发送。为了更灵活,我们创建了一个单独的iFlow来发送电子邮件,因为我们将这种异常处理应用于我们的所有iFlow。

图3创建消息的屏幕截图,其中包含异常的详细信息

到目前为止还不错,但是您之前在图1中看到的消息不会产生错误!

处理伪装错误消息

让我们看看如何处理这种特殊类型的错误消息。"检测"小恶魔的关键是解析来自目标系统的响应的有效负载(参见图2)。在我的示例中,今天的目标系统是Cloud for Customer.

图4用于解析带有错误的C4C响应的Groovy脚本示例

该脚本解析消息结构(参见图2)并搜索标记和。如果XmlSlurper找到日志条目,我将向消息添加一个新属性,欧洲云服务器,以便能够处理该信息。我打算加强今后的逻辑。现在,识别xml结构上的标记就足够了,因为完成的消息看起来不一样。

图5下面步骤的屏幕截图,使用属性containsError finishing with message event

如果消息属性containsError为true,我们触发一封包含C4C回复的电子邮件,通知管理员进行进一步处理。

之后,由您决定是否要用消息或错误事件完成iFlow。一个错误事件将比CPI上的消息监视更好地突出"伪装"错误。

最终,零售大数据解决方案,我设想了一个groovy脚本,欧洲云服务器,它可以识别SOAP、REST和OData响应的各种"伪装"错误消息。

此外,我鼓励您创建外部参数,以便能够在iFlow中配置日志记录活动。这样就可以根据需要打开和关闭日志记录。到目前为止,租用服务器,您只能在Eclipse中这样做,但是SAP声称对基于Eclipse的开发环境的支持将在2018年上半年结束。所以最终这个特性也应该可以在WebUI中使用。这里有一些关于如何添加外部参数以及如何在WebUI上更新iFlow的说明。

最后一句话