Posts

Data Objects and Form Header

Process Data Definition – Part II… and Web form introduction

Hi there,

So here’s our new article, completing the data definition series. We’ll build the remaining Business and Data Objects as well as build our first web form based on those objects.

Using your data inside the Request a Parking Space process

Last time, we saw how we defined the data that will be governed by our Business Process.

Now it’s time to make use of it during the process execution. It’s this data that will be input, manipulated and condition the actual process flow for every process instance.

If you remember from the last article, you had some homework 🙂

You had to build the Parking Space Business Object. Check what you did against our proposal. It should feature the same attributes, give or take a few…

Parking Space

  • Space Nr.
  • Reservation Start Date&Time
  • Reservation End Date&Time
  • Reserved for
  • AllSpacesOccupied?
  • Meeting with
  • Employee Nr

Important Note: Remember that processes govern data, they don’t keep it. Data is kept in the database. That’s how you have to think.

Again, the purpose of this series is to help business analysts and process owners model and automate processes without writing any code, so we’ll assume that the IT department did their work and expose some services that check if there’s a parking space available for the time slot that the requester wishes to reserve and, if so, returns the information defined in the Parking Space Business Object, and if not, returns an response that indicates all parking spaces are occupied.

Remaining Data Objects

Let’s create our remaining data objects: one for the parking space and one of our special data objects that help us govern the process flow, an instance of the ProcessStatusBO.

Inside the process BPMN diagram, click on the Data Objects option

Access the Data Object definition window

Access the Data Object definition window

and create a new process data object called v_parkingSpace, of the type object -> parkingSpaceBO, and another one called v_processStatus of the type object->ProcessStatusBO.

Add a new process Data Object

Add a new process Data Object

Adding the 2 new Data Objects

Adding the 2 new Data Objects

I use the prefix “v_” to indicate that it’s a variable, something that holds data, of my process.

From this moment on, your process has all the data placeholders that it needs.

All 3 Data Objects created

All 3 Data Objects created

Now there’s one more step…

Collecting the information

We’ll need to collect the data first, to get the process rolling. There are, in fact, several ways to start processes, but the vast majority will necessarily collect information at the start, either from a user (through a form, …) or from other systems, and places it in the process data objects. In our case, we’ll build a form to collect that information from the requester.

Designing web forms is a breeze since Oracle BPM 11.1.1.7. The frevvo platform was introduced to help business users design the interaction forms themselves, reducing the need for IT to build applications for that specific purpose that typically take a lot of time to be ready, increasing the overall agility and decreasing the time-to-market of a process.

So, to build our own forms, we’ll go into the web forms option in Oracle’s BPM Process Composer, click over the “+” sign and give it a name, for instance RequestInfoFRM.

Creating your first form

Creating your first form

We’re adopting what we call the “Form first method”, so we’ll design the form first, and let Oracle BPM generate the data structures for itself. Then, we’ll just need to connect these self-generated structures to our own data objects.

There’s also the “Data First method”, that allows you to specify the specific data objects for forms and allows widget auto generation, effectively generating the web form in a single click. You only have to adjust the looks, if you don’t like the way the widgets are placed.

For our form, we’ll collect the information that we defined in our RequestBO.

 As you can see, the web form designer has a drag-and-drop interface, which allows even complex forms to be designed in a very short timeframe.

And so, we completed our data object definition and built our first web form for it. On the next post, we’ll look into more detail about web form creation, namely focusing on both form creation methods and looking into the various form widgets. Until then…

Cheers,

Maverick

Post Header image by Garry Ing

Governing Process Data

Process Data Definition

Processes transform inputs (data) into outputs (data)

We have our BPMN process and if we only want to document our process, this is almost all the work we’ll need to do. However, Akino Fishing Co. wants to not only document, but also automate and execute the processes. For that, we need to define our process data.

A process governs data transformation

Process data refers to the entities that the process manipulates, or interacts with, during its life cycle. To put it simply, a process manipulates things. All these things must first be defined, so that the process does what it’s intended to do.

For our process, we’ll define the following data entities:

  • Request
  • Parking Space

Oracle BPM Composer allows you to define this in a fairly simple way. First, you create the data structure, that will specify what makes that “thing”. Let’s build an example to understand this better:

What makes a request? How is it defined? Think about it for 5 minutes…

5 Minutes

You should end up with something like this:

  • Requester – who made the request
  • Request date – when the request was made
  • Employee? – is the requester an employee?
  • Park date&time – when does the requester want to park
  • Fulfilled? – was the request fulfilled?
  • State – state of the request: open, closed, pending alternative

So, these set the characteristics, the structure, of our request. 

Business Objects vs Data Objects

We define a request as being comprised of these 6 elements, by creating a Business Object. In the BPM process composer select the option Business Object,

Add a new Business Object

Add a new Business Object

Add a new Business Object

Add a new Business Object

click on the “+” icon, and give it a name, like RequestBO.

Name your new Business Object. Tip: End the Name with BO, so that you know that it's a Business Object

Name your new Business Object. Tip: End the Name with BO, so that you know that it’s a Business Object

Now, add the 6 attributes we identified earlier. Pay attention to the attribute type: it should match the actual information you want to keep. So you have:

  • Requester- string
  • Request date – time-> date&time
  • Employee? – boolean
  • Parking Date and Time – time -> date&time
  • Fulfilled? – boolean
  • State – string
Set the name and the type of the attribute

Set the name and the type of the attribute

Don’t be afraid if the attribute types seem strange. The names are tech lyngo. To make it easier, I’ll explain it:

  • “String” – the same as “Text”. Attributes of this type will hold some text.
  • “Boolean” – used to keep one of only two values: True or False.
  • “Date&Time” – used to keep dates and time of day, in a numeric form. Because it is a numeric value, and not a string, allows calculations to be performed over them.

You see, they’re pretty easy to understand.

Your attributes all created. Just click on Finish.

Your attributes all created. Just click on Finish.

Attribute name have some rules: use only alphanumeric characters, start with a letter, the first letter can not be capitalized. The process composer will perform the necessary validations, but here’s the “heads up” notice.

Bad attribute name

Bad attribute name

Once you finish creating all 6 attributes, click Finish and you’re done.

Now that your RequestBO, your data structure, is created, you can use it as many times as you like. You do that by creating Data Objects. A data object is  the instantiation, the actual object that your process is going to manipulate. Think of if as if the Business Object is a cast and the Data Objects are the pieces that are created from it.

So, to create a data object that your process can manipulate, you go inside your process in BPM process composer, 

Access the Data Object definition window

Access the Data Object definition window

select the option “Data Objects”, specify that it’s a Process Data Object, not a Project Data Object (we’ll come to that later), 

Add a new process Data Object

Add a new process Data Object

give it a cool name like…  ehrmmm… “v_request” or whatever, select object type, and from there you should be able to see all business objects, including your “freshly made” RequestBO. 

Select the Business Object for your Data Object

Select the Business Object for your Data Object

Click on it and confirm the creation.

Congratulations! You’ve created your first process data object.

New Data Object added to the process

New Data Object added to the process

Setting up the remaining process data

Now that you know how to build your process data, it’s a good idea to practice, so I’ll let you try it out for the remaining data object that we identified previously: the parking space.

What “makes” a parking space, for the process we’re creating? 

Our solution for this exercise will be shown in the next article 🙂

A very special Data Object

Personally, I like having a special data object in all of my processes. I call it ProcessStatusBO, and it holds a set of attributes that typically help me manage the progress of my processes.

This object is comprised of a few string attributes: 

  • Last outcome – keeps the last response of a human task in your process
  • Last error – keeps the last known error
  • Current state – holds the current business state of a process 
  • Clipboard – a place to hold temporary values, that may come in handy

I use strings for all of these because they are the most versatile data type. If we need to transform it into another thing, Oracle BPM supplies a series of tools that allow you to do just that. We may cover that in the future, but for now, they’re not necessary.

So these are the basic steps to understand how to process data. In our next article we’ll be showing how to use this data inside our process to enable our business app to request a parking space. Be sure to tune in.

Post header image by Gavin Kealy

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

Tools and prep for work

Know your tools and prepare for work

Hi and welcome to another article of the Akino Fishing Company BPM initiative series.

Last week we described our pilot process in plain english. We wrote what is the process, what does it do, what are the expected inputs and outputs and how the information is processed.

Today we’ll start with that description, do a little preparation work around it and we’ll get to know the tools we’ll be using to build our BPM project.

Preparation for Work

A quick recap

Parking Space

Parking Spaces. Image by Maarten

So, our pilot process is the now famous “Request a parking space” process. After starting with a very simple/direct description (the happy path):

This process starts with a request from someone, either internal or external to the company. The requester fills in a small form with his name, his company name and the period in which he will need the parking space. The system will check if there are available parking spaces in that period and returns a response to the requester: Either “Please park on parking space X” or “We’re sorry but there are no parkins spaces available for that period”

we then elaborated it, adding depth and “not so happy” paths, without going overboard with the complexity to reach this:

This process starts with a request from an external entity or an employee, by filling and submitting a simple form with the following fields:

  • Name
  • Company name
  • Period to use the parking space
    • Date
    • Start Time
    • End Time

The system will then check if there are any parking spaces available for that period.

If the requester is NOT an Akino Fishing Co. employee and

  • The system returns that the requester can take parking space X, then
    • The requester is presented with a message stating “Your parking space is reserved. Please park on space X. Thank you”
  • The system returns that there are no spaces available, then
    • The requester is presented with a message stating “We’re sorry but currently there aren’t any parking spaces available in the requested period. Would you care to leave us your contacts and we’ll try to arrange a parking space for you?”, together with 2 fields: e-mail and mobile number.
    • If the requester chooses to submit the contact information, the system should create a task to a group of people, called “concierge”, that will try internally to arrange a space.
      • If they can, they’ll mark the task as OK and give the information about the parking space number. From then, the system will generate an e-mail and/or an SMS to the requester, depending on the contact data they filled in, stating that they can use parking space X.
      • If they can’t, they’ll mark the task as NOT OK. From then, the system will generate an e-mail and/or an SMS to the requester, depending on the contact data they filled in, stating that despite the efforts they couldn’t arrange a space.
  • The system doesn’t return anything, then
    • The requester is presented with a message stating “We’re sorry but we can’t check parking space availability right now. Would you care to leave us your contacts and we’ll try to arrange a parking space for you?”, together with 2 fields: e-mail and mobile number.
    • If the requester chooses to submit the contact information, the system should create a task to a group of people, called “concierge”, that will try internally to arrange a space.
      • If they can, they’ll mark the task as OK and give the information about the parking space number. From then, the system will generate an e-mail and/or an SMS to the requester, depending on the contact data they filled in, stating that they can use parking space X.
      • If they can’t, they’ll mark the task as NOT OK. From then, the system will generate an e-mail and/or an SMS to the requester, depending on the contact data they filled in, stating that despite the efforts they couldn’t arrange a space.

If the requester is an Akino Fishing Co. employee and

  • The system returns that the requester can take parking space X, then
    • The requester is presented with a message stating “Your parking space is reserved. Please park on space X. Notice that you may need to give up your seat, if it’s deemed necessary to receive visitors.Thank you”
  • The system returns that there are no spaces available, then
    • The requester is presented with a message stating “We’re sorry but currently there aren’t any parking spaces available in the requested period. Thank you”
  • The system doesn’t return anything, then
    • The requester is presented with a message stating “We’re sorry but we can’t check parking space availability right now. Check back later. Thank you”

This is the process we’ll model.

The Analyst Method

At Red Mavericks we like to exercise our creativity, do things out of the ordinary, but sometimes, we need to do things with a certain consistency, with a certain methodology. For instance, to pickup information from a plain English description into structured information we follow a certain method. Now, again, there are other ways to do it, but we like to do it like this.

We go through a series of steps:

  1. Identify the verbs in the process description
  2. Identify the nouns in the process description
  3. Identify decision words (if, then, else, while, when, until, or, and, not)
  4. Identify time associating words (after, before, during, at start, in the end, prior)
  5. Build a table with your findings, identifying for each finding their type(1, 2, 3, or 4) and try to answer the 3W1H (What, Who, When and How)

it may not seem like it at the moment, but 80% of what you need to know to model your process is right here. Now eliminate any repitions that mean the same. For instance, in the description you have “…The requester is presented with a message stating “We’re sorry but currently there aren’t any parking spaces available in the requested period. Would you care to leave us your contacts and we’ll try to arrange a parking space for you?”, together with 2 fields: e-mail and mobile number. If the requester chooses to submit the contact information…“. In this case keep only e.mail and mobile number, as the contact information already refers to these two fields.

I’ll let you do the work for now, and identify them for yourself. Come back in 10 minutes when you’re finished. 🙂

10 Minutes

You should end up with a list similar to this one, give or take a few:

  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”

The Tools and Artifacts

My Lego

Designing a BPMN process model is a bit like playing with Legos. You have your building blocks and you have rules to connect them (in the Lego blocks the rules are Physics). You can configure and change your blocks, so that their behavior changes, which is something you can’t do with your normal Legos. Consider it a bonus.

BPMN: Business Process Modelling Notation.

It’s a notation to represent process models that ensures a relatively easy way of understanding a process and that allows an actual implementation. Oracle BPM Suite uses BPMN models to represent and actually automate and execute processes, so there’s never a gap between what is designed and what is actually running. And because it’s a standard, it ensures easy import/export from several tools because the process models are the same.

As with all games, you first need to know the pieces you use, the rules of the game and the playing field/board, so that’s what we’ll do now.

There are 6 different types of pieces/blocks

  • Tasks to be performed by users
  • Automated tasks to be done by systems
  • Groups of tasks built together that do something self contained – subprocesses
  • Decision points where, depending on conditions, the process does different things
  • Tasks that represent events
  • Measurement instruments, used to collect information on specific parts of the process

There are several subtypes that belong to a given block type, each with a specific behavior. For instance, users tasks can be:

  • A “normal” user task, where a user fills in the associated information and registers the task result
  • For your information (FYI) tasks, meant to give some information to the user and for him to confirm he received it. This task type doesn’t wait for a user intervention to allow the process flow to continue
  • The initiator task, which has built-in capabilities to allow someone to start a process on their own
  • Approval cycle tasks, a.k.a. Management tasks, which are tasks that need to be performed by several persons inside an approval cycle. For instance, I respond, my superior confirms my decision, his superior also confirms and so on.
  • Voting tasks, which consider that the task is performed when a voting result is reached. You can configure the expected voting result. This task is sent to a group of people. For instance, you can set the if 3 out of 5 people vote yes, the task is marked as done with a “Yes” result.
  • Manual tasks are tasks that are performed without any control of any system. We use manual tasks to represent work that needs to be done, but without actual interaction with any system or the BPM Suite.

We’ll provide a list of the most common building blocks of Oracle BPM Suite in a nice poster so that you can print it, and a wallpaper for your PC and mobile devices. It will be available in the next few days.

Connecting the description with your Lego pieces

Now that you know your Lego pieces, let’s connect them to what we found out about our process description:

  • The verbs with tasks (automated and human)
  • The nouns with roles, groups (refers to “who”) or data (refers to “what”)
  • Decision words with decision points (gateways)
  • Time associated words order the previous points (one after the other)

The Oracle Process Composer

We know our process, we know our building blocks, we now need to know our playing field: the Oracle BPM Process Composer.

The Oracle BPM Process Composer

The Oracle BPM Process Composer

In the latest 12c version, the process composer suffered a major overhaul, with a large number of new features brought in, a new Business Architecture area, and a man improvement on robustness, performance and ease of use. You can now really do a complete end-to-end process, from design to modelling, to implementation, to testing, to deployment without the use of any other tool (No more of that JDeveloper – good news to business analysts) and in a very easy way. That’s what we’ll be focusing on this pilot project: how to get business users, not IT staff, to do all of these things by themselves.
So, the process composer is now a tool divided into two areas: the business architecture area, suitable to model an Enterprise-wide BPM initiative, with the use of enterprise process maps, strategy models and value chain diagrams;

The Business Architecture part of Process Composer

The Business Architecture part of Process Composer

and the BPM project area, suitable to model, implement and deploy BPM processes.
We’ll be working on the BPM project area for now.

Process Composer BPM Project Area

Process Composer BPM Project Area

Let’s take a closer look at it.

The BPM project area

This area is divided into logical concepts:

Process Composer's BPM project area detail

Process Composer’s BPM project area detail

  1. Artifacts type choice – where’s you choose what kind of artifacts do you want to see, create or change
  2. Artifacts list – the list of already created artifacts
  3. Overall definitions – Enterprise and process wide definitions
  4. Project settings – Project definition and settings
  5. Project File Management – toolset to allow project file management and project actions

We’ll need most artifacts, so we’ll learn about the assets as we go along with our pilot project.

Wrap up

You now know everything you need to start designing your process in the Oracle BPM Suite Process Composer. Our next article will cover the first part of a step-by-step build of our pilot process.
Next week I’ll be travelling, so next article will probably only go out in a fortnight, by the end of December’s 1st week.

Cheers,

Maverick

Post header image by zzpza

Pilot Project

The Pilot Project

Welcome back for the 3rd episode of the Akino Fishing Co. BPM initiative saga.

About this article’s head image, we’re sorry, but the relation between Mavericks and pilot was too good to miss… 🙂

Anyway, today we’re going to describe our pilot project, the famous “Request a parking space” process. You can read about how and why we chose this process in last week’s article.

Let’s get started!

The process description

We’ll begin with a quick textual description of what the process is. So, the consultants met with some sales personnel and secretaries that typically manage these requests by hand. The idea is to let them describe how this process works. Once the consultants understand the process from their perspective they’re ready to describe it in their own words, which will then be modeled in Oracle BPM Suite.

Take note that getting to an adequate process description is an iterative, methodical and creative work. Now, “methodical” and “creative” not always get along, but they do coexist. The creative part comes into play when using problem solving to find improved ways of doing the processes’ activities, while the methodical approach tries to ensure that the whole process is captured and described.

Happy, happy, happy path

It’s quite normal that the first iteration focus on the so-called “Happy Path”. The happy path is the sorted list of process activities that are completed to achieve the process objective, when everything goes according to plan, without any issues or problems along the way.

Happy Path

The Happy path. No obstacles or deviations. Image by Vincent.

So, for instance, if you have a loan process, the happy path would be something like this:

  1. Customer applies for a loan
  2. Bank checks documentation
  3. Bank evaluates the credit rating
  4. Bank concedes or rejects the loan

When you ask someone to describe you a given process, the happy path is typically the first description that they give you.

A methodical approach

Although the creative process is very important in problem solving and optimization, the way a process description is created should follow some rules, guidelines and principles.There are literally tenths or hundreds of ways to do this. We’ll use one that we think works well, that consists on capturing the happy path first and then questioning the users and making them think of things that can go wrong along the way.

So, for our first iteration, we’ll start to describe the pilot process in plain English first, without using any specialty tools. We confess that we like to do it first on pen and paper, but you can use a word processing software, the notepad, whatever you feel comfortable with.

Drafting on pen and paper

We love using pen and paper, Helps with our creative process. Image by Nathanael Coyne

Now try to think for yourself, what would be your description of a process to request a parking space. Take 30 seconds to think about it and then continue reading this article. Remember… plain english! Don’t go thinking on User tasks, events and gateways (more on these subjects in the next posts).

Ready? Set? Go!

30 Seconds

Done? Great!

Your description should be something like this:

This process starts with a request from someone, either internal or external to the company. The requester fills in a small form with his name, his company name and the period in which he will need the parking space. The system will check if there are available parking spaces in that period and returns a response to the requester: Either “Please park on parking space X” or “We’re sorry but there are no parkins spaces available for that period”

Simple enough, no?

The second iteration

That was our first iteration, the “happy path”.Now we start to think on what can happen in that process that may influence the activities in the process or the overall process objective: grant a parking space. Maybe there are things that are missing, or that you feel that should be treated differently, like for instance:

  • How do you want to treat external entity requests? Do you want them to have priority over employee requests?
  • Do you just want to respond that there’s no parking space available or do you want to do some kind of action to see if someone can still try and find an alternative?
  • (…)

Trust no one!

There are other points that you need to think about when doing a process description. One of the most important is sometimes, we would dare to say often, neglected and has to do with responsibility. Let’s say that the system that checks if there are parking spaces available  doesn’t respond for whatever reason (network issues, system is down, power outtage, …). What should we present the requester? What kind of response should the process give?

So, a golden rule is Never expect that systems, or people for that matter, respond at all to a request you make, let alone respond in a timely fashion. As with anything else in this world, systems and people will fail and fall short of expectations. Engrave this sentence into your mind, and have this in consideration whenever you create/design business processes.

Next iterations

There are still a lot of new things you can add to your process:

  • Do we need to have a specially reserved VIP space that no one can request?
  • Do I want the possibility to manage unused management parking spaces, so that I can use them as available parking seats?
  • Do I need to account for things like earthquakes, fires and floods?

The list goes on and on, so as the complexity.

complexity illustration

“It seemed a good idea to add some more lines at the time…”. Image by Armando Alonso.

There’s another golden rule about business processes: Business Processes are never perfect and can always be improved. So, although the list of things you can remember to improve a process is large, you’ll need to judge what makes sense to implement, and what doesn’t. Try to remember the Pareto’s Principle:

80% of results are achieved with 20% of the effort. 

Carefully evaluate if the additional 3, 4, 5, 6% you’ll get with some of these improvements justify the cost of adding 30% more effort. Keep it as simple as possible.

The final description

So, we end up with a final process description that looks something like this:

This process starts with a request from an external entity or an employee, by filling and submitting a simple form with the following fields:

  • Name
  • Company name
  • Period to use the parking space
    • Date
    • Start Time
    • End Time

The system will then check if there are any parking spaces available for that period.

If the requester is NOT an Akino Fishing Co. employee and

  • The system returns that the requester can take parking space X, then
    • The requester is presented with a message stating “Your parking space is reserved. Please park on space X. Thank you”
  • The system returns that there are no spaces available, then
    • The requester is presented with a message stating “We’re sorry but currently there aren’t any parking spaces available in the requested period. Would you care to leave us your contacts and we’ll try to arrange a parking space for you?”, together with 2 fields: e-mail and mobile number.
    • If the requester chooses to submit the contact information, the system should create a task to a group of people, called “concierge”, that will try internally to arrange a space.
      • If they can, they’ll mark the task as OK and give the information about the parking space number. From then, the system will generate an e-mail and/or an SMS to the requester, depending on the contact data they filled in, stating that they can use parking space X.
      • If they can’t, they’ll mark the task as NOT OK. From then, the system will generate an e-mail and/or an SMS to the requester, depending on the contact data they filled in, stating that despite the efforts they couldn’t arrange a space.
  • The system doesn’t return anything, then
    • The requester is presented with a message stating “We’re sorry but we can’t check parking space availability right now. Would you care to leave us your contacts and we’ll try to arrange a parking space for you?”, together with 2 fields: e-mail and mobile number.
    • If the requester chooses to submit the contact information, the system should create a task to a group of people, called “concierge”, that will try internally to arrange a space.
      • If they can, they’ll mark the task as OK and give the information about the parking space number. From then, the system will generate an e-mail and/or an SMS to the requester, depending on the contact data they filled in, stating that they can use parking space X.
      • If they can’t, they’ll mark the task as NOT OK. From then, the system will generate an e-mail and/or an SMS to the requester, depending on the contact data they filled in, stating that despite the efforts they couldn’t arrange a space.

If the requester is an Akino Fishing Co. employee and

  • The system returns that the requester can take parking space X, then
    • The requester is presented with a message stating “Your parking space is reserved. Please park on space X. Notice that you may need to give up your seat, if it’s deemed necessary to receive visitors.Thank you”
  • The system returns that there are no spaces available, then
    • The requester is presented with a message stating “We’re sorry but currently there aren’t any parking spaces available in the requested period. Thank you”
  • The system doesn’t return anything, then
    • The requester is presented with a message stating “We’re sorry but we can’t check parking space availability right now. Check back later. Thank you”

 

With this description we wrap up this article.

On our next article, we’ll take this description and start to model the process in Oracle BPM Suite. This is where the fun part begins. Until then…

Strategy image

Akino’s BPM Initiative Strategy

Hi everyone and welcome back.

Picking up from the first topic,  the Akino Fishing Company now has a team of consultants helping to setup the BPM initiative.

After some consulting sessions, 4 areas of work are identified and sorted by starting date:

  1. Infrastructure availability and BPM Suite instalation/configuration
  2. BPM pilot project
  3. BPM governance model
  4. BPM Enterprise-wide adoption

We’ll keep our focus on the second point for now, as it is the most critical of the lot. We’ll address the remaining points in future articles.

Defining a pilot project strategy

Because the company is still tied up to manual ways of doing work and because change will always find resistance, not a lot of departments realize the potential benefit of using a platform as Oracle BPM Suite. Changing the way people work will always find deterrents.

Resistance to Change

To be able to ensure a wider base of supporters, the best approach is to build a set of pilot projects that would prove not only the concept, but also show the potential improvement and leveraging of the existing tools and systems. Every BPM initiative should start like this.

Now, one can always argue that if you choose a very simple process to pilot, the end result may not have enough impact to prove value and to get people on-board the BPM initiative. It’s a fair point.However, the use of pilots is nothing more than risk management. It’ll always be easier to do several pilots with increasing importance and complexity, building confidence at each step, than doing a larger more complex project that needs to deal with all the setup of the BPM initiative, which has a much larger probability of failure.

Risk - Accept, Avoid, Reduce, Transfer

With a couple of success stories you should be able to get the necessary support to start implementing larger, more complex processes. Remember, don’t go for the moon!

So, the Akino Fishing Co. decides, with the help of the consulting team, to develop 2 pilot projects.

  • Very simple process (support process) – Focus on testing the concept, validating the infrastructure, setting up all the necessary control, support and monitoring mechanisms (and there are quite a few) so that future projects don’t have to worry as much about these. It’ll also set the basis for BPM Governance, Training, UI definition.
  • Medium process (management process) – Make a wider use of the platform’s features and set the target to deliver reasonable value to the management. Main purpose is to get deciders on-board.

Because we’ll be starting with some very simple processes, try to use as most Oracle product features as possible. This may sounds like a bit of a contradiction, but if you don’t try the features with a small, contained project, you’ll end up trying them for the first time in a large complex project. Again, this is just risk management.

Also, because the process itself is simple, adding features and capabilities, like building a mobile app to use it, may help people realize the potential value of using Oracle BPM Suite.

A side note on Process Classification

You’ll see us referring to processes as support, management or core processes. This is a way to classify business processes, following some of the best practices and process classification frameworks available in the market. It’s also the suggested classification from Oracle, as can be seen if you create an Enterprise Process Map in BPM Process Composer 12c. If you create a new Enterprise Process Map, three lanes, corresponding to Core, Management and Support, will be created by default.

Process Classification in Enterprise Process Maps

Process Classification in Enterprise Process Maps

  • Core processes – These are the ones related to the core business. In Akino’s case, any process related with the fishing activity itself
  • Management Processes – These are the ones related to the management of the company. For instance, any process related with the company’s financial management is an example.
  • Support Processes – Anything outside the previous 2 types will typically fall on this category.

If you want to learn more about the process classification framework, you can check APQC website or this video.

Getting ready to change

Getting back to point, one of the most overlooked aspects in implementing a BPM initiative is Change Management.

Change Management plays a big role in the successful adoption of a BPM Enterprise-wide program as it will be the biggest weapon against change resistance. There are a few things that you should do, namely:

  • Key Stakeholders and Users Profiling – Build the profile and personas of the most important stakeholders and users. This will help you build a mindset that focus on the best ways to communicate with them. Remember, these will be the pilots’ judges, so address them carefully and with a purpose.
  • Communication Plan – Develop a communication plan that goes side-by-side with your implementation project. Communicate frequently and effectively. You have to market the pilots inside the organization.
  • Training Material and Classes – Create clear and easy to use training material. Choose the medium wisely.
    • Don’t forget to train both the end-users and the support teams.

The First Pilot

The choice for the Akino Fishing Company’s first pilot project is a “Request a parking space” process. Basically, everytime a customer comes to visit any of Akino’s offices, he may request a parking space for him. When not in use by customers, employees can also request access to available parking spaces in the parking space pool. It was chosen because of its simplicity and low importance, but it will have some external visibility, with the possibility of mobile interaction.

We’ll start detailing the pilot project in the 3rd article of this series. Until then…

Header image by Birgerking

The Akino Fishing Company logo

Introducing the Akino Fishing Company

Welcome to the Red Maverick’s first post.

Today, let us invite you to meet Mr. Akino and his company: The Akino Fishing Company. They’ll be the subject of many of our articles, videos and projects, and knowing them will be valuable to help us make some decisions along the way.

Historic Background

Mr. Akino was born in December 1st, 1946, in a small fishermen’s village called Tomonoura. His father was a fisherman and took Mr. Akino to the sea from a very young age. He helped his father whenever he could.

Tomonoura, Japan (image from Wikipedia)

In 1962, Mr. Akino got himself a boat and started to work as self-employed. After a few years his business was doing great, so he employed a few more people and got a ship. By then, the Akino Fishing Company was born.

The Akino Fishing Company logo

The Akino Fishing Company logo

From then on, Mr Akino bought some more ships, employed more people, and business grew to a point where he started buying smaller fishing companies.

The Akino Fishing Company is now the Japan’s largest fishing company, with offices in Tokyo, New York and Lisbon.

Mr. Akino is married and the father of 3: Akai, Sato and Okino. They run most of the company now, supervised by their father.

The Present

The company is spread across the globe, with their headquarters in Tokyo, their fishing offices and plants in Tomonoura, and sales offices in New York (their entry point into the US Market) and Lisbon (entry point to the European Market).

Akino Fishing Company Offices

The Akino Fishing Company operates in 4 core areas of the fishing industry:

  • Fresh Fish – Typically supplied to high end restaurants and food companies. Must be delivered in very tight deadlines and top notch quality.
Fresh Fish Market

Fresh Fish (photo by slackrhackr)

  • Frozen Fish – The prime target is the retail industry. Mainly mass market products, with the occasional special fish.
  • Preserved and Canned Fish – Specialty products for the retail industry. Has a line of higher end products, such as caviar.
Canned Fish

Canned Fish (photo by  StijnNieuwendijk)

Stijn Nieuwendijk

  • Leftovers – For the animal food industry. Takes advantage of the remains from the previous 3 areas, and unsalable fish.

The company is still very traditional, with most of the work being manual, although some IT Systems are used thoroughly throughout. Most of the documents in the company are still hard copy.

The Problem

Although the Akino Fishing Company still is Japan’s largest fishing company, it’s losing ground to its competitors fast. Competition is able to negotiate faster, with more data, getting better prices and fulfilling orders much faster than Akino. And, as the fish market increases the pace, Akino Fishing Company is being left behind. Something is wrong, but it’s difficult to find out what. Some of their best customers are starting to source their fish somewhere else.

After meeting with his managers, Mr. Akino and his sons think the issues revolve around the delivery times, which then reflects in lower quality fish, but these may not be the only ones and they aren’t sure these are actually the most important ones.

In order to address the problems, a decision was made to invest in IT to try and get a better grip on the company’s processes. The idea would be to find out what’s wrong, through careful and comprehensive monitoring. Also, the increase in Business Process Automation should prevent problems cut on delivery times and reduce operational costs.

Because Akino Fishing Company already has some Oracle products and considering the top class features, they decided to go with Oracle Fusion Middleware, leveraging the “Red Stack”. They’ll use Oracle BPM Suite to model, automate and monitor their business processes. With Oracle BPM Suite, they also licence Oracle SOA Suite, best of breed SOA Integration platform. Akino Fishing Company now has the tools they need to address the Business Process Management initiative.

The BPM Initiative

Akino Fishing Company’s CIO, Okino-san, hired a consulting firm to help plan and implement an enterprise-wide BPM initiative, with which they hoped to identify and solve their problems.

We’ll tell you about it in the next post. Until then..