Posts

Travel Request in PCS - Wrapping it up!

Video – How to build a Process Cloud Service Application (Business Travel Requests) in 40 minutes – Final Part – Wrapping it Up!

Hi,

Welcome to Red Maverick’s sixth video, the third of the Business Travel Request Management Series.

In this series we’ll guide you on how to build a complete, working BPM application using  Oracle’s Process Cloud Service.

For this part, the focus is on doing the final configurations and connecting all the dots, making the application fully functional.

This scenario and video was first prepared by me for Link Consulting‘s Process Cloud event, that was held in July 2015.

Enjoy!

Cheers

José Rodrigues, a.k.a Maverick

Post image by alobos Life

TravelRequest Business Rules

Video – How to build a Process Cloud Service Application (Business Travel Requests) in 40 minutes – Part III – Business Rules Setup

Hi,

Welcome to Red Maverick’s fifth video, the third of the Business Travel Request Management Series.

In this series we’ll guide you on how to build a complete, working BPM application using  Oracle’s Process Cloud Service.

For this part, the focus is on setting Business Rules using Oracle’s PCS, to fine tune the process flow path, depending on process data.

This scenario and video was first prepared by me for Link Consulting‘s Process Cloud event, that was held in July 2015.

Enjoy!

Cheers

José Rodrigues, a.k.a Maverick

Post image by N i c o l a

Process Timers

Process Timers – Controlling the time in which your process executes

Hello everybody,

Following up a series of questions around setting timers in the Oracle Community forums, I decided to write this article to try and guide their use and how these can be used to control process execution.

Let’s start!

The Use Case

We’ll begin by setting up the scenario in which we’ll have to control our process flow.

Imagine that you want to have a part of your process that executes immediately if the current time is between 08:00am and 04:00pm (16:00 hours for us Europeans), or wait until 08:00am if it’s outside that interval.

It’s frequent to have some kind of control in parts of the processes, for instance when you want to send SMS to your customers. You certainly don’t want to do it at 03:00am.

How will we make this?

We should use a Catch Timer event, of course, and XPATH’s DateTime functions to check the current time and to set the timer to way for next morning’s 08:00.

The Catch Timer event has several ways to be configured (triggered at specific dates and times, on a specific schedule – every day at 10:28:00 (repeatable), or in a time cycle – every 2 minutes), but we’ll focus on the one where we configure the timer to wait for a specific time and date. More on the others perhaps in another article.

We’ll illustrate the use of timers with an example process. You can, of course, adapt it to your needs.

Defining the execution conditions 

So you start by defining a gateway that will split the execution between:

  • Immediate
  • Wait for 08:00am
    • This will have to be split into prior to midnight and after midnight. but for now, we’ll consider the scenario of only two options.

So, you set the expression on the conditional flow that will do the immediate execution, leaving the condition that must wait for 08:00 as the unconditional (default) branch.

The expression should be something like this:

Timer Setting

Timer Setting

xp20:hours-from-dateTime(xp20:current-dateTime()) >= 8  and xp20:hours-from-dateTime(xp20:current-dateTime()) <= 16

The function xp20:current-dateTime() gets the current Date and Time of when the decision is evaluated.

The function xp20:hours-from-dateTime(xs:dateTime) gets the ‘Hours’ integer from a dateTime object.

So you check if the current time is after 08:00am and before 04:00pm.

  • If it is, it follows the Green Light path, i.e. the immediate execution path.
  • If not, it will follow the Red Light path, and will wait on the timer for a green light (until 08:00am the next day, as per the requirements)

For the test process comprehension, check the process flow below.

Timer Test Process

Timer Test Process

So, only one more step to go: Setting the timer to the next 08:00am available.

This is achieved by setting the Timer implementation first to Type=Time Date (red arrow) and then setting the appropriate XPATH expression (orange arrow)

Timer Type Setting

Timer Type Setting

The XPATH expression is as follows:

xp20:add-dayTimeDuration-to-dateTime(xp20:current-date(),’P01DT08H’)

The add-dayTimeDuration-to-dateTime(xs:dateTime,formattingString) function adds an interval of date/time to a dateTime object.

The interval is set using the format ‘PyyYmmMddDThhHmmMssS‘.

The xp20:current-date() function returns the current date without the time associated, meaning it considers time = 00:00:00.

So, we’re stating that we want to add to the current date the amount of 01 day and 08 hours.

Warning

You would think that this solves the issue, but not quite. It solves the issue if the process reaches the decision point until midnight. After midnight, you can’t add a whole new day and then another 08 hours.

So you should split your flow further to handle these two scenarios:

  • Wait occurs prior to midnight => XPATH Expression interval = ‘P01DT08H’
  • Wait occurs after midnight => XPATH Expression interval = ‘P00DT08H”

I’m pretty sure there are other ways to do it, but I decided to do it like this:

Timer Process Final

Timer Process Final

In which I set the XPATH for Time Date type of the other Timer (Red Light / After Midnight) as

xp20:add-dayTimeDuration-to-dateTime(xp20:current-date(),’P00DT08H’)

So this should solve the case.

I added the project file for this:

CommunityTimerDefinition

Cheers

Maverick (José Rodrigues)

Post Header image by Henrique Simplicio

Manage your Travel Requests

Video – How to build a Process Cloud Service Application (Business Travel Requests) in 40 minutes – Part II – Process Form

Hi,

Welcome to Red Maverick’s fourth video, the second of the Business Travel Request Management Series.

In this series we’ll guide you on how to build a complete, working BPM application using  Oracle’s Process Cloud Service.

This second part is about designing the form that is the data foundation for your process.

In the next parts, you’ll see how to build advanced rules, conduct escalations and going up management chains.

This scenario and video was first prepared by me for Link Consulting‘s Process Cloud event, that was held in July 2015.

Enjoy!

Cheers

José Rodrigues, a.k.a Maverick

Post image by Mac Qin

Travel Request Application Demo

Video – How to build a Process Cloud Service Application (Business Travel Expense) in 40 minutes – Part I – Designing your process

Hi,

Welcome to Red Maverick’s third video.

In this one, we’ll guide you on how to build a complete, working BPM application using  Oracle’s Process Cloud Service.

The first part is about designing your process from a functional/business point of view

In the next parts, you’ll see how to setup a process start form, build advanced rules, conduct escalations and going up management chains.

This scenario and video was first prepared by me for Link Consulting‘s Process Cloud event, that was held in July 2015.

Enjoy!

Cheers

José Rodrigues, a.k.a Maverick

Post image by Paul Nelhams

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