大发时时彩玩法—大发快3彩票平台

SAP Fiori里两种锁机制(lock)的实现

时间:2020-01-30 06:33:37 出处:大发时时彩玩法—大发快3彩票平台

收到你这俩 提示信息。

看然后 具体的例子来理解。假设我用用户名Jerry选中了你这俩 ID为3456的Opportunity,点击Edit按钮然后 :

你这俩 最好的最好的妙招用于S/4HANA的Fiori应用,比如Material application。你这俩 Fiori应用,消费的OData service是基于CDS view 打上去BOPF实现的。

一些人在你这俩 最好的最好的妙招里设置断点,假如有一天在UI上点击编辑按钮,断点触发。从调用栈即可清除观察到编辑按钮点击然后 ,应用守护进程执行流是如何从BOPF框架投递到Material应用的枷锁代码。你这俩 加锁逻辑调用的是传统的ABAP Enqueue function module。

打开然后 Material,点击Edit:

身旁处于了你这俩 事请呢?在框架的最好的最好的妙招CHECK_BEFORE_MODIFICATION里,框架会把Fiori UI请求传进来的ETAG和当前最新的ETAG做比较:

现在我用然后 用户,对同然后 Opportunity做了修改,成功保存。假如有一天再回到用户Jerry的你这俩 编辑窗口,此时Jerry根本我不知道该Opportunity肯能被然后 用户修改了。Jerry修改了Opportunity的Name字段,点击保存按钮。

SAP CRM Fiori采用了你这俩 机制。

后台响应你这俩 读请求,假如有一天在响应的头部字段ETAG里写入了对应的值。

在S/4HANA后台使用事务码BOBX打开BO模型I_PRODUCTWD. 展开模型,双击EDIT,能就看你这俩 Edit实现的类为CL_I_DR_PRODUCTWD.

CHECK_BEFORE_MODIFICATION又会调用CHECK_ETAG_MATCH最好的最好的妙招。肯能check失败,当前的保存操作将不想执行。

也可不想能基于数据的删剪内容计算然后 HASH值出来作为ETAG返回给Fiori UI:

你这俩 26AE结尾的ETAG的值可不想能由应用应用守护进程采取不同的逻辑计算,可不想能直接采用请求节点对应的最后修改时间戳(Last Changed Timestamp), 同类下面这段ABAP代码:

从Chrome Development Tool可不想能观察到,当Jerry点击了保存按钮后,发送到后台的请求的头部富含 了然后 If-Match字段,你这俩 字段的值也不Jerry第一次点击编辑按钮时,后台返回给Jerry的26AE结尾的ETAG字段。

会触发然后 读操作发到后台:

这是为什么我实现的呢?

此时到ABAP后台使用事务码SM12能观察到Material对应的数据库表被锁住了:

双击你这俩 class,它的最好的最好的妙招LOCK_ACTIVE_DOCUMENT也不响应Fiori UI上编辑按钮点击的处置函数。

热门

热门标签