APEX 4.0:如何在APEX中将页面从一个应用程序复制到另一个应用程序

sac*_* rv 6 oracle-apex

请帮助我如何将页面从Apex的现有应用程序复制到Apex应用程序的另一个工作空间.

Tom*_*Tom 4

你不能开箱即用地这样做。
除了工作区 ID 之外,应用程序 ID 也很重要。如果您有 2 个不同的工作区并且其中有相同的应用程序但具有不同的 ID,则事情会进一步复杂化。
您始终可以做的就是导出完整的应用程序,导入它但使用不同的 ID,这样就不会覆盖现有的,然后创建一个新页面作为新导入的应用程序页面的副本。

另一种方法是编辑导出的PAGE SQL 文件,但是,让我强调一下,不建议这样做。正如 OTN 论坛中一次又一次慷慨地指出的那样,如果您需要应用程序/顶点问题的支持,而他们会发现您在 sql 文件中搞乱,那么您将无法获得支持。仅当您理解并知道您要做什么时才执行此操作!如果您在不了解自己在做什么的情况下更改代码,您的情况可能比开始时更糟糕。任何其他情况,请遵循应用程序导出/导入/复制行。

无论如何,我所处的位置是工作区 ID 不同,但应用程序 ID 不同。在这种情况下,更改导出的文件非常简单,只需要编辑 1(一)行并涉及这段代码:

begin

  -- Assumes you are running the script connected to SQL*Plus as the Oracle user APEX_040200 or as the owner (parsing schema) of the application.
  wwv_flow_api.set_security_group_id(p_security_group_id=>nvl(wwv_flow_application_install.get_workspace_id,27000294100083787867));

end;
/
Run Code Online (Sandbox Code Playgroud)

这是导出的页面文件中的第一段代码之一。可以看到,这里设置了工作区ID。如果尝试导入到应用程序中(即使应用程序 ID 与您尝试导入的应用程序 ID 匹配),您也会收到错误消息。不过,将 ID 更改为与工作区匹配的 ID 即可。当然,您需要知道工作区 ID,并且可以通过在您的 apex 环境上执行此选择来找到这些 ID

select workspace, workspace_display_name, workspace_id from apex_workspaces
Run Code Online (Sandbox Code Playgroud)

一些好的建议:
如果您仍处于 apex 安装的启动阶段,您可能需要确保您的工作区 ID 相同。例如,测试和生产环境具有相同的工作空间和应用程序 ID 是非常有趣的。您有 2 个实例(2 个不同服务器上的 2 个数据库安装),但希望 ID 相同。
为了确保这一点,您可以从一个环境导出工作区,然后将其导入到另一个环境中。您可以通过 apex 中的实例管理(即内部工作区)来执行此操作。