Saturday, April 20, 2013

Oracle BPM 11g Mobile Worklist with ADF Mobile

I have developed ADF Mobile application to bring BPM worklist tasks to the mobile device - I would like to share concepts of such ADF Mobile application with the community. The whole idea is based on BPM Java API to access BPM Context and get currently assigned tasks for the user, read more here - Lightweight ADF Task Flow for BPM Human Tasks Overview. Once tasks from BPM are queried, they are exposed through ADF BC secured Web Service method. Web Service is consumed from ADF Mobile application through Web Service Data Control - task data is rendered on the mobile device, later user can do callback and send approve/reject actions. Approve/Reject actions will be processed by BPM API on ADF BC secured Web Service side.

ADF Mobile login and secured Web Service call implementation is done based on previous blog - ADF Mobile - Secured Web Service Access.

Here you can see BPM mobile worklist solution high level architecture:

Sample application -, is shipped with three separate JDeveloper applications:

1. ADFBasicAuthApp - server side application to allow login into ADF Mobile application running on the mobile device

2. ADFSecuredService - server side application with access to BPM context and exposed secured Web Service providing list of tasks for the current user

3. ADFMobileSecuredApp - ADF Mobile application with connection to secured ADF BC Web Service, displays BPM mobile worklist

User is provided with login screen for BPM mobile worklist application:

Here we can see standard ADF Worklist task flow running in the Web browser with BPM tasks listed. The same tasks are listed in BPM mobile worklist:

In BPM mobile worklist user can select particular task and view details:

1. ADF BC secured Web Service Implementation

ADF BC secured Web Service is implemented and deployed based on this post - Web Service Interface for ADF BC Application Module in Oracle Fusion 11g.

Web Service method returns List type, each task data is represented with one line in the list. Method is exposed through ADF BC Web Service, return type - List:

Connection to BPM context is established with the username retrieved from ADF Security context, password is static for the simplicity of the example:

Sample application contains logic to access BPM context and retrieve all pending tasks for current user. Tasks are collected and returned as List:

Such Web Service can be tested from Oracle Enterprise Manager, using OWSM policy for secured access. See list of task data returned:

2. ADF Mobile application for BPM mobile worklist

Secured Web Service is consumed in ADF Mobile and Data Control is created:

Data is loaded into mobile device screen through proxy Data Control bean - WorkList, in this bean we do parsing of Web Service data retrieved from MobileService Data Control:

Here is the source code for BPM mobile worklist screen - list of tasks:

Screen to display details of BPM task in ADF Mobile:


Sureshbabu Rajendiran said...

Hi Andrejus,

Instead of using the API and then exposing it as secured web service.. why don't we use webservice exposed for worklist directly?

Let me know any drawbacks using it?


Andrejus Baranovskis said...


Accessing Web Service from Human Task is good also. But in my experience, in practice it makes it easier to publish your own Web Service and isolate access to BPM through Java API. This allows to control entire solution in more transparent way, centralized into server side API.

Other thing, you may hit a bug with out of the box Human Task Web Service and as it happens it will be much harder to workaround it comparing to your own Web Service.

With API it is easier to implement data caching in between.


Sureshbabu Rajendiran said...


How to get the username and password to get the intial workFlow context...

Without getting logged-in user's context this doesn't looks like a working solution.

Kindly let me know your suggestions on this ...


Andrejus Baranovskis said...


As you can see in sample app, I'm getting username dynamically from ADF Security Context. Regarding password - you need to get it from your enterprise security management system.


Sureshbabu Rajendiran said...

Thanks Andrejus..

Could you please throw more light on how to get password from enterprise security management system or some docs pointing to it.


Adam Quan said...

Is it possible for you to give a step-by-step instruction on deploying and connecting this application to a running BPM environment?

Anonymous said...


How to handle the approve/reject part through mobile?