Oracle APEX 18.1 (aka 5.2) The Golden Nuggets - doag.org · About Dietmar. 2 • Dipl.-Inform....
Transcript of Oracle APEX 18.1 (aka 5.2) The Golden Nuggets - doag.org · About Dietmar. 2 • Dipl.-Inform....
1
Oracle APEX 18.1 (aka 5.2) 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
Pre18.1
9 Sample application / slides available for download
http://dietmaraust.com/blog
10
Architecture
11 Additional x11-x20 … Parameters in AJAX calls
The big archtitecture change was in APEX 5.1 => JSON processing Small change in 18.1: Additional Parameters for AJAX calls x11-x20 Javascript on client PL/SQL on server side
12
Application Builder
13
Application Builder
Spotlight Search
14 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)
15 Spotlight Search
16 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
17
Application Builder
Compatibility Mode
18 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 18.1
19
Application Builder
Default Schema
20 Default Schema
Set default schema for user in workspace Pre18.1
21 Default Schema
Default schema is used: – SQLWorkshop– Installationofpackagedapplications
Pre18.1
22
Application Builder
UT User Interface Attributes
23 User Interface Attributes > Collapsed by Default
Universal Theme starts with left navigation side collapsed
24 User Interface Attributes > "Built with APEX" Footer
Universal Theme has a new footer Can be turned off in User Interface Attributes
25
Application Building
26
Application Building
Social Sign-In
27 New Authentication Scheme
New Authentication Scheme – SocialSign-In
Authentication Provider
28 New Authentication Scheme
About OAuth2 and its flow https://developers.google.com /identity/protocols/OAuth2
29 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
30 New Authentication Scheme
1. Register client with Google Register client: https://console.developers.google.com/
31 New Authentication Scheme
32 New Authentication Scheme
2. Create web credentials in APEX
33 New Authentication Scheme
3. Create authentication scheme and use credentials
34 New Authentication Scheme
Scopes https://developers.google.com/identity/protocols/googlescopes#google_sign-in
35 Social Sign In – Requirements for https callouts
Requirements • Google redirects back to official DNS domain • Needs ACLs to call webservice (see APEX Install) • Needs wallet for certificates
– https://blogs.oracle.com/apex/apex-https-certificates-and-the-oracle-wallet
– https://apex.oracle.com/pls/apex/germancommunities/apexcommunity/tipp/6121/index-en.html
• Register wallet in APEX Instance – ManageInstance>InstanceSettings>Wallet
36 Social Sign In – Requirements for https callouts
Different ways make https callouts from the database 1. Create Wallet with orapki
– https://oracle-base.com/articles/misc/utl_http-and-ssl#test-unsecured-connection
– https://blogs.oracle.com/apex/apex-https-certificates-and-the-oracle-wallet
2. Create Wallet using openssl – https://blog.hazrulnizam.com/openssl-workaround-oracle-xe-wallet/
3. Use reverse proxy: – https://fuzziebrain.com/content/id/1711/
37
Application Building
Switching Auth Schemes
38 Switching Authentication Schemes at Runtime
Why use multiple authentication schemes at runtime?
39 Switching Authentication Schemes at Runtime
Step 1 – make apex login current scheme Step 2 - Enable switch in session for the Google scheme
40 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
41 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);
42 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;
43 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);
44
Application Building
Access Control
45 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
46 Application Access Control
47 Application Access Control
48 Application Access Control
Security Setting to define the meaning of “ROLE”
49 Application Access Control
This makes a difference when using Authorization Schemes
50 Application Access Control
Summary • Roles are exported with the application • User / Role Mappings are NOT
– TargetconfigurationNOToverwritten• API provided: APEX_ACL• Data dictionary views for viewing and modifying the
data (INSERT,UPDATE,DELETE on APEX_APPL_ACL_USERS)
51
Application Building
Application Settings
52 Application Settings
Maintain application specific configuration settings, e.g. Environment, Email servers, ... Why? • Application and Source Code should be identical
between environments, specifics go into config table • => similar to configuration files in other applications
53 Application Settings
On Upgrade Keep Values => respect the value upon upgrade
54
Application Building
Email Templates
55 Email Templates
Manage Email Templates as part of the application
56 Email Templates
57 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;
58 Email Templates
59 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;
60 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
61
Items and Regions
62
Items and Regions
Text with Autocomplete
63 '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
64 'Text with Autocomplete' item type using Oracle JET
Advantages: • Improved accessibility • Lazy loading with cache • Minimum search characters
65
Items and Regions
Responsive Rich Text
66 Responsive Rich Text
Responsive Rich Text editor - automatically adjusts to the region width.
67 Responsive Rich Text
Feature can be turned off in Shared Components > Component Settings Initially turned off for imported / upgraded applications
68
RESTful Services (providing)
69 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
70 RESTful Services (providing)
“Old” RESTful services still available – READ ONLY
71 RESTful Services (providing)
“Old” RESTful services still available – READ ONLY
72 RESTful Services (providing)
New RESTful Services use API for ORDS_METADATA
73 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 • ...
74 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/
75 RESTful Services (providing)
APEX Instance Administration
76 RESTful Services (providing)
77
SQL Workshop
78
SQL Workshop
Quick SQL
79 SQL Workshop > QuickSQL
QuickSQL is now integrated, used to be a packaged app
80 SQL Workshop > QuickSQL
81
SQL Workshop
Sample Datasets
82 SQL Workshop > Sample Datasets
Sample Datasets
83 SQL Workshop > Sample Datasets
Sample Datasets – very good to help with training and troubleshooting
84
Packaged Applications
85 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;
Pre18.1
86 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
87 Install Packaged Applications
Allow „Modify Other Applications“ in security settings
88
PL/SQL APIs
89 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
90 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
91 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)
92 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
93 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
94 PL/SQL APIs
--initializesessionapex_util.set_security_group_id(apex_util.find_security_group_id('TRAINING'));apex_session.create_session(p_app_id=>1386,p_page_id=>4,p_username=>'DIETMAR.AUST');--getvaluesfromsessionstateselectv('APP_ID')asapp_id,v('APP_SESSION')asapp_session,v('APP_USER')asapp_user,apex_app_setting.get_value(p_name=>'INSTANCE_TYPE')instance_typefromdual;--removesessionapex_session.delete_session(p_session_id=>nv('APP_SESSION'));
95 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)
96
Data Dictionary
97 APEX_WORKSPACE_GROUPS
New columns application_idand application_name, „true“ workspace groups now: whereapplication_idisnull
98 APEX_WEBSERVICE_LOG
https://jastraub.blogspot.de/2018/03/apex-181-new-feature-logging-web.html
99 Universal Theme light / dark navigation
100 Create Feature Page
Create Application Wizard supports Features (Blueprint)
101 Create Feature Page
Add „Blueprint“ features to your app AFTER creation
102 Questions?
Opal Consulting Zum Tilmeshof 11 50859 Köln Germany
Email / Website [email protected] www.opal-consulting.de
103
Backup
104 Resource Links
New Resource Links on APEX Workspace Homepage • Shortcuts on Community Site • Twitter, Youtube, LinkedIn, Facebook Great idea … but everybody has different needs
105 Custom Resource Links
Customizing the Workspace or Instance Announcement (HTML is only allowed here, not in the news items)
106 Custom Resource Links
Customizing the Workspace Announcement
107 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.