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