Archive for the 'BPM' Category

BPMN 2.0 Should Remain Focused on Notation

I am watching a number of comments being placed about a new effort for BPMN 2.0. Vishal Saxena says that the BPMN 2.0 metamodel should maintain this flexibility that BPMN 1.0/1.1 has. No argument there. Sebastian Stein says that BPMN is missing an exchange format, and clearly he does not know about XPDL. He goes on to say that the real problem is a lack of clear execution semantics. He points out that the OMG discusses two approaches: BPMN defines the semantics, and BPDM defines the semantics. Bruce Silver comments that the first approach would be the most value to the BPM community. We seem to agree that BPMN needs more clarity in expression. I suggest that there is a third approach that the OMG should consider.

My concern is that the BPMN committee is heading down a blind alley: One part design-by-committee, and two parts not-invented-here. It might be expressed as something like this: “Products can’t completely agree on the semantics of the drawings, so let’s just make up some new semantics, and everyone can just use that.” As if the problem was that products simply can’t define precisely what they mean, so the standards committee needs to define it for them.

The issue is NOT that existing products have undefined semantics! There are many products on the market, every one with precisely defined semantics of what they want to, and need to, express. The fact that products have inconsistent implementations of BPMN is not because they don’t know what to say. Instead it is because BPMN is not good enough at expressing precisely what that product needs to say.

Let me give you a concise example. In BPMN you can define an activity to have multiple outgoing arrows. Does this mean that all, some, or one arrow will be activated when the activity is completed? There are three cases to consider:

If you leave the tails of the arrows unembellished, it indicates AND split semantics and all arrows will be taken. If you put diamonds on the tails of the arrow, it means Inclusive Or semantics: one or both of the arrows will be taken dependent upon conditions within the diagram logic. The other normal case would be “Exclusive-OR Split” semantics, which means exactly one of the arrows will be taken. There is NO WAY to indicate in BPMN that the outbound arrows from an activity have exclusive-OR split semantics. It is simply missing from the standard.

This is surprising because so many products out there have traditionally made use of exclusive-OR. Traditional “flow chart” modeling uses exclusive-OR predominantly. Of course, there are other ways to draw it: I can make a single arrow go to a gateway, and there is an exclusive-OR gateway, so it is a logically equivalent way to draw it, but it is different drawing, and significantly more cluttered one at that. Not every product needs exclusive-or in this case, but some do, and we all would benefit if there was a standard way to express this.

Products are inventing extensions to BPMN because BPMN does not have the power to express precisely what they need to express. BPMN is the best standard notation we have, but it is not finished, and there are still many limitations. Now that we know there is a “meaning” to be expressed, and no way to express it, the BPMN committee should focus on extending BPMN with a way to express this. Don’t waste time developing a visionary model of a new non-existent product. Instead, the committee should be looking at existing products, and observing how they have used BPMN inconsistently, in order to figure out what gaps exist in BPMN today. Then come up with a clear expression so that when we see the diagram, we know what it means.

Many of the successful products today are based on years of research and customer trials which have directed the products to become very very effective at some particular segment of the market. How naive it is to believe that the difference between products are accidental and inconsequential differences. How arrogant it is to think that any group of experts can simply invent a new approach which is universally better than one that has already been proven successful. But this may be precisely what the committee tries to do.

The purpose of a notation is to clearly and unambiguously express something about the world as it is. It is NOT the purpose of a notation to redefine the world as we would like it to be, regardless of how attractive that idea might be.

If we think for a moment about the “musical notation” analogy (my previous entry) it would be a bit like the committee saying: “now that we have defined the musical notation, let us define instruments that can play such notes. We have a staff that goes from E to G, so I need an instrument that goes exactly from E to G”. The reason this is so laughable is that the sound of a musical instrument is infinitely richer than what is expressed in the notation. Reading the score of Beethoven’s 9th would be meaningless without having a familiarity with the different sounds of the instruments that are playing the various parts. The notation does not define the sound that is made, but it does express exactly what the musician needs to know in order to play along.

The best way to arrive at a more precise definition of the execution semantics of BPMN, is to look at existing successful products today, that already have precisely defined semantics. Examine how well these products are able to use BPMN, and particularly at how BPMN falls short of being able to precisely express what such a product needs. Then extend BPMN so that each product can clearly, and unambiguously, express what it needs to say. In this way, the BPMN standard would gain from all the best ideas which have been developed over the past 20 years.

Notes on Musical Notation

I attended the keynote by Dennis Wisnosky, CTO of Dept Of Defense, today at the Architecture & Process conference. He is currently on a campaign to get vendors to make truly interoperable implementations of BPM technology. He has been testing implementations of BPMN, and found disparity.

A notation is…

He feels that the most important thing is a standard notation for business processes. What do you get with a standard notation? You can have a document that displays something, and everyone should be able to read it, and agree on what it means. He gave two examples of notations.

First, he showed an electronics schematic. He pointed out the resistor symbol, the capacitor symbol, and the ground symbol, included in a simple filter circuit. You go to any electrical engineer, in any country of the world, and they can read this diagram. It is a standard notation that works.

Second, he showed musical notation. Again, this is a world-wide standard which consists of notes on the staff, as well as a collection of other notation. Again, you can take a piece of music to any musician in the world, and have agreement on what the notation means. It is clear what notes are to be played, when they should be played, and for how long.

He is absolutely right. You should be able to take a BPMN digram from any product, and show it to a person who is trained in BPMN, and there should be an unambiguous interpretation of what the diagram means. That is the goal of BPMN.

But a notation is not…

The analogy with music is a very good one, because it exposes some other properties of a notation that people find non-intuitive. For example, you can write a jumble of notes on a staff, but that does not mean that any given instrument can play it. A tuba player can read the piccolo part, and agree what the notes mean, but that does not mean that the part can be played on a tuba.

A standard notation does not imply that all legal notation can be played. Each instrument has allowable parameters around what you can and can not play, limited certainly by range, but also other factors: a piano can play chords while a wind instrument can not. (Please, no smart comments about bag pipes, OK?) A composer does not write a piece of music as an “abstract” composition of notes. A composer considers each instrument, and writes music that that instrument can play. This is expressed as standard notation, which anyone can read, but there is a lot more composition than simply creating the notation.

It is really important to keep this in mind for BPMN. When a process analyst creates a process diagram, that analyst must keep in mind the capabilities of the process engine that will be executing the process. The process should be designed specifically to run on that engine. But then the process can be expressed in a standard notation that we all can read and agree on the meaning of.

Conversely, this means that when an engine imports an XPDL file containing a BPMN diagram, the BPMN and XPDL standards do not, by themselves, guarantee that the engine will be able to execute it. The best we can hope for is that the engine tells you when there is something “out of its range” and can not perform.

Don’t confuse notation with universal language…

Imagine a universal instrument that could play any combination of notes for any duration, but there are other considerations beyond simply being able to throw any notation at an instrument. A trumpet and an oboe may play the same notes, but they are qualitatively different instruments in a way that transcends the notation. The notation communicates certain important things, but it is not the full embodiment of the music.

Some people jump to the conclusion that all process engines should have a “complete” implementation of BPMN — whatever that means. Having all process engines with exactly the same capability would mean stopping all innovation on support for business process, and limiting all engines to a least-common-denominator approach. It has been my experience that each engine offers new and unique difference that are good for supporting particular kinds of processes. Stifling innovation for the sake of universality is a short sighted goal. The fact that the engines are different is not a bad thing. Yet we still can expect, and must demand, that the notation be consistent.

Dennis Wisnosky represents a very large and powerful customer of process technology, with influence across the industry. Watch what he does, because I think he is in a position to have a profound effect on the BPM marketplace this coming year — and he is on the right track.

London Calling

It has been a while since I given an update on the work of the WfMC Technical Committee. The last couple of months has been busy, and this is all building toward two standards tutorial events: one in DC and one in London. Before we get to that, it has been a busy couple of months:

XPDL 2.1 - A new update to this specificatio due to the hard work of a number of people contributing and painstakingly edited and assembled by Robert Shapiro. TheWfMC working group 1 met in Nashville and voted for adoption of the 2.1 spec as it is. The new version contains extensions to support BPMN 1.1 (also just released) and include a new section on conformance testing. This is an important step because it allows us to specify several levels of conformance, and a way to measure which level you are at. Bruce Silver contributed significantly to this approach. Tom Laverty from Global 360 developed an XSLT script for performing the test. All in all, it is another step forward in the WfMC effort to allow for a process design ecosystem.

BPAF - A new acronym is born. The Workflow Reference Model describes interface 5 which is a way for events and other historical information to be passed to an analytical tool for processing and mining. At the Nashville meeting a decision was made to call this “Business Process Analytics Format”. This is a standard XML structure which a BPMS can generate, and Process Intelligence product can consume in order to product high quality analytics. Of course many such tools can be programmers to take a stream of event in any format, but a standardized format will allow us to fine tune the precise semantic meaning of each attribute of the event, and make it far easier to hook various types of process engines together without programming. There is a working group led by Michael zur Muehlen and Shane Gabie.

Wf-XML - Main focus on creating a new RESTful version of this specification in cooperation with Open Geospatial Consortium. Find out more about this at GeoBlicki.

Events - there have been a number of successful BPM tutorial events:

  • Las Vegas, Feb 2008, BPM In Practice at Gartner BPM Summit drew a full room of 60+ people for this three hour tutorial by Keith Swenson and Robert Shapiro
  • Nashville, Feb 2008, BPM In Practice at the BPM Tech Show was a repeat success with the three hour tutorial. This one was recorded and is being turned into a book!

Future Events - please mark your calendars, the followin:

The Right Amount of BPMN

After a few months without much BPM discussion, then I blinked and found that I have been missing the Great BPMN Debate. To bring you up to speed: Michael zur Muehlen and Jan Recker have been studying how people actually use BPMN to draw business processes, and have counted the occurrance of rate of various elements. He summarized this in a blog post,which came to the conclusion that practitioners could focus on learning and using a small subset of a dozen BPMN elements, that vendors could prioritize implementations to get the more common elements first, and that some elements were used so rarely that the value of their existence was questioned.

To me this intuitively makes sense if you consider the way that such standards get developed. A group of people get together bringing with them different ideas of how to draw a meaningful diagram. Common ground has to be found between all of the different approaches by taking the specifics of several different approaches and abstracting to a higher level concepts and groupings. Compromises have to be forged in order to include all of the most important parts, and to exclude ideosyncracies of a given approach. The committee aims for a suitable level of completeness. Given that each committee member is coming from a slightly different background and with a slightly different concept of how the various elements might be used, there are clearly differing priorities. Committees will tend to err on the side of including too much because it is easy to argue that a capability is needed, and give an example that requires it, than it is to argue that that example is not common enough to warrant inclusion. It is only natural that the core of a few items will represent the bulk of the usefulness, while there will be some elements that are not useful at all. It is the nature of standards, as it is for high tech products, that the exact way it will be used can not be fully determined until they are actually in use.

Bruce Silver responded with a spirited post raising questions about the method and conclusions. Bruce certainly must be counted among the handful of top BPMN experts that exist today. Bruce has a point: the study was done from existing BPMN diagrams. Who can say for sure that the elements were missing because they were not needed, or because simply the modeler did not understand how to use them? Who can say whether they were missing from the diagrams because the modeling tool vendor did not implement them, or did not implement them correctly. The diagrams themselves may not actually comply to the BPMN syntax. The model might comply to BPMN syntax, but the the modeler might have intended to represent something else. Given the likelihood of these diagram flaws, how can you then conclude that something is not needed simply because it is not used? This is beginning to sound a bit like an argument that designers often use: “They would be useful if the standard had been implemented correctly in line with the original vision of the standard.”

Michael responded with a thorough post which can be brutally reduced to: “Like it or not this is actually how BPMN is used today.” His intent was not to criticize the standard (quite the opposite) but to provide helpful empirical data to guide practitioners, vendors, and even the standards committee to the most important aspects of the standard. Implicit in this is the implication that a subset of the entire standard is acceptable. Bruce responded by admitting that there were superfluous elements of BPMN, but that we should be a bit more careful on how we select the most important set. Tom Bayens weighed in with another well considered perspective. Sandy Kemsley’s summary of this debate is far better than mine, so I will stick to a few comments.

As I have said many times, I consider BPMN to be a dictionary of symbols which can be used to represent concepts. Just as a writer will write a novel without using every word in the English dictionary, so it is suitable to pick and choose a subset of these symbols for use in modeling processes. I have never quite understood those who argue that a modeling tool is useless unless 100% of the specifications are supported (which is arguably not possible given ambiguities and redundancies that exist in such standards.) It goes without saying that your expressibility is limited the more you limit the available symbols. Yet Michael’s main point is that you can say quite a bit with a surprisingly small subset of the BPMN language. I do hope the BPMN group will take to heart as they consider extensions to the existing set, because it is important to step away from the theory of how you would like a standard to be used, and be guided by the more pragmatic knowledge of how it is being used in practice.

That being said, for models to be portable, there must be a broadly agreed upon subset which is sufficiently expressive to handle all the cases you are likely to encounter. If tools choose too narrow a subset, then they will not be able to understand diagrams from another tool with a different subset. Thus Bruce argues quite effectively that the process design ecosystem is best served by encouraging implementation of as much of the specification as possible, well beyond a minimal subset. So I can identify with the concern that a narrow approved subset might encourage vendor to stop short of a useful implementation.

Let me conclude this post with a quick acknowledgment of the tremendous work which Bruce has been doing recently on the XPDL 2.1 specification which has been approved for release by the working group last month. He drove the development of a model portability conformance guideline which he touches on in his most recent post. This ground breaking work will allow us finally to measure the extent to which a tool supports BPMN, and to assure that there is a certain minimum level of consistency, without requiring 100%-or-nothing. Thanks Bruce.

Human Process: Email Voting

The BPMN specification includes a sample process to use as an example of how you would use BPMN to draw the process and how it would then be converted to BPEL. Bruce Silver has suggested that this be used as an example process to test interoperability between different process diagramming tools. One point in favor of this is that it is fairly well fleshed out and documented. Also, it is a real process that would be reasonable to use in real life.

As I set out to implement this process, it struck me how dramatically different the process would be drawn if you had an implementation engine that supported human activities directly. Many of the things which are broken out into seprate activities would be combined into a single activity. Even at the basic level, the model would be different, because you would be modeling the human activities, instead of the flow of data back and forth. The process as it is diagrammed was designed from the beginning with the idea of being implemented on a BPEL engine. The process model as it is drawn approached everything from the point of view of what would be possible with a BPEL engine.

The best way to explain this is to show what the process would look like if you were to implement it using a human facilitation style BPM engine, and that is what I will do below by applying the Methodology for Human Processes to the email voting scenario.

The first step is get a list of the actual human activities that appear in the process. To do this we fly up to the 40,000 foot level and look down, ignoring as much as possible the details that came into the process due to the orientation to be able to executed on BPEL. We start with the activities that have to be done by people, because they require human intelligence, and really can not be automated.

1. Choose the issues for this week. The scenario assumes that there is an open ended list of possible issues which are being continually added to. It is not possible to talk about all issues every week, so someone must pick the most important issues. It is not possible to automate the determination of what the most “important” issues are, so this task of picking 1 to 5 issues for discussion and voting this week must be done by a person. There may not be enough issues this week, or it may be a holiday week, or any number of other possible reasons not to discuss issues this week, so the issue manager must choose whether there are “Issues” or “No Issues” this week.

2. Discuss Issues. There is a period time within which people are allowed to discuss the issue, and that means having access to the issue descriptions, access to comments that others have made, and the ability to make comments on the issues. This is performed simultaneously by a large number of committee members.
3. Determine is Discussion is Over. The issue list manager is asked in this process to take a look at the results of the current discussion, and decide whether the discussion needs to continue or not. Since this is a decision that is not automatable, we have to have the issue manager do it. There are two choices: “Continue the Discussion” or “Finish the Discussion”.

4. Vote on the Resolutions to the Issues. Mainly just recording the results of the activity. In this step, we can make use of a parallel activity called a “Voting Node” to allow everyone to be informed about the vote, to collect their responses in a convenient way.

5. Remedy Voting. This is a human activity in the case that voting “fails”. Voting can fail when not enough people vote. The original BPEL oriented process had a number of steps, most automated, to handle this situation. When considering the human tasks, an analysis of the process leads to the conclusion that a large number of the possible paths are automated, but a few of the paths require a person to address the situation by either reducing the number of voters or reducing the number of options being voted on. The key here is that in those situations that a human must be brought in, what is important is that the person be notified that the voting has not worked, and be given a couple of options to remedy the situation. So for the purpose of modeling the human process and for making the decision of how to proceed, I have collapsed this to a single activity node for a person to perform. The automated aspects are ignored at this point.

Then we have human activities that are necessary because the technology is somewhat limited, and not completely automated, and so there are some tasks which people do manage and maintain the systems

6. Moderate the online discussion. Unfortunately, the discussion is not completely self moderating, and so someone must have special access to possibly delete spam and inappropriate messages, and to help people to keep the discussions going.

7. Hold or attend conference call. The discussion on the issues is not completely on-line discussion, but also conference calls are a way that people come to a common understanding of the issues and resolutions. Someone needs to set for the conference call and moderate while it is happening.

The above seven activities account for everything that is done by people in the process (if I considered everything correctly). There are only two roles in this process. The Issue Mgr is the person who is managing the issue process. This could be multiple people, but only one of them would act at a time. The other role is the Committee which is everyone who is involved in discussing and voting on issues. The committee members are responsible for Discussing Issues and Voting, while the Issue Mgr is responsible for all other activities in the process.

The email voting process actually consists of two processes: a singleton starter process which loops and starts an instance of the actual issue voting process every week. The issue voting process then has two subprocesses. Because we have only seven human activities, I decided to keep it simpler and not use the subprocesses, and to do everything in the two main processes, though this would have been a choice if you wanted to you could use subprocesses to group things differently.

In doing the analysis I became aware of a strange behavior of the original process as written. You could very easily be in the position of being asked to run multiple conference calls at the same time. Remember that issue handling process is started every week, which drops into a subprocess for decision handling and another for voting. Each of those subprocesses have logic for determining if there will be a conference call during that time period, and to trigger an activity for handling the conference call. The discussion subprocess may loop, potentially for multiple weeks. It is possible that you will have multiple instances running at a time, and if this is the case, each instance will prompt for a conference call. The issue manager might manually avoid having multiple instances running at the same time, by deciding not to discuss anything in the new process instance as it is started, but this rather begs the whole question of why there are the possibility of multiple issue resolutions processes in the first place; why not simply have the singleton starter process do all the work? Finally I settled on the idea that issues are grouped, and it makes sense to have the possibility of multiple issue groups being discussed and/or voted at the same time. The conference call on the other hand is scheduled every Thursday, and takes place regardless of the number of issue groups currently, and therefor should be associated with the singleton starter process, and not the instances of the issue voting process.

The starter process

Email Voting Starter Process

There is a single instance of this process, which loops every week. There are timer delay nodes that cause things to happen at specified times. At 9am Monday morning, an instance of the issue list process is started. This is done with an “asynchronous” subprocess node; this is a node that starts a subprocess, but continues without waiting for that process to finish. The ability to start a subprocess and not wait for it is commonly available on human process engines, and is a standard part of the XPDL file format. This is one clear area where the capabilities of the engine will certainly effect how you draw the process. If you think about it, the purpose of this starter process is to create instances every week of the email voting process, but because in BPEL there is no operation for expressing this, the original process would “send the issue list” and the “receipt of the issue list” would cause the creation of the process. This is quite strange when you consider that the issue list itself is probably on a server that is already accessible by everyone, and does not need actually to be “sent” anywhere! The sending and receiving of the issue list is an artifact created just to get around the problem that BPEL does not have an operation to create a subprocess! This is also partially because BPEL is not modeling the work that people do, but only modeling the sending and receiving of data. OF course, it is possible to model the whole world in terms of sending and receiving bytes, but it is far clearer and easier to read a process diagram with a node that creates the subprocess directly.

Then, on Thursday at 9am there is an activity to hold a conference call. This is assigned to the Issue Manager. I embellished the process a little bit to also give that manager a choice of whether to conclude the working group or not. The original process had a branch node that checked something to see if working group was still active, but then someone would have had to have taken some action somewhere to indicate that the working group is completed. Drawing it this way ties both the human indication that the working group is finished together with the completion of the process. Every week, the conference call task will be concluded with the choice “Continue Working Group” which is no additional effort over simply saying that the conference call is done. But, when the time comes that the working group is no longer active, and there is no need to ever have another conference call or another issue vote, then simply choosing “Conclude Working Group” provides an easy to complete the process without using the administrator’s console.

The Issue Email Voting Process

email vote thumb

This process starts two activities from the start. “Moderate Discussion” is designed to remain active the entire time the process is running. Most of the time the process will be in the Discuss Issues step or the Vote step, and so really this step allows a place where the issue manager can moderate both discussion and voting. I embellished it a little bit to add a “Terminate” option that would shut down the process before discussion or voting was finished.

The main process is the lower 5 activites. First the issue manager decides the issues to be discussed. Second, the issues are discussed by the committee. Then the issue manager decides if the issues have been discussed enough and completes that by either “Restart Discussion” or “Call for Vote”. If it is the latter, the committee is asked to vote. If the vote is not conclusive, then issue manager must Remedy Vote and where he will be able to reduce the number of voters or the number of resolutions to vote on, and to choose either to Terminate the process, go back to Discussion, or go back to Vote.

How does the “Vote” work? Here we cheat a little bit by using a capability of the engine that present the vote options to a number of people simultaneously. It gives the options of “Yes”, and “No” to all committee members. People choose one, and the process engine tallys the results. On the outbound arrows, you can specify how many votes, or what percentage of the votes, are necessary to consider the an option successful or not. As soon as the success criteria is met, the voting activity is concluded. There is also a built in timeout so that if a vote is not concluded in a period of time, then the activity can be concluded down a third arrow which leads to the Remedy Vote activity. I know this seems like cheating to pull something like this out of the hat, but I did not make up this process, voting steps are relatively common in the worplace, this is a real node type available in a number of human process engines. As much as anything else, this should make it obvious that the way you draw a process in BPMN is highly dependent upon the underlying technology that you are going to use to implement it. For the discussion node we also use a voting node, even though we are not voting, and again it ends with the built-in timeout mechanism.

How are people notified about what to discuss? How are they told what to vote on? When you assign a human level activity to a person or group of people, that activity automatically includes a notification mechanism that tells them what they are to do, and includes information about the specific case. Simply assigning the “Discussion” node to the Committee means that everyone in the committee is automatically told what it is they are to discuss at the time that the discussion is to start. Simply assigning the vote node to the Committe means that they will be notified what the voting options are at the time they are to vote, and their votes are automatically collected and tallied.

What about the nodes to send reminders? Again, this does not need to be explicitly modeled because every human activity automatically includes (a) notification, (b) information, (c) conclusion, (d) deadline, and (e) reminders. We just set up the discussion activity to have a reminder after 6 days. Similarly on the voting node, we have a reminder after 6 days. That reminder on the voting node can be considered a “warning” since if the vote has been concluded, then the reminder will not be set. The BPEL oriented process had to stop the voting, and then go back and restart the voting after the warning, but that is not necessary when the voting node can send reminders without stopping. Even the nodes for the issue manager can have warnings and reminders if the issue manager goes for a time without taking care of the task.

What is this Human Process good for? By showing the process, you see what everyone is expected to do. At each step in the process, a person is told that something must be accomplished, and given a set of choices. The diagram is oriented around what it is that people do, not what bytes are sent and receive. As such it is useful for explaining what will happen next in the process depending upon which choices are made. This is useful for training people, and it is useful to display the current running status of the process instance to people. But some will point out that it is not complete; it does not contain a representation of all the automated actions. This is true, but no process map is entirely complete. For example, the process variables are not displayed in either the BPEL oriented process, or the human oriented diagram.

What Does All This Mean?

The key point I am trying to make is:

above is a specific process modeled in BPMN, but the way that you model in BPMN depends upon the methodology you use, and the underlying technology that will support the process

There was a desire for BPMN to represent the Universal Lingua Franca of business processes. If you want a particular process, then just draw the diagram in the one true univeral BPMN way, and you will will be able to run that on any engine. But that only works if the engine you are using matches the capabilities you had in mind when you designed the process. A BPEL engine, for example, allows you to send and receive data, and so your model is always around sending and receiving of data, which is useful if that is what you want to do. But many people want to model what humans do in an organization, and modeling humans as sending and receiving data is quite uncomfortable.

BPMN is a great notation standard. Still, implicit in that BPMN diagram is a set of assumptions about the underlying engine that the process will run on. Perhaps more importantly, the diagram is designed to communicate a particular thing to a particular audience. If you want to communicate to people, you will draw the diagram one way, if youwant to communicate to software developers, you may find the need to draw the diagram a different way. BPMN was designed to be used in both these domains, and still offers a great service that at least we have a set of symbol which if used consistently will be readable by everyone.

Human Process: Trouble Ticket

With all the talk about “Human Facilitator Processes“; what actually does a real one look like? The best documented example of a human process is provided by the OMG known as the “Trouble Ticket” scenario. You will find at the following OMG site address:

http://www.omg.org/docs/bom/98-02-09.pdf

This is a process to allow a software company to handle a customer support issue. This issue might be handled by the customer support team directly. If not, it is forwarded to the QA team for validation/verification and possibly handling the issue there.  If it is a real problem in the product, it is referred to the development team for a fix. Before the process is complete, there are steps to assure that the customer who reported the problem gets the final resolution.

This is not a toy process like most of the example processes used in the various specifications. It is a real process that provides a complete important business function. While it is a simple process performed by people, it is important to support this with a process system because a business can not afford to lose track of customer issues.

If we follow the methodology for a human process, we start by identifying all the of the activities that are performed at points in the process. Please use the above specification for a detailed description of the process, but let me include below a summary of the activities involved:

Activity 1: Recording the Problem. Someone takes responsibility for making sure that no matter how the customer reports the problem (telephone, email, tin-can-and-string) the problem gets entered into the system.

Activity 2: Reproduce the Problem. A second person takes the description given and makes sure that the description is complete.

Activity 3: Correcting the Report. If the description was not complete, it goes back to the person who entered it to fill in the missing details. This is a sort of quality-loop on the report itself.

Activity 4: Identifying the Problem and Resolution. Development gets involved here to clarify what is happening, why it is happening, if it is a bug or not. If a fix is needed, then a new build may have to be produced.

Activity 5: Verifying the Resolution. QA gets involved again to second check that that the described problems was actually fixed.

Activity 6: Communicate Results. Regardless of how the issue was resolved, it needs to be communicated back to the customer in a way comfortable to them.

Activity 7: Audit and Record. This is a summary step in the process that allows the company to keep track of how things are going and possibly identify troublesome trends.  (It is true that many good products today automatically capture this, but this process was created 10 years ago, and I prefer to keep to that documented process, than to deviate and have to document the process again.)  Activity 6 and 7 are started in parallel because it does not matter which order they are performed in.

There are three main roles:

Customer Support: most likely a person who answers the phone when the customer calls, but they receive the communications by email or other means. In some cases there will be a specific support person assigned to each customer. Customer support performes activities 1, 3, and 6.

QA: The Quality Assurance team is providing two functions. Being relatively expert in the particular product, they are acting to resolve issues quickly without involving development when the problem is a known problem. If a fix is required, then the fixed version is tested to assure that it solves the exact problem that the customer reported. QA performs activities 2, 5 and 7.

Development: The people involved in the design and maintenance of the product, and the most expert on the product itself. While Customer Support and QA try to shield the developers from customer issues, ultimately the issues will come to development if not solved otherwise. Developers perform activity 4.

We can draw up the process and all the dependencies between activities in a BPM diagram using swimlanes to organize the activities for a particular role:

Trouble Ticket Thumbnail

Click on the diagram to see a bigger version. The colors and shading is not strictly standard BPMN, so some of you may be interested in the BPMN classic view of the same process:

troubleticketclassicthumb.jpg

The first thing you might notice is that there are lots of branches, but very few branch gateway nodes. Instead, the activity is provided with multiple outbound arrows. Each arrow corresponds to a way that the activity can be concluded. This is, quite literally, the choice of the person performing the activity. Take a look at “Reproduce Problem”. You can see quite clearly that the performer of this activity must identify one of four significant conclusions: “Reproduced”, “Cannot Reproduce”, “Known Solution”, or “Duplicate”. It is very easy to see where the process goes depending upon which choice is made. The process designer can draw this directly on the process, without having to write scripts and conditional statements that test variables and branch depending upon values that have been stored in the variables. I have more on this in the “Multiple Conclusion Controversy” below.

Second, you might noice that there are a lot of implied loops. The “Reproduce Problem” step may determine that the problem is not reproducible, so the activity for “Correct Report” is activiated. The customer support person will add additional details and then send it back to QA to “Reproduce Problem” again. If QA still can not reproduce the problem they might again send it to the “Correct Report” problem. It could be passed back and forth between these people any number of times. In reality of course these are people performing the activities, so if it goes too many times they are likely to take steps to find out why it is taking so many step, or possibly to escalate to management. A similar loop exists between QA and Development when they don’t actually fix the right problem. Each of these loops represent a kind of “Quality Circle” where people are performing checks, and sending it back if not found acceptable. It is an easy way to model this fairly natural interaction between people.

Every activity is a facilitated human activity. This diagram is useful to explain to a customer support person, what other people will be doing in response to a customer issue. This diagram help people understand who else will be involved in response to particular decisions, such as whether the problem is reproducible or not. We can assume that there are also other automated computations, calculations, service requests, etc. involved in the process, but displaying them on this chart would make it more cluttered and harder to read, and therefor less useful for training people for how they are going to interact. Some people, though, will point out that this process is not “complete” because it does not include all the automated activities.

Multiple Conclusion Controversy

Let me address a comment that I often hear from people about BPMN processes who feel that “If a process has a branch, it should use an XOR gateway. It should not use two arrows coming out of an activity to branch.” This argument is based on the idea that activity nodes should be exclusively about performing actions, and gateways should be exclusively about the flow through a process.

The above Trouble Ticket process can be redrawn to use only XOR condition nodes to branch the process. It would look like this:

Trouble Ticket Process using Gateways

Compare this one (full size) with the original. There are three reasons why this is less satisfactory.

1. The diagram is more cluttered. Remember this is a simple process with only seven human activities. There are many business processes with many times this amount. The more nodes on the screen, the more visually cluttered it is, the harder to glance at and discern the meaning. The real question though is whether the addition of the XOR gateways actually makes the diagram more meaningful. Or the converse, if I remove the XOR gatways, how is the diagram less meaningful? The addition of the node (in my opinion) adds no extra value to the diagram

2. With the branch separated from the activity, it is far less clear why the process branches at this point. It could be because the human choice, or it could be anything else. You won’t know until you inspect the hidden metadata about the branch. Some branch nodes will the “data based” and some branch nodes will be “choice based” but that is not clear from the diagram. The “data based” branches must remain XOR gateways, but making the lines come straight from the activity make it entirely clear that the branch is because of the choice of the person performing the activity.

3. Part of the activity is to classify the result of the activity into a distinct number of “conclusions”. With the branch separated from the activity, it is less clear what choices the person has at that activity. You would be required to follow the lines out a ways. Consider the “Reproduce Problem” activity. If the lines instead come directly from the activity, it is clear that there that activity involves exactly four choices.

In conclusion, a simple rule that all process branching should occur at gateway nodes, causes diagrams that are lower quality and harder to read when it comes to human processes. When someone is trying to “automate” a process, the actions tend to be separate from the branches, but when someone is trying to “facilitate” a human process, it is more natural to remember that people often both do an activity and make a decision at the same time. For human processes, there is a huge advantage to incorporating the decision (choice) directly into the activity beacuse the process designer can simply draw the choice, and let the system deal with the details of capturing this choice from the user. This is again another difference between process automators and human process facilitators.

Conclusion

Find more on the trouble ticket process at:

http://www.kswenson.com/wiki/Wiki.jsp?page=TroubleTicketScenario

We need to start using a real human process fo revaluation of whether the existing BPM standards make sense. This standard process is documented and published. The diagram that I used in this article was created in TIBCO’s studio process designer, exported to XPDL, and then imported into Fujitsu’sInterstage BPM process designer, and an example of the kind of interoperability that you can expect today. The XPDL is linked to the page above, if you are interested.

A Methodology for Human Processes

In earlier posts I write about Human “Facilitator” Processes and BPMN & Methodology Agnosticism where I make the point that how you draw a process diagram depends largely on the methodology you use to define the process, as well as the underlying technology that you are going to use to implement the process. That begs the question then: what is the methodology for human processes?

What is a Human Activity?

Before we talk about a method for drawing up human processes, we need to be clear about what a human activity is. Clearly it is work that is done by a human. This is not work that is done by a computer on behalf of a user. In order to focus on the human activity, we have to ignore all of the things that are done to facilitate that work. Or rather, we need to consider those things that facilitate the work, as part of the task itself.

Before anyone will perform a task, they certainly must be (a) informed that the task needs to be done, (b) given the details of the particular case, and (c) have a way to record the results of the activity. These are part of any human activity. When modeling human activity, we focus on the work to be done: wash the dishes, feed the dog, write the blog entry, decide the menu for dinner. Naturally, for a group of people to coordinate on these tasks, there must be communications between them, but we don’t model the communications. If I want my son to wash the car, clearly I have to tell him that I want him to wash the car, but I don’t think of that as a separate activity in itself. Instead, it is part of getting the car washed.

It should not come as a surprise that systems designed for supporting human activities allow you to model the work that is to be done at every step in a process, without worrying about how you will tell that person to do the work, or how the results are collected. Such systems often include customizable ways that each user can decide how they wish to be informed: some users prefer email, others like to receive an SMS message on their phone, etc. As a process designer, I want to focus on the task to be done (e.g. review this document) and should let the system take care of how that user is informed about the work to be done. Similarly, I know that an activity may be concluded with a decision (e.g. to either “accept” or “reject” the document), and that may effect the path that the process takes, but I do not want to be too concerned at the high level of how the system collected that response.

Besides the three required aspects of a human activity above, many human facilitation systems include the concept of a (d) deadline date for an activity, as well as (e) reminders about the activity and warnings that a deadline is approaching. These are convenient built-in capabilities to help manage the work.

So keep in mind that a human activity is a description of actual human work to be done, and that each activity is assumed to have (a) notification, (b) information, (c) conclusion, (d) deadline, and (e) reminders built-in. The following 9 step method can be used to create a model of a human process:

Step 1: Identify Human Work

Start by enumerating the tasks that must be done by people. Ignore for the moment the paper form, the data on the form, or how that form is passed around. Those who expect this to be a programming exercise may be tripped up by this because of the tendency to focus on the artifacts that help people coordinate their work. We need at this point to look at work itself. These are tasks that depend upon a human skill to do.

There are three reasons why an activity must be performed by a human:

  1. In some cases there are decisions to be made that can not be automated and must be made by a person. For example, the determination of whether an article is fit for publication is a task that depends upon recent current events, suitability of the writing style, and the editorial preferences of a particular publication. Another example, the decision of which candidate is the best fit for an open position is a task that depends upon personalities of the the candidate and the team they would join, as well as an assessment of skills and ability to perform the job. These decisions must be performed by a person because the most relevant attributes may not be able to be expressed in a quantitative way, like political correctness or personality. The rule behind what constitutes acceptable quantities of these are tacit and are not consciously known by the people who evaluate such rules. But indeed there are people who are very good at making such decisions. This is work that will never be automated.
  2. The second category of tasks are those which might one day be automated, but to do so would require additional prep work which has not been done. For example, you might need someone to enter figures from a financial report which is received either on paper or in an electronic format that is not easily consumable. For the time being, it is simply less expensive to pay someone to do this than it is to pay a programmer to write the code that automatically converts the information. Eventually, these will be automated.
  3. The third category consists of physical tasks that must be done outside an information system. For example driving a forklift to load goods from a truck into a place in a ware house. Or to perform maintenance on a piece of equipment. It might be possible in the far future to automate these tasks with robots, but there are significant barriers to automation due to the physicality of the task. For the time being, we must treat these as human work.

These human tasks are made explicit so that people with the right skills can be identified, or so that people can be trained to do those tasks. Everyone involved in the process needs to know what they do — not just those performing the task — so that everyone gains an understanding of how the tasks they do fits in with what the others are doing. The human tasks need to be described in a way that the people themselves will understand using the specific vocabulary that the people in that organization use. There will normally need to be additional documentation associated that contains detailed information that is useful for training or skills identification.

Avoid including activities which do not involve humans. For example, running query on a database is something that might be need at some point in order to support a human task. At this point in the method you simply assume that the right information is available. There is a later step that defines what information must be available, and a final step that defines how that information is retrieved, but those should be defined at the right point, which is much later in the method.

Step 2: Determine Activity Conclusions

Human tasks can be concluded in more than one way. For example, the decision of whether to “accept” or “reject” an article for publication will be concluded in two ways: “accept” or “reject”. The conclusion of an activity is an explicit part of the activity itself. In many situations, there may be a third conclusion to this example activity which is something that means more or less “I am not qualified to make this decision”. That is a possible way that an activity might be concluded. Some activities will have acceptable time limits, and may be concluded simply by the passing of time. Each conclusion is given a name.

Conclusions are important communication events. When you model a human process, you are modeling thing that need to be communicated to the people involved in the process. Take for example the process of writing a book where many people are involved in various roles such as writer, reviewer, editor, etc. The writer will at some point declare that the book (a particular draft) is ready for review. While this concludes one phase of writing, more importantly it tells others that they may start their activities of reviewing and editing the current copy. The conclusion of a human activity is most often a speech act known as a “declaration”. A declaration is a statement that in the act of uttering it, changes the state of a group of people. Declarations often redefine what many people are expected to be doing. So it is with a modeled human process: the completion of one activity redefines what other people in the process are expected to do.

A conclusion should be considered a distinct conclusion only if it matters to the group. Take for example a task “Answer Question”. You might think of the answer to the question, as being the conclusion of the activity, and there are approximately and there is one (or more) answers to every possible question that might be placed. Clearly it is non-sense to consider every possible answer as a possible conclusion of the activity. Conclusions are grouped into sets which will effect the flow of the process further on. To be specific, if the flow of the process does not depend at all on whether the task is completed or not, then it is sufficient to say that there is only one conclusion: “done”. The president is given the choice to “sign” or “veto” a piece of legislation, and the process continues in different directions depending upon how this task is concluded. However, there is a time limit, and if congress dismisses before the bill is signed, then this situation is called a “pocket veto”. A “pocket veto” is considered to be completely identical to a “veto” as far as the process is concerned, so we would not need a separate conclusion for pocket veto: the timeout rule would simply be another way to conclude the activity as a normal “veto”.

Step 3: Put the Tasks into Order

The work and conclusions should be identified without getting overly involved in the sequence of activities. In many cases it is clear that a particular task needs to be done before or after another related task. There will also be branches, and certain tasks that are done only on certain conditions. This is where a diagramming tool becomes useful, but only if it can describe activities at the human level. If one activity must be completed before another, and that other activity can start as soon as the first is completed, then an arrow is drawn between them.

If an activity can be concluded in more than one way, and if each conclusion would cause the process to proceed in a different direction, then there can be an arrow coming out of that activity for each possible conclusion. Clearly, if the point of an activity is to “accept” or “reject” an article for publication, the process that continues after that point will be very different. Because this decision is the very point of the activity, the process becomes easier to read if there is a direct connection between the activity and the direction that the process goes. Some engines can not represent this in this way, and instead save the conclusion into a variable which is then tested at a following branch gateway. This is an accepted and common practice, but because the branch is removed from the human task, it is harder to see the direct causal link.

The result is a network diagram of the human activities that must be performed properly set in a process which indicates the conditions and order of the activities.

Step 4: Determine Performers

After the tasks and order are identified, one needs to determine who should do the tasks. This is highly dependent upon a particular organization. It is also changes from case to case. In some cases, there will be a pool of people who would be qualified to do the task, and anyone from that pool might be picked. What must be determined at this point is what set of rules will be used to determine who should do a particular job. It might be that a person with a particular skill is needed, and if a directory exists that lists all the people with that skill, then the rule is to find those people and pick one. More often the requirement will be that a particular person is chosen because of their responsibility in a particular part of the organization. For example, there may be a person designated to handle requests from a particular customer. Of there may be a person who is designated as handling all the purchase requests for a particular department.

Unfortunately such a rule can not be specified without specific consideration of the organization that will be using the process. Each organization will have unique organizing principles, some of which are based on historical accidents. Even across a single organization, the rules to determine who does a particular activity may not be consistent. Any organization that grew by mergers of other organizations will have some “special” parts of the organization that are not like other parts. There also needs to be consideration about the specific representation of the organization in an organizational directory. If skills are not tracked, then that can not be used to determine the person to perform the activity.

There generally will need to be an expression of some sort which can be evaluated in the context of the organization structure that resolves the assignee of a particular task. This expression will usually make use of pre-existing groups and/or job titles in the organizational directory. It may require new groups or job titles. There may need to be multiple levels of groups which includes groups which include groups. In some cases it may not be possible to determine a priori who will be performing a particular task. In some cases the assignee expression will narrow it down to a group of people, but immediate circumstances (who is available) may be necessary select the final assignee. It might be necessary for the users to self-select for a particular job. There may need to be case by case adjustments, since it is not possible to know everything in advance.

Step 5: Determine the Information to be Carried.

Here you specify a schema or a set of schemas which carry the information context within which all the activities take place. If the process is for a customer to open a bank account, then there is specific information that needs to be carried for that process, such as the customer name, address, and references to other accounts or credit history. The context schema needs to be a superset of all information needed for every activity. For example, if there is an activity to assess the property value of a house, then clearly the details about the home address, prior sales information, and various reports about the locale are necessary to perform this activity. If one activity produces a result which is necessary in a later activity, such as the assessed value of a house, then there much be a variable that will hold that information between activities. By considering the information requirements of every activity in the process, you can compile a complete context schema required by the process.

The information content will be modeled differently by different implementation engines. For some there is a single schema for the context that is shared by all activities (effectively a union of all schemas required by the individual activities). Others have a collection of schemas which are transformed back and forth through the process. Either way, the idea at this point is to identify the information requirements of the entire process.

Step 6: Define Access to Information at each Activity

At some points in the process, certain parts (variables) within the shared context can be read and updated. At other points that information can be read, but not updated. There are also point in the process where information is completely hidden because it is either not yet specified at that point in the process, or not relevant to that particular activity.

Step 7: Determine Timouts

An activity may have a requirement to be performed in a particular time period. What happens when that time period is exceeded? Does the process continue without the activity being complete, or does the process “fail” and go down a different path. There may be reminders that are additional notifications to the user that the task has not yet been completed. There may also be escalation to other people or management if the task is nearing the deadline without being completed. At this point for each activity, all time-dependent behaviors should be considered. Some tasks may have no time dependency at all, and may be allowed to remain uncompleted indefinitely.

We know that time equals money; so it is worth considering at this point the cost of every activity, as well as the cost to the organization of either delaying the activity, or not performing that activity. If you are simulating the execution of the process, these costs entered into the model can be acumulated across a simulation run in order to guide the further design of the process.

Step 8: Design the Presentation of the Information.

This puts a face on the context information, mapping the schema to a visual presentation. This presentation might be specific to a given activity, or might be the same presentation over the entire process.

Humans don’t read XML directly. Instead, the information has to be displayed in a way that is meaningful to the user. To be effective, the display should be organized for ease of use. Some of the information may be keys or links to other information, and the display should provide an easy way to access those external sources of information.

Technology to present the information is often described as “forms” in the BPM community, but you should keep in mind that any technology that can take data and generate a user interface can be used. The choice will depend on many factors outside the BPM system. Some organizations will choose Visual Basic or Java Swing because they have programmers experienced in these areas. Some might choose PHP or other web technique. They might have a powerful forms software designed specifically for this purpose. The process definition method should not get bogged down at this point in the specific requirements of the technology to be used. Instead, this step should focus on the look and feel of the displayed information.

Step 9: Integrate to Information Services

This is where the information needed in a process can be picked up from various sources and sent to various destinations. I use the term “service” in the generic sense of a “Service Oriented Architecture” (SOA). This might be through “web service” calls or any other means to access other service types. The point simply is that there is a human activity that needs a particular piece of information, and so this is where you specify how that information will be retrieved for that human user.

It is this step where you finally consider how data is sent and received between computers. Many process designers start by considering how data is transferred through the system, and it leads them to a communications centric view of the work. It can lead to activities that are optimized for computer communications, instead of being optimized for human work. Since the human costs far outweigh the compute resource costs in most business processes, it is important to start with the human tasks, and then work down to the integration tasks.

To access information from a web service, some of the process context information will need to be transformed appropriately into XML that is needed as input to a web service. The resulting XML may need to be similarly transformed to be put back into the process context. For example, if a in an account application, the process may need to access a “credit rating” service to retrieve the applicants credit rating for consideration in the application process.

Services are used not only for retrieval of information; it is also the point where you consider how the results of the human tasks will be sent out to destinations outside of the people directly involved in the process. For example if the decision is made to approve a loan of a particular amount to a customer, then there are various parties that may need to be informed about this decision (e.g. by email) and there would also be calls to services to actually set up the account and initiate the sending of a contract to the parties involved.

Summary
There it is; nine steps which lead to a model of a human process. Not a complete methodology by any means, but still useful. The steps are repeated iteratively, with reviews at various points. Usually after each step there is some segment of the organization that are interested in reviewing the progress. It is also true that later steps will turn up details which were left out of earlier steps, and so there is some iteration through the method multiple times. A good system will allow simplistic execution of the process before you are complete, so that you can try out the process along the way. After step 3 you should be able to run simulations of the process in order to gain confidence on the correctness of the process. After the process is implemented and deployed, you can collect statistics on how well it is running and cycle back through this to improve things. We call it “Business Process Management” because you are never completely finished designing the process. This method is repeated as long as the process can be improved, and there are always new ideas on how to improve the process or to respond to external changes.

Presentation (slides and audio) on BPM Standards

At the last Gartner BPM Summit I gave an overview presentation on BPMN, XPDL, BPEL, and Wf-XML. Due to the positive response from the presentation, I was asked to record it so it could be accessed from the web. This is available and can be accessed by clicking on the link below. There are a few slides from my employer up front, please understand they support all my time and effort to make this information available to everyone for free, so after a few slides on the Fujitsu Interstage product, you will get to a fairly succinct overview of these four important standards.

Presentation Link

It runs about 30 minutes total. Enjoy.

BPMN & Methodology Agnosticism

Stephen White made a comment on my Human “Facilitator” Processes post that deserves highlighting.  You probably know the Stephen was the chairman of the working group that developed BPMN.

The discussion of the different diagrams shown in the post really have nothing to do with BPMN per se, but with the methodologies that would be used to model with BPMN. BPMN is generally methodology agnostic. The way that a process is modeled, to what level of detail, and what information should be captured, is really up to the methodology and the purpose for creating the process model.

He is completely right, and this is really really important.  I have discussed this with Stephen before, but this is something that very few of the experts seem to understand.  What he is saying is that the way you draw something with BPMN depends upon your methodology you use.  Given one method for one purpose (e.g. Automators) it would be right and correct to draw one way, but with a different method and different purpose (e.g. Facilitators) it would be right and correct to draw a different way.

This makes those who want ONE TRUE WAY to draw process diagrams extremely uncomfortable.  This was never the goal of BPMN.  BPMN instead had the goal to define a set of common elements that could be used for multiple different specific diagramming needs.  I might even venture that this is why BPMN did not have a meta-model to begin with.  I might also venture that BPMN success is precisely because it was flexible to be adopted in slightly different ways. Had it been overly rigid, it might have been rejected.

I would have said it slightly differently: that differences in the diagrams come from differences in the capabilities of the underlying system that will enact the processes.  This amounts to the same thing since tools are created with a particular methodology in mind, and that use of a particular methodology draws you to particuar tools.  What you are allowed to draw, and how you draw it, depends on things outside the BPMN standard.

What does this really mean?  It means that using one methodology one might draw a given process one way, while using another methodology one might draw it a different way.  Those who want a single diagramming approach, want a single methodology, as well as single set of underlying capabilities.  That would make life easier, in the sense that having a single flavor of wine would make life easier.  The world is not so simple, and some of those differences have great value and utility.

This calls into question all sorts of things.  For example, is it possible to exchange process models?  The answer depends upon whether the tools exchanging the models have similar enough underlying capabilities.  My position has always been that a process model has many aspects, and some aspects of the model will translate with full fidelity, but other aspects will not fare so well, and we must be satisfied with partial fidelity.  Still, it is worth-while to get the part that does carry over.

At the risk of being repetitive, let me stress this one more time.  You might be able to draw a particular diagram using one fully BPMN compliant tool, and not be able to draw that same diagram using a different BPMN compliant tool. Both tools are BPMN compliant.  I will leave you with that thought for today, but there is clearly much more to discuss, particularly when considering Facilitators and Automators.

Human “Facilitator” Processes

In my last post, I introduced the concept that there are two predominant views of BPM. One view is that of the Automators, who are creating business processes which replace humans by doing the same things that had traditionally been done manually. The other view is that of the Facilitators, who are creating BPM processes to involve actual people in processes can not and probably never will be fully automated. Both groups see themselves as making “human processes”, both groups create BPMN diagrams filled activities and gateways.

To illustrate the differences, consider a very simple process that represents a writer writing an article for a reputable publication, and an editor which must reviewing that article to make a decision on whether the article is suitable for publication or not. This is not a pretend process, this is a real process which when used in a real organization provides real value. A Facilitator would draw it like this:

facilitatorprocess2.gif

That is all you need at a human activity level. In order to explain this process to a person who was to participate in this, the two nodes would be enough: Betty will write the document, and when completed, George with review the document. Both Betty and George understand their role in the process, and can go about their work.

An Automator is likely to look at this process and say it is ridiculously simple. People are not just sitting around like servers handling requests like “Write Article”. Automators are looking specifically at what the server must do, to enable the process. For example, the server does not write the document, but people do. What the server does is

  • determine who should be the writer this time
  • put the task on a task list that the user can browse
  • some users also want an email message prompting them
  • receive the email message back with the document in it
  • remove from task list
  • determine who should be the editor this kind of article
  • put the task on a task list that the editor can browse
  • some users also want an email message prompting them
  • receive the email message back with the decision in it
  • remove from task list

It gets more complex when you include features which are commonly included in a human BPM system. First of all, it is not always possible to know (with the data available to the system) who the write editor is. It might on the surface be an article about vacation travel, slated for the Travel section, but it actually is a news story about smugglers pretending to be on vacation. Many good human BPM systems give you the ability to reassign the activity to another person. So you need to add that there are two possible emails that might come back: one with the results, and the other saying “Joe should review this document”.

Second area of flexibility is the initial assignment of the writer. A good human BPM system will have a way to offer a task to a group of people, and people can accept the task, and bring it to them, informing the others that the task has been taken. This now makes the task list more like:

  • send an email offering the chance to write an article
  • receive email from first person responding that they will take the task
  • send email to all the original group informing them that the task has been taken
  • put the task on a task list that the user can browse
  • send an email (some users)prompting for the actual writing
  • receive the email message back with the document in it
  • remove from task list
  • determine who should be the editor this kind of article
  • put the task on a task list that the editor can browse
  • some users also want an email message prompting them
    • receive the email message back with the decision in it
    • OR receive an email sayting to reallocate to a different person, loop back a couple steps.

    remove from task list

Most good human workflow systems have a way to remind the users that they are approaching a deadline. A typical two step reminder is that the first reminder is to the person performing the task, and if that does not work, then an “escalation” reminder which goes not only to the performer, but also to a group of others who will look into the problem and see why it is no progressing. This adds a few more steps:

  • send an email offering the chance to write an article
  • receive email from first person responding that they will take the task (presumably you ignore any later email message to this effect, and drop them on the floor)
  • send email to all the original group informing them that the task has been taken
  • put the task on a task list that the user can browse
  • send an email (some users)prompting for the actual writing
    • send reminder email to performer
    • send escalation email to wider group of people
  • receive the email message back with the document in it
  • remove from task list
  • remove from task list
  • determine who should be the editor this kind of article
  • put the task on a task list that the editor can browse
  • some users also want an email message prompting them
    • send reminder email to performer
    • send escalation email to wider group of people
  • receive the email message back with the decision in it
    • OR receive an email sayting to reallocate to a different person, loop back a couple steps.
  • remove from task list

Such a process might be diagrammed a bit like this:

Automator Process

I am sure there are MANY problems with the above diagram. If you would like to draw this process correctly, please do so and attach it to a comment (or email it and I will attach). I am not sure that a complex condition node can “loop back” to a previous task (that is what I want to do but it might not be allowed by BPMN guidelines) I am not sure how to have one timer go, and then a later time, and still allow that if the response comes before one or the other the process continues. I think I need to use a subprocess box to get that to work correctly. in any case, the exact way that one would draw this depends upon details of the system you are implementing on. For example, how did you recognize that the email was a completion email, or a request for reassignment. And what is missing from this is the requests that the user makes to the system to retrieve the current worklist. But this diagram is good enough for me to make a point.

The Automator is happy, because this diagram represent a more “truthful” description of what the system has to do. It makes explicit the various email messages that must be sent and received. What we have done here is to move away from the representation of what people do, and moved instead to a representation of what bits and bytes need to be sent and received by the system. The activities describe what the system does, not what the people do. That is great, if you are a programmer.

The detailed diagram has lost the representation of the fact that there are actually only two human activities being performed. You can’t really see what the people are doing, without getting lost in the details of what the system has to do to communicate to the people. The diagram could be simplified by hiding a lot of the detail in subprocesses, so you have only the two nodes at the top level and drill down to see the detail.

The point is not that “Automator” processes are more complex. My point is that with a human BPM system, the “Facilitator” gets a lot of capability built in “for free”. Simply draw an activity, and assign it to a person, and the human BPM system at that point does multiple things to inform that person that they have something to do. There can be built in mechanisms to negotiating who does that activity. There can be built in mechanisms for reassigning the activity. There can be built in mechanisms for reminder messages. And finally there is a built in mechanism to recognize when the person declares that they are done. All of these capabilities are common across any task you wish to give to a human. Why should you have to re-invent how to notify the user for every process? The Facilitator wants to focus on the human tasks, not the bits and bytes that the system sends and receives. The Facilitator learns that all these capabilities are built into an activity node.

But what to do? BPMN does not have the concept of assigning a person to an activity. BPMN was designed primarily (but not exclusively) by people with the Automator viewpoint. Much time was spent on how to translate to BPEL, which is exclusively Automator viewpoint. The BPMN group kept their options open, to allow for a Facilitator view implementation, but there are contradictions if you follow this path. This causes people to look at an implementation of BPMN, and way “that is not standard”. Indeed it is not: a Facilitator diagram does not look like an Automator diagram.

Facilitator Process

Next Page »