Oracle Fusion Developer Guide: Building Rich Internet Applications With Oracle ADF Business Components And Oracle ADF Faces
In December 2009 some 750 pages of ADF examples and ADF how-to’s were released in a great book: “Oracle Fusion Developer Guide: Building Rich Internet Applications With Oracle ADF Business Components And Oracle ADF Faces” by Frank Nimphius and Lynn Munsinger.
I ordered the book at amazon (this is the direct link) and received it by mail a few weeks later. In this post I share my first impressions with you.
It is absolutely impossible to write a detailed ‘per chapter’ review of this book because this review itself would turn into a book. I decided to split the book in 5 logical parts and provide a glimps of the content.
1) Introduction, Framework, Lifcycle and Taskflows.
2) Application Development.
3) Advanced Components.
4) Application Design and Architecture Considerations.
5) Application Security.
Introduction, Framework, Lifcycle and Taskflows.
This part contains 7 chapters that are more or less an introduction to ADF 11g.
chapter 1: The Quick Learners Guide to Oracle Fusion Web Application Development
chapter 2: Oracle Application Development Framework (ADF)
chapter 3: The Oracle ADF and ADF Faces Rich Client Lifecycle
chapter 4: Introduction to Oracle ADF Task Flows
chapter 5: Working with Unbounded and Bounded Oracle ADF Task Flows
chapter 6: Working with Bounded Task Flows in ADF Regions
chapter 7: Page Navigation in Oracle ADF
However it is not for the fainthearted, and some knowledge of ADF comes in very handy here. The technologies of the Oracle Fusion Development stack, and mainly those used in this book, are briefly introduced. And when I say briefly, I mean briefly. You are guided through ADF at the speed of lightening. It explains the basics of Business Components (“ADF Business Components for Quick Learners”) and the concepts of databinding. Later on JSF and ADF Faces Rich Client are introduced in their own “Quick Learners” paragraphs.
When reading all this, it immediately becomes clear that this book requires some experience with ADF.
The writers continue with explaining the Oracle Application Development Framework in somewhat more detail. It starts with ADF Datacontrol and ADF Bindings, the two parts of ADF Model and also what happens when you create databindings by means of drag and drop resulting in a page definition. The most interesting part of this chapter however is the last part, where is explained how to access bindings from both Expression Language and java. There are some code examples on how to work with bindings programmatically.
Next, life cycles and how to customize the life cycle is explained. Understanding the lifecycle is one of the most difficult skills. However, if you do understand it, you can understand what happens in your application much better. This chapter does really help you to get familiar with the lifecycle of ADF. The main content of this first part however is about the task flow. The available scopes are explained very well. If you get lost in all these scopes, figure 4.3 and 4.4 provide a great insight in the available scopes (that is: scopes accessible to the application at a given time in the flow) in different scenarios.
Application Development.
In the second part of the book the ADF Faces Rich Client Components are described.
chapter 8: Working with Input Components
chapter 9: Working with Table, Tree, and TreeTable Components (60 pages)
chapter 10: Working with Menus, Dialogs, and Pop-ups
chapter 11: Looking Up Data
chapter 12: Working with Images and Media
This part starts with several common scenarios that are used with input components. One of the things in this chapter that is valuable is a table with pros and cons of ways to for instance how to restrict input for an input component. These pros and cons are not only from a technical point of view but also from an end users point of view (focus on a read only field can indeed be confusing). Chapter 9 (some 60 pages) contains a very good part about the ADF Faces Tree and Tree Table components. It describes some very usable use-cases like ‘showing additional info in a popup’ ,how to ‘implement search in a tree’ and some other very useful ones. One of the things described in the chapter about working with Menus, Dialogs, and Pop-ups is how to show and hide popups programmatically, which is a common use-case.
Chapter 11, on looking up data, contains examples on implementing ‘auto suggust’ functionality and how to use a selectMany component to create an array of values that can be used in the IN clause of a sql query. Chapter 12 sescribes how to upload and download files, how to use Oracle Multimedia Types that are supported more or less by default, and working with CLOBS and BLOBS for which you have to write a servlet. Of course, the servlet code is provided.
Advanced Components.
chapter 13: Visualizing Data with DVT Components
chapter 14: Implementing Drag-and-Drop Functionality
Most interesting part in the chapter about ‘Visualizing Data with DVT Components’ for me is the description of how to add a time selector component to a chart. It can be used to select a specific part of a chart (from one date to another). Besides this use-case there is information about how to change the graph type at runtime and how to implement click listeners to be able to respond to user interaction. The chapter on ‘Implementing Drag-and-Drop Functionality’ is a chapter that explains drag and drop in ADF Faces Rich Client. It contains a section about the use of drag and drop in an ADF Panel Dashboard, but also in a container like a panelbox. The section on ‘how to move tree nodes under a new parent’ is special to me. I can’t help to think that this section was inspired one of my blogposts.
But that doesn’t make it less valuable.
Application Design and Architecture Considerations.
chapter 15: Working with Oracle ADF Reusable Components
chapter 16: Building Custom Look and Feel with Cascading Style Sheets and Skinning
chapter 17: Building Layouts in ADF faces RC
chapter 18: Internationalization
chapter 19: Using JavaScript in ADF Faces RC
chapter 20: Active Data Services
After the first 3 parts of the book, it is now time to get into Design and Architecture. Reuse is very important for productivity. Reusable components are deployed across application by means of the ADF Library Jar. The mechanism behind this is described in Chapter 15.The final part of this chapter explains in detail how to create declarative components. Both declarative, and dynamic declarative components are explained in detail. A must read for application architects before developing a new ADF 11g application.
The chapters on ‘look and feel’, ‘building layout’ and ‘Internationalization’ have to be in this book, however to me they seem a little out of place here. It might be because I’m not likely to be involved in Styling and ‘lay-outing’ an application.
Chapter 19 on ‘Using JavaScript in ADF Faces RC’ starts with a very important remark: “Don’t use javascript unless there is no other solution to the problem”. This is exactly according to one of the five laws stated by Duncan Mills at Oracle Open World in 2009: “Thou shalt not write Javascript”. But just in case, this chapter contains some use-cases like ‘how to specify a forms tab index’ , and how to change the disclose state of ADF Faces Components in Javascript. The chapter on Active Data Services introduces Active Data Services by explaining the ADS architecture. The actual use-case (‘Displaying database change events in ADF Faces’) describes in detail how to use Active Data Services in an ADF application.
Application Security.
chapter 21: Oracle Fusion Web Application Security
This final chapter in this book, about security. describes how to use ADF security framework. The ADF Security Architecture is explained in figure 21-2 in the book, which shows both ADF designtime and runtime architecture. The chapter describes in detail how to ‘create and grant page and taskflow permissions’. There is also a part that describes how to use ADF security in ADF Business Components, and how to create login and logout functionality.
Conclusion.
A book on ADF development can never be complete. Frank and Lynn however managed to cover a lot of topics that really help you getting up to speed. This book contains lots of use-cases, and lots of coding hints. These use-cases are of great value and make this book a must have. Some of the topics that are not covered in the book, like MDS, might be released in whitepapers in the future.
Frank likes his own book as well, according to one if his tweets:
I thought you write books for others. Instead I am sitting here with the index finger put in my own book to get a coding task done 😉
If you are new to ADF you might want to start by with “Oracle JDeveloper 11g Handbook: A Guide to Fusion Web Development” by Duncan Mills, Peter Koletzke and Avrom Roy-Farderman. However, if you have some experience, this is a great book with very good explanations. A must have for every developer that wants to take the next step in ADF development and go beyond the basics. Get it here.
Although I teach ADF classes quit often, this book is a great for me. Not that it is all new or that I didn’t know how things work, but the way that some topics are explained is extremely helpful to me.
Remark.
There is a webpage available with errata (to err’ is human), further clarifications and additional samples (created after book completion). Its an ERRATA and GOODIES page in one to serve ADF users the best and it can be found here.
Happy reading !!