Wednesday, April 08, 2009

Business Process and Activity Interfaces

Business Processes are made up of Business Activities. In a BPM solution the transitions between each Activity are automated, but the Activities themselves may either be automated or they may be performed by Humans (That's why I use the term Managed Business Process instead of Automated Business Process).

Most of the focus in the community of BPM practitioners of late has been on the Business Process Definitions (BPDs) that the Process Managers use to control the transitions between Business Activities. BPDs provide the information that the Process Manager needs to assign the right Activities to the right Participants at the right time. Google BPMN, BPEL or XPDL and you'll find plenty to read.


BPDs are crucial... but they only define the Process Flow. Activities are identified in BPDs, but only the interfaces to the Activities are actually defined (The interface to the Activity defines the information that is passed from the Process to start the Activity and the information that is returned to the Process from the Activity when it completes).

All of the BPM suites that I am aware of generate executable process definitions (in one form or another). Some BPM suites generate "portable" definitions using standards like BPEL and XPDL, but many (including the Lomabardi Teamworks suite that I use) produce proprietary definitions that will only run on their own Process Managers. One of the big drivers between the efforts to make BPMN 2 "executable" is to drive the industry towards "portable" BPDs that can run Process Managers from any vendor. Great idea... but it's going to take some time to see if it gains traction.

Many BPM suites also incorporate tools to implement Business Activities. A Business Activity is really just an application that is tailored to perform a specific task. The Process Manager kicks off the application with some initial information, the application runs (usually gathering information from a Human) and when it completes it passes information back to the Process Manager.

I've had discussions with BPM practitioners who feel that implementing Business Activities should fall outside the realm of a BPM suite. Perhaps I've been spoiled by Teamworks, but I can't imagine creating my BPD in one tool and implementing my Activities in another tool. It's just incredibly nice to be able to drill down from an Activity on a Process Diagram to the underlying implementation of that Activity.

Despite my bias toward integrated Activities, I freely admit that you must be able to implement an Activity outside the limitation of your BMP suite of choice. Some Activities do require a very sophisticated user interface - and in many cases a pre-existing application can be fairly easily adapted to perform an Activity. I've had to resort to "external" Activities on several occasions (for key Activities).

If the implementation of an Activity is beyond a simple Form that the Participant needs to fill out, then you'll have to build some sort of task focused application for the Participant to use to complete the Activity.

BPM suites such as Teamworks allow you to build rather sophisticated task focused applications - but sometimes it makes more sense to go outside the suite and build the application using JSP, ASP, .Net, Ruby - whatever tools make the most sense to get the job done.

The "problem" is the lack of standard interfaces for connecting these "external" task oriented applications with your Process Manager/Process Engine. Most of the good BPM Process Managers provide the necessary interfaces, but they are almost always proprietary interfaces.
In the early days of BPEL, Activities were "just" standard web services. An Activity (web service) that was invoked from one BPEL engine could be invoked by any other.

BPEL (by itself) could only implement processes that could be completely automated. Most Business Processes include Human Activities - so pure BPEL implementations were few and far between.

Unfortuntely we've yet to come up with a standard (or even a de-facto standard) for implementing Human Activities. Some BPM suites (like Intalio) make use of standards (like XForms) to implement the user interfaces for their Activities, but the back-end interfaces between the Process Manager and the Activities are still unique to each vendor. There's no standard for registering an "Activity Application" with a Process Manager There's no standard way for an "Activity Application" to authenticate its user with the Process Manager. There's no standard way for an "Activity Application" to query a Process Manager for Activities that belong to its user.

Until we have these standards, there's really no such thing as a "Portable Activity". I could build a framework that helped me build task oriented applications, but I'd need adapters for any BPM suite that I wanted to interface with.

Hopefully this will change soon. As more BPM suites begin to support "standard" BPDs it will become obvious that we need Portable Activities too.

8 comments:

Neeli Basanth said...

Hi,
From the post, i do understand that some (or most) of the processes do require activity representation from external systems. Do i read you correct to assume you mean from platforms like JSP, ASP, .Net etc?

John T. Reynolds said...

Neeli,

If the implementation of an Activity is beyond a simple Form that the Participant needs to fill out, then you'll have to build some sort of task focussed application for the Participant to use to complete the Activity.

BPM suites such as Teamworks allow you to build rather sophisticated task focussed applications - but sometimes it makes more sense to go outside the suite and build the application using JSP, ASP, .Net, Ruby - whatever tools make the most sense to get the job done.

The "problem" is the lack of standard interfaces for connecting these "external" task oriented applications with your Process Manager/Process Engine. Most of the good BPM Process Managers provide the necessary interfaces, but they are almost always proprietary interfaces.

Does that make sense?

Thanks for your comments,

-John

kswenson said...

Good article. I am sorry that Lombardi is so limited.

It is certainly the case that you do not want to create a process in one tool, and then have to go to another tool to create the "activity" as you say. I think what you mean by creating the activity is to create the user interface for the activity.

The limitation you are running into is in thinking of an activity ina process diagram as something that "executes" and is done.

Think instead of a an engine that when an activity becomes active, it simply records that state. While it is active (which can be up to maney months in duration) the user assigned to that activity can access the state any number of times. The user would access it to retrieve the form that is used to display the data in the current state. If the user does not finish the task today, they can access it again tomorrow to retrieve the form again. A sophisticated engine should allow them to change the assignee so that it becomes someone else's task, ro to allow multiple people to view the form simultaneously.

Given this base, then it is easy to have "forms" using different technologies. It could be a tradition PDF style form, or it could be a JSP page, or a Ruby program, or anything. The form becomes the connection, and the form retrieves the state fo rht eporcess through teh standard interface (Wf-XML is a good interface for this).

Fujitsu Interstage BPM does all of the above, and it allows you to design your form directly in the same tool that you designed the process. OR, you can transport it using XPDL to another tool and work on it there. We even have built-in AJAX based forms. The forms are reusable in any number of activities, and so become the "portable activities" that you desire.

A BPEL-view of the world is extremly limited, and does not allow for this kind of interaction.

XPDL has no problem representing this, and a number of tools (Fujitsu, Tibco, Gobal360) use it this way. I have designed a process in ITPCommerce, and then moved it into Fujitsu Interstage BPM and executed directly. There is a good reason why so many major banks have standardized on FUjitsu Interstage BPM -- even though we don't market like the other products.

John T. Reynolds said...

Thanks for the comment kswenson, I have _no_ experience with Fujitsu and it's great to here from someone who does - but I think you may have missed my primary concern...

I can build what I would call "external" Business Activities (think applications - not just forms) for Lombardi in much the same was as you describe for Fujitsu - but the APIs that I would use to interact with Lombardi's Process Manager are not the same as those that I'd use to interact with Fujistsu's Process Manager - and both of those are different than the APIs that Pega supports - and all of those are different than what Intalio supports - I think you get the idea.

It's not a matter of whether or not one BPM suite supports "external" Business Activities - It's the need for all BPM suites to support "portable" Business Activities. Perhaps not "all" suites, but certainly all the suites that show up in Gartner's top left quadrant.

Does that make sense?

Thanks again for your comments.

-John

kswenson said...

OK, good point and thanks for the correction.

That interface from the application (or form) to the engine to pick up current state, and to update state, is what the WfMC calls "interface 2". In the mid 90's this was a C-language API, but today the best option is incorporated in a web service protocol called Wf-XML.

Using Wf-XML you can pick up the process/activity state and all the variables, expressed as XML, and retrieved by SOAP/HTTP. The web service is described with normal WSDL and should be compatible with most language support for SOAP. We did a demonstration in 2005 with six implementation of this on different platforms. Still, Wf-XML is not widely adopted: only Fujitsu, Enhydra Shark, TIBCO, and SAP have implementations as far as I know.

So, you idea is a very good one, and it is a very important one, and I hope that such a discussion can help to drive adoption of this format that already exists.

One final question: would you consider a web service for this purpose to be sufficient?

John T. Reynolds said...

kswenson,

I think that web service interfaces probably are the way to go - but maybe I'm biased since that's how the Lombardi interfaces have been implemented ;-)

Thanks again for your comments,

John

Neeli Basanth said...

Hi John, Keith,
That was a good discussion, an informative one for me.

Wf-XML as i read is a format for process execution across engines. But in the context of this article, it is about definition and execution of an activity in the process.

I am not able to understand how Fujistu or Lombardi does this.

John T. Reynolds said...

Neeli,

Lombardi Teamworks actually integrates the Activity logic along with the Process logic. The Teamworks IDE provides tools for defining the screens and application logic(called coaches) that the Participant interacts with when they run an Activity (task). The Activities are executed on the same application server that runs the Process Manager.

Teamworks Activities (Services) are built using a combination of graphical programming and JavaScript (server-side). Connectors to Databases, Web Services, and Java classes are provided to give the Activity access to external resources. It's very powerful and very seamless.

That said - there are still cases where it makes more sense to build an Activity using some other technology - or to adapt a preexisting application for use as an Activity in a Process. It's those interfaces that I would love to see standardized.

Thanks for your questions and comments,

John