Oracle APEX应用程序导入混乱页面插件显示点

时间:2017-10-09 10:34:54

标签: oracle-apex

使用Oracle Application Express 4.2.5.00.08,我们遇到以下重复出现的问题:

  1. 我们在开发DB上开发。
  2. 我们将整个应用程序从开发DB导出到SQL * Plus脚本文件。
  3. 我们将整个脚本文件导入(通过SQL * Plus或APEX管理前端,无关紧要)到另一个(测试/产品)数据库。
  4. 所有页面插件中的五个(每次相同)都会在导入的应用程序中弄乱它们的显示点。
  5. export-from-DEV页面插件创建代码段如下所示:

    declare
      s varchar2(32767) := null;
      l_clob clob;
      l_length number := 1;
    begin
    s:=s||'Revision Comments';
    
    wwv_flow_api.create_page_plug (
      p_id=> 36035377787100554 + wwv_flow_api.g_id_offset,
      p_flow_id=> wwv_flow.g_flow_id,
      p_page_id=> 68,
      p_plug_name=> 'Toolbar3',
      p_region_name=>'',
      p_parent_plug_id=>36001157224505179 + wwv_flow_api.g_id_offset,
      p_escape_on_http_output=>'Y',
      p_plug_template=> 35698556626931435+ wwv_flow_api.g_id_offset,
      p_plug_display_sequence=> 105,
      p_plug_new_grid         => false,
      p_plug_new_grid_row     => true,
      p_plug_new_grid_column  => true,
      p_plug_display_column=> null,
      p_plug_display_point=> 'REGION_POSITION_02',
      p_plug_item_display_point=> 'ABOVE',
      p_plug_source=> s,
      p_plug_source_type=> 'STATIC_TEXT',
      p_translate_title=> 'Y',
      p_plug_query_row_template=> 39496105155901584+ wwv_flow_api.g_id_offset,
      p_plug_query_headings_type=> 'QUERY_COLUMNS',
      p_plug_query_num_rows => 15,
      p_plug_query_num_rows_type => 'NEXT_PREVIOUS_LINKS',
      p_plug_query_row_count_max => 500,
      p_plug_query_show_nulls_as => ' - ',
      p_plug_display_condition_type => 'SQL_EXPRESSION',
      p_plug_display_when_condition => ':P68_ID_BUS_DQI_DATA IS NOT NULL',
      p_pagination_display_position=>'BOTTOM_RIGHT',
      p_plug_customized=>'0',
      p_plug_caching=> 'NOT_CACHED',
      p_plug_comment=> '');
    end;
    /
    

    当我们从测试/制作中再次导出整个应用程序(从脚本文件导入后)并进行逐行比较时,页面插件的创建代码段看起来像......

    declare
      s varchar2(32767) := null;
      l_clob clob;
      l_length number := 1;
    begin
    s:=s||'Revision Comments';
    
    wwv_flow_api.create_page_plug (
      p_id=> 36035377787100554 + wwv_flow_api.g_id_offset,
      p_flow_id=> wwv_flow.g_flow_id,
      p_page_id=> 68,
      p_plug_name=> 'Toolbar3',
      p_region_name=>'',
      p_parent_plug_id=>36001157224505179 + wwv_flow_api.g_id_offset,
      p_escape_on_http_output=>'Y',
      p_plug_template=> 35698556626931435+ wwv_flow_api.g_id_offset,
      p_plug_display_sequence=> 105,
      p_plug_new_grid         => false,
      p_plug_new_grid_row     => true,
      p_plug_new_grid_column  => true,
      p_plug_display_column=> null,
      p_plug_display_point=> 'BODY_3',
      p_plug_item_display_point=> 'ABOVE',
      p_plug_source=> s,
      p_plug_source_type=> 'STATIC_TEXT',
      p_translate_title=> 'Y',
      p_plug_query_row_template=> 39496105155901584+ wwv_flow_api.g_id_offset,
      p_plug_query_headings_type=> 'QUERY_COLUMNS',
      p_plug_query_num_rows => 15,
      p_plug_query_num_rows_type => 'NEXT_PREVIOUS_LINKS',
      p_plug_query_row_count_max => 500,
      p_plug_query_show_nulls_as => ' - ',
      p_plug_display_condition_type => 'SQL_EXPRESSION',
      p_plug_display_when_condition => ':P68_ID_BUS_DQI_DATA IS NOT NULL',
      p_pagination_display_position=>'BOTTOM_RIGHT',
      p_plug_customized=>'0',
      p_plug_caching=> 'NOT_CACHED',
      p_plug_comment=> '');
    end;
    /
    

    ......唯一不同的是......

    p_plug_display_point=> 'BODY_3',
    

    ...行。

    当然,这可以通过APEX前端手动修复五个页面插件中的每一个,但是当6个环境到位并且每个应该每月更新几次时,这是不可想象的。所有数据库开发都有自动部署工具,只有这个APEX前端必须手工处理。

    手动,前端驱动修补程序之前与之后apex_040200.wwv_flow_page_plugs数据的比较显示只有apex_040200.wwv_flow_page_plugs.plug_display_point已从'BODY_3'更新回'REGION_POSITION_02'。但我们没有权限直接更新APEX表。

    我尝试搜索某种update_page_plug() API程序,但没有找到任何。

    所以,我对

    感兴趣
    • 直接从APEX API查找update_page_plug()程序,
    • 或直接在应用程序中修复此问题,以便问题不再发生(因为我认为原始应用程序的开发人员做得不对,只是不知道可能是什么)

    那么有什么建议吗?

1 个答案:

答案 0 :(得分:1)

我还没有遇到更新版本的Apex的问题,所以希望您可以将系统升级到Apex 18,而不会遇到很多麻烦。

或者,您可以尝试将原始插件的初始“ p_plug_display_point =>'REGION_POSITION_02'”修改为“ p_plug_display_point =>'BODY_3'“, 在开发环境中,并使用JS来重新定位添加的插件内容,这样,当将应用程序转移到运行时时,您将不会看到问题