If you haven’t heard: APEX 5.0 is out !
And I finally got some time on my hands to do my usual “diff” between the new and previous version to point out all API and View changes.
To me this is a very valuable exercise to absorb all new information and to get to know all new Features of a version. Because everything I find in View and API changes, must also be reflected in the APEX UI (Builder, Settings, …), right?
Well, lets say this is right most of the time. Sometimes I also stumble across hidden gems, which makes this even more valuable to me.
For previous posts please see:
- Differences between Oracle APEX 4.1.1 and 4.2
- Differences between Oracle APEX 4.2 and 4.2.1
- Changes in Oracle APEX 4.1.1
Carsten Czarski also published an interesting approach to find out what’s new in a version: https://twitter.com/cczarski/status/595855489197600769
General
- This was the longest development cycle ever in the history of APEX, upcoming versions will be delivered sooner again
- There is a wealth of new stuff in this release, the two biggest changes are the Page Designer and the Universal Theme, which aren’t reflected in View and API changes
- Processes have been converted to use the Plugin Interface
- New Region Display Point “Page Template Body”
Changed API’s
This section lists public API’s and changes that are of interest for everyone. I have omitted some changes which are meant to be internal, even though they are part of public packages.
APEX_APPLICATION
- new function apps_only_workspace – returns true/false if the current workspace is used for Packaged Applications only
- stores all page-meta-data now in component-specific arrays: e.g. g_items, g_buttons, …
APEX_APPLICATION_INSTALL
- new option and corresponding functions to get/set a flag to automatically install supporting objects with the application
APEX_AUTHORIZATION
- now supports dynamic groups which do not need to exist in the APEX repository
APEX_AUTHENTICATION
- p_password in post_login is now defaulted to NULL and should be omitted anyways
APEX_COLLECTION
- now uses algorithm defined in CHECKSUM_HASH_FUNCTION for creating “MD5” checksums
APEX_ERROR
- type t_error now also show the statement where the error occured (in case of parsing error) and the original_message/info
APEX_ESCAPE
- removed some constants (e.g. SPACE#, HASH#) but included those values in c_html_whitelist_tags
- new functions to escape json, regular expressions and css selectors
APEX_INSTANCE_ADMIN
- new functions to blacklist schemas using restrict_/unrestrict_schema, so that they cannot be assigned to a workspace
- using create_schema_exception a restricted schema can be assigned to a workspace
- add_workspace supports now the new workspace types through parameter p_workspace_type
APEX_IR
- change_subscription_email allows to change the email address of a subscribed interactive report
new: APEX_JSON
- create JSON from PL/SQL
APEX_LDAP
- added support to search the LDAP repository
APEX_PAGE
- get_page_mode returns NORMAL/MODAL/NON_MODAL
- the new function get_url constructs an APEX url out of single parameters (p_application, p_page, p_session, …). It is a nice alternative to apex_util.prepare_url
APEX_PLUGIN
- has now support for region columns (ie report columns)
- Render-Region function now can return a navigable_dom_id
- extended some record types
APEX_PLUGIN_UTIL
- added p_escape_display_extra to all get_display_data functions
- new helper functions get_html_attr, get_link, get_data2, get_attribute_as_number
APEX_REGION
- purge_cache – new parameter p_current_session_only
removed: APEX_SITE_ADMIN_PRIVS
- functionality moved to APEX_INSTANCE_ADMIN
new: APEX_SPATIAL
- technically it was added with 4.2.5
APEX_UTIL
- function feedback_enabled returns true/falls whether feedback is enabled
- new function reset_password can be used to implement a custom change-password page in an application.
- helper function get_hash can be used to compute a hash over an array of values
- uncompress_int was now introduced as counterpart to the already existing compress_int
- new function set_group_group_grants and set_group_user_grants
- prepare_url – new parameters p_triggering_element and p_dialog – also checks if mentioned page-items exist and raise exception otherwise
APEX_WEBSERVICE
- make_request and make_rest_request – new parameter p_scheme can be Basic or AWS
- there is now make_rest_request_b returning a BLOB instead of a CLOB
new: APEX_ZIP
- zip/unzip BLOBs within PL/SQL
WWV_FLOW_API
- has been extended to reflect the meta-data changes in APEX 5.0
- standing out there is function varchar2_to_blob which converts a varchar2 array to a BLOB
WWV_FLOW_UTILITIES (maybe not 100% public…)
- several new help functions to deal with large strings in CLOB’s: push, split, append, join, wrap
- is_email checks if a string looks like an email address
- other new functions could indicate friendly APEX URLs in a future version: get_friendly_app_url, get_friendly_workspace_url
- export_application_to_clob – new params export_pkg_app_mapping, with_original_ids, exclude_subscriptions
Deprecated/Deleted Functions
- APEX_CSS.new_css_repository_record – use wwv_flow_api.create_app_static_file and create_workspace_static_file instead
- APEX_CSS.remove_css
- APEX_PAGE.is_jqm_tablet_ui
- APEX_UTIL.get_language_selector_list
- APEX_UTIL.get_language_selector_ul
- APEX_UTIL.get_language_selector_ul2
- APEX_UTIL.reset_authorizations – use apex_authorization.reset_cache instead
- APEX_UTIL.public_check_authorization – use apex_authorization.is_authorized instead
- APEX_UTIL.export_application
- APEX_UTIL.export_application_page
- APEX_UTIL.export_application_component
- APEX_UTIL.get_application_id_status
- APEX_UTIL.get_application_name
- WWV_FLOW_API.create_or_remove_file – use wwv_flow_api.create_app_static_file, create_workspace_static_file instead
Changed Views
APEX_APPLICATIONS
- FILE_PREFIX
- FILE_VERSION
- RUNTIME_API_USAGE
- REJOIN_EXISTING_SESSIONS
- HTTP_RESPONSE_HEADERS
- BOOKMARK_CHECKSUM_FUNCTION
- Obsolete:
- CONTENT_DELIVERY_NETWORK
- JAVASCRIPT_FILE_URLS
- INCLUDE_LEGACY_JAVASCRIPT
- those columns now show NULL if more than one USER_INTERFACE is defined
APEX_APPLICATION_AUTH
- RAS_MODE
- RAS_DYNAMIC_ROLES
- RAS_NAMESPACES
APEX_APPLICATION_PAGES
- new columns for PAGE_MODE (NORMAL/MODAL/NON_MODAL) and some DIALOG settings (title, height, width, …)
- also new settings to store navigation-list information
- PAGE_CSS_CLASSES
- PAGE_TEMPLATE_OPTIONS
- CACHE_MODE
- REJOIN_EXISTING_SESSIONS
APEX_APPLICATION_PAGE_DA
- WHEN_SELECTION_TYPE_CODE
APEX_APPLICATION_PAGE_DA_ACTS
- AFFECTED_ELEMENTS_TYPE_CODE
APEX_APPLICATION_PAGE_BUTTONS
- BUTTON_TEMPLATE_OPTIONS
- GRID_COLUMN_CSS_CLASSES
- GRID_COLUMN_ATTRIBUTES
- ICON_CSS_CLASSES
- PRE_ELEMENT_TEXT — Region and Page Item Buttons are now the same and stored in the same table !
- POST_ELEMENT_TEXT
- REQUEST_SOURCE_TYPE
APEX_APPLICATION_PAGE_FLASH5
- EXTRA_Y_AXIS_MIN
- EXTRA_Y_AXIS_MAX
APEX_APPLICATION_PAGE_IR
- SHOW_PIVOT
- FIXED_HEADER
- FIXED_HEADER_MAX_HEIGHT
APEX_APPLICATION_PAGE_IR_COL
- REGION_NAME
- ALLOW_PIVOT
- STATIC_ID
- CSS_CLASSES
APEX_APPLICATION_PAGE_IR_GRPBY
- FUNCTION*07* and FUNCTION*08*
- SORT*05* and SORT*06*
APEX_APPLICATION_PAGE_IR_RPT
- REGION_ID
APEX_APPLICATION_PAGE_ITEMS
- ITEM_CSS_CLASSES
- ITEM_TEMPLATE_OPTIONS
- GRID_LABEL_COLUMN_SPAN
- GRID_COLUMN_CSS_CLASSES
- GRID_COLUMN_ATTRIBUTES
APEX_APPLICATION_PAGE_PROC
- PROCESS_TYPE_PLUGIN_NAME
APEX_APPLICATION_PAGE_REGIONS
- GRID_COLUMN_CSS_CLASSES
- GRID_COLUMN_ATTRIBUTES
- ICON_CSS_CLASSES
- REGION_SUB_CSS_CLASSES
- REGION_TEMPLATE_OPTIONS
- COMPONENT_TEMPLATE_OPTIONS
- SOURCE_TYPE_PLUGIN_NAME
- FIXED_HEADER
- FIXED_HEADER_MAX_HEIGHT
- CACHE_DEPENDS_ON_ITEMS
- LIST_ID
- BREADCRUMB_ID
APEX_APPLICATION_PROCESSES
- PROCESS_TYPE_PLUGIN_NAME
APEX_APPLICATION_TEMP_BC
- DEFAULT_TEMPLATE_OPTIONS
- PRESET_TEMPLATE_OPTIONS
APEX_APPLICATION_TEMP_BUTTON
- DEFAULT_TEMPLATE_OPTIONS
- PRESET_TEMPLATE_OPTIONS
APEX_APPLICATION_TEMP_LABEL
- DEFAULT_TEMPLATE_OPTIONS
- PRESET_TEMPLATE_OPTIONS
- BEFORE_ELEMENT
- AFTER_ELEMENT
- HELP_LINK
- ERROR_TEMPLATE
APEX_APPLICATION_TEMP_LIST
- JAVASCRIPT_FILE_URLS
- JAVASCRIPT_CODE_ONLOAD
- CSS_FILE_URLS
- INLINE_CSS
- DEFAULT_TEMPLATE_OPTIONS
- PRESET_TEMPLATE_OPTIONS
- A01_LABEL … A20_LABEL
APEX_APPLICATION_TEMP_PAGE
- DIALOG_JS_INIT_CODE
- DIALOG_JS_CLOSE_CODE
- DIALOG_JS_CANCEL_CODE
- GRID_ALWAYS_EMIT
- GRID_DEFAULT_LABEL_COL_SPAN
- DIALOG_HEIGHT
- DIALOG_WIDTH
- DIALOG_MAX_WIDTH
- DIALOG_CSS_CLASSES
- DIALOG_BROWSER_FRAME
- DEFAULT_TEMPALTE_OPTIONS
- PRESET_TEMPLATE_OPTIONS
- PAGE_TEMPLATE_ID
APEX_APPLICATION_TEMP_REGION
- DEFAULT_TEMPLATE_OPTIONS
- PRESET_TEMPLATE_OPTIONS
APEX_APPLICATION_TEMP_REPORT
- DEFAULT_TEMPLATE_OPTIONS
- PRESET_TEMPLATE_OPTIONS
APEX_APPLICATION_THEMES
- Navgiation List/Bar changes
- new DEFAULT*TEMPLATE columns
- several columns for Icons and Icon-Library
- JAVASCRIPT_FILE_URLS
- CSS_FILE_URLS
- FILE_PREFIX
- FILES_VERSION
APEX_APPLICATION_THEME_STYLES
- THEME_ROLLER_INPUT_FILE_URLS
- THEME_ROLLER_CONFIG
- THEME_ROLLER_OUTPUT_FILE_URL
- THEME_ROLLER_READ_ONLY
APEX_APPLICATION_TRANSLATIONS
- IS_JS_MESSAGE
APEX_APPL_LOAD_TABLES
- SKIP_VALIDATION
APEX_APPL_PLUGINS
- JAVASCRIPT_FILE_URLS
- CSS_FILE_URLS
- FILES_VERSION
APEX_APPL_PLUGIN_ATTRIBUTES
- IS_COMMON
- SHOW_IN_WIZARD
- MIN_VALUE
- MAX_VALUE
- UNIT
- SUPPORTED_UI_TYPES
- DEPENDING_ON_COMP_PROP_ID
- REFERENCE_SCOPE
- EXAMPLES
APEX_APPL_PLUGIN_ATTR_VALUES
- IS_QUICK_PICK
- HELP_TEXT
APEX_APPL_TEMP_PAGE_DP
- GLV_NEW_ROW
APEX_APPL_TEMP_REGION_DP
- GLV_NEW_ROW
APEX_APPL_USER_INTERFACES
- Navigation List/Bar settings
- CONTENT_DELIVERY_NETWORK
- JAVASCRIPT_FILE_URLS
- CSS_FILE_URLS
- INCLUDE_LEGACY_JAVASCRIPT
- INCLUDE_JQUERY_MIGRATE
APEX_WORKSPACES
- ALLOW_PACKAGED_APP_INS_YN
- ALLOW_TEAM_DEV_FILES_YN
- FILE_STORAGE_MAX
- FILES_VERSION
- EMAIL_MAXIMUM
- TEAM_DEV_FS_LIMIT
- MAXIMUM_SESSION_LIFE_SECONDS
- MAXIMUM_SESSION_IDLE_SECONDS
- MAX_WORKSPACE_REQUESTS
- MAX_SESSION_REQUESTS
- MAX_SESSION_KILL_TIMEOUT
APEX_WORKSPACE_ACTIVITY_LOG
- PAGE_VIEW_TYPE
- REQUEST_VALUE
- DEBUG_PAGE_VIEW_ID
APEX_WORKSPACE_APEX_USERS + APEX_WORKSPACE_DEVELOPERS
- PASSWORD_VERSION
APEX_WORKSPACE_FILES
- TEMP_FILE_SESSION_ID
APEX_WORKSPACE_SESSIONS
- REMOTE_ADDR
- SESSION_IDLE_TIMEOUT_ON
- SESSION_LIFE_TIMEOUT_ON
- SESSION_MAX_IDLE_SEC
APEX_WS_DATA_GRID_COL
- ALLOW_PIVOT
New Views
- APEX_APPLICATION_LOCKED_PAGES
- APEX_APPLICATION_PAGE_IR_PIVOT
- APEX_APPLICATION_PAGE_IR_PVAGG
- APEX_APPLICATION_PAGE_IR_PVSRT
- APEX_APPLICATION_PAGE_REG_COLS
- APEX_APPLICATION_STATIC_FILES
- APEX_APPLICATION_THEME_FILES
- APEX_APPL_CONCATENATED_FILES
- APEX_APPL_DEVELOPER_COMMENTS
- APEX_APPL_PAGE_CALENDARS
- APEX_APPL_TEMPLATE_OPTIONS
- APEX_APPL_TEMPLATE_OPT_GROUPS
- APEX_WORKSPACE_GROUP_GROUPS
- APEX_WORKSPACE_SESSION_GROUPS
- APEX_WORKSPACE_STATIC_FILES
- WWV_FLOW_TEMP_FILES
Deleted Views
- APEX_APPLICATION_PAGE_FLASH_CH
- APEX_APPLICATION_PAGE_FLASH_S
Deleted Settings / View Columns
APEX_APPLICATION_PAGE_IR
- SORT_ASC_IMAGE*
- SORT_DESC_IMAGE*
- BUTTON_TEMPLATE returns NULL
- ACTIONS_MENU_ICON returns NULL
- FINDER_ICON returns NULL