Building A User-Definable,
Flexible UI
with Oracle Application Express (ApEx)
By Bradley D. Brown, InteliVideo
Who am I?
• Bradley D. Brown • Today
http://bradleydbrown.blogspot.com • InteliVideo in April 2012
• Founder • Video Monetization Platform
• TUSC in 1988
• Built it to sell training online
• Sold to Rolta in 2008
• Focused on mid and long tail
• IntelliReal in 2005
and corporate deals
• Sold to Equifax in 2011
• ApEx provides a “quick turns”
• 10+ other companies, boards approach to our offering
• Professor – DU • Founders Institute
• Advisor for Founders Institute
• Author – 6 technical books
My Interests
• Making a difference
• Helping people – teaching,
advising, …
• Building companies
• Using my talents with
technology
• The outdoors
Agenda
• User Definable
• Flexible UI
• Project / POC Goals
• Application Specifics
• Application Design
• Database Specifics
• ERD
• Tables
• Functions
• Materialized views
User Definable
• Data Driven • Trade-offs
• Drive code based on data • Performance
rather than hard coded
• “Readability” of code
• Examples
• Too many choices
• ES valuation model at
IntelliReal • Advantages
• Partners “turning off” partners • Quick Turns
on InteliVideo site
• Testing 100s of models,
• Flexible Database variable changes, etc. can all
be done programmatically
• Do you need the ability to add
(perfect value)
“columns” without “adding
columns?”
Flexible UI
• Data Driven • My bottom line
• What page to start at (after • If I’m doing the original
login) coding or I’m going to
make a change to my code
• What partners to show
and there is an assumption
• Colors to display (i.e. a hard coded number
that I might put into my
• Easy with Apex code), I stop and think
• Authorization rules • Should I add a column to a
table and should I change
• Display rules at all levels the code so it points at the
column?
• What level? Per user?
Per customer?
Independent Nation – POC Goals
• Dave read the book
• Called the author – Fipp (John
Avalon)
• Met with him and discussed the
concepts
• We met with numerous political
campaign target market experts
• I developed the software,
secured data,…
• We did demos to politicians,
target market people, etc.
• EC2 platform
Political Premise
• Politicians want to share their views with targeted groups of people who
are voting
• Key target groups (lobstermen, working moms, first time home owners)
• Identify and find those people
• Invite them to custom events (per group)
• Drive custom messages (reduced taxes for lobster, better day care options,
incentives for buying your first home) – email, text, phone
• Visit the networkers
Project / POC Goals
• Provide intelligence to political campaigns
• Build a GUI and GIS application (with ApEx)
• Application for Independent Nation, but wanted something we
could use for any customer with Google map needs
• Application that is dynamic and flexible
• Design and develop application that allows customization by
changing data, not code.
• Data about people, their properties or addresses they live at, and
other information about them – yet, stay open for others
Application Specifics
• Independent Nation is a company that specializes in provide
intelligence about voters to political campaigns
• Data sourcing - merged voter registration, voter contribution and
numerous other data sources as the starting data set
• Goal was to provide a flexible database design that will allow for
SIMPLE attribute additions without new coding. New data feeds
won’t require DB changes.
Application Design
• Developed for Independent Nation
• Every user
• Starts in a different part of the world
• Has their own color scheme and search criteria
• Uses Google Maps
• Could integrate other mapping solutions in
• Database
• Generic driving table with attributes
• Not many tables (i.e. simple design)
12
Political contributors in NJ
• Contributors by party contributed to…
13
Other Visual Searches
Age – Education, Income
Key Tables
• Application Data • User Driven Data
• Attribute • User
• Category • User Attribute
• People • User Attribute Color
• People Attribute • User Option
• Property • User Option User
• People Property
ERD
Attribute Table
• Attributes (fields) • Parent Attribute
• Short Description • Text 1,2
• Long Description • Data 1,2
• Category • Number 1,2
Category Table
• Categories of • Add a new category, assign
Windows/Tabs it to attribute(s) and it
• Category ID
shows up for all of the
people…
• Short Description
• Full Description
• Parent Category
People
• People
• ID
• First, Last Name
• Voter ID
• Property ID
• People Attribute
• People ID
• Attribute ID
• Start and End Date
• Source, Integrity
• Text, Number, Date Values
Properties and People
• Property
• ID
• Address
• Phone, Cell
• Valuation
• Lat and Long
• People Property
• People ID
• Property ID
• Start and End Date
User Specific Data
• User Attribute Color
• Colorization
• Limiting data
• User Option
• Saved Filters
• Descriptions, Include, Exclude
• Starting map location
• User Option User
• Users who share a filter
• Default filter
Functions
• Get_Desc • Get_People
• Gets the description for a • Brains for everything here
specific attribute for a
• Pipeline (or table-based)
specific user
function
• Get_Option
• Finds the people that live
• Gets the default filter for a within the lat/long range
user on the map, matching the
filters
Let’s Add a New Category
• Add the category
• Change attributes to be in the category
• Refresh the Materialized View
• Test it out in the UI
Let’s Create a New Filter
• Education of Too Youngs…
• Color by education level
• Include <18 year olds
• Exclude other age categories
• Save it
List of People Matching
• Uses the same service as the map
• Shows the details
• Can be exported
Search
• Person’s name
• Municipality
• Address
• District
Finds People
• Clicking View shows them on the map
Performance
• Created materialized • Faster Spatial
view Options
• PEOPLE_MV • Change from
• Indexed search lat/long to spatial
columns column
• sdo_geometry
• Turned on query re-
• Change query to
write
use sdo functions
• ALTER SESSION SET
query_rewrite_enabled=TRUE;
• Or…I could have just changed
queries (people_mv)
How the Maps Works
• AJAX • select * from
table(cast(get_people(:P6_SW
• var url = "f?p=&APP_ID.:6:' _LAT, :P6_NE_LAT, :P6_SW_LO
|| v('app_session') || NG, :P6_NE_LONG, :P1_COLOR
'::::P6_SW_LAT,P6_SW_LO _ATTRIBUTE_ID,
NG,P6_NE_LAT,P6_NE_LO independent_authentication.g
NG,P6_ZOOM,P6_MAPTYP et_user_id(:APP_USER),:P1_IN
E:" + sw.lat() + "," + CLUDE_LIST, :P1_REMOVE_LIS
sw.lng() + "," + ne.lat() + "," T, :P1_SHOW_UNCOLORED, :P
+ ne.lng() + "," + zm + "," + 1_PEOPLE_ID,
mt; nvl(:P1_ROWS,1000)) as
• See Page 6 in my people_Table))
application
• XML Report
• Cast function as if it’s a
table
Other Options
• Could use a Cloud provider • Yahoo Pipes requires data
• Yahoo Pipes
in XML format
• Can come from ApEx too
• Google App Engine
• iPerspective
• We put this in a hosted
environment
• Amazon EC2
• MaxApex
BTW – Political Reality
• Politicians don’t decide much of anything
• Their interns and experts do
• They don’t want to pay for anything
• They do know what groups they want to get to
• They cannot craft a message to them – for fear one
person will get the wrong message and spread it
• They want to deliver generic messages
• This killed Independent Nation in the end…
Getting Started, then Other Mapping I’ve Done
• Heat Maps
• GeoSearch
• Highlight and Visual Search
• Test Scores within a Radius
• Get Creative!
Google Map Integration
• Easy integration Starts At:
• http://www.google.com/apis/maps/
• Simple Pushpins:
Heat Maps
• A look at different neighborhood trends in home values
GeoSearch
• Grouping of properties
• Colorized and customizable
Highlight and Visual Search
• Highlight it
• Build your search, see it
Test Scores within a radius
• Visual results
Summary – Building a Flexible UI
• Flexible Database and UI – can overdue it
• Project / POC Goals – sales engine
• Application Specifics – functional
• Application Design - flexible reuse
• Demo for Customers – cool UI
• Database Specifics – data driven app
Questions?
Brad’s Papers and Presentations
• Java-based Oracle Web • Practical Portal Practices
Development • Implementing JSP in Portal
• Java Server Pages • UltraSearch
• JavaMail • Search Engines
• Java for the PL/SQL • Utl_smtp and Utl_http
Developer
• iFS
• Web Cache – achieving
150 the performance • JavaScript
• 9iAS Installation, • Top DBA scripts for Web
Configuration, and Tuning Developers
• Wireless • Security
Copyright Information
• Neither InteliVideo, Rolta TUSC nor the author guarantee this
document to be error-free. Please provide comments/questions
to brownb@tusc.com.
• InteliVideo, Rolta TUSC © 2012. This document cannot be
reproduced without expressed written consent from an officer of
Rolta or InteliVideo.