Oracle APEX 18.1 (aka 5.2) The Golden Nuggets - doag.org · About Dietmar. 2 • Dipl.-Inform....

Post on 20-Dec-2018

275 views 0 download

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'DIETMAR.AUST@GMAIL.COM'thenl_new_app_user:='DIETMAR.AUST@OPAL-CONSULTING.DE-SWITCHED';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=>'dietmar.aust@opal-consulting.de',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 dietmar.aust@opal-consulting.de 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.