【问题标题】:Oracle Apex 20 - REST source action on column in interactive reportOracle Apex 20 - 交互式报告中列上的 REST 源操作
【发布时间】:2021-08-10 05:52:11
【问题描述】:

我正在尝试使用表格报告设置表单并仅使用 REST 源。

目前我有一个表单和交互式报告设置。它使用带有动态项目的休息源。即:

http://source/asm/instances/:group

:group 然后可以从表单中搜索到。

现在返回的列都是与用户相关的,但我希望能够通过 REST API 设置一项。所以假设我进了一个组,得到如下结果:

group | name | surname | status
ABC   | Dan  | Murray  | inactive
ABC   | Mary | Swanson | active

REST Source 具有远程激活/停用工具上的status 的功能。即

http://source/asm/instances/ABC/dan/activate

http://source/asm/instances/ABC/dan/deactivate

现在我需要将状态列修改为具有两个选项的列表形式,激活/停用。 This is where the issue comes in. When either of the two items are selected, it needs to use the relevant REST source as posted above and post to the tool, meaning it will activate/deactivate on the fly. 我整个周末都在寻找和尝试,但我找不到这样做的方法。

到目前为止,我最接近的是创建一个链接,但这只是将我路由到我不需要的 URL。

我真的希望有人能够在这里帮助我,因为我正在苦苦挣扎。

【问题讨论】:

  • 您是否尝试添加到将调用 PL/SQL 进程的按钮,并且它们应该调用 API 端点。也许?请创建一个测试环境。
  • @davidm,然后我需要在每列中创建这些按钮。一个组可以包含 50 个用户,您需要为每个用户提交按钮。如果可能,请详细说明如何做到这一点?
  • 从未尝试过,但我确实知道从哪里开始。在每一行上创建一个按钮并附加一个 DA 很容易。用户之间有什么区别(url 参数或 json 或 http 标头标签)?
  • 我将自己创建一个测试...

标签: rest oracle-apex-20.1 oracle-rest-data-services


【解决方案1】:

也许我解决了你的问题,试试看。 :)

版本

Oracle Application Express 20.2.0.00.20

解决方案

我想您知道如何设置 REST 数据源 (DS) 并使用从 de DS 获取的数据创建交互式报告,因此我将跳过这些步骤。

  1. 转到您的交互式报表定义并在设置下找到本地后处理并设置值:
  • 类型:SQL 查询
  • SQL 查询:
select 
    /*leave all the columns fetched from the DS*/
    --
    -- Add this column 
    '<a class="rest-button-status" data-id="'||<PRIMARY-KEY>||'">Link</a>' BUTTON
  from #APEX$SOURCE_DATA#
  1. 转到BUTTON列定义,在Security下禁用Escape special characters

  2. 添加一个新的隐藏项并将其命名为 P1_NEW。

  3. 运行应用程序,您应该会在最后一列中看到带有链接的交互式报告。

  4. 现在添加一个定义为的动态操作(随意命名):

  1. 向此 DA 添加两个 True 操作:
  • 第一个 - 设置值

// copy paste code
$(this.triggeringElement).attr('data-id')

  • 第二 - 执行服务器端代码 (PL/SQL)

编辑要提交的页面项目 - P1_NEW


-- code
DECLARE
    l_clob  CLOB;
    -- I added a parameter PK
    v_url VARCHAR2(2000) := 'http://xxxxx:8080/ords/xxxx/xxxxxx/test-apex/deactivate?PK=';
BEGIN
    L_CLOB := APEX_WEB_SERVICE.MAKE_REST_REQUEST(
        -- I added a parameter PK
        p_url                  => v_url||:P1_NEW,
        p_http_method          => 'POST' -- or GET or other
    );
END;

切换系统(激活/停用)由您决定,也许最好的解决方案是拥有一个端点,然后 DS 控制状态。

编辑 - 基于 cmets 以下是第二个 DA 的截图:

  1. 向 DA 添加另一个操作。

  1. 定义 Execute Server-side CodeExecute PL/SQL Code(操作名称取决于您拥有的 Oracle APEX 版本)

【讨论】:

  • 感谢您的回答。让我完成这些步骤,看看它做了什么。我会尽快回复您。
  • 在 PL/SQL Server 方面,我得到ORA-06550: line 1, column 106: PLS-00103: Encountered the symbol "DECLARE" when expecting one of the following: ( - +
  • 删除评论或换行
  • 哦!我还需要将 P1_NEW 添加为要提交的项目。
  • PL/SQL 代码是不行的。我什至手动重写了代码,没有遇到同样的错误。我什至做了set define on
猜你喜欢
  • 2011-09-26
  • 2020-12-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-01-21
  • 1970-01-01
相关资源
最近更新 更多