SlideShare una empresa de Scribd logo
1 de 15
Developing Commercial APEX
Applications
Doug Gault & Scott Spendolini
Enkitec
1
WELCOME
2
Doug Gault
! doug.gault@enkitec.com
! Using Oracle since 1988
! Versions 5.1b, 6, 7, 8, 9, 10, 11
! Focused on Web Technologies
! OWA, ‘PSP’, Web DB, HTML-DB, APEX
! Hotsos Product Development Director
! Co-Founded Sumneva
! Now part of Enkitec
! APEX PRACTICE DIRECTOR
! Focused on Providing World Class APEX Products,
Education and Services
3
! scott.spendolini@enkitec.com
! @sspendol
! Ex-Oracle Employee of 10 years
! Senior Product Manager for Oracle APEX
from 2002 through 2005
! Founded Sumner Technologies
in October 2005
! Co-Founded Sumneva in January 2010
! Joined Enkitec in June 2012
! Oracle Ace Director
! Co-Author, Pro Oracle Application Express
! Author, Secure APEX Development Best
Practices
! “Scott” on OTN Forums
Scott Spendolini
4
About Enkitec
! Oracle Platinum Partner
! Established in 2004
! Headquartered in Dallas, TX
! Locations throughout the US & EMEA
! Specialties include
! Exadata Implementations
! Development Services
! PL/SQL / Java / APEX
! DBA/Data Warehouse/RAC
! Business Intelligence
5
Agenda
! Overview
! Design
! Infrastructure
! Testing
! Deployment
! Summary
6
OVERVIEW
7
Disclaimer
! Almost 100% of the content in this session are
applicable to any type of APEX project -
commercial software or internal
8
Passion for APEX
! Combined 25 years of APEX experience
! Wanted to produce a product with APEX
! Knew that a subject matter expert was needed to
succeed
! A tool for APEX developers solved this problem
9
eSERT Origins
10
! Given the declarative nature of APEX, many
security vulnerabilities could be exposed by
inspecting the metadata
! Why not build an APEX application to evaluate the
security of other APEX applications?
Benefits
! Can adopt the APEX footprint
! No additional software or hardware
! Same database and operating system versions
! Tight integration with APEX
! Ease of distribution
11
DESIGN
12
Design
! Hands down the most important phase
! Need to spend ample time here and work out problems on
paper not in code
! Conceptual and feature design is just as
important as visual design
! Version 1 vs Version 2
! Core Functionality
! Asynchronous Execution & Collections
! APEX_ADMINISTRATOR_ROLE Role
13
User Interface Mockups
! Balsamic mockups is invaluable
! Issues with UI can be flushed out early and quickly
! Easier to get user
feedback as you can send
as PDF or image versus
installing software
14
User Interface
! Keep it simple
! Keep dependencies similar to that of APEX
! You have no control over when APEX will be upgraded
! If it can't be installed easily, it's not worth
including
! Test in all target browsers early and often
! IE will add days to project timeline and subtract years
from your life if you wait until the end
15
Dealing with IE
! Initially tried to have a single CSS file for all
browsers
! Quickly realized that was a bad idea
! Thus, created a specific
CSS for IE
! A little extra work on our
side to synchronize the
two, but ultimately a
better approach
16
PL/SQL
! All code of any length goes in a package
! Even a simple RETURN FALSE
! Benefits of this approach
! Centralized
! Easier to patch
! Single SQL script vs. entire APEX application
! Wrappable
! Upgrade from 4.1 -> 4.0
17
Tables & Views
! All tables accessed via views
! Allows for security and manageability
! Easier to patch
18
Page Zero
! Used as much as possible
! However, need to keep an eye on the number of
components placed here
19
Shared Components
! Use as much as possible
! All computations and processes referenced package calls
20
Shared Components
! Images, JS and CSS have to be shared components
! Easier to install and manage
! Can't assume file system access
! Helpful to include version in file names
! Prevents browser cache issues after upgrades
21
Supporting Objects
! Decided to have a split installation
! DB objects installed via SQL Plus as SYS
! Images, JS and CSS delivered as Apex supporting objects
! Gotcha: supporting object definitions need to be updated
if their corresponding shared component is changed
22
Versions
! Multiple Apex versions presents a challenge
! Initially thought few customers were using Apex 4.0
! “Your idea, although interesting, is irrelevant”
! “The answer to your question is not in the building”
! Survey proved otherwise
! Ideally this can be mitigated by having common database
objects
23
Database Support
! Piggyback on APEX-supported versions
! 10g R2+
! Exception was Oracle XE
24
INFRASTRUCTURE
25
Infrastructure Choices
26
! Source Code Control
! Shared Development
! Automated Builds
! Licensing
Source Code Control
27
! We were comfortable with subversion
! Fear of change? Nahhh!
! Didn’t want to manage our own
! Fear of commitment? Nahhh!
! Looked for hosted version control
! Several out there, but one caught our eye
! WWW.CODESPACES.COM
CodeSpaces
28
CUSTOM
CodeSpaces
! Custom “Small Team” Plan
! Fewer Users (6)
! Less Storage (1Gb)
! Unlimited Projects
! Unlimited Repositories
! $200 per year ($16 per Month)
! Flexibility was a big selling point.
29
SubVersion Clients
! Versions
30
! Cornerstone 2
! Both were
! Simple easy to use interface
! Allows “experts” to do what
they need to do
! Friendly to SVN Newbies
! Recommended
SubVersion Structure
! TRUNK
! All development happens
here
! Sub-directories created for
each type of object
! Included objects that were
to be loaded into the app as
Supporting Object scripts
! Application was exported and
checked in as a single
object.
31
SubVersion Structure
! Branches
! Reserved for Branches in the
source code line
! When you need to change the code
based on changing underlying
requirements
! We needed a code branch when
we worked with both APEX 4.0 &
4.1
32
SubVersion Structure
! Releases
! Only created after building
and testing a release
! Takes a snapshot of all
source that was released
! Would allow us to
! Recreate the release if necessary
! Create a Branch / Create a Patch
33
Shared Development
! We faced a number of challenges
! Needed a platform we could share and use to develop
collaboratively
! Disparate Locations (Texas & Virginia)
! No hosting capability of our own
! Small company, so cost was important
! Traditional APEX Hosting companies weren’t a good fit
! No access to Internal workspace
! No access to SYS/SYSTEM users
34
Shared Development
! Amazon Web Services
! Inexpensive
! Easy to stand up
! AMI’s already existed with OEL and Oracle Database
! Full control of the machine
! DB Version
! APEX Version
! All the right access
! Safe from ourselves
! Available from everywhere
! Create our own AMI’s
35
Shared Development
! Database Version Choice
! Needed to make sure what we developed would work
across all versions
! Looked at XE
! Found issues on 10XE with some of the SQL syntax that we were using
! Settled on Oracle 10g SE as base development platform
! Lowest common denominator
! Lowest cost to the customer
! What we wrote here would work on Enterprise Edition
! Fairly confident that things would port seamlessly to 11+
36
Automated Builds
! Needed a way to create a “Release” of the
software
! Install testing, functional testing, actual release
! Manual method would get very tedious very
quickly
! Knew from previous experience that Apache ANT
could automate this type of thing
37
Automated Builds
! Created an ANT build.xml script allowing us to
! Dynamically create the working directory
! Check the most recent version of code out of SVN
! Replace @VERSION@ variables in code with a dynamic
versions number passed on the command line
! Choose to WRAP Oracle PL/SQL code
! (or not for dev builds)
! Zip the files into a “Release”
! Clean up the working directory
38
Automated Builds
! Final Build Script had 3 main targets
! RELEASE
! Create a final wrapped and zipped release
! NOWRAP
! Create a full release with unwrapped PL/SQL
! CLONE
! Create a Development version that doesn’t replace the @VERSION@
Tags
39
ant <Target> -D sv_version=020100
Product Licensing
! Licensing requirements were unique
! We understood that product licensing can almost always
be subverted. It’s there to keep honest people honest.
! Multiple license types
! SITE
! WORKSPACE
! APPLICATION
! Loads of licensing software out there, but nothing that
would really work for APEX
! Ended up having to rolling our own in PL/SQL
40
Product Licensing
! Licensing consists of a Customer Key and a
License Key
! Customer Key - Hashes information about the server,
GUID of the product and other info based on the license
type
! License Key - Hashes information that matches the
Customer Key as well as Expiration Date and Licensed
Company
41
Product Licensing
! Two sets of code
! Application Side
! Creates and encode Customer Key
! Receives, interprets and validates License Key
! Product Owner Side
! Receives and validates Customer Key
! Matches Customer Key to a valid license in our back end system
! Created and encodes License Key, saves it and presents to user
42
Application Side
43
Product Owner Side
44
Product Licensing Benefits
! Allows us to
! scale product use to the need of the end user
! quickly create “Trial” keys that expire after a given
amount of time
! limit the use of the product to a specific licensed server
regardless of the level of license purchased
45
TESTING
46
Product Testing
! Testing is hard and no one likes to do it
! It covers way more than you might think
! Functional Testing
! Installation Testing
! Upgrade Testing
! Platform Testing
! Do everything you can to make it
! Easy
! Repeatable
! Full Coverage
47
Product Testing
! We chose to use Virtual Machines as our testing
platform
! Self Contained “Sandbox”
! Easy to copy a fully set up system
! Easy access to multiple platforms (OS, DB, etc)
! Snapshots
! Makes rollbacks as easy as a button click
! Snapshots of successful installs/upgrades provide the basis for the next
generation
! Allows you to setup and test “edge-cases” and keep those
around for future tests.
48
Product Testing
! Identified and mitigated several potential
problems by having the wide variety of platforms
available.
! Issue with install script on Windows based SQL*PLUS
! Issue with 10g and positional parameters in a function
when used in a SQL Query
! Lack of support for certain functionality in Oracle XE
49
DEPLOYMENT
50
Deployment
! Decided early on to mirror the APEX install & upgrade
scheme
! Allows users to upgrade SAFELY in place
! Allows rollback in the odd case of a failed installation
! Multi Part Install
! Database Schemas and Objects
! SV_SERT_XXXXXX
! SV_SERT_APEX
! SV_SERT_APEX_ALL
! APEX Application
! Application per Workspace
! Application Cross Workspace
51
Deployment
! Database Schemas and Objects
! Modeled on the APEX install Scripts
! SQL Script run as SYS
! Checks pre-requisites
! Creates users
! Creates Objects
! Allows DBA’s to choose underlying tablespace(s) and features/grants to
install
! Future versions will
! Migrate data from previous working schema to new working schema
52
Deployment
! APEX Application
! Per Workspace
! Associate the SV_SERT_APEX schema as a Parse As Schema for a
workspace
! Install the eSERT APEX Application in the workspace where the Apps to
be evaluated are
! Cross Workspace (4.1+ only)
! Requires APEX_ADMINISTRATOR_ROLE to be granted to parse as schema
! Associate the SV_SERT_APEX_ALL schema as a Parse As Schema for a
workspace
! Install the eSERT APEX Application in the workspace
! Ability to evaluate all applications across all workspaces
53
Deployment
! Used Supporting Objects quite heavily for images,
JavaScripts, CSS
! Didn’t want customers to have to manually copy these
items to their web server
! Couldn’t adequately script this as everyone’s install bay
be different
! However it was a bit of a challenge
! No “Relationship” between shared components and
supporting objects
! Had to keep deleting & Re-creating them
54
SUMMARY
55
Summary
56
! Developing for APEX is not too unique - but there
are a number of unique benefits
! Shorter development cycles
! Ability to use built-in components to save time
! Charts, IRs, User Interface
! Code is easy to write; difficult to maintain
! Thus, less is more
! “The answer to your question is not in the
building”
! Customer feedback is critical
Download
! This and all other Enkitec presentations can be
downloaded for free from:
http://enkitec.com/presentations
57
http://www.enkitec.com
58

Más contenido relacionado

La actualidad más candente

Office deployment o365ug_nl_mrt_2013
Office deployment o365ug_nl_mrt_2013Office deployment o365ug_nl_mrt_2013
Office deployment o365ug_nl_mrt_2013Jasper Kraak
 
Continuous Integration With Jenkins
Continuous Integration With JenkinsContinuous Integration With Jenkins
Continuous Integration With JenkinsEdureka!
 
Learn Selenium - Online Guide
Learn Selenium - Online GuideLearn Selenium - Online Guide
Learn Selenium - Online Guidebigspire
 
Whats new in was liberty security and cloud readiness
Whats new in was liberty   security and cloud readinessWhats new in was liberty   security and cloud readiness
Whats new in was liberty security and cloud readinesssflynn073
 
Innovations in Sencha Tooling and Framework
Innovations in Sencha Tooling and FrameworkInnovations in Sencha Tooling and Framework
Innovations in Sencha Tooling and FrameworkSandeep Adwankar
 
CA_Plex_SupportForModernizingIBM_DB2_for_i
CA_Plex_SupportForModernizingIBM_DB2_for_iCA_Plex_SupportForModernizingIBM_DB2_for_i
CA_Plex_SupportForModernizingIBM_DB2_for_iGeorge Jeffcock
 
Build Mission Critical Applications On The Microsoft Platform Using Eclipse J...
Build Mission Critical Applications On The Microsoft Platform Using Eclipse J...Build Mission Critical Applications On The Microsoft Platform Using Eclipse J...
Build Mission Critical Applications On The Microsoft Platform Using Eclipse J...rsnarayanan
 
Release and-dependency-management memphis python
Release and-dependency-management memphis pythonRelease and-dependency-management memphis python
Release and-dependency-management memphis pythonJoe Ferguson
 
Spring Book – Chapter 1 – Introduction
Spring Book – Chapter 1 – IntroductionSpring Book – Chapter 1 – Introduction
Spring Book – Chapter 1 – IntroductionTomcy John
 
Visual Studio 2015 - Lançamento está próximo
Visual Studio 2015 - Lançamento está próximoVisual Studio 2015 - Lançamento está próximo
Visual Studio 2015 - Lançamento está próximoDaniel Semedo
 
Best Practices Configuring And Developing Share Point Solutions
Best Practices Configuring And Developing Share Point SolutionsBest Practices Configuring And Developing Share Point Solutions
Best Practices Configuring And Developing Share Point SolutionsAlexander Meijers
 
Build Applications on the Microsoft Platform Using Eclipse, Java, Ruby and PHP!
Build Applications on the Microsoft Platform Using Eclipse, Java, Ruby and PHP!Build Applications on the Microsoft Platform Using Eclipse, Java, Ruby and PHP!
Build Applications on the Microsoft Platform Using Eclipse, Java, Ruby and PHP!goodfriday
 
Flex update - August, 2012
Flex update - August, 2012Flex update - August, 2012
Flex update - August, 2012Alan Greenblatt
 
Steve Solomon - iCAthon 2016 and CA Plex 721 Final
Steve Solomon - iCAthon 2016 and CA Plex 721 FinalSteve Solomon - iCAthon 2016 and CA Plex 721 Final
Steve Solomon - iCAthon 2016 and CA Plex 721 FinalJohn Zozzaro
 
Techniques and Tools to Improve the Salesforce Development Cycle
Techniques and Tools to Improve the Salesforce Development CycleTechniques and Tools to Improve the Salesforce Development Cycle
Techniques and Tools to Improve the Salesforce Development CycleSalesforce Developers
 
jimnresumesse
jimnresumessejimnresumesse
jimnresumesseJim Nye
 
Eclipse tools for deployment to was liberty profile in Bluemix
Eclipse tools for deployment to was liberty profile in BluemixEclipse tools for deployment to was liberty profile in Bluemix
Eclipse tools for deployment to was liberty profile in BluemixEclipse Day India
 

La actualidad más candente (19)

Office deployment o365ug_nl_mrt_2013
Office deployment o365ug_nl_mrt_2013Office deployment o365ug_nl_mrt_2013
Office deployment o365ug_nl_mrt_2013
 
Continuous Integration With Jenkins
Continuous Integration With JenkinsContinuous Integration With Jenkins
Continuous Integration With Jenkins
 
Learn Selenium - Online Guide
Learn Selenium - Online GuideLearn Selenium - Online Guide
Learn Selenium - Online Guide
 
Whats new in was liberty security and cloud readiness
Whats new in was liberty   security and cloud readinessWhats new in was liberty   security and cloud readiness
Whats new in was liberty security and cloud readiness
 
Innovations in Sencha Tooling and Framework
Innovations in Sencha Tooling and FrameworkInnovations in Sencha Tooling and Framework
Innovations in Sencha Tooling and Framework
 
Flex and Java
Flex and JavaFlex and Java
Flex and Java
 
CA_Plex_SupportForModernizingIBM_DB2_for_i
CA_Plex_SupportForModernizingIBM_DB2_for_iCA_Plex_SupportForModernizingIBM_DB2_for_i
CA_Plex_SupportForModernizingIBM_DB2_for_i
 
Build Mission Critical Applications On The Microsoft Platform Using Eclipse J...
Build Mission Critical Applications On The Microsoft Platform Using Eclipse J...Build Mission Critical Applications On The Microsoft Platform Using Eclipse J...
Build Mission Critical Applications On The Microsoft Platform Using Eclipse J...
 
Release and-dependency-management memphis python
Release and-dependency-management memphis pythonRelease and-dependency-management memphis python
Release and-dependency-management memphis python
 
Spring Book – Chapter 1 – Introduction
Spring Book – Chapter 1 – IntroductionSpring Book – Chapter 1 – Introduction
Spring Book – Chapter 1 – Introduction
 
Visual Studio 2015 - Lançamento está próximo
Visual Studio 2015 - Lançamento está próximoVisual Studio 2015 - Lançamento está próximo
Visual Studio 2015 - Lançamento está próximo
 
Best Practices Configuring And Developing Share Point Solutions
Best Practices Configuring And Developing Share Point SolutionsBest Practices Configuring And Developing Share Point Solutions
Best Practices Configuring And Developing Share Point Solutions
 
Build Applications on the Microsoft Platform Using Eclipse, Java, Ruby and PHP!
Build Applications on the Microsoft Platform Using Eclipse, Java, Ruby and PHP!Build Applications on the Microsoft Platform Using Eclipse, Java, Ruby and PHP!
Build Applications on the Microsoft Platform Using Eclipse, Java, Ruby and PHP!
 
Flex update - August, 2012
Flex update - August, 2012Flex update - August, 2012
Flex update - August, 2012
 
Steve Solomon - iCAthon 2016 and CA Plex 721 Final
Steve Solomon - iCAthon 2016 and CA Plex 721 FinalSteve Solomon - iCAthon 2016 and CA Plex 721 Final
Steve Solomon - iCAthon 2016 and CA Plex 721 Final
 
Techniques and Tools to Improve the Salesforce Development Cycle
Techniques and Tools to Improve the Salesforce Development CycleTechniques and Tools to Improve the Salesforce Development Cycle
Techniques and Tools to Improve the Salesforce Development Cycle
 
jimnresumesse
jimnresumessejimnresumesse
jimnresumesse
 
Eclipse tools for deployment to was liberty profile in Bluemix
Eclipse tools for deployment to was liberty profile in BluemixEclipse tools for deployment to was liberty profile in Bluemix
Eclipse tools for deployment to was liberty profile in Bluemix
 
Java vs .Net
Java vs .NetJava vs .Net
Java vs .Net
 

Similar a Building Commercial Applications with Oracle Applications Express by Scott Spendolini

APEX Application Lifecycle and Deployment 20220714.pdf
APEX Application Lifecycle and Deployment 20220714.pdfAPEX Application Lifecycle and Deployment 20220714.pdf
APEX Application Lifecycle and Deployment 20220714.pdfRichard Martens
 
Html5 workshop part 1
Html5 workshop part 1Html5 workshop part 1
Html5 workshop part 1NAILBITER
 
Flash Catalyst at Flex Camp Orange County
Flash Catalyst at Flex Camp Orange CountyFlash Catalyst at Flex Camp Orange County
Flash Catalyst at Flex Camp Orange CountyJuan Sanchez
 
Top 8 Reasons ASP.NET Core is the Best Framework for Web Application Developm...
Top 8 Reasons ASP.NET Core is the Best Framework for Web Application Developm...Top 8 Reasons ASP.NET Core is the Best Framework for Web Application Developm...
Top 8 Reasons ASP.NET Core is the Best Framework for Web Application Developm...WDP Technologies
 
Apache Flex: Overview
Apache Flex: OverviewApache Flex: Overview
Apache Flex: OverviewTarun Telang
 
DBD 2414 - Iterative Web-Based Designer for Software Defined Environments (In...
DBD 2414 - Iterative Web-Based Designer for Software Defined Environments (In...DBD 2414 - Iterative Web-Based Designer for Software Defined Environments (In...
DBD 2414 - Iterative Web-Based Designer for Software Defined Environments (In...Michael Elder
 
AIR - Framework ( Cairngorm and Parsley )
AIR - Framework ( Cairngorm and Parsley )AIR - Framework ( Cairngorm and Parsley )
AIR - Framework ( Cairngorm and Parsley )senthil0809
 
Pat Farrell, Migrating Legacy Documentation to XML and DITA
Pat Farrell, Migrating Legacy Documentation to XML and DITAPat Farrell, Migrating Legacy Documentation to XML and DITA
Pat Farrell, Migrating Legacy Documentation to XML and DITAfarrelldoc
 
Eclipse Che - A Revolutionary IDE for Distributed & Mainframe Development
Eclipse Che - A Revolutionary IDE for Distributed & Mainframe DevelopmentEclipse Che - A Revolutionary IDE for Distributed & Mainframe Development
Eclipse Che - A Revolutionary IDE for Distributed & Mainframe DevelopmentDevOps.com
 
Experiences using CouchDB inside Microsoft's Azure team
Experiences using CouchDB inside Microsoft's Azure teamExperiences using CouchDB inside Microsoft's Azure team
Experiences using CouchDB inside Microsoft's Azure teamBrian Benz
 
Oracle apex presentration
Oracle apex presentrationOracle apex presentration
Oracle apex presentrationABM TECHNOLOGY
 
Business model driven cloud adoption - what NI is doing in the cloud
Business model driven cloud adoption -  what  NI is doing in the cloudBusiness model driven cloud adoption -  what  NI is doing in the cloud
Business model driven cloud adoption - what NI is doing in the cloudErnest Mueller
 
Asp.net Web Development.pdf
Asp.net Web Development.pdfAsp.net Web Development.pdf
Asp.net Web Development.pdfAbanti Aazmin
 
Everything PHP Developers Need To Be Productive
Everything PHP Developers Need To Be ProductiveEverything PHP Developers Need To Be Productive
Everything PHP Developers Need To Be ProductiveMichael Findling
 
Enterprise Hybrid Feasibility Analysis
Enterprise Hybrid Feasibility AnalysisEnterprise Hybrid Feasibility Analysis
Enterprise Hybrid Feasibility AnalysisLawrence Nyakiso
 
Cross-Platform Development using Angulr JS in Visual Studio
Cross-Platform Development using Angulr JS in Visual StudioCross-Platform Development using Angulr JS in Visual Studio
Cross-Platform Development using Angulr JS in Visual StudioMizanur Sarker
 
API Description Languages: Which Is The Right One For Me?
 API Description Languages: Which Is The Right One For Me?  API Description Languages: Which Is The Right One For Me?
API Description Languages: Which Is The Right One For Me? ProgrammableWeb
 
Asp.net Web Development.pdf
Asp.net Web Development.pdfAsp.net Web Development.pdf
Asp.net Web Development.pdfSonia Simi
 
Best software development tools in 2021
Best software development tools in 2021Best software development tools in 2021
Best software development tools in 2021Samaritan InfoTech
 
Boilerplates: Step up your Web Development Process
Boilerplates: Step up your Web Development ProcessBoilerplates: Step up your Web Development Process
Boilerplates: Step up your Web Development ProcessFibonalabs
 

Similar a Building Commercial Applications with Oracle Applications Express by Scott Spendolini (20)

APEX Application Lifecycle and Deployment 20220714.pdf
APEX Application Lifecycle and Deployment 20220714.pdfAPEX Application Lifecycle and Deployment 20220714.pdf
APEX Application Lifecycle and Deployment 20220714.pdf
 
Html5 workshop part 1
Html5 workshop part 1Html5 workshop part 1
Html5 workshop part 1
 
Flash Catalyst at Flex Camp Orange County
Flash Catalyst at Flex Camp Orange CountyFlash Catalyst at Flex Camp Orange County
Flash Catalyst at Flex Camp Orange County
 
Top 8 Reasons ASP.NET Core is the Best Framework for Web Application Developm...
Top 8 Reasons ASP.NET Core is the Best Framework for Web Application Developm...Top 8 Reasons ASP.NET Core is the Best Framework for Web Application Developm...
Top 8 Reasons ASP.NET Core is the Best Framework for Web Application Developm...
 
Apache Flex: Overview
Apache Flex: OverviewApache Flex: Overview
Apache Flex: Overview
 
DBD 2414 - Iterative Web-Based Designer for Software Defined Environments (In...
DBD 2414 - Iterative Web-Based Designer for Software Defined Environments (In...DBD 2414 - Iterative Web-Based Designer for Software Defined Environments (In...
DBD 2414 - Iterative Web-Based Designer for Software Defined Environments (In...
 
AIR - Framework ( Cairngorm and Parsley )
AIR - Framework ( Cairngorm and Parsley )AIR - Framework ( Cairngorm and Parsley )
AIR - Framework ( Cairngorm and Parsley )
 
Pat Farrell, Migrating Legacy Documentation to XML and DITA
Pat Farrell, Migrating Legacy Documentation to XML and DITAPat Farrell, Migrating Legacy Documentation to XML and DITA
Pat Farrell, Migrating Legacy Documentation to XML and DITA
 
Eclipse Che - A Revolutionary IDE for Distributed & Mainframe Development
Eclipse Che - A Revolutionary IDE for Distributed & Mainframe DevelopmentEclipse Che - A Revolutionary IDE for Distributed & Mainframe Development
Eclipse Che - A Revolutionary IDE for Distributed & Mainframe Development
 
Experiences using CouchDB inside Microsoft's Azure team
Experiences using CouchDB inside Microsoft's Azure teamExperiences using CouchDB inside Microsoft's Azure team
Experiences using CouchDB inside Microsoft's Azure team
 
Oracle apex presentration
Oracle apex presentrationOracle apex presentration
Oracle apex presentration
 
Business model driven cloud adoption - what NI is doing in the cloud
Business model driven cloud adoption -  what  NI is doing in the cloudBusiness model driven cloud adoption -  what  NI is doing in the cloud
Business model driven cloud adoption - what NI is doing in the cloud
 
Asp.net Web Development.pdf
Asp.net Web Development.pdfAsp.net Web Development.pdf
Asp.net Web Development.pdf
 
Everything PHP Developers Need To Be Productive
Everything PHP Developers Need To Be ProductiveEverything PHP Developers Need To Be Productive
Everything PHP Developers Need To Be Productive
 
Enterprise Hybrid Feasibility Analysis
Enterprise Hybrid Feasibility AnalysisEnterprise Hybrid Feasibility Analysis
Enterprise Hybrid Feasibility Analysis
 
Cross-Platform Development using Angulr JS in Visual Studio
Cross-Platform Development using Angulr JS in Visual StudioCross-Platform Development using Angulr JS in Visual Studio
Cross-Platform Development using Angulr JS in Visual Studio
 
API Description Languages: Which Is The Right One For Me?
 API Description Languages: Which Is The Right One For Me?  API Description Languages: Which Is The Right One For Me?
API Description Languages: Which Is The Right One For Me?
 
Asp.net Web Development.pdf
Asp.net Web Development.pdfAsp.net Web Development.pdf
Asp.net Web Development.pdf
 
Best software development tools in 2021
Best software development tools in 2021Best software development tools in 2021
Best software development tools in 2021
 
Boilerplates: Step up your Web Development Process
Boilerplates: Step up your Web Development ProcessBoilerplates: Step up your Web Development Process
Boilerplates: Step up your Web Development Process
 

Más de Enkitec

Using Angular JS in APEX
Using Angular JS in APEXUsing Angular JS in APEX
Using Angular JS in APEXEnkitec
 
Controlling execution plans 2014
Controlling execution plans   2014Controlling execution plans   2014
Controlling execution plans 2014Enkitec
 
Engineered Systems: Environment-as-a-Service Demonstration
Engineered Systems: Environment-as-a-Service DemonstrationEngineered Systems: Environment-as-a-Service Demonstration
Engineered Systems: Environment-as-a-Service DemonstrationEnkitec
 
Think Exa!
Think Exa!Think Exa!
Think Exa!Enkitec
 
In Memory Database In Action by Tanel Poder and Kerry Osborne
In Memory Database In Action by Tanel Poder and Kerry OsborneIn Memory Database In Action by Tanel Poder and Kerry Osborne
In Memory Database In Action by Tanel Poder and Kerry OsborneEnkitec
 
In Search of Plan Stability - Part 1
In Search of Plan Stability - Part 1In Search of Plan Stability - Part 1
In Search of Plan Stability - Part 1Enkitec
 
Mini Session - Using GDB for Profiling
Mini Session - Using GDB for ProfilingMini Session - Using GDB for Profiling
Mini Session - Using GDB for ProfilingEnkitec
 
Profiling Oracle with GDB
Profiling Oracle with GDBProfiling Oracle with GDB
Profiling Oracle with GDBEnkitec
 
Oracle Performance Tools of the Trade
Oracle Performance Tools of the TradeOracle Performance Tools of the Trade
Oracle Performance Tools of the TradeEnkitec
 
Oracle Performance Tuning Fundamentals
Oracle Performance Tuning FundamentalsOracle Performance Tuning Fundamentals
Oracle Performance Tuning FundamentalsEnkitec
 
SQL Tuning Tools of the Trade
SQL Tuning Tools of the TradeSQL Tuning Tools of the Trade
SQL Tuning Tools of the TradeEnkitec
 
Using SQL Plan Management (SPM) to Balance Plan Flexibility and Plan Stability
Using SQL Plan Management (SPM) to Balance Plan Flexibility and Plan StabilityUsing SQL Plan Management (SPM) to Balance Plan Flexibility and Plan Stability
Using SQL Plan Management (SPM) to Balance Plan Flexibility and Plan StabilityEnkitec
 
Oracle GoldenGate Architecture Performance
Oracle GoldenGate Architecture PerformanceOracle GoldenGate Architecture Performance
Oracle GoldenGate Architecture PerformanceEnkitec
 
OGG Architecture Performance
OGG Architecture PerformanceOGG Architecture Performance
OGG Architecture PerformanceEnkitec
 
APEX Security Primer
APEX Security PrimerAPEX Security Primer
APEX Security PrimerEnkitec
 
How Many Ways Can I Manage Oracle GoldenGate?
How Many Ways Can I Manage Oracle GoldenGate?How Many Ways Can I Manage Oracle GoldenGate?
How Many Ways Can I Manage Oracle GoldenGate?Enkitec
 
Understanding how is that adaptive cursor sharing (acs) produces multiple opt...
Understanding how is that adaptive cursor sharing (acs) produces multiple opt...Understanding how is that adaptive cursor sharing (acs) produces multiple opt...
Understanding how is that adaptive cursor sharing (acs) produces multiple opt...Enkitec
 
Sql tuning made easier with sqltxplain (sqlt)
Sql tuning made easier with sqltxplain (sqlt)Sql tuning made easier with sqltxplain (sqlt)
Sql tuning made easier with sqltxplain (sqlt)Enkitec
 
Profiling the logwriter and database writer
Profiling the logwriter and database writerProfiling the logwriter and database writer
Profiling the logwriter and database writerEnkitec
 
Fatkulin hotsos 2014
Fatkulin hotsos 2014Fatkulin hotsos 2014
Fatkulin hotsos 2014Enkitec
 

Más de Enkitec (20)

Using Angular JS in APEX
Using Angular JS in APEXUsing Angular JS in APEX
Using Angular JS in APEX
 
Controlling execution plans 2014
Controlling execution plans   2014Controlling execution plans   2014
Controlling execution plans 2014
 
Engineered Systems: Environment-as-a-Service Demonstration
Engineered Systems: Environment-as-a-Service DemonstrationEngineered Systems: Environment-as-a-Service Demonstration
Engineered Systems: Environment-as-a-Service Demonstration
 
Think Exa!
Think Exa!Think Exa!
Think Exa!
 
In Memory Database In Action by Tanel Poder and Kerry Osborne
In Memory Database In Action by Tanel Poder and Kerry OsborneIn Memory Database In Action by Tanel Poder and Kerry Osborne
In Memory Database In Action by Tanel Poder and Kerry Osborne
 
In Search of Plan Stability - Part 1
In Search of Plan Stability - Part 1In Search of Plan Stability - Part 1
In Search of Plan Stability - Part 1
 
Mini Session - Using GDB for Profiling
Mini Session - Using GDB for ProfilingMini Session - Using GDB for Profiling
Mini Session - Using GDB for Profiling
 
Profiling Oracle with GDB
Profiling Oracle with GDBProfiling Oracle with GDB
Profiling Oracle with GDB
 
Oracle Performance Tools of the Trade
Oracle Performance Tools of the TradeOracle Performance Tools of the Trade
Oracle Performance Tools of the Trade
 
Oracle Performance Tuning Fundamentals
Oracle Performance Tuning FundamentalsOracle Performance Tuning Fundamentals
Oracle Performance Tuning Fundamentals
 
SQL Tuning Tools of the Trade
SQL Tuning Tools of the TradeSQL Tuning Tools of the Trade
SQL Tuning Tools of the Trade
 
Using SQL Plan Management (SPM) to Balance Plan Flexibility and Plan Stability
Using SQL Plan Management (SPM) to Balance Plan Flexibility and Plan StabilityUsing SQL Plan Management (SPM) to Balance Plan Flexibility and Plan Stability
Using SQL Plan Management (SPM) to Balance Plan Flexibility and Plan Stability
 
Oracle GoldenGate Architecture Performance
Oracle GoldenGate Architecture PerformanceOracle GoldenGate Architecture Performance
Oracle GoldenGate Architecture Performance
 
OGG Architecture Performance
OGG Architecture PerformanceOGG Architecture Performance
OGG Architecture Performance
 
APEX Security Primer
APEX Security PrimerAPEX Security Primer
APEX Security Primer
 
How Many Ways Can I Manage Oracle GoldenGate?
How Many Ways Can I Manage Oracle GoldenGate?How Many Ways Can I Manage Oracle GoldenGate?
How Many Ways Can I Manage Oracle GoldenGate?
 
Understanding how is that adaptive cursor sharing (acs) produces multiple opt...
Understanding how is that adaptive cursor sharing (acs) produces multiple opt...Understanding how is that adaptive cursor sharing (acs) produces multiple opt...
Understanding how is that adaptive cursor sharing (acs) produces multiple opt...
 
Sql tuning made easier with sqltxplain (sqlt)
Sql tuning made easier with sqltxplain (sqlt)Sql tuning made easier with sqltxplain (sqlt)
Sql tuning made easier with sqltxplain (sqlt)
 
Profiling the logwriter and database writer
Profiling the logwriter and database writerProfiling the logwriter and database writer
Profiling the logwriter and database writer
 
Fatkulin hotsos 2014
Fatkulin hotsos 2014Fatkulin hotsos 2014
Fatkulin hotsos 2014
 

Último

Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxLoriGlavin3
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024Stephanie Beckett
 
What is Artificial Intelligence?????????
What is Artificial Intelligence?????????What is Artificial Intelligence?????????
What is Artificial Intelligence?????????blackmambaettijean
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxhariprasad279825
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024Lonnie McRorey
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek SchlawackFwdays
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Mark Simos
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionDilum Bandara
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brandgvaughan
 
Generative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersGenerative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersRaghuram Pandurangan
 
Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...Rick Flair
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.Curtis Poe
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenHervé Boutemy
 
Time Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsTime Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsNathaniel Shimoni
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxLoriGlavin3
 
unit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptxunit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptxBkGupta21
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfAddepto
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024Lorenzo Miniero
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 

Último (20)

Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024
 
What is Artificial Intelligence?????????
What is Artificial Intelligence?????????What is Artificial Intelligence?????????
What is Artificial Intelligence?????????
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptx
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An Introduction
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brand
 
Generative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersGenerative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information Developers
 
Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache Maven
 
Time Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsTime Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directions
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
 
unit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptxunit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptx
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdf
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 

Building Commercial Applications with Oracle Applications Express by Scott Spendolini

  • 1. Developing Commercial APEX Applications Doug Gault & Scott Spendolini Enkitec 1 WELCOME 2 Doug Gault ! doug.gault@enkitec.com ! Using Oracle since 1988 ! Versions 5.1b, 6, 7, 8, 9, 10, 11 ! Focused on Web Technologies ! OWA, ‘PSP’, Web DB, HTML-DB, APEX ! Hotsos Product Development Director ! Co-Founded Sumneva ! Now part of Enkitec ! APEX PRACTICE DIRECTOR ! Focused on Providing World Class APEX Products, Education and Services 3 ! scott.spendolini@enkitec.com ! @sspendol ! Ex-Oracle Employee of 10 years ! Senior Product Manager for Oracle APEX from 2002 through 2005 ! Founded Sumner Technologies in October 2005 ! Co-Founded Sumneva in January 2010 ! Joined Enkitec in June 2012 ! Oracle Ace Director ! Co-Author, Pro Oracle Application Express ! Author, Secure APEX Development Best Practices ! “Scott” on OTN Forums Scott Spendolini 4
  • 2. About Enkitec ! Oracle Platinum Partner ! Established in 2004 ! Headquartered in Dallas, TX ! Locations throughout the US & EMEA ! Specialties include ! Exadata Implementations ! Development Services ! PL/SQL / Java / APEX ! DBA/Data Warehouse/RAC ! Business Intelligence 5 Agenda ! Overview ! Design ! Infrastructure ! Testing ! Deployment ! Summary 6 OVERVIEW 7 Disclaimer ! Almost 100% of the content in this session are applicable to any type of APEX project - commercial software or internal 8
  • 3. Passion for APEX ! Combined 25 years of APEX experience ! Wanted to produce a product with APEX ! Knew that a subject matter expert was needed to succeed ! A tool for APEX developers solved this problem 9 eSERT Origins 10 ! Given the declarative nature of APEX, many security vulnerabilities could be exposed by inspecting the metadata ! Why not build an APEX application to evaluate the security of other APEX applications? Benefits ! Can adopt the APEX footprint ! No additional software or hardware ! Same database and operating system versions ! Tight integration with APEX ! Ease of distribution 11 DESIGN 12
  • 4. Design ! Hands down the most important phase ! Need to spend ample time here and work out problems on paper not in code ! Conceptual and feature design is just as important as visual design ! Version 1 vs Version 2 ! Core Functionality ! Asynchronous Execution & Collections ! APEX_ADMINISTRATOR_ROLE Role 13 User Interface Mockups ! Balsamic mockups is invaluable ! Issues with UI can be flushed out early and quickly ! Easier to get user feedback as you can send as PDF or image versus installing software 14 User Interface ! Keep it simple ! Keep dependencies similar to that of APEX ! You have no control over when APEX will be upgraded ! If it can't be installed easily, it's not worth including ! Test in all target browsers early and often ! IE will add days to project timeline and subtract years from your life if you wait until the end 15 Dealing with IE ! Initially tried to have a single CSS file for all browsers ! Quickly realized that was a bad idea ! Thus, created a specific CSS for IE ! A little extra work on our side to synchronize the two, but ultimately a better approach 16
  • 5. PL/SQL ! All code of any length goes in a package ! Even a simple RETURN FALSE ! Benefits of this approach ! Centralized ! Easier to patch ! Single SQL script vs. entire APEX application ! Wrappable ! Upgrade from 4.1 -> 4.0 17 Tables & Views ! All tables accessed via views ! Allows for security and manageability ! Easier to patch 18 Page Zero ! Used as much as possible ! However, need to keep an eye on the number of components placed here 19 Shared Components ! Use as much as possible ! All computations and processes referenced package calls 20
  • 6. Shared Components ! Images, JS and CSS have to be shared components ! Easier to install and manage ! Can't assume file system access ! Helpful to include version in file names ! Prevents browser cache issues after upgrades 21 Supporting Objects ! Decided to have a split installation ! DB objects installed via SQL Plus as SYS ! Images, JS and CSS delivered as Apex supporting objects ! Gotcha: supporting object definitions need to be updated if their corresponding shared component is changed 22 Versions ! Multiple Apex versions presents a challenge ! Initially thought few customers were using Apex 4.0 ! “Your idea, although interesting, is irrelevant” ! “The answer to your question is not in the building” ! Survey proved otherwise ! Ideally this can be mitigated by having common database objects 23 Database Support ! Piggyback on APEX-supported versions ! 10g R2+ ! Exception was Oracle XE 24
  • 7. INFRASTRUCTURE 25 Infrastructure Choices 26 ! Source Code Control ! Shared Development ! Automated Builds ! Licensing Source Code Control 27 ! We were comfortable with subversion ! Fear of change? Nahhh! ! Didn’t want to manage our own ! Fear of commitment? Nahhh! ! Looked for hosted version control ! Several out there, but one caught our eye ! WWW.CODESPACES.COM CodeSpaces 28 CUSTOM
  • 8. CodeSpaces ! Custom “Small Team” Plan ! Fewer Users (6) ! Less Storage (1Gb) ! Unlimited Projects ! Unlimited Repositories ! $200 per year ($16 per Month) ! Flexibility was a big selling point. 29 SubVersion Clients ! Versions 30 ! Cornerstone 2 ! Both were ! Simple easy to use interface ! Allows “experts” to do what they need to do ! Friendly to SVN Newbies ! Recommended SubVersion Structure ! TRUNK ! All development happens here ! Sub-directories created for each type of object ! Included objects that were to be loaded into the app as Supporting Object scripts ! Application was exported and checked in as a single object. 31 SubVersion Structure ! Branches ! Reserved for Branches in the source code line ! When you need to change the code based on changing underlying requirements ! We needed a code branch when we worked with both APEX 4.0 & 4.1 32
  • 9. SubVersion Structure ! Releases ! Only created after building and testing a release ! Takes a snapshot of all source that was released ! Would allow us to ! Recreate the release if necessary ! Create a Branch / Create a Patch 33 Shared Development ! We faced a number of challenges ! Needed a platform we could share and use to develop collaboratively ! Disparate Locations (Texas & Virginia) ! No hosting capability of our own ! Small company, so cost was important ! Traditional APEX Hosting companies weren’t a good fit ! No access to Internal workspace ! No access to SYS/SYSTEM users 34 Shared Development ! Amazon Web Services ! Inexpensive ! Easy to stand up ! AMI’s already existed with OEL and Oracle Database ! Full control of the machine ! DB Version ! APEX Version ! All the right access ! Safe from ourselves ! Available from everywhere ! Create our own AMI’s 35 Shared Development ! Database Version Choice ! Needed to make sure what we developed would work across all versions ! Looked at XE ! Found issues on 10XE with some of the SQL syntax that we were using ! Settled on Oracle 10g SE as base development platform ! Lowest common denominator ! Lowest cost to the customer ! What we wrote here would work on Enterprise Edition ! Fairly confident that things would port seamlessly to 11+ 36
  • 10. Automated Builds ! Needed a way to create a “Release” of the software ! Install testing, functional testing, actual release ! Manual method would get very tedious very quickly ! Knew from previous experience that Apache ANT could automate this type of thing 37 Automated Builds ! Created an ANT build.xml script allowing us to ! Dynamically create the working directory ! Check the most recent version of code out of SVN ! Replace @VERSION@ variables in code with a dynamic versions number passed on the command line ! Choose to WRAP Oracle PL/SQL code ! (or not for dev builds) ! Zip the files into a “Release” ! Clean up the working directory 38 Automated Builds ! Final Build Script had 3 main targets ! RELEASE ! Create a final wrapped and zipped release ! NOWRAP ! Create a full release with unwrapped PL/SQL ! CLONE ! Create a Development version that doesn’t replace the @VERSION@ Tags 39 ant <Target> -D sv_version=020100 Product Licensing ! Licensing requirements were unique ! We understood that product licensing can almost always be subverted. It’s there to keep honest people honest. ! Multiple license types ! SITE ! WORKSPACE ! APPLICATION ! Loads of licensing software out there, but nothing that would really work for APEX ! Ended up having to rolling our own in PL/SQL 40
  • 11. Product Licensing ! Licensing consists of a Customer Key and a License Key ! Customer Key - Hashes information about the server, GUID of the product and other info based on the license type ! License Key - Hashes information that matches the Customer Key as well as Expiration Date and Licensed Company 41 Product Licensing ! Two sets of code ! Application Side ! Creates and encode Customer Key ! Receives, interprets and validates License Key ! Product Owner Side ! Receives and validates Customer Key ! Matches Customer Key to a valid license in our back end system ! Created and encodes License Key, saves it and presents to user 42 Application Side 43 Product Owner Side 44
  • 12. Product Licensing Benefits ! Allows us to ! scale product use to the need of the end user ! quickly create “Trial” keys that expire after a given amount of time ! limit the use of the product to a specific licensed server regardless of the level of license purchased 45 TESTING 46 Product Testing ! Testing is hard and no one likes to do it ! It covers way more than you might think ! Functional Testing ! Installation Testing ! Upgrade Testing ! Platform Testing ! Do everything you can to make it ! Easy ! Repeatable ! Full Coverage 47 Product Testing ! We chose to use Virtual Machines as our testing platform ! Self Contained “Sandbox” ! Easy to copy a fully set up system ! Easy access to multiple platforms (OS, DB, etc) ! Snapshots ! Makes rollbacks as easy as a button click ! Snapshots of successful installs/upgrades provide the basis for the next generation ! Allows you to setup and test “edge-cases” and keep those around for future tests. 48
  • 13. Product Testing ! Identified and mitigated several potential problems by having the wide variety of platforms available. ! Issue with install script on Windows based SQL*PLUS ! Issue with 10g and positional parameters in a function when used in a SQL Query ! Lack of support for certain functionality in Oracle XE 49 DEPLOYMENT 50 Deployment ! Decided early on to mirror the APEX install & upgrade scheme ! Allows users to upgrade SAFELY in place ! Allows rollback in the odd case of a failed installation ! Multi Part Install ! Database Schemas and Objects ! SV_SERT_XXXXXX ! SV_SERT_APEX ! SV_SERT_APEX_ALL ! APEX Application ! Application per Workspace ! Application Cross Workspace 51 Deployment ! Database Schemas and Objects ! Modeled on the APEX install Scripts ! SQL Script run as SYS ! Checks pre-requisites ! Creates users ! Creates Objects ! Allows DBA’s to choose underlying tablespace(s) and features/grants to install ! Future versions will ! Migrate data from previous working schema to new working schema 52
  • 14. Deployment ! APEX Application ! Per Workspace ! Associate the SV_SERT_APEX schema as a Parse As Schema for a workspace ! Install the eSERT APEX Application in the workspace where the Apps to be evaluated are ! Cross Workspace (4.1+ only) ! Requires APEX_ADMINISTRATOR_ROLE to be granted to parse as schema ! Associate the SV_SERT_APEX_ALL schema as a Parse As Schema for a workspace ! Install the eSERT APEX Application in the workspace ! Ability to evaluate all applications across all workspaces 53 Deployment ! Used Supporting Objects quite heavily for images, JavaScripts, CSS ! Didn’t want customers to have to manually copy these items to their web server ! Couldn’t adequately script this as everyone’s install bay be different ! However it was a bit of a challenge ! No “Relationship” between shared components and supporting objects ! Had to keep deleting & Re-creating them 54 SUMMARY 55 Summary 56 ! Developing for APEX is not too unique - but there are a number of unique benefits ! Shorter development cycles ! Ability to use built-in components to save time ! Charts, IRs, User Interface ! Code is easy to write; difficult to maintain ! Thus, less is more ! “The answer to your question is not in the building” ! Customer feedback is critical
  • 15. Download ! This and all other Enkitec presentations can be downloaded for free from: http://enkitec.com/presentations 57 http://www.enkitec.com 58