Saturday, July 13, 2013

ADF-BPM Integration: Custom Worklist.

A custom worklist is something commonly required from customers that use both ADF and BPM.
There are some user tasks that must go through a BPM process and other tasks that are performed directly.
So usually in the ADF application a worklist to display the BPM Tasks is required.

Oracle fusion gives many options to approach this and this can cause confusion.

Direction 1
My first approach some years ago was to use the exposed task flows of the BPM worklist:
See Oracle® Fusion Middleware Developer's Guide for Oracle SOA Suite,
32.13 Creating Reusable Worklist Regions
Some features available in worklist are exposed as standalone reusable components that can be embedded in any application. Moreover, these standalone task flows provide many customizations through parameters that enable you to build and customize a worklist application to meet requirements.’
The first attempt looked impressive to the moment that I tried to perform some customizations. The parameters are not well documented so I was using the trial and error methodology.
I could not customize it enough…see http://adfbugs.blogspot.gr/search?q=worklist
Also there was no way to override any of the worklist functionality (e.g add a link to another ADF task flow)

Direction 2
So we went ‘by the book’ and used the java api as described in the next chapter of Developer's Guide
33 Building a Custom Worklist Client

Along with some help from RedStack posts we managed to create the worklist we needed
http://redstack.wordpress.com/worklist/

Direction 3
Yet by reaching the next chapter of the Developer’s Guide
34 Introduction to Human Workflow Services
you see that there are also web services exposed to query and edit human tasks.
I though, why to use the java api and so many libraries? After all we are doing SOA and we should use the web services to create the custom worklist, and to update human tasks from ADF.
First I tried the easy way, to directly create data bindings from TaskQueryService web service. The result was the following:

I could not manage to create the correct structure of the input parameters in order to call the web service. Especially the ‘Predicate’ iterators were a nightmare.

So I tried a web service proxy:
 

A lot of types are created, similar but not the same with the java api and I managed to create and pass the correct parameters for the web service to run and return the Task list.

One issue was that the dates was exposed as iterators in the bindings?!

Yet the show stopper was that the Task type created from the web service do not have the getPayloadAsElement and setPayloadAsElement methods as the Java Api has. I did not find any way to update the human task payload from the web service.

The bottom line is that even though there seems to be 3 directions, only the second, seems to be the safe way to go for now.

 

Friday, April 5, 2013

New (11.1.1.7) Oracle Fusion release



Sorry for the long time to post.

I would like to say that i was very bussy but that could hardly describe it.
 
New full fusion version (11.1.1.7) is released from oracle this week.
this is mostly a bug fixing and new features releases (not the technology upgrade).

I guess that the 12c full fusion technology upgrade is not expected soon (may be at end of the year)

I see some interesting new features in release notes of jdeveloper:

Also there seems to be many additional features in BPM:

See also a great post of Chris about Why to migrate to this version:

I will evaluate our applications in the new release and let you know.

Wednesday, December 12, 2012

ADF Table Click to Edit functionality

I haven't been posting lately, i feel sorry for that.

This is mostly because i am up to my head with new projects, BPM, SOA, BI and other fusion middleware technologies. Also because:
  • we are using Jdeveloper 11.1.1.6 that is stable
  • we are using more or less the well known functionality
  • end users have started to get used to ADF functionality
 Still we need to keep walking, so i keep an eye from time to time, on the latest jdeveloper version 11.1.2.3.0 and functionality that we don't frequently use like the  ADF Table 'Click to Edit'.

Actually its a fancy functionality that make the table look nice and works fine with navitating either with mouse or by 'Tab' or arrows.
It is easy to implement, just set editingMode="clickToEdit" in editable ADF table.

everything works fine apart from the Date picker that does not work in Firefox 17 and it is not related with click to edit functionality (see forums.oracle.com )

Everything work fine until you press CreateInsert button.
Then a new row is inserted and highlighted yet it is not editable, the previous selected row is editable.


If you click on any other row by mouse nothing happens, rows don't become editable.
Arrows navigation don't work and If you try to navigate with tab it never go to the new row.
So the only applicable action is to click with mouse in the new row.

If you make a mistake not to fill the required fields and click on a different row, then validation errors appear as expected.
After that if you press rollback, even if it seems that the table is back to normal some rows are not editable any more when you click on them.
Sometimes rows display as duplicate on the table with these steps.
So it seems that click to edit functionality does not work properly for newly created rows on editable tables.
What we do to override this is that we create a popup dialog for new row data to be inserted and committed before they are editable in the table.

Test Case

Tuesday, July 24, 2012

Focus is Lost in IE8 when value is changed in Input List of values

New bug in Jdeveloper 11.1.1.6 version. It was not reproduced in 11.1.1.4.
It also happen only in Internet Explorer 8, not in 9 and not in Firefox.
When a value is selected or typed in an Input List Of values then the focus (cursor) goes to the internet explorer tab. This causes frustration to user's and delay in data entry.
Details in java.net/jira/browse/ADFEMG-31

Friday, May 11, 2012

Cannot commit orddoc Attribute through jdbc datasource

This is a new issue in JDeveloper version : 11.1.1.6.0
After migrating adf application from jdeveloper 11.1.1.4 to 11.1.1.6 the uploading of files in an ORDDOC database field fails with error:
java.sql.SQLException: Undefined type
at oracle.jpub.runtime.Util._convertToOracle(Util.java:277)
at oracle.jpub.runtime.Util.convertToOracle(Util.java:167)
at oracle.jpub.runtime.MutableStruct.getDatumAttribute(MutableStruct.java:323)
at oracle.jpub.runtime.MutableStruct.getDatumAttributes(MutableStruct.java:347)
at oracle.jpub.runtime.MutableStruct.toDatum(MutableStruct.java:118)
at oracle.ord.im.OrdSource.toDatum(OrdSource.java:93)
...

Defect 14058697 has been created  in oracle support

details in ADFEMG-22

At this time, disabling the wrapping seems to be the only viable option.
see Using Unwrapped Data Type Objects
http://docs.oracle.com/cd/E21764_01/web.1111/e13737/ds_tuning.htm#CHDEIBCE
We tested in test case and in our application and this workaround works.

Friday, May 4, 2012

java.net adfemg updates

ADFEMG-19 Combo Box not supported for ADF Faces?
lodged ER 14034162.

ADFEMG-20 ListOfValuesModelImpl : No row found for rowKey.
 new bug in jdeveloper 11.1.2.1, bug 14034129 logged and Fix scheduled 12.1.2.0.0.

ADFEMG-14Input List Of Values, autosuggest behavior
9316480 is lodged and Workaround suggestions are posted.

 

Thursday, April 5, 2012

Input List Of Values, autosuggest behavior

By default when you type a value in an input list of values the query is executed always with the LIKE operator.

This is very annoying for users that do heads-down data entry.
Also if the field is a number executed query force full table scan causing performance issues.

We just need the option to disable auto-suggest behavior (on design time) so that the query is executed with '=' operator and the LOV does not open when the value entered is valid.

You can find the details in

http://java.net/projects/adfemg