Title: AMIS Query: APEX enof ADF
1AMIS QueryAPEX en/of ADF
2ODTUG 2008APEX ADF
3Why Java?
- Standardized run-time platform across hardware
O/S - to build for and deploy into - Java Virtual Machine
- J(2)EE Application Server
- Benefits
- Skills applicable across vendor technology stacks
- Components reusable across stacks
- And developers to (to a certain extend)
- Huge and vibrant open source community that
shares knowledge components - Rapid evolution of technology especially for
developing web based applications (Web 2.0, AJAX,
JPA) - Infinite source of ever entertaining acronyms
4Typical Web application
- Database
- Tables, Views, Triggers Packages
- Application level representation of data objects
- Forms Blocks mapped to tables/views/queries
- Java Objects mapped tables/views/queries
- Application level page definitions bound to
data - Forms Blocks Items, supported by triggers
- Java Java Server Faces pages with components
such as Table, Drop Down item, Button - bound to
data objects - Client side view rendering
- Forms runforms applet
- Java browser HTML rendering supported by CSS and
JS
5Single vs. Multi-Tier Architecture
- Performance
- Ease of Deployment
- (lower) Complexity
- (ease of) Administration
- Costs of infrastructure (?)
- Security
- Scalability
- Role Specialization
- Flexibility Integration
6How does Oracle implement the JEE stack for Java
Web Applications
- Oracles Java/J(2)EE stack
- Application Development Fun
Application Development Framework
Primarily for developing Java/J(2)EE Web
Applications with HTML frontend and (Oracle)
Database backend
7ADF Technology Stack Architecture
HTML
HTML
ApplicationServer
Database
8ADF The Building Blocks
- ADF Business Components (pka BC4J)
- Since 1999
- Object Relational Mapping on JDBC
- Can be published as WebService, EJB,
- Optimized for Oracle RDBMS
- Understands e.g. Database Triggers, PL/SQL
packages, Oracle SQL PL/SQL types, SQL XML,
Instead Of Triggers, VPD (Virtual Private
Database), Oracle Text, Oracle BLOBs CLOBs, SQL
Hints, Advanced Oracle SQL - 11 synchronization with UML Class Modeling
- Many features for tuning, configuration,
monitoring (tracing, debugging) - Used within the Oracle E-Business Suite since
2001
9ADF The Building Blocks
- ADF Model since 2004
- DataBinding decouplingApplication and Business
Services - Outlined in JSR-227
- Support simultaneous use of heterogeneous data
sources like Database, WebService, File, XML Data
Store, - ADF Faces (aka Apache MyFaces Trinidad)
- Implements the JEE standard Java Server Faces
(JSF) - Successor of ADF UIX (since 2001)
- ADF Faces components render HTML
- Are configured through (dynamic) properties
- Can be programmatically manipulated
- Are assembled into pages using Drag Drop (or
XML source editing) - Have built in support for AJAX (Partial Page
Refresh)
10Some ADF Faces components
11Some ADF Faces components
Pagination through records
Sort columns
Show/Hide Details for theBook record
Toggle betweentabs
12ADF The Building Blocks
- IDE is JDeveloper
- Since 1998
- Free (since 2005)
- Contains design time for
- Plain Old Java Programming
- Web Development (HTML, CSS)
- Oracle SOA Suite,
- XML/XSLT development
- UML modelling
- SQL PL/SQL (fka Raptor, aka SQL Developer)
- WebCenter
- Oracle Data Integrator, Warehouse Builder
- Has built-in Application Server (OC4J)
- Can be extended through Plug Ins
- Installation consists of Download Unzip
- File Based
13ADF Some Facts
- Optimized for Oracle RDBMS
- Supports any database with JDBC driver
- Can be deployed on any J(2)EE Application Server
- Tomcat, JBoss, IBM WebSphere, BEA WebLogic,
Glassfish, - ADF licence is part of Oracle AS license
- Need run-time licence for other Application
Servers design time is free - Second half 2008 release 11g, with Rich Client
components - The foundation for Oracle Fusion Applications
- As well as other Oracle products like BAM,
Enterprise Manager, WebCenter, Hyperion, E
Business Suite, ..
14Some ADF features and characteristics
- Declarative AJAX support (partial page refresh)
- Strong (remote) Debugging features
- Built-in Internationalization (i18n)
- End-to-End message handling
- Query by Example (enter query mode)
- Integration with Source Code Control tools such
as Subversion and CVS - Many on-line resources context help,
documentation, tutorials, samples, IDE extensions - Very active blogging community with 1000
articles
15Status of ADF
- Primary development technology stack for Fusion
Applications - One of the largest software development
organizations around (1000s of developers) - Easiest Java stack to migrate to for (classic)
Oracle Developers - Experienced (Web) PL/SQL, Designer, Forms
developers - Compliant sometimes even leading with (most)
major industry standards J(2)EE, XML - (Relatively) Proven
- Future-proof 11g (Rich Client), SOA and
WebCenter - Strategic platform for Oracle
16Non-ADF Faces components
- MyFaces
- WYSIWYG Text Editor
- Popup
- Schedule
- Calendar
- Dojo, YUI, jQuery, Ext-JS (JavaScript)
- Text Editor
- FishEye
- Spinner, Slider
- Clock
- Google Maps,
1711g Filthy Rich Components
- Much more Client Side activity
- Drag drop
- Table column stretch and reposition
- Slider Spinner
- (real) Accordion
- Panel Stretch Layout
- No more popup windows
- Instead floating (inline) DIVs
- Really cool graphs
- AJAXAJAX AJAX
- declaratively!
1811g Rich Table
19ADF and Fusion Middleware
20Typical ADF Application
- Professional Users not so much consumer web
sites - Productivity of the end-user
- Serious Data orientation
- Typically an Oracle database
- Frequently other data sources as well (Web
Services,) - Increasingly more task and process driven
- SOA oriented integration with BPEL, Workflow,
WebCenter Portlets, embedded BI - Future proof long application life cycle
- Through standards compliance, Oracle strategic
direction - High development productivity while retaining
maintainability
21Pagoni Property Management
22Connexys HR Recruitment
23The man in the middle
Pragmatic
Attractive
Standards
Productivity
Open source
Strategic
Database Integration
Q D
Enterprise
Theoretical/ Dogmatic
APEX
ADF
real Java
24The Application Development Challenge
25Survey Application
- Starting point
- 6 database tables
- Minimal functional description
- Challenge
- In 6 hours
- Develop an ADF Applicationthat supports on line
polls - Demonstrate it
26Getting Started with ADF development
27Short Story
- Install a PC with JDeveloper
- Arrange for a connection to a database
- Create Business Components (declaratively SQL)
- Create JSF pages (drag drop declaratively)
- Run (on the embedded OC4J)
- You can have your first ADF application running
in under 60 minutes
28DEMO
29ADF Design and Build tasks
- Page Design Build
- Bind Business Components to page
- In the desired layout
-
- Design and Implement inter page Navigation
- Tune CSS Stylesheets
- Database Design
- Database Implementatie
- Authorization
- Business Logic/Business Rules
- Mapping tables and views to Business Components
30Could it not be a more declarative process?
- (More like Designer than like Forms?)
31JHeadstart for increased productivity and less
steep learning curve
JHeadstart plugin
Tables
Database
32Developing ADF Faces Applications with
JHeadstart 10.1.3
- Based on ADF BC
- Single Application Definition file (XML)
- Edited with JDeveloper plugin
- Rapid Page Generation
- UI Models
- Consistent Layout
- Page structure
- Master-detail(-detail), tree, in-line table,
detail disclosure, search - Regions ( item groups)
- Lookups Domains
- Display properties
- Quick Prototyping
- Very easy introduction for non-Java developers
33DEMO
34Do you need to know all about Java, JavaServer
Faces, Javascript CSS?
- (And what about XML, EJB, JMS, JCA, SCA, SDO,
SVG, XSLT, Struts, JTA, AOP, and a zillion other
things)
35DEMO
36Actions and Time Bookkeeping
- Installation JDeveloper JHeadstart
- Model Project
- Default Business Components
- Derive Primary Key from Sequence
- View Project
- Enable JHeadstart
- Four Domains
- Maintain Surveys
- JHeadstart Groups
- AJAX show answer options when style ismultiple
choice
20 min
0 lines
15 min
5 lines
20 min
0 lines
30 min
0 lines
37Implement AJAX
- show answer options when style is multiple choice
38Actions and Time Bookkeeping
- Respond to Survey
- ViewObject with two outer joins create Answer
when Question/Response entered - JHeadstart Groupfor Person, Response, Answer
- LOV on Survey
- NLS support Customize ResourceBundle
- New Person Wizard
- And deep link to respond to query
60 min
15 lines
2 min
0 lines
30 min
10 lines
39Actions and Time Bookkeeping
- Survey Results
- Summary ViewObjects for Surveys, Questions and
Answers - Transient attributes in SurveyView
- Three Groups
- Graphs
- Two barchart
- One Pie Chart
- Skins/Look Feel
- Rich Text Editor
60 min
13 lines
20 min
0 lines
30 min
2 lines
30 min
15 lines
40Java code to derive attribute value
41Total Score
5h 17m
60 lines
- Functionality
- Create a survey with Open and Multiple Choice
Questions - Allow People to register and Respond to a Survey
- Analyze the Survey Results using Graphs and
Summaries - Number of Artefacts
- Model 14 ViewObjects plus Entities, ViewLinks
and classes - View one JHeadstart application definition file,
10 jspx files, 26 XML configuration files - Required Skills SQL, JSF ( ADF Faces), Java
(novice), ADF Business Components
Google-ability!
42Conclusion
- Only - tiny pieces of Java required, and then
for specific functionality - Usually documented as recipes or checklist steps
- Typically no Javascript at all
- And very little CSS, HTML, XML
- You can happily ignore most of the Java Buzz
- You (start to) work from a SQL oriented
perspective - Leveraging the database is very much an option
and recommended to - You work in a very declarative way
- You get many quite advanced features almost for
free
43The Oracle Developer
I want to be(come) a hot Java ADF Developer
44Moving to the new world of ADF
- This could be your itinerary from Classic Oracle
(Designer/Forms/PL/SQL) into ADF Web Development - Modern Database Programming Skills 10g SQL
PL/SQL - JDeveloper, ADF Business Components ADF Faces
- JHeadstart
- Basic Java Web Development skills
- Java programming (focus on beans, collections,
interfaces, String) - Servlet JSP
- Java Server Faces
- Web (2.0) Development
- HTML, CSS, JavaScript, XML
- Application Server Administration
45Some useful resources
- Books
- Oracle JDeveloper for Forms PL/SQL Developers
- Java Server Faces in Action
- The Complete Reference Java Server Faces
- Head First Java
- Head First Servlets JSP
- Internet Resources
- JHeadstart Developers Guide
- Oracle ADF Developers Guide
46Next Steps
- Get yourself a team
- Multiple PCs
- A team development environment (file based)
- Get yourself an OTAP set up
- One or more central Application Servers
- Robust deployment procedures
- Get yourself a coach/expert
- And Google!
- Get yourself some skills
- Get yourself some experience
- Do it. Enjoy it. Focus on the Fun.
47Focus Areas in an ADF project
- Functional Design
- Screen designs
- Draft
- Fully functional HTML prototypes
- CSS, icons, colorcodes
- For each page
- Which data?
- Which manipulations?
- Which validations and calculations?
- Which navigations?
- Which actions?
- Which AJAX style refresh operations?
- Architecture
- Lots of attention for non-functional requirements
- Security
- Messages and i18n
- Availability, Performance and Scalability
- Instrumentation/logging
- Reuse generic components (infrastructure)
- Automation
- Of testing, deployment, documentation generation,
standards enforcement
48Specialization Role Allocation
- Differentiate between roles and specializations
- For example
- Database (SQL, PL/SQL)
- Model (ADF BC and other Business Services)
- Web Application (Java Server Faces)
- Web Client (JavaScript, CSS)
- Or combinations
49Lessons Learned some the hard way
- The key lessons we learned
- Break with former habits and paradigms
- Build up new ones
- Spend plenty of time on non-functional
requirements - SoftwareEngineering
- Leverage the database
50Planning ADF Projects
- Develop new guidelines and calculation factors
- Need intuition for what is simple and cheap and
what is hard en expensive in this technology - This is easy to fit in
- This sounds like a realistic guesstimate
- Give yourself a lot of time for
- Infrastructure
- Non-functional Requirements
- Look Feel application
- The last 20 of the application
- Make sure you start early with
- Testing performance, authorization,
51Software Engineering
- Work on a sound Development Infrastructure
- Source Code Control Version Management
Subversion - Incident Management Jira
- Test JUnit, Selenium, JMeter
- Automated Build Test Ant, Maven, Continuum
- Collaboration Knowledge Management Wiki
52Lessons learned
- Not every developer has to know all of ADF and
the underlying technologies (Java, Servlet/JSP,
HTML/CSS/JS) - But at least one person on the team should know
most of it - For a realistic, feasible yet attractive look
feel, it is important to use HTML designs and
closely cooperate - Static HTML design is required but it is not
enough! - CSS and JavaScript are the way to custom look
feel - It is so easy and tempting to build ADF
applications that are direct representations of
the Database structure - Typically that is not what makes end user happy,
so beware! - Shake old paradigms and dogmas its the internet
age!
53Lessons learned
- Get to know the ADF Faces components and their
features so as to optimally leverage them - Partial Page Rendering (AJAX), Client Side
Validation, Regions, Detail Disclosure, Tabs and
Accordion, Skins - Craft Development Guidelines and enforce them
- Naming conventions, package structure, code
documentation, log design decisions, instrument
the code - Design the Authorization infrastructure early on
- As well as other Application Architecture/Infrastr
ucture - Use the database for what it is good at
- Dont go blindly for inter-database portability
54Lessons learned
- Dare to step outside of the box
- dare to let go of generation (when using
JHeadstart) - use programmatic hooks in ADF Faces
- dont restrict yourself to standard ADF
components, use other libraries and build your
own - leverage JavaScript and CSS
- Google is an indispensible source of development
help - As is OTN, the OTN Forums and many a blog Steve
Muench, Frank Nimphius, Chris Muir, Didier
Laurent, Andrejus Baranovskis, John Stegeman,
JHeadstart Team Blog, AMIS Technology Blog
55But wait there is more
5611g Rich Data Visualization
- Visual representation and manipulation - of
data - Embedded Operational BI
- Components
- Charts bar, pie, line, bubble, area, funnel,
radar, scatter, pareto, stock (2D, 3D) - Pivot Table spreadsheet, cross-table
- Geographic Map
- Gauges
- Gantt Chart e.g. project and resource
management - ADF Data Visualization components are the core
charting component within Oracle - For BAM, Fusion Applications, Enterprise Manager,
Hyperion
57(No Transcript)
58New trends in Web Applications
- Rich visually appealing
- Interactive dynamic components, client side
layout manipulation, drag drop, AJAX style
partial refresh - Active
- server-to-client event push
- Integrated Collaboration
- Enterprise 2.0 Social Networking,
Communication, Resource Sharing
59Customer Case
- Connexys, Rotterdam
- ASP Application for Human Resource Management,
100 customers with 1000 users - Built with Oracle Designer Web Server Generator
and a lot of hand coded Web PL/SQL Toolkit code
(htp) - Needs to migrate to new technology because of
competitive market pressure - Better UI (Web 2.0, Attractive, Rich, Active,)
- More process oriented
- Differentiated between customers
- Customization Personalization
- Challenges
- Work on top of existing data model
- Implement a User Interaction Design by a web
designer - Train development staff on the job
60Demo SaaS with ADF
61The future looks bright
- ADF has an interesting future
- 11g Rich Client Components Web 2.0 AJAX
- SOA (BPEL) Workflow Enabled Applications
- WebCenter Collaboration 2.0
- It is probably time to start living it