Quantcast
Channel: Oracle Bloggers
Viewing all articles
Browse latest Browse all 19780

Adaptive Case Management: An Object-Oriented BPM

$
0
0

There are a lot of interests in Adaptive Case Management (ACM). The common questions that I get during my customer engagements are always the following: "What exactly is ACM?", "How is it different from Business Process Management (BPM)?", "For most of the use cases that we know, we can also implement it using BPM. So what exactly does ACM bring to the table?", "What are the use cases that BPM is not appropriate while ACM is the right candidate?".

So I thought it is a good time to summarize it in this article.

A Quick Comparison
For a quick start, the following is a summary that I did in 2011, providing a good foundation on the core differences between BPM and ACM. BUT, before you dive into it and embrace it like a bible, bear in mind that these are summarized for academic discussion. Most vendors implement additional capabilities that may or may not fit directly into these. However, this summary chart provides a good baseline to kick off the discussion.

BPM vs ACM

At the center of BPM is the process. The process is defined similar to a flowchart, consisting of many steps, which may include human tasks, system tasks, etc. At various steps in the process, data are brought in for computation and processing, and also written back to backend systems for permanent storage. The instance will end at the last step of the process.

At the center of ACM is the data. Data are typically presented as consolidated information. Based on the information available, the appropriate processes are selected for execution. Data output from the processes can be used to update the existing information, thereby providing further insights to the next appropriate action. The case will end when it is closed.

Although the above provides a good summary, it is not a definitive list. Technically, I could also use BPM to implement a Data-Centric application, for example, using Oracle Social BPM.

A few years ago, Oracle provided Social BPM offering, leveraging on Process Spaces and Web Center Content Management. The following diagram shows a screenshot.

Oracle Social BPM

When user logs in, all the data relevant to the case is presented in a single consolidated interface, user can create discussions, upload documents as well as gather intelligence in order to complete the work. This implementation already provided a data-centric approach to implement an application. Therefore, data-centricity, although a feature of ACM, is not a definitive one.

There are also explanations that describe ACM as one with the ability to perform complex searches and real-time decision support for the users, but couldn’t I simply implement those as a portlet within the above application, doesn’t that make the above an ACM too?

So what exactly is ACM? Before we dive into ACM specific, let's look at something that we are familiar. We will then use it to relate back to BPM and ACM.

Your Favorite Video Game
Think of your favorite video game (e.g. Mario, Red Alert, Warcraft), where you could navigate around and perform different actions. As a programmer, you could use procedural programming language like C to accomplish this - For each of the possible actions: Move Left, Move Right, Jump, Duck, Fire, etc. you will implement the corresponding codes.

However, each action that you took could potentially have different outcomes. For example, when you Move Left, you could encounter a bomb, picked up new weapon, encounter an enemy, etc. So for each possible outcome, you need to implement the corresponding codes too. Technically, this approach is possible, but it will start to get messy and unmanageable when there are many possible moves and outcomes.

A more natural way is to look at it from an Object-Oriented perspective. Rather than trying to define all the possible ways that the game can be played, you define the properties and behaviors of the objects, specifying how each object should behave in different situations. For example, when being attacked, etc.

In this case, the player of the game becomes the controller of the flow, deciding how the game should be played.

C/C++ vs BPM/ACM
Now, let's relate it back to BPM and ACM. BPM is similar to procedural programming language, such as C, where you define in advance the moves (or procedures) to follow in order to produce the desired outcome.

On the other hand, ACM is similar to Object-Oriented Programming, where you define the properties and behaviors surrounding each object (or activity). At the end of the day, how best to play the game (or how best to handle a case) is determined at runtime, by the player (or case worker).

Technically, I could use C programming to create a video game by anticipating all the moves and outcomes, however when I needed to implement a new object, e.g. another character to the game, there are a lot of code changes to be made.

Similarly, if I had used BPM to implement the application using multiple conditional branches to cater for the different possible flows, a new flow would entail the changing of multiple places in the process diagram. For business scenarios that are dynamic or consist of many different permutations of flows, using BPM to attempt to pre-define how a situation should be handled is going to be challenging.

Summary
For ACM, rather than trying to pre-define all the possible ways that a case can be handled, you define the properties and behaviors surrounding it, leaving it to the case worker to decide the best way to accomplish it.

ACM is a natural progression from BPM, similar to the transition from C to C++. It is not about features, it is about paradigm shift - A different way of looking and approaching solution.

There are vendors who simply repackaged their Enterprise Content Management (ECM) as ACM, focusing mainly on data-centricity. Well, there is technically nothing wrong with that approach, but as we seen above, data-centricity is not the definitive capability of ACM.

In this perspective, Oracle had taken a very good approach when introducing ACM - having it as a natural extension to their BPM Suite. A single BPM suite provides you with sequential and object-oriented approach to your solution, which is the same approach software vendors did when they marketed their C++ compiler, provided the ability to continue using C programming, without the need to procure separate software.

C++ is not there to replace C, it is an extension that allows you to implement your solution from an Object-Oriented perspective. For solution where it is still procedural, you will still find it easier and more logical to use C programming.

Similarly, ACM is not here to replace BPM, it is here to provide an Object-Oriented perspective to your solution. If your business requirements are well-defined with manageable number of variants, or if you do not want to give too much autonomy to your users, BPM is still your way to go.

In the next blog, I will walk you through some examples highlighting the differences in using BPM and ACM. Stay tuned!


Viewing all articles
Browse latest Browse all 19780

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>