Oracle Apex 动态操作 - 强制同步执行

问题描述 投票:0回答:1

我有一组页面项目:

P1_ERRORS
P1_ERROR_COUNT
P1_RESULT

如果 P1_ERRORS 已更新,则会在 P1_ERRORS 更改时触发动态操作以计算 P1_ERROR_COUNT。

在 P1_ERROR_COUNT 上设置动态操作,以根据错误计数计算 P1_RESULT 应该为“PASS”还是“FAIL”。

然后我有另一个页面项目:

P1_IGNORE

如果 P1_IGNORE 设置为“YES”,则 P1_IGNORE 上的动态操作会清除 P1_ERRORS,并将 P1_RESULT 设置为“N\A”。

发生的情况是,P1_RESULT 短暂更改为“N\A”,然后恢复为“PASS”。

因此 P1_IGNORE 清除 P1_ERRORS,这会触发 P1_ERRORS 上的更改事件以重新计算 P1_ERROR_COUNT,P1_ERROR_COUNT 动态操作触发,看到错误计数为零,因此将 P1_RESULT 设置为 PASS。

因此,当 P1_IGNORE 更改另一个页面项目时,这些 DA 就会被启动,然后就会发生竞争条件。 P1_IGNORE 通过将 P1_RESULT 设置为“N\A”来终止其动态操作,但随后其他 DA 稍后完成并将其设置回“PASS”。

虽然我可以在某些 DA 操作(混乱)上使用客户端条件来解决这个问题,但有没有办法强制这种级联的更改事件和动态操作同步发生而不是异步发生?即,如果 DA 1 更新 DA 2,我是否可以等待 DA 2 上的任何动态操作触发,然后再继续 DA 1 中的操作。

oracle-apex
1个回答
0
投票

最好将 2 个决策链分开。

当前问题:

链 1:P1_ERRORS 更新 P1_ERROR_COUNT 更新 P1_RESULT 链 2:P1_INGORE 更新 P1_ERRORS,这会触发链 1。

一种解决方案:

添加附加页面项目 P1_CALCULATE_ERRORS。与 P1_ERRORS 一起更新此页面项目(不是通过 P1_ERRORS 上的 DA!)并使用它来计算 P1_ERROR_COUNT 和 P1_RESULT

链 1:P1_CALCULATE_ERRORS 更新 P1_ERROR_COUNT 更新 P1_RESULT 链2:P1_IGNORE直接更新P1_RESULT

© www.soinside.com 2019 - 2024. All rights reserved.