请帮助我如何将页面从 Apex 的现有应用程序复制到 Apex 应用程序的另一个工作空间。
3 回答
你不能开箱即用。
除了工作区 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;
/
这是导出的页面文件中的第一段代码之一。如您所见,工作区 ID 是在此处设置的。如果尝试将其导入应用程序(即使应用程序 ID 与您尝试导入的应用程序 ID 匹配),您也会收到错误消息。但是,将 ID 更改为与工作区匹配的 ID,它将起作用。当然,您需要知道工作区 ID,您可以通过在您的 apex 环境中执行此选择来找到这些 ID?
select workspace, workspace_display_name, workspace_id from apex_workspaces
一些好的建议:
如果您仍处于 apex 安装的启动阶段,您可能需要确保您的工作区 ID 相同。例如,具有相同工作区和应用程序 ID 的测试和生产环境非常有趣。您将有 2 个实例(在 2 个不同的服务器上安装 2 个数据库),但希望 ID 相同。
为了确保这一点,您可以从一个环境中导出工作区,然后将其导入到另一个环境中。您可以从 apex 中的实例管理(即内部工作区)中执行此操作。
现在,APEX 版本 4.2 支持此功能 - 根据 Oracle 文档...
7.3.4 复制数据库应用程序页面
您可以从当前应用程序或其他应用程序复制页面。在复制过程中,您还可以复制共享组件或更改目标应用程序中共享组件的映射。
要复制页面:
导航到要复制到的应用程序:
导航到工作区主页。
单击应用程序生成器图标。
选择一个应用程序。
选择一个页面。
出现页面定义。
在树视图中:
在页面渲染下,选择页面名称。
右键单击并选择复制。
在组件视图中:
在页面下,单击复制图标。
对于复印页面选项,选择以下选项之一:
此应用程序中的页面
另一个应用程序中的页面
按照屏幕上的说明进行操作。
在 APEX 4.0 中从任何应用程序复制页面:
- 编辑应用程序中的任何页面
- 打Create▼</kbd> button
- 选择新页面作为副本