Process Optimization - A diamond in the rough

Refining your BPM process

Ah… The holiday season! Time to be with your family, eat like an elephant, getting stuck in endless traffic jams and moving in overcrowded shopping malls. No better time to write BPM articles, right? Actually, wrong! Curiously, a peak in activity actually absorbed me completely and we couldn’t do all the stuff that we wanted to. Anyway, we’re back.

Last time, we defined and modeled our first business process in BPMN. It modeled the “Request a parking space” process, with the behavior described in the textual process description. Now we’ll refine that process so that when we decide to implement it, we’ll take less time to do so.

Optimize before implementation VS implement before optimization

There’s an interesting debate as to whether or not should the first version of the BPM model be optimized before the implementation.

Some say “of course…why would you put a substandard process in production?”, while others argue “don’t worry and put the first version of the process in production ASAP, because the BPM lifecycle will guarantee an optimized version by itself in the second iteration, based on facts, not perceptions”.

Both approaches are valid and you can choose either one. Just don’t over do it if you go with the first one, or you’ll never get a version in production.

We typically choose the first approach, but we put a (half) day cap on the optimization work (one full day if the process is complex), to limit what we do. By the end of that (half) day the process goes on for implementation with whatever optimizations done in that time. This also help us focus and go for quick wins instead of nitpicking.
With our experience, we can look at a business process and quickly identify possible improvements. In time, you will too.

See any patterns?

If you look at the process version from the last article, you’ll see somethings that appear to be repeated. These are typically good candidates for optimization.
If you can factorize these into a reusable piece, you would only need to implement it once and then reuse it as many times as you want.
Check the notifications to the requester.

Some activities are repeated. A few are actually the same, others are very much alike with only small details different

Some activities are repeated. A few are actually the same, others are very much alike with only small details different

Most of them are basically the same, with only minor changes to the message itself. So, let’s start optimizing this.

No matter what the case, the notification task will send a message to a recipient of our choice. The content and recipient may differ, but the process will always send a message. This translates to a much cleaner process, because all of these notification tasks can be transformed into a single one.

Process after merging all notifications into a single one

Process after merging all notifications into a single one

much simpler, hum?

But now you may ask: “How will the notification know what message to send?”

If you notice the previous version, you already had the same issue. What determined which path the process followed was the result of the Check Parking Space Availability activity. No changes there. What changes is the logic behind the Check Parking Space Availability and the Notify Requester of result activities, so we’ll handle this in our next articles, trying to keep code at bay.

And with this simple optimization, the process became so simple, that there’s no need to perform any other optimizations… or is there?

At least for now, we’ll keep things as they are.

On the next post, we’ll start  working on process data, the first step towards process execution. Stay tuned.

Cheers,

Maverick

Post header image by Jeff-o-matic

Finally Hands-On

The first BPMN process

Hello there!

I know I’m a bit late on this article, but my presence in the Middle East had more (positive) impact than I anticipated, so I got tied up at work.

Anyway, let’s finally start to use Oracle’s BPM Composer to model our “Request a parking space” process.

As the Akino Fishing Co is a series focused on the Business User, we’ll try to keep our articles as Zero-Code as possible.

Finally… Hands-on!

We’ll start by logging on to BPM Composer

Oracle BPM Composer Login Screen

Oracle BPM Composer Login Screen

After logging in we are taken into the Process Spaces screen. Here, we’ll create a Space for our BPM Initiative. A Space is an container were you group and keep your Business Architecture (BA) and BPMN projects.

You can create as much spaces as you want, to organize your Business Architecture and BPMN projects the way you think it’s best. However, a project that belongs to a given space can’t be “seen” in other spaces, so take that into account. For the purpose of our article, we’ll be using just one space for all processes.

The Process Spaces List

The Process Spaces List

Create a new Process Space

Create a new Process Space

Don’t forget to give it a proper name and a decent description.

Setup the Process Space Name

Setup the Process Space Name

Remember that Oracle’s BPM Suite 12c has a significant amount of documentation and reporting features. If you fill in the corresponding information along the way (this means filling the documentation fields and comments), you can take advantage of these features and generate automatically a lot of documentation. This will save a lot of time on your BPM projects because, even though you may need to extend and/or customize the generated documents, there’s a lot of quality information being provided there.

Setting up permissions to your Space

You can, and should, set the permissions regarding access to your Process Space. You can set them using the edit space option available near the Space icon, by specifying which users or groups have what permission level.

Edit Process Space Permissions

Edit Process Space Permissions

Set Space Permissions

Set Space Permissions

Choose Users and Groups

Choose Users and Groups

Set the permission level

Set the permission level

Press "Share" to set the permission for the chosen user/group

Press “Share” to set the permission for the chosen user/group

There are 3 permission levels:

  • Viewer – This permission only allows processes to viewed, not changed.
  • Editor – This permission allows projects to be edited and changed.
  • Owner – This permission allows not only project editing, but also the ability to create project snapshots (as in VM, where you save the project snapshot), delete the project, share the project with other and, more importantly, deploy a project.

To make it easier for us, we’ll use the project owner for the reminder of the article, but you now know what you can do permission-wise.

Create your process

Now, we’ll create a new BPM project in the Akino Fishing Co. Space.

Click on the ‘+’ icon in the BPM Project creation tool on the right of the process composer screen

Process Composer - Project Creation Area

Process Composer – Project Creation Area

Now, give it a suggestive name, such as “Facilities Access and Use Requests” and click Save. Notice that we didn’t create  a BPM project with the “Request a parking space” name. This is because BPM projects typically have more than one BPM process, so you should name it something more high-level that can contain several, close-related, processes. For our process, we intend to group here all the requests to use Akino’s facilities, starting with the “Request a parking space” process.

Process Composer - Create a new BPM Project

Process Composer – Create a new BPM Project

Process Composer - BPM project created

Process Composer – BPM project created

Once the project is created, click on it to access its details. You’re then presented with the project area, where you can create all your project artifacts, create project snapshots and set the organization’s departments and roles. You can check it out more in detail in our previous post.

You first need to be able to edit the project. Find the pencil icon and click on it. From then on, you’ll be able to edit your project and create, edit or delete your artifacts.

Process Composer - Edit the process

Process Composer – Edit the project

Now, the ‘+’ sign should turn blue, and you’re able to create your “Request a parking space” process, in the processes tab.

Create a new Process

Create a new Process

Don’t forget to place meaningful and “as complete” as possible descriptions. These will really save you a lot of work down the road. Press Create and voilá… your first BPMN process is created. Congratulations!

Process Created

Process Created

Now click on it and you’ll access the actual model. As you can see, it’s empty. In a few minutes, the first iteration will be done.

The BPMN modelling canvas

The BPMN modelling canvas

The modelling process is in fact quite simple. All you have to do is drag-and-drop your “lego pieces” (remember the last post?) from the toolbox in the right into the canvas.

You’ll get to know the full range of  BPMN artifacts (Interactive Activities, Automated Activities, Decision Splits, Events…) as we get along with our articles. For this first iteration, we’ll use:

  • Interactive Activities (performed by humans)
    • User Task – Typical task to be performed by someone (a human)

      A "normal" user interactive task

      A “normal” user interactive task

    • Initiator Task –  User tasks that have special characteristics that allow to start processes (even though they’re placed after the “Start” symbol)

      The process Initiator Task

      The process Initiator Task – notice the green triangle

  • System Activities
    • Service Activities – Calls a service synchronously and collects its result.

      The Service Task - Calls integration point synchronously

      The Service Task – Calls integration point synchronously

    • Notification Activities – Uses a special messaging service to send E-mails or SMS

      A notification Task can be used for communication with an entity, by e-mail or SMS for instance

      A notification Task can be used for communication with an entity, by e-mail or SMS for instance

  • Decision Splits
    • Exclusive gateway – Evaluates a condition and based on that lets the process follow one, and only one, of the paths. Always contains a default path, in case the condition doesn’t evaluate correctly to any of the defined paths.

      The Exclusive Gateway

      The Exclusive Gateway

Design your process according to the description

If we go back to our previous post you’ll remember that we picked up a lot of information from the process description

  1. Verbs – filling form, submitting form, check available spaces, returns message, submitting contact information, create a task, generate e-mail or SMS,
  2. Nouns – Request, Requester, Form, Name, Company Name, Period Date, Period Start Time, Period End Time, External Entity, Employee, Parking Space, Message, E-mail, Mobile Number, System, Task, Concierge
  3. Decisions – if there are any parking spaces, if the requester is NOT an Akino Fishing Co. employee, if the system returns that the requester can take parking space X, if the system returns that there are no spaces available, if the requester chooses to submit the contact information, “if they can, they’ll mark the task as OK”, “if they can’t, they’ll mark the task as NOT OK”, if the system doesn’t return anything
  4. Time Associations – This process starts with a request, the system will then check, “from then, the system will generate an e-mail”

These will map with our BPMN artifacts and help us organize them in the canvas. For instance, verbs map into activities.

  • Filling form and submitting form refer to the same stage of the process, which is the start -> Initiator Task
  • Check available space is something that the system will do -> Service Task
  • System returns a message to the user -> Notification Task
  • Create a task to a concierge group -> User task
  • Generate e-mail or SMS -> Notification Task

As you can see, this made it pretty easy. Of course, you can read through the complete description again, but this will help you do things quicker

The same can be done for the other types of information.

So you’ll start creating your process by placing an initiator task right after the Start symbol

The initiator task is placed right after the process start

The initiator task is placed right after the process start

You can then edit its properties, by right-clicking over it. This will show the context menu for this type of BPMN artifact. Choose Properties and set its name and ensure the task type is set to initiator. If it’s not, change it.

The task context menu

The task context menu

Editing Task properties

Editing Task properties

Task Type - Initiator set

Setting the Task Type to initiator

After this is done, go to the next activity, which is to check the availability of parking spaces given the information filled by the requester. Do the same as you did for the Initiator task

System Task Properties

System Task Properties

Then you reach the first decision point, where you’ll evaluate which process path to follow. First decision is based on whether the requester is or isn’t an Akino Fishing Co. employee. We’ll start modeling the branch that deals with Akino Employees.

The Gateway Properties

The Gateway Properties

Branches Editing

Branch Editing

The employee brand should look something like this. See if you can understand the process, as it is very simple.

The Parking Space process with the employee requester part modeled.

The Parking Space process with the employee requester part modeled.

So this is what the process would be if it was only available for employees. Now let’s add the remaining steps. For starters, all of these activities are performed by the system itself, except the initiator task, which is done by a person. But the question is, how do we treat this person? What’s its role in the process? You can set several roles in a process, typically assigned to parts of the process called lanes. Each lane typically holds the process activities that are performed by its associated role. Most of the work is done by the requester, but in some cases, a concierge role is also involved. So let’s create these roles.

You can right-click over the lane name, choose Properties and create the role Requester. Notice that the lane changed names.

Choosing the Process Role for that lane

Choosing the Process Role for that lane

The requester Role

The requester Role

You can also create new lanes to assign more roles. In the case of the concierge role, will add a new lane, change it to the concierge role and then place the necessary tasks in this lane. Notice that Oracle BPM will use preferably the roles associated with each lane to assign a task to a role/group.

Adding more lanes

Adding more lanes

By default, the lane role is not assigned

By default, the lane role is not assigned

Creating a new role

Creating a new role “Concierge”

Your process model first iteration is complete

This is how the process looks after the first modelling iteration

This is how the process looks after the first modelling iteration (note: where it reads process owner (lane role) it should read Requester)

Note: This isn’t the most optimized process model. There are other ways of modelling this process which result in better performance, and more reuse of the artifacts. The focus of this model was on easy understanding, not process optimization.

So we designed our first BPMN 2.o model on Oracle BPM Suite.

It still doesn’t execute, it’s just a diagram, but we’ll get to that.

 

On the next post, we’ll start to see what can we change to improve it a bit and start working on the actual implementation so that the process is executed. Stay tuned.

Cheers,

Maverick

Post header image by Katie Inglis