Building a Flexible UI with Oracle ApEx


Published on

How to build a very flexible user interface using Oracle Application Express.

Published in: Education
1 Like
  • Be the first to comment

No Downloads
Total views
On SlideShare
From Embeds
Number of Embeds
Embeds 0
No embeds

No notes for slide

Building a Flexible UI with Oracle ApEx

  1. 1. Building A User-Definable, Flexible UI with Oracle Application Express (ApEx) By Bradley D. Brown, InteliVideo
  2. 2. Who am I?• Bradley D. Brown • Today • 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. 3. My Interests• Making a difference• Helping people – teaching, advising, …• Building companies• Using my talents with technology• The outdoors
  4. 4. Agenda• User Definable• Flexible UI• Project / POC Goals• Application Specifics• Application Design• Database Specifics • ERD • Tables • Functions • Materialized views
  5. 5. 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?”
  6. 6. 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?
  7. 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. 8. 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
  9. 9. 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
  10. 10. 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.
  11. 11. 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
  12. 12. Political contributors in NJ• Contributors by party contributed to… 13
  13. 13. Other Visual SearchesAge – Education, Income
  14. 14. 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
  15. 15. ERD
  16. 16. Attribute Table• Attributes (fields) • Parent Attribute • Short Description • Text 1,2 • Long Description • Data 1,2 • Category • Number 1,2
  17. 17. 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
  18. 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. 19. Properties and People• Property • ID • Address • Phone, Cell • Valuation • Lat and Long• People Property • People ID • Property ID • Start and End Date
  20. 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. 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. 22. 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
  23. 23. Let’s Create a New Filter• Education of Too Youngs…• Color by education level• Include <18 year olds• Exclude other age categories• Save it
  24. 24. List of People Matching• Uses the same service as the map• Shows the details• Can be exported
  25. 25. Search• Person’s name• Municipality• Address• District
  26. 26. Finds People• Clicking View shows them on the map
  27. 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. 28. 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:" + + "," + CLUDE_LIST, sw.lng() + "," + + "," :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. 29. 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
  30. 30. 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…
  31. 31. Getting Started, then Other Mapping I’ve Done• Heat Maps• GeoSearch• Highlight and Visual Search• Test Scores within a Radius• Get Creative!
  32. 32. Google Map Integration• Easy integration Starts At: •• Simple Pushpins:
  33. 33. Heat Maps• A look at different neighborhood trends in home values
  34. 34. GeoSearch• Grouping of properties• Colorized and customizable
  35. 35. Highlight and Visual Search• Highlight it• Build your search, see it
  36. 36. Test Scores within a radius• Visual results
  37. 37. 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
  38. 38. Questions?
  39. 39. 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
  40. 40. Copyright Information• Neither InteliVideo, Rolta TUSC nor the author guarantee this document to be error-free. Please provide comments/questions to• InteliVideo, Rolta TUSC © 2012. This document cannot be reproduced without expressed written consent from an officer of Rolta or InteliVideo.