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

MySQL数据库_ios百度云解压_最新活动

小七 141 0

如何在SAPUI5这样的"无状态世界"中处理事务性操作?这是每个架构设计阶段都应该解决的中心问题。我想在这个博客中介绍的一个可能的场景是ETag处理的乐观锁定方法:

在更新操作中,后端不会实际锁定数据。取而代之的是,在更新之前,数据将被检查,物联网技术,并确保操作(创建、更新)将在实体的最新版本上完成。

在一次实体读取之后,后端服务通过HTTP响应将所谓的ETag转换到客户端。一旦UI请求更新,ETag值必须通过IF Match头发送回服务器。

在执行任何操作之前,后端服务将传输的值与数据库的当前值进行比较。如果它们匹配,将执行该操作。否则将抛出HTTP错误(412–Precondition failed)。由于这种机制,360大数据,人工智能龙头企业,客户端会收到一个通知,指出实体存在一个"较新"的版本。

如果给定的客户端可以覆盖服务器中条目的任何版本,则可以使用值"*"。在这种情况下,后端将不进行前提条件检查。

SAP Gateway和UI5支持ETag处理。关于如何配置SAP网关以实现前提条件检查,有一些很棒的博客文章。

在本教程中,我想重点介绍乐观锁定的UI处理。

我们的示例基于一个演示服务(ZSEPM\u C\u SALESORD\u UPDATE\u ENTITY)。andrefischer在本教程中介绍了后端配置。

好消息是:如果完成了后端配置,用户界面中就没有额外的工作来保留ETag或将其发送回后端。oData模型会处理这个问题!

但是…我们应该考虑适当的用户指导:如果更新失败,我们要通知用户。然后应该有一个通知,一个更新的版本将是可用的。用户有机会刷新到最新版本或用其更改覆盖后端条目。

演示应用程序的第一个屏幕显示一个销售订单表。

通过选择一个项目,将有一个导航到详细信息页面,搭建大数据平台,其中可以更新属性"SalesOrderText"。

我们的视图是直截了当的:a带有一些字段和触发更新事件的按钮的简单表单:

我想关注细节页面中的更新操作。onSave函数看起来是这样的:

函数updateSalesOrder返回一个承诺来检索oData更新的结果:

到目前为止,没有什么特别的…

但是如果更新由于前提错误而失败,物联网解决方案,我们希望一个对话框(sap.m.dialog)出现在屏幕上

对话框的适当编码看起来是这样的:

通过提交更改后,我们的更新函数将被再次调用。

这里,我们要忽略前提条件检查。因此,我们必须为更新函数(bForceUpdate)添加一个额外的参数

一旦该值为真,我们将手动设置oData模型的参数"eTag":

mParameters.eTag文件="*";

为此,我们还必须调整_updateSalesOrder。最后这两个函数是这样的

在sapgateway和UI5中Etag处理得到了很好的支持。ETag值缓存在oData模型的实体中。它将与每个请求一起移交给后端。网关框架负责整个先决条件检查。

有了这种"开箱即用"的支持,只需采用一些小的UI,就可以为事务性应用程序设置一个完整的乐观锁定方法。