1.17k likes | 1.37k Views
NAAM. ADF Development More tales from the trenches. Aino Andriessen AMIS Services. Systems integrator Co-sourcing Maintenance Oracle, Java, Open Source, ADF, DBA, SOA AMIS technology school Pagoni http://www.amis.nl http://technology.amis.nl/blog/. Aino Andriessen.
E N D
NAAM ADF DevelopmentMore tales from the trenches Aino Andriessen AMIS Services
Systems integrator • Co-sourcing • Maintenance • Oracle, Java, Open Source, ADF, DBA, SOA • AMIS technology school • Pagoni • http://www.amis.nl • http://technology.amis.nl/blog/
Aino Andriessen • Technical Consultant • Technical Architect • Java, ADF, PL/SQL, XML, ... • SOA , Integration • Software engineering • Quality management • Agile development • aino.andriessen@amis.nl • http://www.fttech.net
Let's build an ADF application to...
experience the development process and...
to build better ADF applications...
Stakeholders customer developer maintenance project lead
better according to... Customer Fully functional Within budget On time
better according to... Project lead Within budget Functional Big
better according to... Developer Organized Fully Featured Stable
better according to... Maintenance Easy to maintain Stable Secure
better according to... Girlfriend Not being late Happy Still have some energy left
Knowledge creates good software A professional attitude creates better software
5 essentials • Communication • Responsibility • Knowledge • Organization • Fun
Organization... • Project • Development process • Skills • Project structure (file structure) • Code • Design and Architecture • Documentation • Communication • Infrastructure
A software factory is a professional way of working supported by tools
Documentation site Source control Tests Developer 2 Developer 2 Inspection Developer 2 Developer Reports Documentation Library Build automation Issue reports Corporate Library Custom Delivery environments Production Public Library Acceptance Test Issue management Integration Development
OK, wake up and let's get to business... Demo time...
Build an ADF - JHeadstart application • Address common and not so common issues • ADF 10g • Some 11g
Demo • Regatta Management System • Application to support sailing regatta's. • maintain regatta's • registration • enter racing data • results
Development Goal • Match implementation against stakeholders' concerns : • Functional • Maintainable • Stable • Budget • Organized • Fun • . . .
Business Logic implementation • Business Logic can be implemented at many locations • ADF Faces components • Managed beans • Backing beans • EL-expressions • Attributes • Service methods • VO's • Attributes : transient, calculated • Methods • Entities • Attributes • Validators • Database • Constraints • Views • Stored procedures • ...
The (ADF) challenge • Consistent and comprehensible implementation of business logic.
FD • Requirements • Maintain regatta information • Allow sailors / boats to enter a regatta. • Register skipper and captain (owner) with some personal details • Schedule racings • Easy registration of race details, only by certain people • Publish results • Nice look and feel • Easy to use • Handle handicap system • Business rules • Participant, skipper, must be older than 18 • Same boat may enter only once • Finishtime after starttime • Participant can have only one result • It should be able to reset the finish of a participants, in case of error • Register if the boat didn't start or finish, using the common codes like DNF, DNS, DSQ etc. • Extra information about this situation must be entered • Races cannot be scheduled at the same time
Functions / Use cases • Maintain regatta's • Register for a regatta • Enter racing data • Publish results • Supportive functions
ADF 'architecture' • ADF applications tend to evolve instead of being designed. • Viewobjects are created when needed • Managed beans are created as needed • Application Modules function merely as a service-hatch • ADF doesn't force you into an organized application, except maybe the model and viewController. • ADF offers multiple solutions for the same problem and in the end all of them will eventually appear in the application. JBF
ADF architecture ADF Faces ADF model (binding) ADF BC Database
ADF architecture ADF Faces Managed beans ADF model (binding) ADF BC Application Modules ViewObjects Objects Entities Database Stored Procedures Views Tables
Application Integration ADF Application Webservices Database Files Notification Messaging
Function / Use Case approach • The application module, the service, is the core of the application • Each function / use case is implemented as a service. • Services can be nested
ADF architecture ADF Faces Webservices ADF model (binding) Service Service Service Service Service ADF BC Webservices Database Files Notification Messaging
Define the Services (Application Modules) first.