Tips and Tricks for Customizing Portal Reports Portlet
Download
Report
Transcript Tips and Tricks for Customizing Portal Reports Portlet
Tips and Tricks for
Customizing Portal Reports
Portlet Modules
Visit the Quovera
table for more info.
Peter Koletzke
Technical Director &
Principal Instructor
Second Law of Serendipity
If you wish to make an
improved product, you must
already be engaged in
making an inferior one.
2
Survey
• Oracle Portal work
– Portal reports?
– Dynamic pages?
– Portal forms?
– Calling Oracle Developer
forms (FMBs)?
– Calling Oracle Developer
reports (RDF)?
– Calling J2EE apps?
3
Agenda
• Reports Portlet overview
• Creating the definition - annotated
• Tips, gotchas, workarounds
• Alternatives to Reports Portlet
Note: Sample code files
available in the presentation
zip file on the Quovera and
NoCOUG website.
Releases:
9i (9.0.2),
10g R1 (9.0.4),
10g R2 (10.1.2)
4
Portal Reports Portlet Basics
• Call RDF files from a Portal link
– “Report Definition File Access”
• The Portal name
– Validates security of user
– Presents a parameter form
• Text fields
• LOVs (poplists)
• Report definition created in Portal
development screens
– Generates PL/SQL package to display
parameter form and to call Reports Server
5
Portal Reports Runtime
App Server
iAS
Database
Browser
Portal
link
Procedure
call URL
Report
package
mod_plsql
Parameter
Form
Reports
Runtime
Run
Report
results
(HTML,
PDF)
Reports
Servlet
Reports
RDF file
cgicmd.dat
Business
Database
Tables
and
views
scottcgi: userid= "scott/tiger@orcl" %*
6
Creating the Definition
• Create custom template first
– Use your logos and design elements
– This is not used at runtime by default
• Also create LOVs in Portal
– Use them on the report Parameters page
• Two methods for creating the definition
– Copy an existing report definition
• Use the Manage tab of the Manage page
• Parameter values are not copied
– Reset the values on the Customize page
– Create one from scratch
• Screens follow
7
Agenda
• Reports Portlet overview
• Creating the definition - annotated
• Tips, gotchas, workarounds
• Alternatives to Reports Portlet
8
Creating a Definition
•
Find Reports Definition portlet
–
•
In Builder (Reports Security) or in the Portlet list
Click Create Reports Definition File Access
9
Creating the Definition – Page 1
10
Creating the Definition – Page 2
11
Creating the Definition – Page 3
Desformat
Create this beforehand
12
Creating the Definition – Page 4
Create this beforehand
13
Tips for Creating the LOV
Do this before starting the Reports definition wizard
Must be “No”
for reports
This is ignored
for reports. Only
poplists are available
Use this for a “blank” item.
Needs a value. NULL won’t work
for reports (will work for
Portal reports and forms).
14
Creating the Definition – Page 5
Interesting idea
15
Creating the Definition – Page 6
Finish generates
the report PL/SQL
package.
This is ignored
Note: Every time you save a
report definition, Portal
rewrites the PL/SQL package.
16
Creating a Link – Page 1
• Click Add Item in a page group page
17
Creating a Link – Page 2
At Runtime
18
Agenda
• Reports Portlet overview
• Creating the definition - annotated
• Tips, gotchas, workarounds
• Alternatives to Reports Portlet
19
Visit the Customize Page
20
Notice the template
Customize Page
Desformat?
Check the parameters
to display. Click Save
Parameters (this also
saves the values you
place here).
Database
connection
token
stored in
oracle_
home/
reports/
conf/
cgicmd.dat
Be careful of values in
non-displayed
parameters.
LOV
21
• Desformat? Click
the New Link
• Where’s my
template?
• How do I get rid
of Builder and
Navigator links?
• How do I remove
the Schedule
tab?
• Can I add a
prompt hint?
• How do I change
the buttons?
• Can I show the
report name?
22
Builder
23
Navigator
24
As a Review: The Customize Page
25
Layout Gotchas
• Layout is very basic
–
–
–
–
Fields are laid out in a single column
Fields can only be text items or pulldown lists (poplists)
No popup LOV windows or shuttle controls
Field prompts are very basic
• The template you define will not be used at runtime
(only on the Customize page)
Still true as of 10g R2
– Oracle template used (Oracle logos and copyright)
– Builder and Navigator links displayed
• Users can see development areas
• No declarative way to change the button
labels that a user sees
– Portlet defaults are Apply, OK, Cancel
– Huh?
• Desformat prompt cannot be defined
26
Changing The DESFORMAT Prompt
• Prompt is stored in internal Portal table
– WWNLS_STRINGS$
– Protected by a policy (you can’t update it)
• Technique to make the change
Documented
on MetaLink.
– Identify the subscriber ID and ID
– Run a procedure that disables policies,
updates the table, and enables policies
• Sample:
– desformat_prompt.sql
• Global to all reports
27
New Prompt
28
For Other Changes, Modify the
Reports Definition Package Code
• Back up the package code first
– If you edit the report definition later, you will need to
reapply the modifications
• Changing code in various procedures
– show_tabpage and show_parms_internal
– Samples in report_package_edits.txt
• Also, adding buttons to the template
– Sample in industrial_template_buttons.txt
• Set the access method (item or parent)
before starting
– This changes the package code
29
New Parameter Form
• No Desformat
• Report title
• No Builder
and Navigator
links
• Your template
• Modified
buttons
• No schedule
tab
• Hints on
prompts
30
Validating Parameters
• Validation Trigger page 6 does not do
anything
• Post-generation change
– In the report database package body, find the
show procedure
– After calls to validity_check(), add a validation
block that adds error messages
– You need to do your own date format checking
– Sample in validity_check.sql
• If you edit and save a change to the
report definition, this is overwritten
31
Tip: Releasing Edit Mode
• Click Edit from the Manage page
• Click Back
– Report definition is now in Edit mode
– No one else
can edit it
– To fix, click
Edit, then
click Close
– Releases
Edit mode
32
Other
Methods –
JavaScript
Self-reducing
poplist
Auto-selected
poplist value. Use
this to default a
parameter value
or to remove a value.
Hide and display
fields dynamically
Use the same embedded
HTML technique for
separator lines.
33
JavaScript Code Required
• onLoad() function on the BODY tag in the
template
– JavaScript added to report package code
– Default poplist selection
– Disable or hide items
• Poplist selection changes the display
– Self-reducing poplists (country/state-province) –
add code to report package
– Hide fields and display fields based on
poplist value
• Sample in magic_providers.html
34
Limiting the Query Based on User
• Database user for Reports connection
defined by the cgicmd.dat servlet key
• To associate a user with the session, get the
Portal user
– wwctx_api.get_user
• Pass the user as a Reports parameter
• Add that parameter to the query
– Or set the user name into a context and read the
context in a database VPD policy function
• Sample for setting the parameter in
validity_check.sql
35
Agenda
• Reports Portlet overview
• Creating the definition - annotated
• Tips, gotchas, workarounds
• Alternatives to Reports Portlet
36
Dynamic Page
Shuttle control.
Same technique used
for multi-select
control.
37
Code Required
• Portal dynamic page – not Reports portlet
– Calls a package that builds the page a line at a time
• Layout capabilities are unlimited
– Multi-column
– Any stylesheet style
– Unlimited JavaScript capabilities
• All code is up to you
– Code it in HTML first
– Run WebAlchemy for starting code
• http://www.users.bigpond.com/ahobbs/
• Samples
– demo_shuttle.html
– demo_dyn_form.txt
38
UIX Form
• UIX parameter form calling reports server
– View object for parameter fields
• The trick is working out the URL
– Examine the URL from other working reports
• SSO will protect the content
– Report package not needed for that
• Create Struts action to interpret the Run
button click
– Retrieve elements from binding to get
parameter values
– Build up the URL with parameter values
– Sample URL in sample_url.txt
39
HTML DB
• Hot new kid on the block
• You can develop reports with it
– PL/SQL based as is Portal reports
• Same for forms
• Can call Reports RDF files
– No native feature yet
– Apparently documented on OTN
• Anyone done this?
40
Law of Probable Dispersal
Whatever it is that hits the
fan will not be evenly
distributed.
—Anonymous
41
Summary
• The Portal Reports Portlet works but its
user interface is very basic
• If you use it, you need to apply
workarounds to the portlet bugs
• Some customizations require some lowlevel code modifications
– Keep backups of the packages
– Don’t tell Oracle Support
• Consider dynamic pages instead
– Or UIX pages or Portal forms or
HTML DB
42
Designer
Handbook
Developer
Advanced
Forms & Reports
JDeveloper 3
Handbook
ORACLE9i
JDeveloper
Handbook
ORACLE
JDeveloper 10g
Handbook
Also co-authored
with Avrom Roy-Faderman
Please fill out the evals
Books co-authored with Dr. Paul Dorsey
Personal web site:
http://ourworld.compuserve.com/
homepages/Peter_Koletzke
http://www.quovera.com
• Founded in 1995 as Millennia Vision
Corp.
• Profitable for 7+ years without outside
funding
• Consultants each have 10+ years
industry experience
• Strong High-Tech industry background
• 200+ clients/300+ projects
• JDeveloper Partner
• More technical white papers and
presentations on the web site
43