当前位置:主页 > 云存储 > 文档 >

数据库服务器_网站_云服务器使用

  • 文档
  • 2021-04-09 13:00
  • 动埠云

数据库服务器_网站_云服务器使用

大家好,

这个博客是关于SAP中新的锁定概念,持久锁和CDS查看生命周期注释,这将适用于Fiori(草稿)的最新ABAP编程模型。

注意:这只是基于我的理解和分析,我在S4系统中用ABAP7.52对其进行了分析,因为我找不到任何关于这方面的详细文档。

首先我们将了解为什么持久锁以及在最新的sapabap编程模型中如何利用这个概念(以及一些有趣的东西)。我假设Restful应用程序编程模型(RAP)也会有同样的情况。

我们将不讨论如何创建持久锁(它们不会发布给客户),而只是了解它们是如何工作的,以及如何在启用草稿的Fiori应用程序中重写它们的行为。

"为什么使用持久锁"介绍:

******如果你已经知道如何通过etags和soft state锁定Fiori应用程序,你可以跳过这个,转到"持久锁的工作原理"一节******我认为每个人都必须了解当前SAP开发新应用程序的策略,它使用UI5/Fiori作为前端,如何获得大数据,备份将是cd,ABAP和它们都将使用OData服务进行通信,OData服务将是一个无状态的模型。

在这种情况下,当来自UI5应用程序的OData请求发出时,将不维护会话,在后端打开会话,获取/更新数据并关闭会话。

但是在正常的GUI/WebDynrpo应用程序中,会话将一直存在,直到您注销。

因此在锁定方面,如果我们在编辑模式下打开Webdynpro/GUI应用程序,通常我们会调用lock对象来创建锁定,因此其他用户在第一个用户提交数据或离开事务之前不能编辑相同的数据。

注意:对于初学者,有blog/SAP帮助解释了使用lock objects的锁定概念

Fiori应用程序的问题来了,它不会持久化锁,因为每次请求后会话都将关闭。

例如,如果我们调用OData请求来锁定销售订单,请求将通过打开会话转到后端,锁定销售订单,当请求完成时,会话将关闭,所有锁将被移除

那么您将如何处理这些应用程序中的锁?(否则数据可能会被破坏)

对于这个SAP早前已经给出了2个特性

ETag

使用ETag,我们只能实现基于乐观的锁定

它是基于时间戳或者其他一些外部计算,比如数据的散列

例如

稍微配置一下,OData框架就会自动处理它。这在所有场景中都不是很有用,大数据数据采集,因为用户可能需要输入整个数据,并且在保存时只能看到一条错误消息。有许多博客和sap帮助您了解更多关于这个主题的信息。

https://blogs.sap.com/2017/06/30/optimistic-locking-etag-in-sapui5/

OData软状态

通过使用此选项,会话将保持,一旦达到配置的超时,会话将关闭。因此,在会话打开之前,我们将拥有锁,然后在会话关闭之后,锁将被移除。

但是SAP自己在帮助中说,不要将其用于事务处理,而应该仅用于通过缓冲数据来提高性能。但是无论如何,打开一个会话肯定会对服务器和性能造成损失,我们必须打开会话才能保持锁。

https://help.sap.com/sahelp\u gateway20sp12/helpdata/en/f6/5f8e538e83d27e10000000a44538d/frameset.htm

以下是评论。来自Jocelyn Dart和SAP团队的软状态

因此,新的耐用锁介绍的。比如"持久"这个名字意味着它们是"持久的"。所以即使会话关闭,这些锁也不会被移除。

哇哦,对了!!,无需会话来维护锁对我来说这是一个很棒的特性,

感谢SAP架构师和设计此锁的团队。

"持久锁"的工作原理。

这些锁持久耐用,因为它们不依赖于会话/提交工作。它们取决于上下文,并将持续很长时间(基于到期时间)。那么,我刚才提到的新背景是什么??

来自SAP帮助

所以上下文是基于草稿文档的,就像SAP提到的,这些只适用于少数框架,其中一个是Fiori的ABAP编程模型,带有草稿。

所以对于不太熟悉这个框架的人来说,请查看我的另一个博客,因为下面的例子就是基于它的,如果你试过这个例子一次,下面的过程很容易理解https://blogs.sap.com/2019/01/08/abap基于非guid键的sapfiori draft编程模型。。

注意:我将在这里讨论两种类型的锁定。

我给出这个警告是因为它可能有点混乱。希望我能尽力解释我

让我们看看下面的视频,看看当两个用户(DUSER1,DUSER2)打开同一个应用程序并试图编辑相同的数据时,锁是如何工作的。

DUSER1->编辑现有数据,框架将创建一个草稿文档并通过创建SM12锁来锁定它。

DUSER2->编辑相同的数据,框架将检查锁并抛出错误。

DUSER1->关闭应用程序和浏览器,没有放弃草稿文档(没有点击"取消"按钮或"保存"按钮,这将放弃草稿)。

DUSER2->打开相同的数据,点击"编辑"按钮,仍然会显示错误。

  • 关注微信

猜你喜欢

微信公众号