Posts

Showing posts from 2012

ADF & Event driven Integration with a BPMN process

Image
The usecase for my sample application is:
A standalone application exists to create/update 'Departments'. Originally, it was not intended to be part of an automated process (BPEL or BPMN) but now business decided that their process for the creation of a department is actually more than just data entry in the standalone application. It also now involves an approval. 


Background:
1. Every interaction with a software application in a business environment is part of some process - the process may or may not have been analysed, modelled in a standard notation or automated, but it's a process nonetheless.
2. When we interact with software applications, we generate 'events' (Order fulfilled event, Loan approved event, etc.). 
3. The sample applications for this post can be downloaded from here and consist of: 
                  a) The SOA/BPM composite application - event listener 
                  b) The standalone ADF web application - event producer
 (Instructions to setup an…

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  Oracle Support Document 1328698.1 (How To Install the ADF Runtime Libraries 11g Release 2 in WebLogic Sever 10.3.5 / 10.3.6 ?)
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.

Drilldown on ADF DVT graphs

Image
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 component…

ADF and Coloured tooltips - 2 [and its limitations]

Image
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 com…

ADF unbound - multi coloured tooltips anyone?

Image
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). 




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 s…

How to show/hide operators in adf:query advanced mode

Image
In this post, I will provide a way to modify the operators list in the ADF query panel (af:query component) - i.e. to remove and add operators to the list. 
 (at the time of writing this post I didn't realise it was already documented here: http://docs.oracle.com/cd/E14571_01/web.1111/b31974/web_search_bc.htm#ADFFD2457)




The ADF Faces af:query component is a handy tool that neatly binds to an ADF bc View criteria defined in the model. 


In the default advanced mode, the query panel allows end users to select a suitable operator to apply to the query fields. The default list of these operators (of type JboCompOper) is populated based on the field's data type and ADF is rather intelligent with this feature - for example:
a) for an LOV based field, it displays an LOV if you select the Equals operator but changes to a text field when you choose the Starts-with operator...
b) It shows you two fields if you select the between operator. 


In my sample project based on the usual emp-dept schem…

Simplified J2EE view

Entity objects = business domain objects: data + validations - we would traditionally implement these using entity EJB's, hibernate objects etc. View Objects = Not exactly J2EE TO's - I find this an abstraction unique to ADF encapsulating the POJO and a query.
Application Module = the API interface / 'business service'. You write your logic and expose it using any convenient interface - java client, SOAP client, EJB interface etc. 

MVC (DataBindings - ADFm, the model; Pages - jsff or jspx, the view ; TaskFlows ADFc*, the controller) then resides on top of these in your ADF UI project and consumes these business services (or ones from a non ADFbc source). 


*These names are reflected in the packaging structure of Oracle's java libraries that implement these.


Anyway, that's my brief take on things, originally posted as a response here.
https://forums.oracle.com/forums/message.jspa?messageID=10161611#10161611


Here's the official patterns catalog page.
(I need to follow…