Oracle APEX 4.2 reporting is designed to bring the best of
the reporting world for intermediate –advanced readers. The book is available at http://www.packtpub.com/oracle-apex-4-2-reporting/book. It is designed to
expose APEX developers to other reporting solutions, inform them about the
strengths of each of these and to enable them to use these technologies in
APEX. The book also assists designers who wish to use APEX with their existing
heterogeneous enterprise so that their existing code is reused and effort in
building better business intelligence systems is minimized. The table of contents of the book can be found at http://obiee-oracledb.blogspot.in/2013/07/my-upcoming-book-oracle-apex-42.html. Let me briefly walk
you through the contents of the book.
The objective of the first chapter is to quickly introduce the reader to the technology and then deep dive into understanding the fabric of the
tool. The chapter also helps the reader to set the environment which is used
throughout the book.
The chapter starts with a discussion on the various
features of APEX. This is to give a heads up to the readers about the features
offered by the tool and to inform them about some of the strengths of the tool.
In order to understand the technology better, we discuss the various web server
combinations possible with APEX, namely the Internal mod_plsql configuration,
external mod_plsql configuration and listener configuration. While talking
about the Internal mod_plsql configuration, we see the steps to enable XMLDB
HTTP Server to accept http requests. In Internal mod_plsql configuration,
Oracle uses a DAD defined in EPG to talk to the database. So we try to create a
miniature APEX of our own by creating our DAD and by using it to talk to the
database and also invoke functions that generate HTML which is sent to the web
server. We then move on to learn about External mod_plsql configuration. We
discuss the architecture of External mod_plsql configuration and talk about the
roles of configuration files such as dads.conf and httpd.conf. We also have a
look at a typical dads.conf file and draw correlations between the
configurations in internal and external mod_plsql configuration. We then move
on to discuss about wwv_flow_epg_include_mod_local procedure that can help us
use the DAD of apex to call our own stored PL/SQL procedures. We then have a detail chat about APEX Listener which is a
JEE alternative to mod_plsql and is Oracle’s direction for the future.
Once we are through with understanding the possible
configurations, we see the steps to setup our environment. We use APEX Listener
configuration and see the steps to install APEX engine, create Weblogic domain,
set APEX Listener in the domain and create an APEX workspace.
With our environment in place, we straight away get into
understanding the anatomy of APEX by analyzing various parts of its URL. This
discussion includes a natter on the session management, request handling,
debugging, error handling, the use of tkprof for tracing an APEX page
execution, cache management and navigation and value passing in APEX. We also
try to understand the design behind the zero session id in this section.
Topics discussed till now would have given the reader a brief idea
about the technology so we dig in a little deeper and understand the
mechanism used by APEX to send web requests to its PL/SQL engine in the
database by decoding APEX page submission. We see the use of wwv_flow.accept
procedure and understand its role in page submission. We try to draw an analogy
of an APEX form with a simple HTML to get a thorough understanding about the
concept of HTML forms in and its role in APEX page submissions.
The next logical thing after page submission is to see the
SQL and PL/SQL queries and blocks reaching the database. We turn on the database
auditing and see the OWA web toolkit requests flowing to the database as soon
as we open an APEX page.
We then broaden our vision by quickly knowing about some of
the lesser known alternatives of mod_plsql.
We end the chapter with a note of caution and try to
understand the most valid criticisms of the technology by understanding SQL
Injection and Cross site scripting.
After going through the architecture we straight away spring
in to action and begin the process of learning to build reports in APEX. The
objective of this chapter is to help the reader understand and implement the most
common reporting requirements along with introducing some interesting ways to
frame analytical queries in Oracle. The chapter also hugely focuses on methods
to implement different kinds of formatting in APEX classic reports.
We start the second chapter with creating the objects that will be used throughout the book and installing the reference application that contains the supporting code for the topics discussed in the second chapter.
We then focus on the process of setting up an authentication
mechanism. We discuss External table authentication in this chapter and then
move on to see the mechanism of capturing environment variables in APEX. A screenshot of captured variables is shown below.
These variables can help us set some logic related to a user’s session and environment. The variables also help us capture some properties of the underlying database session of an APEX session. We capture variables using USERENV namespace, DBMS_SESSION package and owa_util package.
These variables can help us set some logic related to a user’s session and environment. The variables also help us capture some properties of the underlying database session of an APEX session. We capture variables using USERENV namespace, DBMS_SESSION package and owa_util package.
After having a good idea of the ways and means to capture
environment variables, we build our understanding of developing the search
functionality in a classic APEX report. This is mostly a talk about APEX
classic report features and we also use this opportunity to see the process to
enable sorting in the report columns and to create a link that helps us
download the report in CSV format.
We then discuss various ways to implement group reports in
APEX. A screenshot of the report showing the groups is shared below.
The discussion on group report shows a way to implement it purely by using APEX’s feature and then talks about getting similar results by using Oracle database feature. We talk about APEX’s internal grouping feature and Oracle grouping sets.
The section also shows the first use of JavaScript to manipulate report output. It also talks about a method to use SQL query to create the necessary HTML which can be used to display a data column in a classic report on the browser. We take the formatting discussion further by looking at a few advanced ways of highlighting report data using APEX’s classic report features and by editing APEX templates.
The discussion on group report shows a way to implement it purely by using APEX’s feature and then talks about getting similar results by using Oracle database feature. We talk about APEX’s internal grouping feature and Oracle grouping sets.
The section also shows the first use of JavaScript to manipulate report output. It also talks about a method to use SQL query to create the necessary HTML which can be used to display a data column in a classic report on the browser. We take the formatting discussion further by looking at a few advanced ways of highlighting report data using APEX’s classic report features and by editing APEX templates.
After trying our hand at formatting, we try to understand
the mechanism to implement Matrix reports in APEX. A screenshot of a bunch of Matrix reports is shared below.
We use matrix reports to understand the use of database features such as the with clause, the pivot operator and a number of string aggregation techniques in Oracle. The discussion on string aggregation techniques includes the talk on listagg function, wm_concat function and the use of hierarchical queries for this purpose. We also see the first use of APEX items as substitution variables in this book. We will see more use of APEX items as substitution variables to solve vexed problems in other parts of the book as well. We do justice with the front end by talking about the use of JQuery, CSS and APEX Dynamic Actions for making important parts of the data stand out. We comprehend the implementation of handlers such as this.affectedElements and the use of JQuery functions such as this.css() in this section. We also see advanced formatting methods using APEX templates. We end this part of the discussion by creating a matrix report using APEX Dynamic Query report region.
We use matrix reports to understand the use of database features such as the with clause, the pivot operator and a number of string aggregation techniques in Oracle. The discussion on string aggregation techniques includes the talk on listagg function, wm_concat function and the use of hierarchical queries for this purpose. We also see the first use of APEX items as substitution variables in this book. We will see more use of APEX items as substitution variables to solve vexed problems in other parts of the book as well. We do justice with the front end by talking about the use of JQuery, CSS and APEX Dynamic Actions for making important parts of the data stand out. We comprehend the implementation of handlers such as this.affectedElements and the use of JQuery functions such as this.css() in this section. We also see advanced formatting methods using APEX templates. We end this part of the discussion by creating a matrix report using APEX Dynamic Query report region.
Hierarchical reports are always intriguing because of the
enormous ability to present the relations among different rows of data and
because of the use of hierarchical queries in a number of unrelated places to
answer business queries.
We reserve a discussion on Oracle’s hierarchical queries for a later part of the section and start it by understanding the implementation of hierarchical reports by linking values in APEX using drilldowns. We see the use of APEX items as substitution variable to create dynamic messages. Since we have devised a mechanism to drill down, we should also build a ladder for the user to climb up the hierarchical chain. Now the hierarchical chain for every person will be different depending on his position in the organization, so we build a mechanism to build dynamic bread crumbs using PL/SQL region in APEX. We then talk about two different methods of implementing hierarchical queries in APEX. We talk about the connect by clause first and then continue our discussion be learning the use of recursive with clause for hierarchical reporting. We end our discussion on hierarchical reporting by creating APEX’s Tree region that displays hierarchical data in the form of a tree.
We reserve a discussion on Oracle’s hierarchical queries for a later part of the section and start it by understanding the implementation of hierarchical reports by linking values in APEX using drilldowns. We see the use of APEX items as substitution variable to create dynamic messages. Since we have devised a mechanism to drill down, we should also build a ladder for the user to climb up the hierarchical chain. Now the hierarchical chain for every person will be different depending on his position in the organization, so we build a mechanism to build dynamic bread crumbs using PL/SQL region in APEX. We then talk about two different methods of implementing hierarchical queries in APEX. We talk about the connect by clause first and then continue our discussion be learning the use of recursive with clause for hierarchical reporting. We end our discussion on hierarchical reporting by creating APEX’s Tree region that displays hierarchical data in the form of a tree.
Reports are often associated with supporting files that give
more information about the business query. A typical user might want to upload
a bunch of files while executing his piece of task and the end user of his
action might want to check out the uploaded files. To understand the
implementation of this requirement, we check out the various ways to implement
the uploading and downloading files in APEX.
We start our discussion by devising the process of uploading
files for employees listed in oehr_employees table. The solution of uploading
files involves the implementation of dynamic action to capture the employee id
of the employee on whose row the user has clicked. It shows the use of APEX
items as substitution variables for creating dynamic labels and the use of
JavaScript to feed one APEX item based on another. We extensively talk about
the implementation of JQuery in Dynamic Actions in this section as well.
Finally we check out the use of APEX’s file browse item along with WWV_FLOW_FILES
table to capture the file uploaded by the user.
Discussion on methods to upload files is immediately
followed by talking about the ways to download these files in APEX. We nest the
use of functions such as HTF.ANCHOR and APEX_UTIL.GET_BLOB_FILE_SRC for one of
the ways to download a file and also talk about the use of dbms_lob.getlength
along with APEX format mask for downloading files. We then engineer our own
stored procedure that can download a blob stored in the database as a file. We
end this discussion by having a look at APEX’s p process which can also be used
for downloading.
AJAX is the mantra of the new age and we try our hand at it
by implementing soft deletion in APEX. We see the mechanism of refreshing just
the report and not reloading the page as soon as the user clicks to delete a
row. We use JavaScript along with APEX page process and APEX templates to
achieve this objective.
Slicing and dicing along with auditing are two of the most
common requirements in the reporting world. We see the implementation of both
of these using both the traditional method JavaScript with page processes and
the new method of using Dynamic Actions. We extend our use case a little
further and learn about a two way interaction between JavaScript function and
page process. We learn to pass values back and forth between the two.
While most Business intelligence and reporting solutions are
a one way road and are focused on data presentation, Oracle APEX can go a step
further and can give an interface to the user for data manipulations as well.
To understand this strength of APEX, we have a look at the process of creating
tabular forms in APEX. We extend our understanding of tabular forms to see a
magical use of JQuery to convert certain sections of a report from display-only
to editable text boxes.
We move our focus from implementing interesting and tricky
front end requirements to framing the queries to display complex data types. We
use string aggregation methods to display data in a column containing a varray.
Time dimension is one of the most widely used dimension in
reporting circles and comparing current performance with the past records is a favorite
requirement of most businesses. With this in mind, we shift our focus to
understand and implement time series reports in APEX. We start our discussion
by understanding the method to implement a report that shows the contribution
of each business line in every quarter. We implement this by partitioning
dimensions on the fly. We also use analytical functions such as ratio_to_report,
lead and lag in the process of creating time series reports. We use our
understanding of time dimension to build a report that helps a user compare one
time period to the other. The report gives the user the freedom to select the
time segments which he wishes to compare. We then outwit a limitation of this
report by using query partition clause for data densification.
We bring our discussion on reports based on time dimension
to an end by presenting a report based on modal clause to you. The report serves
as an example to show the enormous possibilities to code by using the modal
clause in Oracle.
We wrap up the chapter by understanding the mechanisms which
can be used to implement data level security in APEX. This discussion includes
the use of both VPD and traditional query filters.
Chapter 3 is all about interactive reports and dynamic
reporting. While the second chapter was more about data presentation using
complex queries and presentation methods, this chapter is about taking the
presentation part a step ahead by creating more visually appealing interactive
reports.
We start the discussion of this chapter by talking about the
ins and outs of Interactive Reports. We postmortem this feature of APEX to
learn about every possible way of using the Interactive Reports for making more
sense of the data. The chapter has a
reference application of its own which shows the code in action.
We start our discussion by exploring various features of
Actions menu in Interactive Reports. The discussion is on search functionality,
Select Columns feature, filtering, linking and filtering interactive reports
using URLs, customizing Rows per page feature of an IR, using Control Break,
creating computations in IR, creating charts in IR, using the Flashback feature
and a method to see the back end flashback query, configuring the email
functionality for downloading a report and for subscription of reports and
methods to understand the download of reports in HTML, CSV and pdf formats.
Once we are through with understanding the Actions menu, we
move on to understand the various configuration options in an IR. We talk about
the Link section, the Icon View section, the Detail section, the Column Group
section and the Advanced section of the Report Attributes page of an IR. While
discussing these sections we understand the process of setting different
default views of an IR for different users.
Once we are through with our dissection of an IR we put our
knowledge to action by inserting our own item in the Actions menu of an IR
using Dynamic Actions and JQuery.
We continue our quest for finding newer formatting methods
by using different combinations of SQL, CSS, APEX templates and JQuery to
achieve unfathomable results. The objectives attained in this section include formatting
a column of an IR based on another column, Using CSS in page header to format
APEX data, Changing the font color of alternate rows in APEX, Using a
user-defined CSS class in APEX, Conditionally highlighting a column in IR using
CSS and jQuery and Formatting an IR using region query.
After going through a number of examples on the use of CSS
and JQuery in APEX, we lay down a process to do any kind of changes in an IR.
We present this process by an example that replaces one of the icons used in an
IR with a different icon.
APEX also has a number of views for IR which can be used for
intelligent programming. We talk about an example that uses apex_application_page_ir_rpt
view show different IR reports on user request. The following is a screenshot of this example.
After a series of discussion on Interactive Reports, we move on to find a solution to an incurable problem of IR. We see a method to put multiple IR on the same page and link them as master-child reports. The following is a screenshot of multiple IR on an APEX page.
After a series of discussion on Interactive Reports, we move on to find a solution to an incurable problem of IR. We see a method to put multiple IR on the same page and link them as master-child reports. The following is a screenshot of multiple IR on an APEX page.
We had seen an authentication mechanism (external table
authentication) and data level authorization in chapter 2. We use this chapter
to see object level authorization in APEX. We see the method to give different
kinds of rights on the data of a column in a report to different user groups.
After solving a number of problems and learning a number of
things, we create a visual treat for ourselves. We create an Interactive report
dashboard using Dynamic actions. This dashboard presents different views of in
IR as gadgets on a separate APEX page. The following is a screenshot of an Interactive Report Dashboard.
We conclude this chapter by looking at advanced ways of
creating dynamic reports in APEX. We look at the use of table function in both
native and interface approach and we also look at the method to use APEX
collections for creating dynamic IRs in APEX.
Chapter 4 is all about advanced reporting and pretty graphs.
Since we are talking about advanced reporting, we see the process of setting
LDAP authentication in APEX. We also see the use of JXplorer to help us get the
necessary DN for setting up the LDAP authentication. We also see the means to
authenticate an LDAP user using PL/SQL in this section. This chapter also has a
reference application of its own that shows the code in action. The following is a screenshot of getting the DN from JXplorer.
We start the reporting building in this chapter by creating
sparkline reports. This report uses JQuery for producing the charts. Following is a screenshot of sparkline report.
We then move on to use another JQuery library to create a report with Slider. This report lets the user set the value of the salary of any employee using a slider. Following is a screenshot of a report with slider.
We then move on to use another JQuery library to create a report with Slider. This report lets the user set the value of the salary of any employee using a slider. Following is a screenshot of a report with slider.
We then get into the world of HTML Charts. We start our talk
by looking at the various features of creating HTML chart regions in APEX. We
understand a method to implement Top N and Bottom N chart reports in HTML
charts. We understand the APEX’s method to implement HTML charts and use it to
create an HTML chart by writing our own piece of code.
We extend this technique of generating HTML from region source a little further by using XMLTYPE to create the necessary HTML for displaying a report.
We extend this technique of generating HTML from region source a little further by using XMLTYPE to create the necessary HTML for displaying a report.
We take our space ship into a different galaxy of the charts
world and see the use of Google Visualizations for creating charts in APEX. Following is a screenshot of a region that uses Google's Visualization API
We then switch to AnyChart which is a flash charting
solution and has been tightly integrated with APEX. It works on an XML and we
talk about customizing this XML to produce different results.
We put our
knowledge to action by creating a logarithmic chart and changing the style of a
few display labels in APEX. We continue our discussion on AnyChart and use the
example of Doughnut Chart to understand advanced ways of using AnyChart in
APEX. We use our knowledge to create Scatter chart, 3D stacked chart, Gauge
chart, Gantt chart, Candlestick chart, Flash image maps and SQL calendars. Following is a screenshot of Flash image maps.
We move out of the pretty heaven of AnyChart only to get
into another beautiful space of understanding the methods of displaying reports
with images in APEX. We implement Reports with images using APEX’s format mask
and also using HTF.IMG with APEX_UTIL.GET_BLOB_FILE_SRC function.
We then divert our attention to advanced JQuery for the
creation of Dialog box and Context menu in APEX. We create a master-detail
report using dialog boxes where the child report is shown in the Dialog box. Following is a screenshot of the dialog box region.
We close our discussion in this chapter by talking about
creating wizards in APEX and a method to show different kinds of customized
error messages for problems appearing at different points of a Page process.
Chapter 5 is all about Advanced APEX. The topics discussed
in this chapter fall into a niche category of reporting implementations. This chapter
has 2 reference applications of its own that shows the code in action.
We start this chapter by creating both client side and
server side HTML image maps in APEX. These maps are often used where regular
shapes are involved.
We then see the process of creating PLSQL Server Pages
(PSPs). PSPs are similar to JSP and are used for putting PL/SQL and HTML code
in a single file. Loadpsp, a command line utility, converts this file into a
stored procedure with the necessary calls to owa web toolkit functions. We have
a look at the whole process in action.
The other utility we check out is loadjava. This utility
helps us load a Java class as a database object. This utility is helpful if some
of the Java classes are required for code processing.
We had seen the use of AnyChart in the previous chapter and
this chapter introduces you to FusionCharts. We create a Funnel Chart using
FusionChart in this chapter.Following is a screenshot of the funnel chart.
We also use our knowledge of PL/SQL region in APEX to create a Tag Cloud.
We also use our knowledge of PL/SQL region in APEX to create a Tag Cloud.
We then stroll into the world of APEX plugins. We understand
the interface functions for plugins. We discuss the concepts and then use them
to develop an Item type plugin and a Dynamic action plugin. We understand the
process of defining a Custom Attribute in a plugin and then see the process of
using it in APEX.
We move on to learn about Websheets and their various
features. We acquaint ourselves with the interface of web sheet applications
and understand the concept of sharing web sheets. We also create a few reports
in a websheet application and see the process of importing and using an image
in websheets. We then spend some time to learn about data grids in web sheets
and the method to create them. We have a look at the Administration and View
dropdowns in a websheet application.
We get into the Administration mode and understand the
process of configuring the sending of mails to Gmail server from APEX.
We extend our administration skills further by understanding
the ways to download an APEX application using utilities like oracle.apex.APEXExport.
Reporting and OLAP go hand in hand so we see the method of
using OLAP cubes in APEX. We see the process of modeling a cube and understand
the mechanism to use its powerful features.
We then have a talk about Oracle Advanced Queues that can
enable us to do reliable communication among different systems with different
workloads in the enterprise and gives improved performance.
We spend a brief time to understand some of the other
features of APEX which might not be directly related to reporting but are good
to know. Some of these features include Locking and unlocking of pages in APEX,
Database Object Dependencies report, Shortcuts, Dataloading wizard and APEX
views.
We bring this exclusive chapter to an end by discussing
about the various packages that enable us to schedule background jobs in APEX
and by discussing various other APEX and Database API which can help us in the
development process.
Chapter 6 begins a new phase of our journey. Since we have
explored most of the reporting features of APEX we set our eyes on other
technologies that can serve as extensions of APEX. We talk about creating
reports in them and then using these reports in APEX. This chapter has 2
reference applications of its own that shows the code in action.
We begin this chapter by exploring some of the PL/SQL
wrappers that can help us do pdf printing. The chapter begins by discussing the
process of writing code that can help us print pdf reports using both PL/PDF
and PL_FPDF. We then move on to see less cost intensive measures and understand
the process of coding that can help us generate RTF, XLS, CSV and HTML
documents without any separate printing engine.
We move from no engine to explicit engines and see the
process of deploying Apache cocoon and Apache fop on weblogic and using them
for printing reports in most known formats in APEX. Following is a screenshot that shows a part of the configuration for Apache Cocoon
While cocoon and fop were used for report printing, the
reports were themselves in APEX. We now check out technologies such as Eclipse
BIRT and Jasper reports. We understand the process of installing these
technologies, creating reports in them and then using them in APEX through
Restful web services. Following screenshots are collected from Eclipse BIRT.
Chapter 7 takes us to a whole new world. We talk about OBIEE
and BI Publisher in this chapter. These tools have been the face of Oracle’s
business intelligence solution and are loaded with all kinds of reporting
features. The primary objective to introduce these technologies to you and to
show their integration with APEX is to help you understand the strengths of
each of these technologies and to enable you to use them with APEX, whenever
required. This chapter also has a reference application of its own.
We start our discussion in this chapter by talking about
Oracle Fusion Middleware architecture since OBIEE is a part of it. We then
spend some time to understand the wiring of OBIEE, its various components and
their uses. The talk includes discussion on BI server component and the BI
presentation server component. After understanding the basics we move on to see
the process of creating a simple report in OBIEE. We learn about various OBIEE
features such as selection steps, filters, hierarchies in the process.
We then switch from development mode to observation mode and
have a look at some of the features that OBIEE shows in its sample repository
and web catalog. We check out a typical OBIEE dashboard, understand KPI (Key
Performance Indicators) and KPI watchlists. The following is a screenshot of a typical OBIEE dashboard.
We then pay some attention to create an action in OBIEE. Actions are OBIEE’s way of scheduling and delivering reports. We understand OBIEE map view which helps us use external maps provided by Google and Navteq.
This enables us to overlay our BI data on top of the maps to produce best in class location intelligence solutions. We skim over OBIEE’s strategy management feature that helps us to link business objectives and presents them in a number of solutions such as Strategy tree, Strategy wheel, Cause and effect map and Strategy map.
We then pay some attention to create an action in OBIEE. Actions are OBIEE’s way of scheduling and delivering reports. We understand OBIEE map view which helps us use external maps provided by Google and Navteq.
This enables us to overlay our BI data on top of the maps to produce best in class location intelligence solutions. We skim over OBIEE’s strategy management feature that helps us to link business objectives and presents them in a number of solutions such as Strategy tree, Strategy wheel, Cause and effect map and Strategy map.
We end our discussion of the features of OBIEE by looking at
the process of configuring an smtp server for OBIEE and understanding the
delivery of emails by scheduling an OBIEE agent and monitoring it through OBIEE
Job manager.
Once we have a good idea about the possibilities with OBIEE,
we start looking at the process of integrating OBIEE with APEX. We start by
using the web service approach and have a look at the iBotService of OBIEE that
can help us trigger an agent in OBIEE from APEX and hence enable us to deliver
OBIEE reports by emails. We also look at OBIEE’s HTMLViewService which enables
us to fetch OBIEE reports at APEX end using AJAX.
Finally, we have a look at a less secure method to use OBIEE
in APEX. We check out the process of using OBIEE’s goURL for linking it with
APEX. The credentials and all the necessary information required by OBIEE are
passed from APEX in the URL in this method. iFrames in APEX can also use goURL
and we have a discussion on this part as well.
After having a good discussion about OBIEE we have a look at
another interesting technology called BI Publisher. BI Publisher is not a new
name for APEX developers since it has historically been used for report
printing with APEX.
We have a brief talk about the tool and then nose-dive into
the process of creation of a report in BI Publisher. The book is shipped with
all kinds of code to make your life easier. We start by understanding the
process of creating a data model in BI Publisher and then use the MS Word
plugin of BIP to create a template. We put both these pieces together to create
a BI Publisher report.
Once our report is ready, we look at the process of
scheduling this report and delivering it by email.
We then move into an exclusive zone in BI Publisher. We talk
about the creation of Bar code reports in BIP.
Note that we haven’t discussed these reports yet in any of the technologies so far so this type of report makes BI Publisher unique. We then take our BI Publisher development skills to a whole new level by looking at the possibilities of coding dynamic reports in BIP. This talk includes discussion on changing columns on the fly, changing groupings on the fly, changing sort order and much more.
Note that we haven’t discussed these reports yet in any of the technologies so far so this type of report makes BI Publisher unique. We then take our BI Publisher development skills to a whole new level by looking at the possibilities of coding dynamic reports in BIP. This talk includes discussion on changing columns on the fly, changing groupings on the fly, changing sort order and much more.
Once we have seen some of the good reporting features of BI
Publisher, it is time for us to get into the integration. We start this
discussion with the traditional method of using the convert servlet of BI
Publisher for report printing. In this method, the data and the template
required by BIP to print the report are stored at APEX end and BIP just severs
as a printing engine.
We then move on to see the use of BIP’s werbservice for
integration with OBIEE and finally check out a less secure method of using
BIP’s guest folder method for using BIP reports in APEX.
Chapter 8 is one of my favorites. Till now, we have been
talking about using webservices in APEX but this teaches us about the creation
of different types of webservies. The spectrum includes the use of PL/SQL to
Resource Templates of APEX Listener to BPEL for the creation of webservices.
Not only this, the chapter also talks about using statistical tools such as
Oracle R for predictive analysis in APEX and the use of Google API to help us
import the data from external servers for advanced analytics.
We start the discussion of this chapter with talking
creating the necessary ACL and assigning the right grants to schemas. We then
set XMLDB services which help us to project stored procedures and functions as
web services. We then have a look at parsing the response of an invocation to a
stored procedure using XMLDB services. The stored function which is invoked is
such that it returns different columns of a single record. We then device a
function that is capable of returning a bunch of records and we parse its
response and display the result in a report region. We also see the process of
passing APEX items as inputs to XMLDB services. We see a report region that
uses XMLTable for parsing the web service response. Until now, we had been
handling stored procedures and functions through XMLDB webservices but now we
fire queries on tables using native web service and parse its response.
We then move on to see the process of configuring and
creating RESTful web services using Resource Templates. The Resource Templates
return JSON objects as response and we use see a method to parse the response
in our report regions.
Finally, we look at a process of creating a RESTful PL/SQL
webservice using DADs. We see the process of passing arguments to this
webservice by using RESTful webservice reference in APEX. We also have a look
at the method to parse the response of this webservice.
BPEL is a glue that can hold a variety of technologies
together in an heterogeneous system. It also has a unique feature called Human
Workflows and its associated worklist that can help us code complex business
decision processing systems and can help us transfer the job from the workstack
of one user to the workstack of another. It is these wide applications of the
technology that made us look into the various possibilities in BPEL and to find
ways to use them in APEX. We use this part of the text to install, configure
and create both synchronous and asynchronous processes in BPEL which can then
be used in APEX just like any other SOAP webservice. We also have a detail
discussion on using BPEL Human Workflows and have presented an example to use
it.
Once we are through with BPEL we have a short section
dedicated to understanding the creation of reports in SAP Crystal reports and
using them in APEX. We also have short sections dedicated to the migration of
data and code from MS Access to APEX and from Oracle Forms and Reports to APEX.
We bring our discussion of this chapter to an end by
elaborately discussing about the use of Oracle R and Google API in APEX. The
talk on Oracle R implements a use case of finding the best places to place ATM
machines in an area of interest and to get a png image that shows the plot of
the points suggested by Oracle R for placing the ATM machines in the area of
interest.
The discussion on Google API on the other hand is about
using the google Places API for finding the latitude/longitude information of
important landmarks such as bus stops, airports etc. The process described in
this section fetches the information from the API, parses it and presents the
extracted information as an output of a SQL query. The code i.e. the SQL query
that triggers the request to fire the Google API also sends the desired landmark
type (for example: bus stop, airport) and the desired city to the Google API. Following screenshot shows the parsed response of Google's Places API.
The parsed information from the response can then be combined with our BI information to find the correlation of landmarks with the location of our retail store. This is however a use case and the process can be applied to get the data from a number of other Google APIs. The data can be used in APEX for a variety of analysis.
The parsed information from the response can then be combined with our BI information to find the correlation of landmarks with the location of our retail store. This is however a use case and the process can be applied to get the data from a number of other Google APIs. The data can be used in APEX for a variety of analysis.
Chapter 9 is all about tuning. The chapter informs you about
the best development practices and also introduces you to some of the database
tools that can be used for the purpose of tuning the code.
The development best practices section discusses v(),page
and region caching, pagination scheme, tuning of like comparison and many more.
Similarly, the talk on database tools includes a natter
about most of the features of the database that can help you hunt a bottle neck
and eliminate it.
In a nut shell, book is intended for all those who believe
that making technologies work in harmony and using their strengths to meet the
objectives is a potent challenge. This book is for you if you wish to spring
into the action of APEX development from the time you hold this book in your
hand. The book is designed for innovative architects and enthusiastic developers.
The following are a few links of the book
http://www.oracle.com/technetwork/developer-tools/apex/application-express/apex-books-1863316.html - Book’s listing on Oracle.com
http://www.packtpub.com/oracle-apex-4-2-reporting/book - Publisher's Page
http://www.packtpub.com/article/apex42-reporting - Article about the book on Publisher’s page.
http://www.amazon.com/dp/1849684987/?tag=packtpubli-20 - Link on Amazon.com
http://www.amazon.co.uk/dp/1849684987/?tag=packtpubli-21 - Link on Amazon.uk
http://www.barnesandnoble.com/w/oracle-apex-42-reporting-vishal-pathak/1116815007?ean=9781849684989 - Link on Barnes and Noble
http://my.safaribooksonline.com/9781849684989?cid=packt-cat-readnow-9781849684989 - Link on safaribooksonline.com
http://brillions.co.in/computers-internet-books/17531--oracle-apex-42-reporting.html - Link on Brillions
https://itunes.apple.com/us/book/oracle-apex-4.2-reporting/id694385904?mt=11 - Link o itunes
http://books.google.co.in/books?id=bs6-07lZndQC - Link on books.google.com
https://riidr.com/store/ebog/oracle-apex-42-reporting_pathak-vishal - Link on riidr
http://shop.oreilly.com/product/9781849684989.do - Link on OReilly
The following are a few links of the book
http://www.oracle.com/technetwork/developer-tools/apex/application-express/apex-books-1863316.html - Book’s listing on Oracle.com
http://www.packtpub.com/oracle-apex-4-2-reporting/book - Publisher's Page
http://www.packtpub.com/article/apex42-reporting - Article about the book on Publisher’s page.
http://www.amazon.com/dp/1849684987/?tag=packtpubli-20 - Link on Amazon.com
http://www.amazon.co.uk/dp/1849684987/?tag=packtpubli-21 - Link on Amazon.uk
http://www.barnesandnoble.com/w/oracle-apex-42-reporting-vishal-pathak/1116815007?ean=9781849684989 - Link on Barnes and Noble
http://my.safaribooksonline.com/9781849684989?cid=packt-cat-readnow-9781849684989 - Link on safaribooksonline.com
http://brillions.co.in/computers-internet-books/17531--oracle-apex-42-reporting.html - Link on Brillions
https://itunes.apple.com/us/book/oracle-apex-4.2-reporting/id694385904?mt=11 - Link o itunes
http://books.google.co.in/books?id=bs6-07lZndQC - Link on books.google.com
https://riidr.com/store/ebog/oracle-apex-42-reporting_pathak-vishal - Link on riidr
http://shop.oreilly.com/product/9781849684989.do - Link on OReilly
1 comment:
Nice.
Thx for quick info for who hasn't bought your book yet.
Post a Comment