Project Data Objects are not Global!

There are 2 types of variables that you can define in BPM Processes

Process Data Objects
       That can be shared across activities in a process. There is no confusion in this I hope.

Project Data Object
       This can be thought of as a ‘Global Variable’ that are shared across processes in a BPM Project and carry the same value across Processes. But this is NOT TRUE. We use Project Data Objects when the same variable is used across Projects. For example, a variable empId is required across multiple processes you have in a BPM Project, but each project holds its own values, then instead of defining the same object as Process Data Object in every process, one Project Data Object should be sufficient.

Hope this clears the myth !

Posted in Uncategorized | Leave a comment

Cleared Oracle BPM Certification

I’ve done my Oracle BPM Certification (IZ0 560) today, and want to share my learning path for the certification.

Fortunately, I had a chance to work on a highly customized BPM project for about 2 months which gave me a great insight into Oracle BPM Suite 11g and all its features, which helped me a lot to prepare for the certification.

But for those who didn’t have any real time experience on BPM Projects, for those who are practicing on their own, I would suggest the following path

First of all, Start with the basic BPM tutorial by Oracle

This example gives you a basic foundation on the BPM Suite and its modelling capabilities.
Once you are done with this, its time for you to take a deep dive into the Suite
This books works on a single, big project that covers almost all the features of the Suite

Though it takes some time, do not skip it, this is the best book for beginners to get a good knowledge and learning experience on the entire Suite.

Once you are done, thats it! You are almost ready for the exam
Look at the certification link for the list of topics and see if you’ve covered all these.

Note that if you are well versed with SOA Suite, learning BPM and getting certified would be a cakewalk, provided you put some effort.

Posted in Uncategorized | 1 Comment

Measurement Mark in Process Analytics – Explained!

‘Measure Business Indicator’ and ‘Measurement Mark’ is often a topic of confusion. So let me explain them in detail

A business Indicator in BPM is nothing but a Project Data Object that can be used to capture information from your BPM Process to be sent to Process Analytics Databases / BAM Databases that Process Analysts can use to monitor your processes

A Business Indicator can be of the following types

  • Measure
  • Dimension
  • Counter

This post completely discusses about Measure

A Measure Business Indicator is used to capture something that can be measured.
Ex : The discount given to a party

There are few pre-defined Measure Business Indicators defined.

  • Number of activity instances by activity, process and participant
  • Avg time to complete an Activity
  • Avg time to complete a Process

Apart from these, you can always define your own Measure Business Indicator, just as in the abouve example, Measure to capture ‘discount given to a party’

Now, If the Measure Business Indicator captures this value, then why again Measurement Mark?

Measurement marks enable you to measure a business indicator of type measure at a certain point in the process
Single Measurement
Interval Start
Interval Stop
Explanation in detail
Whatever you want to measure, you have to define a measure Business Indicator first.
Lets say, in your process, there are 10 activities, and say
At activity1, you want to measure discountAmt (measure Business Indicator(BI) name : discMeasure)
At activity2, you want to measure salary (measure Business Indicator(BI) name : salMeasure)
At activity3, you want to measure someotherthing (measure Business Indicator(BI) name : someMeasure)
 and so on…
Now, you have to create measure type Business Indicators corresponding to all these measures you want to measure. End of the day, all these become project data objects that hold values
Now, storing salMeasure, someMeasure at activity1 doesn’t make sense, as these values are not available yet. At activity1, saving discMeasure only makes sense
So, how do you say the BPMN service engine to store only discMeasure at Activity1, and similarly only salMeasure at Activity2, and so on…
This is done using Measurement Mark
A measurement mark tells the service engine what all measures to be stored into the process analytics/BAM databases
A measurement mark associates measures at a particular point(in this case, discMeasure to Activity1)
Along with storing the measure BI’s selected, all the default measures and dimensions are also stored
Process to add a Measurement Mark
  1. Pre – req : Identify what all measures to be captured, define corresponding Measure BI’s in the structure pane. Also define corresponding Dimensions that may be used to group these measures later in the dashboards
  2. Where ever you want to measure something, drag and drop ‘Measurement’ activity from the component pallette
  3. Give a name, select the measure BI’s to be stored
Interval Start and Interval Stop Measurement is used when you want to capture data from a section of the process
The start and end points of the process that you want to capture is identified using these two measurement marks. And even here, you need to associate all the measure BI’s that you want to be stored at that point

Hope this made you clear on the topic of Measure and Measurement Mark

Posted in Uncategorized | Leave a comment

Exception while deploying UI project associated with a Human Task


You may sometimes encounter an exception while deploying the ADF UI project associated with a Human Task.

Exception looks like this:

Weblogic Server Exception: weblogic.application.ModuleException:
Caused by: weblogic.common.ResourceException: weblogic.common.ResourceException: weblogic.common.ResourceException: No credential mapper entry found for password indirection user=hr for data source Connection1
  See server logs or server console for more details.
Taskflow deployment failed to deploy to server. Remote deployment failed
####  Deployment incomplete.  ####
Remote deployment failed (oracle.jdevimpl.deploy.common.Jsr88RemoteDeployer)

To resolve this, just remove the reference to ‘Connection1′(as indicated in the exception trace) from the connections.xml file. This can happen when you create the connection with that name, and later on, remove it.

Just remove the whole tag for this connection. And it gets deployed this time.
Hope this helps you resolve the issue.

Posted in Uncategorized | Leave a comment

My Notes – ‘Message throw & catch’ VS ‘Message Send & Receive’ tasks – Oracle BPM Suite 11g

Both ‘Message throw & catch’ VS ‘Message Send & Receive’ tasks are used to invoke services/Processes asynchronously. That is, once a throw task is executed or a Send task is executed, the token does not wait for the response, rather, it continues to the next task.

Both act almost similarly, however there is a slight difference

You cannot use a Send task to invoke a process that is instantiated with a message start event
You cannot use a throw task to invoke a process that is instantiated with a Message Receive task

All the 4 tasks can be at any place with in a process.
A process can be started using a Message Receive task / Message Catch Event
And at the same time, a Message Receive task / Message Catch Event can even be in mid-process

When a process encounters one of these 2 in the middle of the process, the token waits at that point till it receives that message(from either a Throw task or a Send task)

Message Send and Receive : these tasks can be at any position of the process
Description of Figure 6-22 follows

Message throw and catch task : These tasks can be at any position of the process
Description of Figure 6-25 follows

Posted in Uncategorized | Leave a comment

My Notes – Manual Task :: Oracle BPM Suite 11g

Manual task is something which is not managed by BPM runtime, but stil you may want to represent a particular manual activity in BPMN diagram.
For example, in a process, there may be a step where you need signature of the management after all the approvals, which is to be done specifically, seperate from BPM, meaning you need to take out the printout, sign it and submit. This is where a Manual task can be used. This doens’t do anything with respect to BPM runtime, but acts as a place holder for some human Intervention.
Posted in Uncategorized | Leave a comment

Starting a BPM Process : Oracle BPM Suite 11g

A BPM Process can be started/triggered in one of the following ways

1. A Start event of type Message / Signal / Timer
2. A none start event followed by a User task with Initiator pattern
3. A none start event followed by a Receive Task. The Receive task must be configured to create a process instance(Instantiate property set)

You can even have a combination of the listed ways to start a process, in which case the process has multiple start events

When creating a process that has multiple end events, you must ensure that any tokens that reach a message end event were created by a message start. Ex, you cannot have a Message End Event for a process that starts with Timer Start Event

Posted in Uncategorized | Leave a comment

Manual Process VS Reusable Process : Oracle BPM Suite 11g

When you try to create a BPM Process, the editor gives you 4 options
Synchronous Process
Asynchronous Process
Manual Process
Reusable Process

The first 2 are obvious, with begin and end activities as ‘Message Type’
But both Manual and Reusable processes has begin and end activities as ‘None Events’. If both are same, then why two different options?

There is a difference

The Manual Process, though the start event is a None Event, has an Initiator node that starts the process. Also, A manual process’ start event can be transformed into another type. Also, there can be multiple start events to the same process.
On the other hand, the Reusable Process starts with a None start event. And there wont be an initiator after that. If any initiator node is added, or the start event is changed, this no longer becomes a reusable process. A Reusable Process can be called from a ‘Call’ Activity

Posted in Uncategorized | Leave a comment

Grouping XML elelments using XSLT – xsl:for-each-group

This is an informal post on XSLT for-each-group which is very powerful function to group xml elements based on some criteria.

For Ex, you may want to convert a flat structure, typically returned by DB into an xml which is, say department wise. for-each-group is what you want

This sample is to convert a flat structure into a projectOwner wise grouping


        some desc 1
        some desc 2

Ouput Format required













for-each-group groups the entire xml as per the group-by value defined and loads in memory
ex :  — ProjectOwner here
current-grouping-key() gives the values of all ProjectOwner
current-group() lists all the tags defined in a particular set
Posted in Uncategorized | Leave a comment

Importing a BPM Project into Jdeveloper

When I was doing my first project on BPM, I was asked to check some exisiting BPM Project which was sent to me as a .zip file
Now this is not in a .jar format which would have been the case with a SOA Project.
When you check a BPM Project in Jdeveloper, you see two folders, one for SOA stuff and the other for BPM. So this is organized in a different way compared to a SOA Composite
I literally had no idea how to import the source code into Jdeveloper and finally could find a simple solution
Just create the application and projects with the same name as that of the source code(from zip file). This creates a similar folder structure in your workspace. Now you can take the files from the zip and place/replace them into the folders in you workspace.
Now, when you open your Jdeveloper, you could see the entire thing setup!
Thanks for reading, Please check the other blogs as well
Posted in Uncategorized | Leave a comment