53
1 Consuming Web Services In Oracle Application Express (ApEx)

1 Consuming Web Services In Oracle Application Express (ApEx)

Embed Size (px)

Citation preview

Page 1: 1 Consuming Web Services In Oracle Application Express (ApEx)

1

Consuming Web Services

In Oracle Application Express (ApEx)

Page 2: 1 Consuming Web Services In Oracle Application Express (ApEx)

3

Bradley D. Brownhttp://bradleydbrown.blogspot.com

TUSC Founder, Author, Chief Technology Officer

University of Denver Adjunct Professor Graduate Class – New Venture Creation

Clients IntelliReal, OAB, EventConnex, Jepp, Sun, …

Groups YPO, OOW, IOUG, ODTUG, LAOUG, RMOUG, etc. Oracle Fusion Middleware Director/Ace IOUC Fusion Council

Page 3: 1 Consuming Web Services In Oracle Application Express (ApEx)

4

Agenda

Refresher / Introduction N-tier scalable architecture

Creating Your Web Services Manually Using iPerspective

Registering Your Web Services in ApEx Manually Using iPerspective

Consuming Your Web Services in ApEx Form with a Report Standalone Report Standalone Graph 2 Dimensional Array

Other Technologies - AJAX, LOVs, REST/JSON/XML, MTOM

Page 4: 1 Consuming Web Services In Oracle Application Express (ApEx)

5

Refresher - N-tier Architecture

Used this approach and architecture for a customer of ours

Delivered a robust, scalable ApEx environment

30k users in “single tier”

Limitless in this architecture

Page 5: 1 Consuming Web Services In Oracle Application Express (ApEx)

6

The Results - Dashboard Page

Consuming Services Graph Tabular Report Drill into points

Page 6: 1 Consuming Web Services In Oracle Application Express (ApEx)

7

More Services - Top Valued Properties Can change the number

of most expensive properties

Can add a city to look into

Can drill into any property

Page 7: 1 Consuming Web Services In Oracle Application Express (ApEx)

8

Creating Your Web Services

ManuallyUsing iPerspective

NextRegistering and Consuming Web

Services using ApEx

Page 8: 1 Consuming Web Services In Oracle Application Express (ApEx)

9

Manual Web Service Creation

SDO – Service Data Object CRUD for

Tables/Views

Technical Service – Package Limited Functionality Doesn’t work for

Overloaded In-out Inline records

Choose an IDE JDeveloper Eclipse NetBeans Etc.

Write Your Services Wizards By Hand

Good “Step-by-Step” presentation on this topic – entire presentation alone

Page 9: 1 Consuming Web Services In Oracle Application Express (ApEx)

10

iPerspective Web Service Creation SDOs based on Existing Tables and Views Technical Data Services based on Packages SDO Based on a custom SQL Statement Flexible SDO

Dynamic SQL, returning 2 dimensional array

APIs and More…

Page 10: 1 Consuming Web Services In Oracle Application Express (ApEx)

11

SDOs based on Existing Tables and Views Choose the Tables

and/or Views to create SDOs for

Add them to a Release

Deploy the Release You’re done

Page 11: 1 Consuming Web Services In Oracle Application Express (ApEx)

12

Technical Data Services based on Packages Choose the

Packages, Procedures, Functions to include

Add them to your Release

Deploy the Release You’re Done!

Page 12: 1 Consuming Web Services In Oracle Application Express (ApEx)

13

SDO Based on a custom SQL Statement Main Menu Create a Complex

JDBC Monocle Name Your Monocle Type (or paste) Your

SQL Statement Choose the

Release(s) to include the object into

Deploy the Release You’re Done!

Page 13: 1 Consuming Web Services In Oracle Application Express (ApEx)

14

Flexible SDO

Add a New Flexible Monocle Name the Monocle Enter a Comment Decide whether the

object should be tied to a specific Database Gateway or if this should be passed as a parameter

Choose the Release(s) to include it in

You’re Done!

Page 14: 1 Consuming Web Services In Oracle Application Express (ApEx)

15

Other SDO Types

Email Structured Unstructured Dynamic or fixed

Any server Any folder Any user

SDK Write your own code

Custom Developed If there is an API you

want us to integrate, just ask us

Indexes Can index any

column from any remote object

Page 15: 1 Consuming Web Services In Oracle Application Express (ApEx)

16

Registering Your Web Services in ApEx

ManuallyUsing iPerspective

Page 16: 1 Consuming Web Services In Oracle Application Express (ApEx)

17

Manual Web Service Registration At Application Level Go to Shared

Components Under Logic, choose

Web Service References

Create a New Reference

If you use a service registry (UDDI), answer yes, otherwise, no

Page 17: 1 Consuming Web Services In Oracle Application Express (ApEx)

18

Create the Web Service Reference Paste in the location

of your WSDL Confirm the

operations are what you expect

Click on “Create Reference”

Service is Registered in ApEx

Ready to Create a Form or Report on Service

Page 18: 1 Consuming Web Services In Oracle Application Express (ApEx)

19

iPerspective to ApEx Service Registration Automated registry

of a release’s services

Within a release, choose “New Deployment Server”

Add a New ApEx Workspace Application

Enter the Workspace Name and App ID

Page 19: 1 Consuming Web Services In Oracle Application Express (ApEx)

20

Wrap up the Automated Registration Enter a developer

username/password Now when you

deploy to the app server(s), the services will be deployed to ApEx’s Web Service repository also

Page 20: 1 Consuming Web Services In Oracle Application Express (ApEx)

21

Consuming Your Web Services in ApEx

Form with a ReportStandalone Report, Graph2 Dimensional Array

Page 21: 1 Consuming Web Services In Oracle Application Express (ApEx)

22

Form with a Report

Create Form and Report on Web Service (after registering) or…

Create a New Region on a Page

Choose Form Then Choose

Form and Report on a Web Service

Page 22: 1 Consuming Web Services In Oracle Application Express (ApEx)

23

Choose the Service for the Form/Report Choose the

operation to retrieve the data

Defaults are fine, but change the names of the regions, pages, etc.

The Service’s inputs will automatically be placed as input fields on the form. I prefer to leave them for now (change to hidden later)

Page 23: 1 Consuming Web Services In Oracle Application Express (ApEx)

24

Results (from the Web Service)

Can rename the collection if you would like, click the radio button

Choose the fields you want to include in the results that are displayed (in report)

Want tabs? Agree with

Summary? Create Form and

Report

Page 24: 1 Consuming Web Services In Oracle Application Express (ApEx)

25

Run the Page

See the inputs No output yet… Fill in the rows at a

minimum, click submit

See the results in a report below the form

Now you can format the results…, add sorting, etc.

Page 25: 1 Consuming Web Services In Oracle Application Express (ApEx)

26

What Did the Wizard Write?

Inputs are text fields on the page

Results are a report, which is a SQL query

Process executes the Web Service to return the data into a collection

Let’s look at the details…

Page 26: 1 Consuming Web Services In Oracle Application Express (ApEx)

27

Web Service Request

On submit of the page

Need to change process point if you want it to execute before you click on submit

Binds fields on page to the parameters in the service

You can see the service it’s calling (that you selected)

Page 27: 1 Consuming Web Services In Oracle Application Express (ApEx)

28

Creating a Report on a Web Service SQL Query Select statement

using extractValue syntax

Pulls from the collection that the Web service process generates

Copy the SQL if you want to use it in a graph

Page 28: 1 Consuming Web Services In Oracle Application Express (ApEx)

29

Adding a Graph/Chart

Add a new region Choose Chart Chart type

Flash, SVG, HTML

Wizard fills in a lot of blanks for you, you can change the title if you wish

Page 29: 1 Consuming Web Services In Oracle Application Express (ApEx)

30

Design the Look and Feel

Play with the chart type, animation, titles, axes, etc and click on update to get a rough idea of what the graph will look like on the page

Click Next when it’s looking good

You can always change it later

Page 30: 1 Consuming Web Services In Oracle Application Express (ApEx)

31

Bit of “fooler” logic now…

ApEx doesn’t like the actual query syntax, so I always put in Select 1, 2, 3 from

dual

Click on “Create Region”

Then Edit the Region and click on the “Series 1” link

Page 31: 1 Consuming Web Services In Oracle Application Express (ApEx)

32

Now for the Right Statement

Change the Series Name

Syntax of query is Select link, label,

value1, value2 from table…

Note that I checked “Save Query without Validation”

Also make sure you have enough “max rows” for the data you want to display - Apply

Page 32: 1 Consuming Web Services In Oracle Application Express (ApEx)

33

Run the Page – Success!

Hit the Service just once

Returned results into a collection

Displayed in a table Displayed in a graph

How cool is that!

Page 33: 1 Consuming Web Services In Oracle Application Express (ApEx)

34

Standalone Report (or Graph)

Add a new region/page

Report on a Web Service Result (result is the key word)

Page 34: 1 Consuming Web Services In Oracle Application Express (ApEx)

35

Going Through the Motions

Fill in the wizard values for the page and region names

Specify tabs or not… Tell ApEx how to

write the SQL – by hand or from a WSDL

Pick the Service that will be used to retrieve the data (how it writes the SQL)

Page 35: 1 Consuming Web Services In Oracle Application Express (ApEx)

36

OK, am I done?

Fill in the collection Pick a template How many rows to

show at a time? Which fields would

you like to see from the results?

Confirm, Finish and Run the page…

Page 36: 1 Consuming Web Services In Oracle Application Express (ApEx)

37

Surprise…

Where are the results?

There’s no Web Service reference – it doesn’t know where to pull that data set from…

It wrote a nice SQL statement, but the collection isn’t populated…so neither is the report…

Page 37: 1 Consuming Web Services In Oracle Application Express (ApEx)

38

Let’s Get the Data

Add a new page rendering process

We want to pull from a Web Service

Name the service On Load will work –

i.e. before the page is displayed, we should call this service

Page 38: 1 Consuming Web Services In Oracle Application Express (ApEx)

39

This Looks Familiar…

Now you can pick the service and operation that you want to call

I used static values here, but you could pull from items that you’re going to add to the page

Make sure you place it into a collection – it better be the same name

Page 39: 1 Consuming Web Services In Oracle Application Express (ApEx)

40

Try Again…

Create the process, run the page…

Now we have data! MUCH better!

Page 40: 1 Consuming Web Services In Oracle Application Express (ApEx)

41

SQL for 2 Dimensional Array

We have a service that allows you to pass Database connection SQL Statement Number of Rows Include header as

first?

Returns 2 dimensional array with Rows[] which contain columnValues[]

ApEx’s wizard doesn’t know how to handle it

You must edit the SQL it will create and use the position() statement

Going to Create a Form and a Report for this example…

Page 41: 1 Consuming Web Services In Oracle Application Express (ApEx)

42

Build it like any other service…

Pick the Service and the operation

Fill in the wizard values for the form and report

Form includes the input variables for the service operation

Name your collection and select the radio button

Page 42: 1 Consuming Web Services In Oracle Application Express (ApEx)

43

Looking Good, then Not

See the Rows and the columnValues, but doesn’t see it as an array

Go ahead and choose, create the form/report

Run it…at first it looks just like before

Fill in the form, submit

Oh boy, what does that mean?

Page 43: 1 Consuming Web Services In Oracle Application Express (ApEx)

44

Digging in

The SQL statement seems to be OK, but how will it read from the array?

Ah ha…it can’t But, with an array

syntax, it can [position()=1]

Easy enough to change based on how many columns we pull

Page 44: 1 Consuming Web Services In Oracle Application Express (ApEx)

45

Run it Again – and BAM

Wow, a totally dynamic query – how’s that for a flexible Service API!

That’s powerful!

Page 45: 1 Consuming Web Services In Oracle Application Express (ApEx)

46

Next Steps

Behind the scenes I typically build my where clause, etc.

At that point I hide those fields

Page 46: 1 Consuming Web Services In Oracle Application Express (ApEx)

47

Loose Coupling

When you create an application against Web Services, you can port the application to any server

The data comes from the Services, not the database

No export/import required

This makes adding new “App Servers” a breeze!

If fields change, nothing breaks! Added a column, no

problem Removed a column,

no problem, just shows as empty

Page 47: 1 Consuming Web Services In Oracle Application Express (ApEx)

48

N-tier Architecture

Using this architecture you’re creating an n-tier architecture

Scales limitlessly Oracle isn’t

painting pages any more!

Your DBAs will be happy

Can be your services or someone elses!

Page 48: 1 Consuming Web Services In Oracle Application Express (ApEx)

49

AJAX for LOVs

Can incorporate AJAX into your Application

iPerspective creates XML and JSON that can be consumed by AJAX tools Yahoo UI Yahoo Pipes GoogleMashup Google Web Toolkit

MTOM is basically binary XML for Web Services

This is where things will move to

SQL*Net like footprint

See my other papers, presentations on YUI and cool tips with ApEx, Google Maps, etc.

Page 49: 1 Consuming Web Services In Oracle Application Express (ApEx)

50

Summary – Consuming Web Services Creating Your Web Services Registering Your Web Services Consuming Your Web Services in ApEx N-tier Scaling Core vs. Context Other Technology - AJAX, LOVs, REST/JSON/XML,

MTOM

Page 50: 1 Consuming Web Services In Oracle Application Express (ApEx)

51

Questions?

Page 51: 1 Consuming Web Services In Oracle Application Express (ApEx)

52

Brad’s Papers and Presentations Java-based Oracle Web Development Java Server Pages JavaMail Java for the PL/SQL Developer Web Cache – achieving 150 the performance 9iAS Installation, Configuration, and Tuning Wireless

Practical Portal Practices Implementing JSP in Portal UltraSearch Search Engines Utl_smtp and Utl_http iFS JavaScript Top DBA scripts for Web Developers Security

Page 52: 1 Consuming Web Services In Oracle Application Express (ApEx)

53

Other TUSC Presentations and Papers

Tuning Database SQL Applications

Security Migrations Discoverer & BI Built-in Packages

PL/SQL New Features Forms, Reports Designer Team

Management Uncommon

Leaders Workflow DBA topics

Page 53: 1 Consuming Web Services In Oracle Application Express (ApEx)

54

Copyright Information

Neither TUSC nor the author guarantee this document to be error-free. Please provide comments/questions to [email protected].

TUSC © 2008. This document cannot be reproduced without expressed written consent from an officer of TUSC.