Saturday, August 25, 2012

Brief note on ADF 11gR2 installation

The certified application server and ADF combinations for ADF 11.1.2.x.x are available here.

We need to follow the 

I'm of course only going to list a helpful link and not actually post the contents of that document as it is secure, but briefly:
1. On your standalone weblogic server, Install ADF 11.1.1.6 runtime first 
ADF Runtime is available from the usual ADF downloads page. 

2. Then install the two patches for both ADF 11.1.2.1 and ADF 11.1.2.2 available from Oracle support and mentioned in the support document. 

It's important to read the patch README files, set the ORACLE_HOME environment variable correctly and use the correct OPatch version... (latest usually works) to avoid any gotchas. 

Friday, August 24, 2012

Drilldown on ADF DVT graphs

The sample workspace  (JDev/ADF 11.1.2.1) for this post is available here.
Just run adfc-config from the ViewController project. 

One form of drilldown is where you provide an 'action' that can be a control flow case in the taskflow and which leads the user to another view/page, but that's not what I'm writing about. 

The drilldown i'm referring to is for the following usecase (based on the HR schema):

A graph displays Departments and total salaries of all the employees in that department. 
When you click on one of the departments (represented as a bar graph), you see the same bar graph with employees in that department. 
(You can extend this approach indefinitely but can get complex after a couple of levels of drilldown). 

My approach uses plain ADF DVT components and not BI data controls**.
It also relies on the underlying view objects to provide the aggregate data (sum of salaries in this example) and doesn't use any of the aggregation functions of the DVT components. 
You might also want to consider the approach mentioned here to see what works best for your usecase: https://forums.oracle.com/forums/thread.jspa?messageID=10527052#10527052

Master Graph:




And when you click on one of the above bars, you get to this (employees under the department you clicked.)
Also note a 'Drill Up' button or icon can be provided to go back up one level... 

As of this writing, I didn't know of a declarative approach to achieve this, so the core of this functionality is the GraphHandler class (available in the attached sample application).

**I just read about another approach that might work on this forum thread and this developer guide link but I haven't tried that and I'm not sure it would work for multiple levels of drilldown or drill-up. 

My approach relies on programmatically replacing the binding of the dvt:graph component (screenshot of the code below):



Tuesday, August 21, 2012

ADF and Coloured tooltips - 2 [and its limitations]

Reference: I have simply incorporated the approach presented here in my ADF application and the solution involves a bit of JQuery
http://tutorialzine.com/2010/07/colortips-jquery-tooltip-plugin/

This post follows on my earlier sneak peek but as I eventually learnt, this is quite limited in use and you might need to find specific uses for this. Still, here's my 11.1.2.1.0 workspace that uses this in case someone can share other ideas...

Does look nice where it works though... 


In general, styling of ADF components should be accomplished using skins and one shouldn't rely on  the "generated output" (html) as this can change across ADF releases.
For more on the correct approach to skinning, please refer: https://blogs.oracle.com/jdevotnharvest/entry/how_to_learn_adf_skinning

Also, coloured tooltips (and other similar styling) would only work for some components (outputText, goLink, commandLink) whose HTML output is generated with the 'text' attribute. 

More complex components appear like this in page source 
new AdfRichInputText('it1',{'shortDesc':'Green','maximumLength':6,'converter':new TrNumberConverter(null,'number',null,null,false,false,null,null,null,null,null,null)})

so that's probably why the complete tooltip style never gets applied. 
Now, back to coloured (or colored) tooltips. 

The solution involves:
A 'base' tooltip style (defined in colortip-1.0-jquery.css) that is meant to get applied to every tooltip (unless you override it by supplying another tooltip styleclass)
I haven't made any changes to the one I downloaded, except for referencing it in the home.jspx page. 


Saturday, August 18, 2012

ADF unbound - multi coloured tooltips anyone?

Please read through part 2 as well as this has some limitations.

This was a client request (can we make it prettier please?) that I originally thought wasn't worth pursuing as it wasn't 'out of the box' and couldn't think of an elegant way.

But then after a beer on a sunny Saturday afternoon, one does start to "think outside the box" !

So, inspired by a recent "Beautiful ADF sites discussion" here are some screenshots to feast your eyes. (This is just my demo app based on the emp-dept schema so I know everything is ugly, so no judgements on the actual content, please. I just use it for proofs of concept). 




Tuesday, August 14, 2012

A very important read for ADF/Fusion application design


I think Fusion applications design patterns (i.e. 'FUNCTIONAL' design patterns) are one of the most important resource to become publicly available as a result of Fusion apps development - 
https://blogs.oracle.com/soacommunity/entry/oracle_fusion_applications_design_patterns

(They have been available in beta form for a while now and I made it a point to share with clients to help them create functional specificatinons) 

New applications - even standalone plain ADF ones should especially leverage a lot of the learning and research that went into Fusion apps all these years.

As a former Fusion apps developer, it was only natural that I applied a lot of this learning in applications I developed elsewhere - but I had to be constantly mindful of not sharing any info that wasn't publicly available. 

The "Is it quick?" methodololgy. Worth it?

The biggest lesson I learnt on Oracle Fusion applications development was the importance of a well engineered product (no-brainer, isn't it?) 

This post recaps why you need a system that is well designed rather than just 'quick' - 
http://thinkoracle.blogspot.co.uk/2012/08/the-two-ways-of-doing-job.html

Working with different kinds of IT requirements, one often needs quick solutions in these scenarios:
- tactical fixes 
- prototypes or proofs of concept
- examples

Sometimes, quick is often the side effect of knowing the technology well and knowing how to get the most out of it. 

ADF is the perfect technology to showcase a lot of business value quickly (vis a vis comparable web technologies) - but it's easy for new practitioners to get overconfident with it and ignore some basics, to the long term detriment or even failure of the project. 


Fusion applications (check out the videos if you haven't already) illustrates power of well thought out, well designed, well engineered systems. 
Design = Functional and Technical (Two different things) 


On a related note, I have started to have mixed feelings about the agile approach, and I have come to suspect it promotes the above three over and above a well thought out design. 

Pros:
- It keeps a team focussed on the "most important tasks that need to be done based on the state of the product now".
- Helps keep track of the big picture with a prioritised backlog. 
- Promotes test driven development 

Cons:
- A team inexperienced with both the technology and the agile methodology can get short-sighted and only focus on immediate 'quick' fixes.

- Sometimes old habits just die hard: if you don't invest in automated testing, at least create well documented acceptance criteria in your stories or test plans to avoid regression. 
"Doesn't look pretty" is NOT a valid or helpful test result. 

Even an internal system, expected to be used by a few hundred concurrent users deserves more than that. You might get by with the old ways until you can't - that is usually a stage where things can't be salvaged any more.