使用APEX.SERVER.PROCESS检查状态更新。

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

环境。Oracle APEX v5.1.2和Oracle 12c R2 DB。

我有一个报表,它是基于以下表格中的列,在一个叫作 MY_TASK:

TASK_ID (PK),
TASK,
TASK_STATUS (from TASK_CHECKER.task_status)

我还有另一个表,我把它作为一个运行表,用来检查与表MY_TASK中的TASK_ID号有关的工作状态,称为: TASK_CHECKER 其中有列。

TASK_ID (PK),
TASK_STATUS

根据上面的内容,我有一个计划作业,定期检查另一个表的状态,检查特定的TASK_ID,从而更新TASK_CHECKER表内的TASK_STATUS值。

使用上述方法,当用户运行Oracle APEX应用程序并进入MY_TASK报表页面时,我希望通过使用 apex.server.process在启动时,通过TASK_ID将两个表连接在一起,并在MY_TASK报告中显示当时的TASK_STATUS。

请注意,TASK_STATUS的值是。等待 正在进行中 成功失败

所以,如果我有5个TASK_ID在运行,我可能在页面加载时看到。

1    TASK_A   SUCCESS
2    TASK_B   ERROR
3    TASK_C   IN-PROGRESS
4    TASK_D   WAITING
5    TASK_E   WAITING

也许10秒后会变成:

1    TASK_A   SUCCESS
2    TASK_B   ERROR
3    TASK_C   SUCCESS
4    TASK_D   SUCCESS
5    TASK_E   IN-PROGRESS

希望看到TASK_STATUS的更新实时出现。

javascript ajax plsql oracle-apex oracle-apex-5.1
1个回答
0
投票

我刚才检查了一下,好像是 refresh 是异步的(它不会锁定屏幕)。你应该可以做到这样......

setInterval(function() {
  apex.region("region_static_id").refresh();
}, 5000);

只要确保毫秒数高于区域运行查询和区域渲染所需的时间。

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