Oracle APEX 5.2 / 18.1 - The Golden Nuggets · 1 Oracle APEX 5.2 / 18.1 - The Golden Nuggets...
Transcript of Oracle APEX 5.2 / 18.1 - The Golden Nuggets · 1 Oracle APEX 5.2 / 18.1 - The Golden Nuggets...
1
Oracle APEX 5.2 / 18.1 - The Golden Nuggets
Dietmar Aust Opal-Consulting, Köln
www.opal-consulting.de
2 About Dietmar.
• Dipl.-Inform.DietmarAust,FreelanceConsultant• Master'sDegreeinComputerScience(MSCS)
• BuildingOraclebasedWebApplicationssince1997• Portal,Forms,Reports,OWAToolkit,nowAPEX!
• 1997-2000:ConsultantatOracleGermany
• Since09/2000:FreelanceConsultant,Since2006–APEXonly!
• AuthoroftheJasperReportsIntegrationtoolkit• http://www.opal-consulting.de/tools
• 2015DatabaseDeveloperoftheyearintheORDScategory
3
Feature Analysis
4 How to find the new features?
https://apexea.oracle.com/ Documentation (BETA) https://docs.oracle.com/database/apex-18.1/
Actually compute the delta between different APEX versions: - APEX Dictionary - Packages
5 Wie wurde analysiert?
6 How to find the new features?
In Debug-Mode (logged in as developer) APEX uses the uncompressed Javascript Files (Source Code)
7 How to find the new features?
8 How to find the new features?
Definition in User-Interface > Concatenated Files Sample: Oracle APEX Page Designer, Application 4000, Page 4500
Pre5.2
9 Sample Application will be made available
10
Architecture
11 Additional x11-x20 … Parameters in AJAX calls
The big archtitecture change was in APEX 5.1 => JSON processing Small change in 5.2: Additional Parameters for AJAX calls x11-x20 Javascript on client PL/SQL on server side
12
Application Builder
13 Resource Links
New Resource Links on APEX Workspace Homepage • Shortcuts on Community Site • Twitter, Youtube, LinkedIn, Facebook Great idea … but everybody has different needs
14 Custom Resource Links
Customizing the Workspace or Instance Announcement (HTML is only allowed here, not in the news items)
15 Custom Resource Links
Customizing the Workspace Announcement
16 Spotlight Search
Powerful Search Feature (like on the Mac) to search for • Workspace and application areas and navigates there (Packaged
Apps, SQL Workshop, Shared Components, ...) • Applications • Pages • Application content • within pages, etc.
Context dependent (Workspace, Application, Page Designer)
17 Spotlight Search
18 Spotlight Search
How to figure out the right keyboard shortcut in your language? CTRL-’ on an English layout … what is the representation of ‘ in a different language?
CTRL-ä on a German layout
19 Compatibility Mode
The compatibility mode changes the behaviour of the APEX engine at runtime => balancing new features / security / stricter checks and easy upgrades => No Changes in APEX 5.2
20 Default Schema
Set default schema for user in workspace Pre5.2
21 Default Schema
Default schema is used: – SQLWorkshop– Installationofpackagedapplications
Pre5.2
22 User Interface Attributes > Collapsed by Default
Universal Theme starts with left navigation side collapsed
23 User Interface Attributes > "Built with APEX" Footer
Universal Theme has a new footer Can be turned off in User Interface Attributes
24
Application Building
25 New Authentication Scheme
New Authentication Scheme – SocialSign-In
Authentication Provider
26 New Authentication Scheme
About OAuth2 and its flow https://developers.google.com /identity/protocols/OAuth2
27 New Authentication Scheme
Example: Steps to authenticate with Google 1. Register oauth2 client with Google 2. Create web credentials in APEX 3. Create authentication scheme and use credentials
28 New Authentication Scheme
1. Register client with Google Register client: https://console.developers.google.com/
29 New Authentication Scheme
30 New Authentication Scheme
2. Create web credentials in APEX
31 New Authentication Scheme
3. Create authentication scheme and use credentials
32 New Authentication Scheme
Scopes https://developers.google.com/identity/protocols/googlescopes#google_sign-in
33 Switching Authentication Schemes at Runtime
Why use multiple authentication schemes at runtime?
34 Switching Authentication Schemes at Runtime
Step 1 – make apex login current scheme Step 2 - Enable switch in session for the Google scheme
35 Switching Authentication Schemes at Runtime
Step 3 - Add button to login page and use a URL to switch to the Google scheme Request variable: APEX_AUTHENTICATION=<Scheme Name> f?p=&APP_ID.:1:&APP_SESSION.:APEX_AUTHENTICATION=Google
36 Switching Authentication Schemes at Runtime
Post Authentication Handler – change username --derivenewusernamefrom:APP_USERcase:app_userwhen'[email protected]'thenl_new_app_user:='[email protected]';else--willnotchangel_new_app_user:=l_orig_app_user;endcase;--setuserforthissessionapex_custom_auth.set_user(p_user=>l_new_app_user);
37 Switching Authentication Schemes at Runtime
Post Authentication Handler – get scope attributes --getattributebynameapex_json.get_varchar2(p_path=>'id_token');apex_json.get_varchar2(p_path=>'access_token');--orloopoverallattributesl_idx:=apex_json.g_values.first;while(l_idxisnotnull)loopl_value:=apex_json.g_values(l_idx);:p2_user_info:=:p2_user_info||get_output_str(p_idx=>l_idx,p_value=>l_value);l_idx:=apex_json.g_values.next(l_idx);endloop;
38 Switching Authentication Schemes at Runtime
Post Authentication Handler – make additional request --secondrequest,toretrieveadditionaluserinformationc:=apex_web_service.make_rest_request(p_url=>'https://www.googleapis.com/oauth2/v3/userinfo',p_http_method=>'GET',p_credential_static_id=>'GOOGLE');apex_json.parse(c);
39 Application Access Control
Management of Roles and User / Role Mappings as part of the application Why? • Convenience, almost every application
needs it • Used for blueprint applications
40 Application Access Control
41 Application Access Control
42 Application Access Control
Security Setting to define the meaning of “ROLE”
43 Application Access Control
This makes a difference when using Authorization Schemes
44 Application Access Control
Summary • Roles are exported with the application • User / Role Mappings are NOT • Typically use local user table for
additional details (email, first name, …) • API provided: APEX_ACL• Data dictionary views for viewing and modifying the
data (INSERT,UPDATE,DELETE on APEX_APPL_ACL_USERS)
45 Application Settings
Maintain application specific configuration settings, e.g. Environment, Email servers, ... Why? • Application and Source Code should be identical
between environments, specific go into config table
46 Application Settings
On Upgrade Keep Values => respect the value upon upgrade
47 Email Templates
Manage Email Templates as part of the application
48 Email Templates
49 Email Templates
Send email via API beginapex_mail.send(p_to=>'[email protected]',p_template_static_id=>'TEST1',p_placeholders=>'{'||'"CUSTOMER_NAME":'||apex_json.stringify('Dietmar')||',"ITEMS_ORDERED":'||apex_json.stringify(6)||',"MY_APPLICATION_LINK":'||apex_json.stringify('')||',"ORDER_DATE":'||apex_json.stringify('')||',"SHIPPING_ADDRESS_LINE_1":'||apex_json.stringify('')||',"SHIPPING_ADDRESS_LINE_2":'||apex_json.stringify('')||',"SHIP_TO":'||apex_json.stringify('')||'}');end;
50 Email Templates
51 Email Templates
Just generate the HTML via the API declarel_subjectvarchar2(4000);l_htmlclob;l_textclob;beginapex_mail.prepare_template(p_static_id=>'ORDER',p_placeholders=>'{"ORDER_NUMBER":5321,"ORDER_DATE":"01-Feb-2018","ORDER_TOTAL":"$12,000"}',p_subject=>l_subject,p_html=>l_html,p_text=>l_text);end;
52 Email Templates
Manage Email Templates as part of the application Good separation of Templates and data in placeholders Easy to use No complex logic supported
53
Items and Regions
54 Tree Region - Enhancements
• The Advanced: JavaScript Initialization Code attribute is supported.
• JSDoc for Tree Region, easier to customize the tree • Support Dynamic Action Event: Selection Change [Tree]. • Advanced Config option (nodeSelector) to support checkbox
selection. • Tree region now supports the apex.region API => but AJAX
REFRESH is still not possible! • Copy selection to clipboard.
55 'Text with Autocomplete' item type using Oracle JET
Re-Implementation of the item type „Text with Autocomplete“ based on Oracle JET APEX 5.1 APEX 18.1
56 'Text with Autocomplete' item type using Oracle JET
Advantages: • Improved accessibility • Lazy loading with cache • Minimum search characters
57 Responsive Rich Text
Responsive Rich Text editor - automatically adjusts to the region width.
58 Responsive Rich Text
Feature can be turned off in Shared Components > Component Settings Initially turned off for imported / upgraded applications
59
RESTful Services (providing)
60 RESTful Services (providing)
SQL Workshop Integration upgraded to use ORDS APIs
Schemas § APEX_180100 § APEX_LISTENER § APEX_REST_PUBLIC_USER
Schemas § ORDS_METADATA § ORDS_PUBLIC_USER
NewFeaturesonlyhere
61 RESTful Services (providing)
“Old” RESTful services still available – READ ONLY
62 RESTful Services (providing)
“Old” RESTful services still available – READ ONLY
63 RESTful Services (providing)
New RESTful Services use API for ORDS_METADATA
64 RESTful Services (providing)
New RESTful Services use API for ORDS_METDATA Features: • More capable template handlers • Autorest enablement for tables,
views and procedures • OAUTH2 support • Open API 2.0 (Swagger) Support • ...
65 RESTful Services (providing)
Integration with Swagger to generate doc • http://douggault.com/2018/03/19/swagger-doc-from-
apex-ords-restful-workshop • SWAGGER UI 2.0+ Server (based on Node.js) • https://swagger.io/download-swagger-ui/
66 RESTful Services (providing)
APEX Instance Administration
67 RESTful Services (providing)
68
SQL Workshop
69 SQL Workshop > QuickSQL
QuickSQL is now integrated, used to be a packaged app
70 SQL Workshop > QuickSQL
71 SQL Workshop > Sample Datasets
Sample Datasets
72 SQL Workshop > Sample Datasets
Sample Datasets – very good to help with training and troubleshooting
73
Packaged Applications
74 APEX_PKG_APP_INSTALL
Install, upgrade and delete packaged applications on the command line:
declarel_app_idnumber;begin--Installl_app_id:=APEX_PKG_APP_INSTALL.install(p_app_name=>'SampleTrees',p_authentication_type=>'NATIVE_APEX_ACCOUNTS',p_schema=>'DAUST_DE');end;
Pre5.2
75 APEX_PKG_APP_INSTALL
Great for automatically installing all packaged applications after a patch to look for gems or upgrade all applications at once. Currently (not yet) officially supported but used by Oracle in the cloud. Data Dictionary View APEX_PKG_APPS
76 Install Packaged Applications
Allow „Modify Other Applications“ in security settings
77
PL/SQL APIs
78 PL/SQL APIs
APEX_ACL Application Access Control
APEX_APP_SETTING
Application settings
add_user_role has_user_any_roles has_user_role remove_all_user_roles remove_user_role replace_user_roles get_value set_value
79 PL/SQL APIs
APEX_APP_BUILDER_API Generate Pages, Reports, etc.
Mainly used in Data Reporter, not (yet) officially supported
delete_page_item delete_region
APEX_APPLICATION_INSTALL Application settings
get_no_proxy_domains get_remote_server_base_url get_remote_server_https_host get_remote_server_ords_tz set_remote_server
80 PL/SQL APIs
APEX_CREDENTIAL Public API for Secure Credentials
(basic auth / oauth2)
clear_tokens set_persistent_credentials set_persistent_token set_session_credentials set_session_token
APEX_JWT Handling von JSON Web Tokens
decode encode validate
APEX_COLLECTION Collection handling
create_collection (Parameter p_truncate_if_exists)
81 PL/SQL APIs
APEX_EXEC SQL Execution (mostly
remote), especially for plugin- developer
add_column add_filter add_order_by add_parameter close execute_plsql execute_remote_plsql execute_web_source get_anydata get_clob get_column …
https://blogs.oracle.com/apex/apex-181-early-adopter-2-rest-services-and-plsql
82 PL/SQL APIs
APEX_EXPORT Replacement for wwv_flow_utilities.
export_application_to_clob
get_application get_workspace_files get_feedback get_workspace
APEX_MAIL Mail handling
prepare_template send_mail (support template)
APEX_SESSION Session utils
testing in sqlplus / sqlcl running apex_exec in sqlplus / sqlcl
attach create_session delete_session detach
5.1.4
83 PL/SQL APIs
APEX_UTIL Utilities
delete_feedback delete_feedback_attachment get_timeframe_lov_data reply_to_feedback set_parsing_schema_for_request
Multitenant applications Switching datasets (different schemas) prepare_url (Parameter p_plain_url)
84
Data Dictionary
85 APEX_WORKSPACE_GROUPS
New columns application_idand application_name, „true“ workspace groups now: whereapplication_idisnull
86 APEX_WEBSERVICE_LOG
https://jastraub.blogspot.de/2018/03/apex-181-new-feature-logging-web.html
87 Questions?
Opal Consulting Zum Tilmeshof 11 50859 Köln Germany
Email / Website [email protected] www.opal-consulting.de
88
Backup
89 Universal Theme light / dark navigation
90 Create Feature Page
Add „Blueprint“ features to your app AFTER creation