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 and corporate deals • IntelliReal in 2005 • ApEx provides a “quick turns” • Sold to Equifax in 2011 approach to our offering • 10+ other companies, boards • Founders Institute • Professor – DU • 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 and • What partners to show there is an assumption (i.e. • Colors to display a hard coded number that I might put into my code), I • Easy with Apex 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 shows up for all of the • Category ID 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 lat/long to spatial • Indexed search column columns • 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, || v('app_session') || :P6_SW_LONG, :P6_NE_LONG, '::::P6_SW_LAT,P6_SW_LO :P1_COLOR_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, sw.lng() + "," + ne.lat() + "," :P1_REMOVE_LIST, + ne.lng() + "," + zm + "," + :P1_SHOW_UNCOLORED, mt; :P1_PEOPLE_ID, • See Page 6 in my nvl(:P1_ROWS,1000)) as people_Table)) application • XML Report • Cast function as if it’s a table
Other Options • Could use a Cloud provider • Yahoo Pipes requires data in XML format • Yahoo Pipes • 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.

Building a Flexible UI with Oracle ApEx

  • 1.
    Building A User-Definable, Flexible UI with Oracle Application Express (ApEx) By Bradley D. Brown, InteliVideo
  • 2.
    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 and corporate deals • IntelliReal in 2005 • ApEx provides a “quick turns” • Sold to Equifax in 2011 approach to our offering • 10+ other companies, boards • Founders Institute • Professor – DU • Advisor for Founders Institute • Author – 6 technical books
  • 3.
    My Interests • Making a difference • Helping people – teaching, advising, … • Building companies • Using my talents with technology • The outdoors
  • 4.
    Agenda • User Definable •Flexible UI • Project / POC Goals • Application Specifics • Application Design • Database Specifics • ERD • Tables • Functions • Materialized views
  • 5.
    User Definable • DataDriven • 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?”
  • 6.
    Flexible UI • DataDriven • 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 and • What partners to show there is an assumption (i.e. • Colors to display a hard coded number that I might put into my code), I • Easy with Apex 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?
  • 7.
    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
  • 8.
    Political Premise • Politicianswant 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
  • 9.
    Project / POCGoals • 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
  • 10.
    Application Specifics • IndependentNation 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.
  • 11.
    Application Design • Developedfor 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
  • 12.
    Political contributors inNJ • Contributors by party contributed to… 13
  • 13.
    Other Visual Searches Age– Education, Income
  • 14.
    Key Tables • ApplicationData • User Driven Data • Attribute • User • Category • User Attribute • People • User Attribute Color • People Attribute • User Option • Property • User Option User • People Property
  • 15.
  • 16.
    Attribute Table • Attributes(fields) • Parent Attribute • Short Description • Text 1,2 • Long Description • Data 1,2 • Category • Number 1,2
  • 17.
    Category Table • Categoriesof • Add a new category, assign Windows/Tabs it to attribute(s) and it shows up for all of the • Category ID people… • Short Description • Full Description • Parent Category
  • 18.
    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
  • 19.
    Properties and People •Property • ID • Address • Phone, Cell • Valuation • Lat and Long • People Property • People ID • Property ID • Start and End Date
  • 20.
    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
  • 21.
    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
  • 22.
    Let’s Add aNew Category • Add the category • Change attributes to be in the category • Refresh the Materialized View • Test it out in the UI
  • 23.
    Let’s Create aNew Filter • Education of Too Youngs… • Color by education level • Include <18 year olds • Exclude other age categories • Save it
  • 24.
    List of PeopleMatching • Uses the same service as the map • Shows the details • Can be exported
  • 25.
    Search • Person’s name •Municipality • Address • District
  • 26.
    Finds People • ClickingView shows them on the map
  • 27.
    Performance • Created materialized • Faster Spatial view Options • PEOPLE_MV • Change from lat/long to spatial • Indexed search column columns • 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)
  • 28.
    How the MapsWorks • AJAX • select * from table(cast(get_people(:P6_SW • var url = "f?p=&APP_ID.:6:' _LAT, :P6_NE_LAT, || v('app_session') || :P6_SW_LONG, :P6_NE_LONG, '::::P6_SW_LAT,P6_SW_LO :P1_COLOR_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, sw.lng() + "," + ne.lat() + "," :P1_REMOVE_LIST, + ne.lng() + "," + zm + "," + :P1_SHOW_UNCOLORED, mt; :P1_PEOPLE_ID, • See Page 6 in my nvl(:P1_ROWS,1000)) as people_Table)) application • XML Report • Cast function as if it’s a table
  • 29.
    Other Options • Coulduse a Cloud provider • Yahoo Pipes requires data in XML format • Yahoo Pipes • Can come from ApEx too • Google App Engine • iPerspective • We put this in a hosted environment • Amazon EC2 • MaxApex
  • 30.
    BTW – PoliticalReality • 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…
  • 31.
    Getting Started, thenOther Mapping I’ve Done • Heat Maps • GeoSearch • Highlight and Visual Search • Test Scores within a Radius • Get Creative!
  • 32.
    Google Map Integration •Easy integration Starts At: • http://www.google.com/apis/maps/ • Simple Pushpins:
  • 33.
    Heat Maps • Alook at different neighborhood trends in home values
  • 34.
    GeoSearch • Grouping ofproperties • Colorized and customizable
  • 35.
    Highlight and VisualSearch • Highlight it • Build your search, see it
  • 36.
    Test Scores withina radius • Visual results
  • 37.
    Summary – Buildinga 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
  • 38.
  • 39.
    Brad’s Papers andPresentations • 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
  • 40.
    Copyright Information • NeitherInteliVideo, 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.