<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Rick Geneva - ProcessModeling.info</title>
	<atom:link href="http://www.rickgeneva.com/wp/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.rickgeneva.com/wp</link>
	<description>Insightful information on business process modeling from Rick Geneva</description>
	<lastBuildDate>Tue, 24 Nov 2009 16:40:23 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>New posts on BPMN 2.0</title>
		<link>http://www.rickgeneva.com/wp/posts/new-posts-on-bpmn-2-0/</link>
		<comments>http://www.rickgeneva.com/wp/posts/new-posts-on-bpmn-2-0/#comments</comments>
		<pubDate>Tue, 24 Nov 2009 16:40:23 +0000</pubDate>
		<dc:creator>Rick Geneva</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.rickgeneva.com/wp/?p=267</guid>
		<description><![CDATA[There are two new posts on processmodeling.com regarding the upcoming BPMN 2.0 specification.
http://www.processmodeling.info/posts/highlights-from-bpmn-2-0-activity-types/
http://www.processmodeling.info/posts/highlights-from-bpmn-2-0-artifact-shapes/
The new URL for this site is www.processmodeling.com.   Please update your feeds to the new site.
As a reminder I will be retiring the rickgeneva.com/wp URL January 1, 2010.
]]></description>
			<content:encoded><![CDATA[<p>There are two new posts on processmodeling.com regarding the upcoming BPMN 2.0 specification.</p>
<p><a href="http://www.processmodeling.info/posts/highlights-from-bpmn-2-0-activity-types/">http://www.processmodeling.info/posts/highlights-from-bpmn-2-0-activity-types/</a></p>
<p><a href="http://www.processmodeling.info/posts/highlights-from-bpmn-2-0-artifact-shapes/">http://www.processmodeling.info/posts/highlights-from-bpmn-2-0-artifact-shapes/</a></p>
<p>The new URL for this site is www.processmodeling.com.   Please update your feeds to the new site.</p>
<p>As a reminder I will be retiring the rickgeneva.com/wp URL January 1, 2010.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.rickgeneva.com/wp/posts/new-posts-on-bpmn-2-0/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Recap from the Singapore BPMN Training Event</title>
		<link>http://www.rickgeneva.com/wp/posts/recap-from-the-singapore-bpmn-training-event/</link>
		<comments>http://www.rickgeneva.com/wp/posts/recap-from-the-singapore-bpmn-training-event/#comments</comments>
		<pubDate>Wed, 04 Nov 2009 16:41:46 +0000</pubDate>
		<dc:creator>Rick Geneva</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.rickgeneva.com/wp/?p=265</guid>
		<description><![CDATA[New post on the processmodeling.info site.
www.processmodeling.info/posts/recap-singapore-bpmn-training-event-2009/
I have mirrored all of the previous content before November 1st to the new site.  If you are a registered user you might receive some duplicate postings for a while.  I&#8217;ll be shutting down this URL January 1, 2009.   The new site is www.processmodeling.info.  For members of the old site, [...]]]></description>
			<content:encoded><![CDATA[<p>New post on the <a href="http://www.processmodeling.info">processmodeling.info</a> site.</p>
<p><a title="Recap of the BPMN training event in Singapore" href="http://www.processmodeling.info/posts/recap-singapore-bpmn-training-event-2009/" target="_self">www.processmodeling.info/posts/recap-singapore-bpmn-training-event-2009/</a></p>
<p>I have mirrored all of the previous content before November 1st to the new site.  If you are a registered user you might receive some duplicate postings for a while.  I&#8217;ll be shutting down this URL January 1, 2009.   The new site is <a href="http://www.processmodeling.info" target="_self">www.processmodeling.info</a>.  For members of the old site, your registration information has already been copied to the new site.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.rickgeneva.com/wp/posts/recap-from-the-singapore-bpmn-training-event/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Hacked!</title>
		<link>http://www.rickgeneva.com/wp/posts/hacked/</link>
		<comments>http://www.rickgeneva.com/wp/posts/hacked/#comments</comments>
		<pubDate>Tue, 03 Nov 2009 16:25:20 +0000</pubDate>
		<dc:creator>Rick Geneva</dc:creator>
				<category><![CDATA[Security]]></category>

		<guid isPermaLink="false">http://www.processmodeling.info/?p=259</guid>
		<description><![CDATA[Recently the few hours I have available to write on this blog have been consumed by upgrading my security.  I admit, when I started this site I didn&#8217;t worry much about security and used mostly default settings.  So I guess you can say that I deserved it.   I&#8217;m just trying to [...]]]></description>
			<content:encoded><![CDATA[<p>Recently the few hours I have available to write on this blog have been consumed by upgrading my security.  I admit, when I started this site I didn&#8217;t worry much about security and used mostly default settings.  So I guess you can say that I deserved it.   I&#8217;m just trying to do my part in making the world a more efficient place through better process modeling.  I suppose that makes me naive to the fact that hackers will try anything just for the kick of doing it. There doesn&#8217;t seem to be any logic (that I can understand) on why you would hijack a website. It seems like a lot of effort just to get a few page views of some political propaganda that I don&#8217;t understand (or care to).
</p>
<p><br/></p>
<p>
I hope I didn&#8217;t lose any of my readers by moving the site to the new URL.  This was necessary because I have to separate my personal site from my processmodeling.info site.  www.process-modeling.com will redirect to processmodeling.info.  So this is the official new home.   Soon I&#8217;ll be back to writing again.
</p>
<p><span id="more-259"></span></p>
<h3><em><strong>To others who blog</strong></em>, here&#8217;s what I&#8217;ve learned:</h3>
<ol>
<li>PHP is terribly insecure.  If you use it, make sure it&#8217;s up to date.   Many popular packages today are written in PHP.  When a vulnerability is found, you need to update your software as soon as possible.</li>
<li>One password isn&#8217;t enough.   Don&#8217;t rely on any sort of default security.  Instead make it a complex maze of mixed types of security so that access to one area will not get far in the rest of the site.  Yes, this is hard to manage, but so is rebuilding your precious website after some jerk (with obviously more time on his hands than you have) hacks you.</li>
<li>Learn every Apache server trick you can, and use it.  I&#8217;m not going to give any specifics here (for security reasons).   But just remember that your hosting company doesn&#8217;t provide anything but hosting.  Security is your responsibility.  If you get a good hosting company (I&#8217;m fortunate to have one) they can give you good, sound advice.</li>
<li>Host only what you need, and nothing extra.  Anonymous directories will be eventually be found , and exploited.  Get another account (it&#8217;s cheap) for anything not directly related to the site theme.   Put extra passwords on things that you don&#8217;t think are very important.  This is where the hackers look.</li>
<li>Everyone knows not to use their kids&#8217; names or their pet names as a password (hopefully).   I thought my passwords were pretty good.  But then after some research I found out how easy it is to crack a typical password.   But there&#8217;s hope.  On an keyboard there are over 100 possible characters.  Use a combination of the full range, and at least 10 characters.   Again, a terrible pain to remember, but it&#8217;s your choice.  Either protect it, or you&#8217;ll end up inadvertently helping to spread global terrorism, violence, or some quite offensive non-family oriented material.</li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://www.rickgeneva.com/wp/posts/hacked/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Site URL moving to www.processmodeling.info</title>
		<link>http://www.rickgeneva.com/wp/posts/site-url-moving-to-www-processmodeling-info/</link>
		<comments>http://www.rickgeneva.com/wp/posts/site-url-moving-to-www-processmodeling-info/#comments</comments>
		<pubDate>Mon, 26 Oct 2009 15:37:09 +0000</pubDate>
		<dc:creator>Rick Geneva</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.processmodeling.info/?p=253</guid>
		<description><![CDATA[I&#8217;m moving the site to the new URL:  http://www.processmodeling.info
I&#8217;ve been putting this off for a while but since I got hacked (Oct 25, 2009) I am raising the priority.  See you there at the new URL.
]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m moving the site to the new URL:  http://www.processmodeling.info</p>
<p>I&#8217;ve been putting this off for a while but since I got hacked (Oct 25, 2009) I am raising the priority.  See you there at the new URL.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.rickgeneva.com/wp/posts/site-url-moving-to-www-processmodeling-info/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>What&#8217;s so hard about process modeling?</title>
		<link>http://www.rickgeneva.com/wp/posts/whats-so-hard-about-process-modeling/</link>
		<comments>http://www.rickgeneva.com/wp/posts/whats-so-hard-about-process-modeling/#comments</comments>
		<pubDate>Mon, 12 Oct 2009 19:36:36 +0000</pubDate>
		<dc:creator>Rick Geneva</dc:creator>
				<category><![CDATA[Process Modeling]]></category>

		<guid isPermaLink="false">http://www.rickgeneva.com/wp/?p=245</guid>
		<description><![CDATA[Process modeling today is more about managing complexity than it is drawing a diagram.  Even the as-is process model is very complex these days.  The individual worker has never been more empowered, due to the technology we employ.  What used to be the work of 10 people can now be accomplished by [...]]]></description>
			<content:encoded><![CDATA[<p>Process modeling today is more about managing complexity than it is drawing a diagram.  Even the as-is process model is very complex these days.  The individual worker has never been more empowered, due to the technology we employ.  What used to be the work of 10 people can now be accomplished by 1 person.   But these efficiency gains come at a price.  A human being can only do so many things before they become saturated with information.  Task prioritization becomes difficult.</p>
<p><span id="more-245"></span></p>
<p>Often I get an email from my boss that contains one or two short sentences.  Sometimes I reply with a long description of my idea.   He then replies to me saying &#8220;this is too long.  Please revise and I&#8217;ll read your response&#8221;.   The first time I saw this reply I was a bit surprised, and slightly offended.  It took nearly a half hour to craft that wonderful email and he won&#8217;t even bother to read it.  But then I realized how much work he must be handling on a daily basis.  He&#8217;s constantly connected to people around the globe, with people in almost every time zone.  So if I write an email that takes 5 minutes to read, this is only one of 100 other emails that also take 5 minutes to read.  500 minutes of emails a day?  That&#8217;s more than 8 hours!  </p>
<p>The point here is that the individual worker is hitting a point of information saturation.  Not only are we asked to answer 100+ emails per day, but we are also tasked with meetings back-to-back all day long.  So when do we have time to get anything done?   I don&#8217;t know about you, but the only time I seem to get anything creative done I&#8217;m at cruising altitude on an airplane.  Now my personal space at 33,000 ft (10,000 meters) is also being invaded (you have no personal space in coach class except in the confines of your mind, knowing that nobody will bother you for at least a few hours).  Wi-Fi internet access is available on many flights.   When airborne Wi-Fi is free someday, I&#8217;ll no longer have any excuse for not replying instantly to everyone who believes their request is the most important, above everyone else&#8217;s.</p>
<p>Process modeling 20 years ago was mostly about sequential activities.  A worker would receive an assignment and complete it, then pass the file to the next person for subsequent activity.  It was very natural to use flowcharts or swimlane diagrams to show the flow of process instance.  But today we are more and more event driven.  Processes are fragmented, distributed, globalized, and virtualized.  Workers don&#8217;t work a regular 9 to 5 schedule.  In fact, you cannot rely on someone even coming into the office because many people work from home one or more days per week.   And they do this why?   Because coming into the office often means being overrun by communication and unplanned events.  There&#8217;s just no time to get anything done at the office.</p>
<p>Have you ever taken the time to model out a simple process that happens every day?  For example, someone wants to create a proposal, and it requires feedback from 4 or 5 people.  After feedback is collected, the manager will make the final approval or ask for someone to make some changes.   How many times per day does this happen in your organization?   How often does this occur over email?   Try to model this process including all of the details, just to see how complicated it really is.  Once you understand the simple process like this, it&#8217;s much easier to understand the complexity of a large process.</p>
<p>Most business analysts won&#8217;t take the time to do this sort of exercise.  Instead, I see countless process models in a flowchart that is over-simplified and contains mixed objectives.    I&#8217;m not suggesting that every process should include every intricate detail imaginable.   I&#8217;m only suggesting that you try this exercise once, and see if it helps you understand the bigger picture.</p>
<p>The process called &#8220;Proposal gets approved&#8221; which leads to &#8220;was approved&#8221; and then loops back to &#8220;work on proposal&#8221; seems simple enough.  But it does not consider the event based model that is the reality of the scenario.</p>
<div id="attachment_246" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.rickgeneva.com/wp/wp-content/uploads/2009/10/simple_approval_process.jpg"><img class="size-medium wp-image-246" title="Proposal Approval Fowchart" src="http://www.rickgeneva.com/wp/wp-content/uploads/2009/10/simple_approval_process-300x157.jpg" alt="Proposal Approval Fowchart" width="300" height="157" /></a><p class="wp-caption-text">Proposal Approval Fowchart</p></div>
<p>First, the process model assumes that everyone is available, waiting for the initial request (false).  Most likely, the participants are in meetings, flying to meet a customer, or out of the office.  Then the process assumes that everyone involved is well informed and will likely agree (false).  When is the last time you asked for 5 people to agree on something?   Five people from five different job positions and backgrounds are not going to agree on anything.  Everyone has their own agenda, and perspective on the process.  And finally it&#8217;s assumed that the manager will like what he sees and approve it most of the time (false).   It&#8217;s much more likely that 3 or 4 revisions will be requested from 2 or 3 of the participants.  In my experiences with this type of process, what usually happens is that the process never actually completes.  Instead we run out of time.   Then the manager ends up overriding some of the inputs and submitting the proposal.  A few days later some brilliant feedback is submitted from one of the participants who was visiting a customer in another time zone on the other side of world.   But it&#8217;s too late to include these ideas because the proposal has already been submitted.</p>
<p>Now that we have taken a look at the reality of the scenario, redraw your process model to accommodate the various events that can occur.  Include the various deadlines (all of them).  Include the various exceptional conditions that might occur (such as someone introduction of new information which might cause a complete revision).  Include the assumption that people will not respond in time (take the pessimistic approach rather than the happy path).   Also take into consideration that there might be more possible outcomes than what was originally planned for.    Additional opportunities might arise during the creation of the proposal, or maybe the entire project must be scrapped due to unforeseen circumstances.</p>
<p>As a reminder, this is a very simple process&#8230; or is it?</p>
<p>This exercise is intended to be a warm-up to the real world.  I often do this myself before I start on a large process.  It gets me thinking about the exceptional conditions and helps me detect situations that were never discussed.  It&#8217;s amazing how often I find organizations that have processes with no plans for the &#8220;what-if&#8221; scenario.   Everything seems to route to one person whenever there is a problem.  So what happens when that person is not available?  Process deadlock?   Maybe it&#8217;s ok to tell your customer that their request is being ignored by a middle manager.  In my job, that could get me fired.</p>
<p>Process modeling is not about the ideal, optimized path where everything runs smoothly.  That&#8217;s the easy part.  Any middle manager with Visio can create a flowchart for that.  Your job as a process analyst is to create a bullet-proof model that has a plan for everything, but simultaneously doesn&#8217;t bog the reader down with too many details.   This is what is hard about process modeling.</p>
<p><em>-        Rick Geneva</em></p>
]]></content:encoded>
			<wfw:commentRss>http://www.rickgeneva.com/wp/posts/whats-so-hard-about-process-modeling/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Demystifying the Event Driven Gateway</title>
		<link>http://www.rickgeneva.com/wp/posts/demystifying-the-event-driven-gateway/</link>
		<comments>http://www.rickgeneva.com/wp/posts/demystifying-the-event-driven-gateway/#comments</comments>
		<pubDate>Mon, 21 Sep 2009 13:35:50 +0000</pubDate>
		<dc:creator>Rick Geneva</dc:creator>
				<category><![CDATA[BPMN]]></category>
		<category><![CDATA[Process Modeling]]></category>

		<guid isPermaLink="false">http://www.rickgeneva.com/wp/?p=201</guid>
		<description><![CDATA[Event Based Exclusive Gateway
The event driven gateway is one of the most useful symbols that I know of in BPMN.  Yet it&#8217;s often overlooked as a solution to common problems.  It is a compound symbol, inheriting attributes of other BPMN shapes.  First of all, it&#8217;s a gateway that is used to split [...]]]></description>
			<content:encoded><![CDATA[<h1>Event Based Exclusive Gateway</h1>
<p><span style="font-weight: normal; font-size: 13px;">The event driven gateway is one of the most useful symbols that I know of in BPMN.  Yet it&#8217;s often overlooked as a solution to common problems.  It is a compound symbol, inheriting attributes of other BPMN shapes.  First of all, it&#8217;s a gateway that is used to split sequence flow paths.  The gateway is the diamond symbol.  Inside this diamond shape you will see the intermediate event shape, which is the double thin line circle.  Inside the intermediate event shape there is the pentagon, which is a symbol for multiple events.  So when you put all of this together we have a gateway that deals with multiple intermediate events.</span></p>
<div id="attachment_231" class="wp-caption aligncenter" style="width: 76px"><a href="http://www.rickgeneva.com/wp/wp-content/uploads/2009/09/eventbasedgateway.gif"><img class="size-full wp-image-231  " title="Event Based Exclusive Gateway" src="http://www.rickgeneva.com/wp/wp-content/uploads/2009/09/eventbasedgateway.gif" alt="BPMN version 1.1 and higher" width="66" height="66" /></a><p class="wp-caption-text">BPMN version 1.1 and higher</p></div>
<p>In all of my classes I tend to get more questions about the event based gateway than any other shape in BPMN.  This is probably because there are so many use cases for it, and its pattern to many people appears to be drawn backwards.  Most beginners in BPMN tend to draw the pattern with the intermediate event shapes to the left of the gateway.  Let&#8217;s start by looking at the basic pattern and then discuss some of the potential business scenarios where you could use this notation.</p>
<p><span id="more-201"></span></p>
<div id="attachment_229" class="wp-caption aligncenter" style="width: 509px"><a href="http://www.rickgeneva.com/wp/wp-content/uploads/2009/09/ebg-pattern1.png"><img class="size-full wp-image-229" title="Event Based Exclusive Gateway Basic Pattern" src="http://www.rickgeneva.com/wp/wp-content/uploads/2009/09/ebg-pattern1.png" alt="The basic pattern that applies to the event based exclusive gateway" width="499" height="183" /></a><p class="wp-caption-text">The basic pattern that applies to the event based exclusive gateway</p></div>
<p>The main purpose of the event gateway is to illustrate that you must choose between one, and only one event attached to the right.  Any other event would not correlate to the same process instance.  For example, I send a message to a coworker, and he replies either by email or by phone.  The message type is different for the reply, and requires a different action for me to process it.  I don&#8217;t know in advance which message I&#8217;m going to receive. Therefore it is an event that I must react to and process accordingly.</p>
<p>The exclusive behavior of the event based gateway is due to the fact that only one path can be chosen.  This is similar to the exclusive data based gateway, except that event-based means that we are reacting to events instead of data conditions.  With data-based gateways, I already have the condition, and I must evaluate it at the relative point in time that it appears in the diagram.   The event based behavior is expressing that we don&#8217;t yet have the condition at the specific point in time, and we must wait for an event to make the choice of which path should proceed.</p>
<p>There is a unique capability for this gateway to be used at the beginning of a process.  It actually takes the place of the start event in this case.  Often I encounter diagrams where there is additionally a start event to the immediate left of the event based gateway.  This might actually be incorrect, depending on what you are trying to express.  The literal interpretation when you use the event based gateway as a start event reads like this:  My process starts when I receive one of the following events.  The BPMN specification is very specific about using only intermediate events to the right of the event driven gateway. But if it makes more sense to you, think of the intermediate events acting as start events, with the gateway acting as the place where the choice of event is made.</p>
<div id="attachment_230" class="wp-caption aligncenter" style="width: 269px"><a href="http://www.rickgeneva.com/wp/wp-content/uploads/2009/09/ebg-start.png"><img class="size-full wp-image-230" title="Event Based Gateway as a Start Event" src="http://www.rickgeneva.com/wp/wp-content/uploads/2009/09/ebg-start.png" alt="The event based gateway acting as a start event expresses that multiple events can start a process." width="259" height="183" /></a><p class="wp-caption-text">The event based gateway acting as a start event expresses that multiple events can start a process.</p></div>
<p>When used in place of a start event, the event driven gateway is expressing that there are many events that can cause the process to begin.  When used as an intermediate gateway, it expresses that the process is in a wait-state, and will proceed only after one of multiple events have occurred.</p>
<p>In either case of starting a process or continuing a process, the event based gateway merges with the exclusive data-based gateway.  This might sound strange, but merging on gateways is found in a diagram when we want to express that a synchronizing flow exists.  It&#8217;s similar to a traffic symbol.  Exclusive merge means that only one path will ever be permitted through this point in the diagram.  In contrast, parallel merge indicates that all paths are required in order to move forward, and will create a wait-state until all paths have reached the point of the gateway.</p>
<div id="attachment_227" class="wp-caption aligncenter" style="width: 557px"><a href="http://www.rickgeneva.com/wp/wp-content/uploads/2009/09/ebg-merging1.png"><img class="size-full wp-image-227" title="Merging Events" src="http://www.rickgeneva.com/wp/wp-content/uploads/2009/09/ebg-merging1.png" alt="Using the exclusive data-based gateway for merging" width="547" height="183" /></a><p class="wp-caption-text">Using the exclusive data-based gateway for merging</p></div>
<p>Because per BPMN specification, the event based gateway is only permitted to have events to the right, we cannot use it for merging.  But since we only need to express the merging behavior, the data-based exclusive gateway is a suitable substitute.   Often a process modeler will omit the merging gateway.  I am a proponent of always using a gateway for merging because it shows an explicit behavior, rather than leaving the diagram open to interpretation errors.  For example, if I write a quote and don&#8217;t use the close quote symbol, doesn&#8217;t this leave you hanging a bit?   So it&#8217;s better style to always use a merging gateway.</p>
<p>A best practice of using event based gateways is to use multiple event types whenever practical. If you have investigated the merging behavior of gateways, you might already know that it is possible to cause a deadlock or a replicated instance with improper usage of gateways.</p>
<h3>Expecting the Unexpected Condition</h3>
<p>A replication of sequence flow occurs when a parallel split occurs and there is no checkpoint or gateway to ensure that synchronization or merge of the parallel paths occur.  For example, I split with a parallel gateway and I forget to merge with it.  Somewhere downstream I could potentially end up with replication of effort on the same process instance.  Suppose I send a new hire document to IT, human resources, and accounting departments in parallel.  After these departments are complete with the document it is passed to another department who does a background check.  The background check is expensive, and it is outsourced to an external agency.  The external agency will not check to see if the same person is being processed more than once. There must be a point in the process that prevents the background check from occurring three times on the same person.  Potentially every subsequent step downstream in the process might also occur three times until someone finally realizes the error and merges the files.  Before the error is caught, duplication or triplication of effort occurs.  This would be expensive and wasteful.</p>
<div id="attachment_234" class="wp-caption aligncenter" style="width: 710px"><a href="http://www.rickgeneva.com/wp/wp-content/uploads/2009/09/parallel-nomerge.png"><img class="size-full wp-image-234" title="Parallel Sequence Replication" src="http://www.rickgeneva.com/wp/wp-content/uploads/2009/09/parallel-nomerge.png" alt="Without merging, a potential for replicating the downstream activities exists" width="700" height="372" /></a><p class="wp-caption-text">Without merging, a potential for replicating the downstream activities exists</p></div>
<p>Likewise with exclusive behavior it&#8217;s possible have sequencing and synchronization errors without properly handling the merging behavior.  A deadlock condition occurs when a splitting gateway doesn&#8217;t match up with a corresponding merging gateway.  Sometimes this can accidentally occur implicitly whenever the merging gateway is omitted from the diagram.  For example, I send a document to one of three departments.  A fourth department is expecting to receive documents from all three proceeding steps in parallel, but it only ever receives one.  This can be a deadlock situation, meaning because of a merging flow error, the process will never proceed past the checkpoint.</p>
<div id="attachment_233" class="wp-caption aligncenter" style="width: 610px"><a href="http://www.rickgeneva.com/wp/wp-content/uploads/2009/09/gateway-deadlock.png"><img class="size-full wp-image-233" title="Parallel to Exclusive Deadlock" src="http://www.rickgeneva.com/wp/wp-content/uploads/2009/09/gateway-deadlock.png" alt="Improper usage of gateways can lead to process deadlock" width="600" height="195" /></a><p class="wp-caption-text">Improper usage of gateways can lead to process deadlock</p></div>
<p>Deadlocks can occur in event based gateways as well.  But in this case, it&#8217;s not because of using the improper merging shape, or from omitting the merging behavior.  The deadlock is event based.  Event based deadlocks occur when the primary means receiving the expected events has failed.  For example, I send an email to my friend to have lunch with me.  He might reply via email or via calling my mobile phone.  But I don&#8217;t receive a reply so I go ahead and wait at the restaurant anyway.  I assume he must have received the message, because email is so reliable, right?   Meanwhile I&#8217;m waiting at the restaurant for him.  I wait all day.  I wait all week.  Eventually, after about three months, the manager at the restaurant feels inclined to call the police to physically remove me from the restaurant.  My friend actually did receive the message and left a note on my desk that he could not join me.  Because the event (note on my desk) was outside of my processing capacity, I wasted three weeks of my life waiting.  This was a  terribly inefficient process, and could have benefitted from planning for the events based deadlock.</p>
<p>Obviously this is a fictional story.  As human beings we have enough common sense to avoid this situation. But the elaborate computer systems we build don&#8217;t have this kind of common sense.  A stuck automated process will wait forever until an administrator comes along and terminates the process or reboots the computer.   Meanwhile, money was spent, customers were lost, paperwork piles up on someone&#8217;s desk.  Eventually someone will realize the problem, but not until after the customer gets angry.  Or maybe the error is realized after the board of directors becomes angry because your company keeps losing money.</p>
<p>The deadlock of events is usually caused by the assumption that things will always go as planned.  The reality is that in business things go as planned only about 35% of the time.  The other 65% is either the more expensive way to make money, or the ways that money is lost in a business transaction.</p>
<p>In the scenario of me waiting for my friend at the restaurant, my common sense tells me that I should only wait about an hour before I make the decision that he is not coming to meet me.  For other friends this might be two hours because they might be an hour late on a regular basis. But the point is, I would not wait indefinitely.  So the addition of an intermediate timer event to my process flow can save the day when I have an event based deadlock.</p>
<p>If you wish to be even more careful about event based deadlocks, try to consider more reasons why the process could fail.  For example, as I&#8217;m waiting for my friend I hear the tsunami warning siren.  The restaurant is by the beach, so I don&#8217;t think my friend will meet me.  In fact, its time I consider evacuating to higher ground.  In this case I would add a signal event to my process that listens to all &#8220;broadcasts&#8221; that might be interesting to me.</p>
<div id="attachment_226" class="wp-caption aligncenter" style="width: 896px"><a href="http://www.rickgeneva.com/wp/wp-content/uploads/2009/09/ebg-full-example.png"><img class="size-full wp-image-226 " title="Full Example" src="http://www.rickgeneva.com/wp/wp-content/uploads/2009/09/ebg-full-example.png" alt="Full example of the event based gateway in action, using multiple events to avoid process deadlock." width="886" height="441" /></a><p class="wp-caption-text">Full example of the event based gateway in action, using multiple events to avoid process deadlock.</p></div>
<h3>A more realistic example</h3>
<p>Now let&#8217;s apply the same pattern to a common business problem. Suppose that I send an order to my supplier.  Do I wait indefinitely, assuming the supplier received the message?  After all, they have been fairly reliable in the past, right?  So what happens when I don&#8217;t receive the order?  Should I continue waiting months later when I have no products to sell because I have no supplies to make anything?   Maybe you assumed that someone else would realize this problem and call the manufacturer.  But when will they make the call?  Most likely it will be after supplies are low and we are at risk of shutting down manufacturing.  In other words, it might be too late before we spot the problem.  So instead, we model our process to include for provisions such as a timer that monitors when the product is received.  Also we allow for the vendor to report an error in processing the order, which should prompt someone in my organization to reorder.  And while we are at it, why not ask the supplier to broadcast system outage messages so that we know when to resubmit orders that might have been lost in transmission.</p>
<div id="attachment_228" class="wp-caption aligncenter" style="width: 510px"><a href="http://www.rickgeneva.com/wp/wp-content/uploads/2009/09/ebg-multiple-events.png"><img class="size-full wp-image-228" title="Multiple Event Types on One Gateway" src="http://www.rickgeneva.com/wp/wp-content/uploads/2009/09/ebg-multiple-events.png" alt="Ordering supplies with an error handling event and a timeout event" width="500" height="258" /></a><p class="wp-caption-text">Ordering supplies with an error handling event and a timeout event</p></div>
<p>Hopefully this clarifies the usage of the event-based exclusive gateway.  I hope you can now see that although the event based gateway uses a pattern difficult to understand, it&#8217;s well worth while learning. It&#8217;s one of the most powerful shapes in BPMN.  Processes are not linear and don&#8217;t always function like clockwork.  Modeling in the flowchart style with swimlanes and everything being perfectly sequential doesn&#8217;t depict the true nature of business processes.  In the real world, processes are event based, and 65% of the time things don&#8217;t follow the optimal plan.   By using an event based process model you are more likely to uncover the subtle details and pockets of inefficiency.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.rickgeneva.com/wp/posts/demystifying-the-event-driven-gateway/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The next trend</title>
		<link>http://www.rickgeneva.com/wp/posts/the-next-trend/</link>
		<comments>http://www.rickgeneva.com/wp/posts/the-next-trend/#comments</comments>
		<pubDate>Mon, 14 Sep 2009 05:28:11 +0000</pubDate>
		<dc:creator>Rick Geneva</dc:creator>
				<category><![CDATA[Process Modeling]]></category>
		<category><![CDATA[SOA]]></category>
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.rickgeneva.com/wp/?p=214</guid>
		<description><![CDATA[In the IT world, trends come and go.  The next &#8220;must have&#8221; or &#8220;must do&#8221; today is a dust collector tomorrow.   Recently I had a conversation with a colleague about BPM, and whether or not it will continue to be a growing trend, or are its days numbered?   He said [...]]]></description>
			<content:encoded><![CDATA[<p>In the IT world, trends come and go.  The next &#8220;must have&#8221; or &#8220;must do&#8221; today is a dust collector tomorrow.   Recently I had a conversation with a colleague about BPM, and whether or not it will continue to be a growing trend, or are its days numbered?   He said to me &#8220;are you still doing that process stuff?  BPM is old news.&#8221;  My reply to this was simple.  While trends of automating processes come and go, process management has been around since before the computer.  The computer enables people to be more efficient in many ways.  But the software you use today is constantly being replaced by latest, greatest trend.   BPM is not software.  It&#8217;s not something you buy.  It&#8217;s something you do. There are many systems on the market based on older technologies that make them go out of favor as new systems emerge.  But to say that BPM is ancient history would be like saying that business its self is ancient history as well.</p>
<p><span id="more-214"></span></p>
<h2>Application or Process?</h2>
<p>A business process exists whether or not you automate it through a BPM system or a workflow tool.  Many organizations choose not to use a formal BPM approach to process.  Instead they use the traditional vertical market application that helps automate some of the process based on rules and logic provided by the software vendor.  Some degree of process management exists with this approach.  However the logic (the business know-how) is essentially outsourced to the software vendor.  Often this requires the organization to undergo a massive customization effort in order to make the vertical market solution fully effective in the organization.  </p>
<p>The application acts as a participant to the process.  Without there being a business process there would be no need for the application.  So you could say that what you use the application for is the process, and the application is the tool that helps you be more efficient at doing your part of the process. </p>
<h2>Why BPM is a constant</h2>
<p>Everything about business involves a process.  Presenting a product to a customer, ordering supplies, and collecting money are all examples of processes.  In a more simple term you could all each of these activities a workflow.  The real benefit of BPM comes into play when you start to analyze the complex interaction between many of these individual workflows.  Most likely the simple workflow evolves to include computer systems, probably just simple applications at first, gradually becoming more complex.  These systems become participants of the process as well.  Eventually the computer systems become an integral part of the process, often automating parts of the original process as well as enabling more efficiency as more people and systems are involved.</p>
<p>Let&#8217;s not forget that BPM is a management technique more than it is about technology.  With BPM we are not talking about managing specifically people, systems, vendors, customers, or money.  Instead we are talking about managing people, systems, vendors, customers, <strong><em><span style="text-decoration: underline;">and</span></em></strong> money, as well as the complex interactions between them.  The more complexity exists in a process the more efficient your organization becomes with proper business process management methodology and technique.</p>
<h2>The next trend in IT</h2>
<p>Enough about defending the need for BPM.  Here&#8217;s what I see as the next emerging trend in information technology: Could Computing. </p>
<p>So what does cloud computing have to do with BPM?  A lot, actually.  Earlier in this post I contrasted the difference between applications and process.  But we are now at a point in history where this line becomes even more blurred.</p>
<p>At the core of cloud computing is hardware; a lot of it. But instead of 4 or 5 servers to run one application we start to see a trend where 10 servers run 40 or 50 applications.  The hardware virtualization means that CPUs, memory, and storage capacity is combined over multiple systems.  The old days of redundant systems for maximum fault tolerance are coming to an end because the basic architecture of a cloud system is 3 and 4 times redundant in every way.  In fact I&#8217;ve seen demonstrations where the plug is literally pulled out of the wall and the system keeps running.  This is because there are dozens of power supplies with dozens of plugs, and often multiple complete systems in different data centers, all acting as one gigantic supercomputer. </p>
<p>The could computing design is more reliable, and it&#8217;s cheaper to operate.  Moore&#8217;s law states that computer power doubles about every two years.  The problem in data centers is that in most cases 95% of the CPU power is wasted sitting idle because it&#8217;s only utilized when someone is using that specific system.  When people happen to be using another system, the CPU simply burns up kilowatts of power from the electric company as it remains idle, waiting to process the next request from a user; as quickly as possible.   But with cloud computing, a cluster of computers are all operating as one.  A peak load on one application can easily be absorbed across the entire system while the less frequently used applications.</p>
<p>The idea of cloud computing is undoubtedly inspired by the way the Internet works.  At any specific point on the backbone of the Internet, if a failure occurs, there might be a localized disruption. But nobody has ever heard of the entire Internet going offline.  It&#8217;s designed to be fault tolerant to a point where even nuclear war won&#8217;t take it offline.</p>
<p>Now back to my point about where BPM is involved in all of this.  Prior to the cloud computing trend, systems were isolated in various localized data centers with virtually no way to communicate with each other besides for the system interfaces (API) that were designed to perform a specific function.  Cloud computing brings systems previously separated by physical hardware together on one hardware platform.   When you add service oriented architecture (SOA) to this combination, there starts to be less objections to using web services.  Many software engineers and architects believe that a native interface (such as Java to Java or .NET to .NET) is better than web services for performance reasons.  But in a Cloud environment when an application needs to talk to another system, often the other system is in the same virtual memory space on the same hardware cluster.   </p>
<p>No longer do we have to worry about databases exceeding 50 terabytes. The cloud system can handle exabytes or even petabytes without even a flinch.  So the notion of storing data once in a &#8220;normalized&#8221; database becomes too much effort to make it worth the effort of doing proper data modeling.  Store it 1000&#8217;s of times in 100&#8217;s of formats to service dozens of applications because you can transform the data just as fast as you can store it.</p>
<p>Again, BPM is about management.  If I can connect everything, nobody objects to connecting, and I have a virtually unlimited amount of computing power, imagine the complexity we can create!    So what are you going to do with it?  Burn up megawatts of power instead of the kilowatts of previous generations?  Instead, how about getting smart about what you do with your computing power.  All of the computing power in the world will not do anything for your organization if you don&#8217;t manage the processes that you are attempting to automate. </p>
<p>The trend as I see it will be for applications to be more process aware, and BPM systems to become more like applications.  Many early attempts at BPM systems were nothing more than task state management for workflows.  System to system integration was added, but this is still very task centric.</p>
<p>There are several categories of applications.  Some examples include:</p>
<ul>
<li>Tools such as a calculator, disk defragmenter, backup utility, etc.</li>
<li>Data origination tools such as a word processor, spreadsheet</li>
<li>Information sharing tools such as email, screen sharing, etc.</li>
<li>Collaboration tools such as groupware, and BPM automation systems.</li>
</ul>
<p>The problem is that we still need one application for one job, and another application to do something else.  For example, my word processor program is good for writing documents but doesn&#8217;t do so well at adding 2 + 2.  My spreadsheet crunches numbers well but doesn&#8217;t manage people well (although some people insist that a spreadsheet is actually a database).</p>
<h2>History hints at what&#8217;s next</h2>
<p>If there is anything that history tells us about technology, it&#8217;s that consolidation of multiple systems is inevitable.  Back in the 1970&#8217;s a CB radio or walkie talkie was all the rage in business communications.  Then someone got the idea to combine a radio with a telephone and the cellular telephone was born.  While we are at it, why not put a camera on it.  Personally I couldn&#8217;t figure out this marriage of technologies  out when it first emerged, but now I find myself sending pictures of my daughter to my friends and family on a regular basis.   Oh, and while we are at it, why not hook the phone to the internet.  For that matter, why not hook your refrigerator and toaster oven to the internet too?   That way you can call up your appliances and tell them and make you breakfast before you get out of bed.     Or better yet, as I sit here stretched out in business class on my favorite airline, I&#8217;m writing a blog post while connected to the Internet, powered by cellular phone technology.</p>
<p>In the above example there are a few major enablers of the merging technology.  First there is a reliable cellular telephone network that is available virtually anywhere on earth people are found in mass.  Next there is the Internet; always on; always ready to serve.   This is the infrastructure.  The telephone and the camera are the tools.  The collaboration is when I hit the send button from 30,000 feet (9500 meters) above sea level, telling my wife how wonderful the remote control for the powered lay-flat seats are on this airliner, and she replies saying &#8220;that&#8217;s nice honey, enjoy. I have to put the little one to bed&#8221;.   I&#8217;m constantly in touch with the world, powered by so much complexity that I never have to know about, or even know that the complexity exists.  </p>
<p>The cloud , simply put, creates an enabling infrastructure that I never have to worry about.  It&#8217;s there, it&#8217;s always on, and it would take a full-blown nuclear war or an asteroid hitting the earth to take it offline (in which case we&#8217;d all be dead anyway, so why worry about it).  Data exists somewhere, but I no longer care where it is.   Someone just added 5 more terabytes of RAM to the cloud and I didn&#8217;t even know it (yes, I said terabytes of RAM, not hard drives).  My software got updated with a click of the button, and if I don&#8217;t like it I can click a button to switch back to the previous version without the tedious process of uninstall, reinstall.</p>
<p>So I&#8217;m on the internet writing on my blog page (the cloud enabled application) writing about the cloud, while I&#8217;m looking down at the clouds.   Sorry to mention it, but I couldn&#8217;t resist pointing out the irony.</p>
<h2>The green screen effect</h2>
<p>It&#8217;s been said many times that we are coming full circle back to the days of the green screen.  Ironically &#8216;green&#8217; means something else today, which is causing the push to go back to the concept of the terminal attached to the mainframe.  For those of you reading this who are too young to remember, the terminal was a green CRT screen.  Remember the CRT?  You know, that huge clunky tube screen.   Before they CRTs were colored they displayed characters either green or yellow.  Green today means using less power and being friendly to the environment.  One of the most compelling arguments for moving to cloud computing is because it&#8217;s more environmentally friendly as well as easier to manage.   It also means distributing computing power everywhere like a grid, and hosting applications online instead of installing them on your local machine. </p>
<p>Recently Google announced that they are releasing an operating system that is not much more than a window to the Internet.  Anyone see where this is going yet?   If you think about my example of how the cell phone enabled me to make toast in the morning without getting out of bed, what happens when the Internet meets cloud computing and both applications and processes are so intertwined that you can&#8217;t tell where one stops and the other begins?   Applications?  Process?  Don&#8217;t know, don&#8217;t care.  I have work to do so stop bothering me with such trivial things.   </p>
<p>I don&#8217;t have to install applications anymore.  I simply have to cache the data locally incase by odd occurrence that I cannot connect to the Internet.   Even the green screen terminals of the 1960&#8217;s had this concept.  They &#8220;buffered&#8221; the data in an 8 kilobyte local microchip in case the connection to the mainframe was severed momentarily.  Well, the numbers certainly got bigger, but the concept is coming full circle.  Want a word processor or spreadsheet?  Try Google Docs.  Want an image editor?  Yep, you can do this online too.   Why keep it local?  Local storage is a single point of failure that packrats like me who never delete anything cannot afford to risk.    Even this blog post is auto-saved out to the cloud somewhere and I don&#8217;t have to worry losing anything even if this plane I&#8217;m sitting on crashes.   Google&#8217;s applications automatically store a temporary copy locally until the data is sent to the cloud for permanent storage.  I bet some of you didn&#8217;t even know it works this way.  That&#8217;s the point.  It&#8217;s fault tolerant, it&#8217;s green, it&#8217;s empowering, and it&#8217;s transparent.  At least to me, this sounds like a trend that is here to stay.</p>
<p>Person, system, or process?  They are all process, out in the cloud.  It won&#8217;t be long and I&#8217;ll be having a conversation with your virtual presence or avatar while you are out of the office.   I&#8217;m hoping people will finally realize that sending spreadsheets over email is not process management &#8211; it&#8217;s completely wasteful.  While we are at it, let&#8217;s get rid of email too and think of something more efficient because I&#8217;m tired of sifting through 200+ emails per day trying to follow a conversation.  And this way I can ensure I never get another spreadsheet emailed to me. Please link it, don&#8217;t send it. This way I can actually find the correct version when I need it instead of sifting through 5 or 6 outdated versions.</p>
<h2>Getting to the point</h2>
<p>In case you don&#8217;t see where I&#8217;m going at this point with this post, let me spell it out very clear and concise.   Show people they can things done without worrying about the technology that powers it and you will start to see things getting done.  Take the complexity away from the worker and give them what they need, when they need it.  Make it convenient and available wherever, whenever.   Don&#8217;t bog them down with the complexity of technology. Likewise, don&#8217;t bog down the workforce of your organization with the complexity of business processes.  They don&#8217;t need to know how it works, just that it does.  Make it simple, seamless, and bullet-proof reliable.  Don&#8217;t make them worry about whether or not the data is accurate and up to date.</p>
<p>So the trend I see for the future of BPM is that a new wave of process management will emerge that is not bogged down by legacy fears and horror stories of integration challenges.    Applications that you install so support the business process will become merely windows to the data produced by the instances of processes. Synchronizing data to the local machine in a &#8220;buffer&#8221; will become a standard feature for all BPM systems, and local data storage will likely become the backup copy rather than permanent storage.  The permanent storage is somewhere on the cloud but it will be nearly impossible to determine the precise physical location where it exists.   In many ways, the technology world as we&#8217;ve known it for the past decade is taking a full reversal and going back to the concepts of the 1960&#8217;s.   But Moore&#8217;s law of computing power will actually accelerate.  And along with this, I believe BPM will become hundreds of times more effective when practiced religiously throughout the organization.  Before this can happen I think that BPMN will have to evolve to deal with more complex event processing needs because the complexity will certainly be there, even if most of us no longer have to know the complexity exists.</p>
<p>You might have noticed that I haven&#8217;t written any posts in a while.  The reason is because I had an epiphany.  A light bulb turned on in my head (and yes, it was a compact florescent, because I&#8217;m on the green trend too).  It was such an crazy thought that I started to wonder if my passion for BPM is going somewhere.  Then just at my most critical moment, a dear friend asks me if I&#8217;m still doing &#8220;that process stuff&#8221;.    I stand by my words.  Yes, I do BPM.  And I do it because there is more of a need for it now in the cloud computing age than ever before.   Those of us who specialize in process management need to realize that we have invented a profession.  We are not IT specialists, business analysts, efficiency experts, or project managers.  We are a bit of all of these things in one.  This is how I got the job title Process Expert, and I&#8217;m looking forward to a time in the not-so-distant future that this will be a job title I can find on the job search sites on a regular basis.</p>
<p>I see that this post is getting rather long so it&#8217;s time to wrap it up and open it for discussion.  I&#8217;m looking forward to getting comments from my readers so that I can write more on this topic.  But for now It&#8217;s time for me to do a video conference with my 11 month old child from 37,000 feet up in the air (camera + laptop + internet + airborne internet was a wonderful marriage of gadgets).  I wonder what she&#8217;ll be doing when she&#8217;s my age?   One thing is for sure, she&#8217;ll be online.  Someone will probably have found a way to remove the thunderous background jet noise from the airborne video call.  But I doubt by that time the FAA (Federal Aviation Administration for those of you outside the USA) will allow her to stay online during takeoff and landing.   Until then, there is a lesson to be learned.  Never forget to model the exceptional conditions into your processes, no matter how reliable the underlying technology becomes.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.rickgeneva.com/wp/posts/the-next-trend/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>BPMN Patterns and PMF in Singapore &#8211; Oct 14-15 2009</title>
		<link>http://www.rickgeneva.com/wp/posts/bpmn-patterns-and-pmf-in-singapore-oct-14-15-2009/</link>
		<comments>http://www.rickgeneva.com/wp/posts/bpmn-patterns-and-pmf-in-singapore-oct-14-15-2009/#comments</comments>
		<pubDate>Fri, 04 Sep 2009 21:32:56 +0000</pubDate>
		<dc:creator>Rick Geneva</dc:creator>
				<category><![CDATA[Process Modeling]]></category>

		<guid isPermaLink="false">http://www.rickgeneva.com/wp/?p=203</guid>
		<description><![CDATA[I will be doing an advanced process modeling training in Singapore on October 14th and 15th, 2009.  This is a public class through my employer, Intalio.  However, the content of this class is not specific to Intalio.  In fact, it&#8217;s applicable to any form of process modeling even if you have no [...]]]></description>
			<content:encoded><![CDATA[<p>I will be doing an advanced process modeling training in Singapore on October 14th and 15th, 2009.  This is a public class through my employer, Intalio.  However, the content of this class is not specific to Intalio.  In fact, it&#8217;s applicable to any form of process modeling even if you have no intention of creating executable process models.   The course will contain in-depth coverage of my upcoming book content including process patterns and the Process Modeling Framework (PMF).</p>
<p>I&#8217;m using this class as a test run of the book content.   Also there will be some hands-on exercises and real-world use cases to analyze.  So if you happen to in the area during October, I&#8217;d love to have you in my class.</p>
<p><span id="more-203"></span></p>
<p>I just booked my trip to Singapore.  What a trip this will be.  I&#8217;ve been to Australia but this one is a much longer flying time.  I will be in the air for 14 1/2 hours from Atlanta, GA USA to Tokyo.  Then there&#8217;s another 7 1/2 hours to Singapore.  Total flying time is 22 hours.   I think the hardest part will be spending more than 24 hours in daylight.  This will definitely throw off my sleep schedule. I suppose I&#8217;m whining because many of you hardcore travelers out there have probably done much worse than this.  Besides the flight, I&#8217;m really looking forward to this trip.  I always enjoy seeing other parts of the world on somebody else&#8217;s bill.</p>
<p>Many thanks to my colleague Arnaud Blandin in Singapore  for organizing this event.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.rickgeneva.com/wp/posts/bpmn-patterns-and-pmf-in-singapore-oct-14-15-2009/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Most Common Questions on Implementing BPM + SOA</title>
		<link>http://www.rickgeneva.com/wp/posts/most-common-questions-on-implementing-bpm-soa/</link>
		<comments>http://www.rickgeneva.com/wp/posts/most-common-questions-on-implementing-bpm-soa/#comments</comments>
		<pubDate>Thu, 30 Apr 2009 04:43:22 +0000</pubDate>
		<dc:creator>Rick Geneva</dc:creator>
				<category><![CDATA[Process Modeling]]></category>
		<category><![CDATA[SOA]]></category>
		<category><![CDATA[BPM]]></category>

		<guid isPermaLink="false">http://www.rickgeneva.com/wp/?p=165</guid>
		<description><![CDATA[Recently I have been doing a series of presentations on SOA and BPM with a combined governance strategy and framework.  It seems that BPM and SOA are a hot topic these days, but there doesn&#8217;t seem to be much knowledge on how to effectively combine both practices into a unified effort where both IT [...]]]></description>
			<content:encoded><![CDATA[<p>Recently I have been doing a series of presentations on SOA and BPM with a combined governance strategy and framework.  It seems that BPM and SOA are a hot topic these days, but there doesn&#8217;t seem to be much knowledge on how to effectively combine both practices into a unified effort where both IT and business collaborate towards the same goals.   This is the problem that BPM tried to solve back in 2002 but was not widely adopted because of the lack of IT backing of the tools.   Now that SOA is becoming common practice it&#8217;s time for a second look at what BPM can really do for an organization.</p>
<p><span id="more-165"></span>Included in this tour: Atlanta, Chicago, Vancouver, and then wrapping it up in San Francisco.    The audience was fairly broad, including project managers, IT engineers/architects, business analysts, and even a few executives.    There are several things I found in common from the questions at each of these sessions.</p>
<h4>1. The IT trends are always changing, so why should I start now with BPM and SOA?</h4>
<p>That&#8217;s a great point.  Interestingly I get this question <em>every </em>time I present this topic.  Yes, technology trends are always changing. But this is something different.  Previously the right elements were not all in place to fully take advantage of the BPM paradigm.   Today many BPM software vendors are creating SOA based products, and SOA software vendors are creating &#8220;orchestration&#8221; products which are very similar to BPM concepts.  Basically out-of-the-box you get a whole lot of BPM and SOA from one product.  Previously (2002 &#8211; 2005) this would have required several layers of middleware and custom connectors to achieve.  So the best way to say this is that now BPM and SOA are consumable by an organization.   It&#8217;s not quite to the point yet where the systems are such a commodity that it&#8217;s like a word processor.  But even the common word processor is starting to have some collaboration capability built in.  So where do you think this is going?   In my opinion I think we are past the point of experimenting with BPM and SOA.  It&#8217;s now become common practice in many organizations and has enough financial backing due to the customer demand that it&#8217;s here to stay.</p>
<p>While in my Vancouver session one of my attendees asked this same question in a way that I found interesting.  Their organization had worked with various case tools and workflow automation tools over the years and they said that they have seen many &#8220;code generation&#8221; tools that have made the same claims as BPM promises to deliver but they never did.   So it seems that the motivation for the skepticism is based on slick sales people offering that classic &#8220;80% out of the box solution&#8221; that you can &#8220;fire your IT people and do it yourself&#8221;.   Well, you&#8217;ll never hear me telling you to fire your IT people.  You might need to educate them on process modeling, but you still need them to create good SOA components for you.</p>
<p>The BPM vendors of the early decade (2002 &#8211; 2005) are partially the cause of the skepticism of the BPM potential.  It used to be a hot buzzword back in 2003 but it went away for a while before coming back strong in 2008.  Often a vendor would try to sell BPM to an organization.  Who would have known that you have to actually <em>do</em> BPM, and you can&#8217;t actually buy it?  Well, times have changed and it&#8217;s time to take a second look at what&#8217;s available.</p>
<p>Another reason why I see it&#8217;s time to get into BPM and SOA is that organizations tend to look at ways of being more efficient in times where cash is tight.  In times of plenty, we just hire more warm bodies to throw at a problem.  Later we can just fire them, right?   Or on the other hand, we can learn to manage our processes and systems in a more efficient way so that we don&#8217;t have the huge downfall after times of rapid growth.   After a period of recession there will be a period of growth.   After you&#8217;ve already grown out of control it&#8217;s hard to get a handle on the problem.   So maybe you can  get started now before you miss this window of opportunity.</p>
<h4>2. What are the most common problems I see in implementing BPM?</h4>
<p>This one is easy.  There is not a lot of BPMN process modeling skills in most organizations.  The people that I find who know how to model a process well are usually consultants such as myself.    A basic BPMN training course is a good start.  But after the basics of BPMN are learned additional coaching/consulting is likely needed to do a full scale project.   Process modeling for the purposes of automation/execution is much different then modeling the &#8216;as-is&#8217; process.  Different patterns are used, and sometimes these patterns are vendor specific for the BPM automation system.  So it&#8217;s one thing to model your &#8216;as-is&#8217; process.  Learning how to make it actually work is another skill that you must learn by practice.</p>
<p>So the short answer to the question of what are implementation challenges is that there is no widely practiced methodology that works well with both SOA and BPM.  Waterfall?  Forget it.  Scrum, Agile?  Sort of, but not quite.  Test driven?  Mmm.. partially.    PMF includes the best of all the above, and is totally oriented towards the business objectives and process flow.   On one hand you have methodologies that are totally focused on data models and on the other you have high-level flowcharts.  In the middle there is really nothing to bridge the gap.</p>
<p>For this reason I have created the Process Modeling Framework (PMF).  PMF was briefly introduced in my book The Microguide to Process Modeling in BPMN but we did it no justice.  The book&#8217;s title says &#8220;microguide&#8221; so please don&#8217;t&#8217; be disappointed if the concept is a bit thin in this book.   The intention of the book is to give you a quick start on a consumable, non-technical format.   But for those of you who want to learn more I&#8217;m in the process of writing the next book that will cover PMF in great detail.</p>
<h4>3. What are the most common challenges I see in implementing SOA?</h4>
<p>Most of the time I see engineers creating data models as the first step to a system design.  This I see as the greatest roadblock.   What you have to understand is that data would not exist if there was no process first.   What is the point of having data?   Do you just create data as the objective of the process?  Or is there a reason for doing so?   In other words, stop modeling data and start modeling processes.   The process will dictate what the data requirements are, and not the other way around.</p>
<p>I realize this is nearly treason for some of you on the SOA side of the fence.   To the more technically minded the data is everything.  And I totally agree with you that data is important.  But let&#8217;s not get into a &#8220;chicken or the egg&#8221; debate.  I you already have data, manage it, but in a way that supports the business objective.  Don&#8217;t start going out of your way to create an SOA infrastructure when you don&#8217;t even have a solid process model to back your assumptions.  Otherwise you might end up making the situation worse by creating an architecture that restricts the organization&#8217;s capability to grow.</p>
<h4>4. How do I handle developing many services and many subprocesses in parallel?</h4>
<p>For the most part you need to limit the scope of diagrams to a single business objective.  Stop creating flow charts that wrap around the room.  Stop modeling everything in terms of swimlanes.  There is more going on here than one person passing a task to another person.   Any process in a large organization likely interescts with other processes.  So maybe what you should be drawing is how the processes interect with each other, and not how people interact.  People are part of the organization, and the organization is made up of processes.   This all relevant when determining what is the scope of a diagram.  Once you start mixing objectives from processes that overlap/intersect/conflict with each other, then there is no way you can have multiple people work on it.  It&#8217;s like saying that you are going to take 10 race car drivers, give one the steeing wheel, another to the brakes, another to the acellerator, etc.  It&#8217;s just not going to work this way.  Every driver needs to have their own car.    So stop trying to model everything as if there is only one car with many lanes (swimlanes).  Instead there are many cars, with many lanes, and not all of them flow in the same direction.</p>
<h4>5. How much of the BPM/SOA methodology should I teach to the business stakeholders?</h4>
<p>At first, as little as possible while still allowing yourself to do your work.  Only explain as much as what is necessary to get the information you need from the stakeholders.  Otherwise you&#8217;ll get into nearly religious debates about methodologies that evolved from the 1970&#8217;s.  Gradually as you show results, the organization will adopt BPM/SOA because of the obvious gains in productivity, visibility accountability, and agility.   So instead of upsetting the entire organization overnight, start slowly and show results, not radical concepts.  Results in process modeling come from showing how to improve the organization.  Results in SOA come from showing how quickly you can create a composite system from several existing components.</p>
<p>Today we have accelerated expectations yet we still use methodologies based on a time when computers were the size of refrigerators and access to a computer was only for those lucky enough to have one in their office.   Yes, you are trying to overcome this problem.  But you are fighting an uphill battle with &#8220;traditional wisdom&#8221;.   Traditional wisdom doesn&#8217;t have a 3 GHz quad core CPU with 8 GB of RAM, connected to the internet at 10 gigabits per second.   But I do, and you probably do too.   Computers are just as much a part of the organization as its people are.   90% of corporate computer systems  are sitting idle 90% of the time because we still haven&#8217;t figured out to efficiently use them yet as part of our business process.   We&#8217;ve got way more computing power than we know what to do with, yet we still pass around pieces of paper or spreadsheets over email.</p>
<p>Let me ask you this:  When is the last time you emailed a spreadsheet to a group of people and collected responses?  Sorry, but this is not a process.  It&#8217;s chaos in the making.  Yet a majority of the organizations I work with use this technique of information mis-management as common practice.   They know there is a better way, but at the same time they resist changing.   After all, if it isn&#8217;t broke, why try to fix it, right?   I&#8217;ve got a reason of you.   It&#8217;s called financial meltdown &#8211; just  incase you haven&#8217;t been watching the news lately.</p>
<p>The older methodologies never took this phenomenon of high speed computing into consideration because it didn&#8217;t exist yet.   The world has changed dramatically in the past decade.  Now I can connect to people via my &#8220;video phone&#8221; in a virtual world and I can book my own travel tickets faster than I can explain to someone where I want to go.   Or better yet, I can schedule a trip to Chicago on my calendar and my saved preferences will automatically book my flight for me, and all I have to do is confirm it.   This is an example of process oriented, as opposed to the way it&#8217;s always been done.</p>
<p>You have to consider that you cannot change the mindset of &#8220;the machine&#8221; of your large organization overnight.  Some very respected people work in this same organization as you have built their reputation on these older methodologies.   One tiny voice shouting BPM and SOA will not be heard over a hundred entrenched opinions based on traditions.   By going on a crusade to change everything, all you are doing is shaking the tree of traditional wisdom, and whatever falls out of this tree is likely to come down hit you hard on the head.    Many of these very respected people still call a travel agent over the phone and use a paper ticket at the airport.   On the other hand, many of them ride around in a corporate jet and haven&#8217;t seen an airport security line since 2000 when it was still okay to meet your friends as they walk off the plane at the gate.</p>
<p>If you are lucky enough to have a CIO or CEO that mandates the organization will have a BPM/SOA center of excellence team (CoPE team) then you can go ahead and start a formal training program.  But still, the details will be missed by most people in the organization.   People tend to do 5 to 7 activities in their processes.  Outside the scope of what they do on a day to day basis is hard to grasp.    The bigger picture of a formal BPM/SOA practice is likely to be well received to a C-level executive, a VP, a director, etc.  But anyone lower than this and it&#8217;s likely they&#8217;ll need a Business Analyst or IT architecture background to understand where you are going with these concepts.</p>
<p>But the good news is that over time as the organization transforms its self, every one else will eventually understand by seeing examples of good practices in action.   I&#8217;ve seen even the people that have the hardest time changing eventually learn the process oriented approach.  It&#8217;s contagous.  And once you go process oriented, you&#8217;ll never go back.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.rickgeneva.com/wp/posts/most-common-questions-on-implementing-bpm-soa/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>The ins and outs of process loops</title>
		<link>http://www.rickgeneva.com/wp/posts/the-ins-and-outs-of-process-loops/</link>
		<comments>http://www.rickgeneva.com/wp/posts/the-ins-and-outs-of-process-loops/#comments</comments>
		<pubDate>Mon, 27 Apr 2009 05:41:06 +0000</pubDate>
		<dc:creator>Rick Geneva</dc:creator>
				<category><![CDATA[BPMN]]></category>
		<category><![CDATA[Process Modeling]]></category>

		<guid isPermaLink="false">http://www.rickgeneva.com/wp/?p=107</guid>
		<description><![CDATA[There are many ways to accomplish loops in the BPMN specification.   Flowcharts only offer one way to cause a loop back, but BPMN offers 4 explicit ways, and potentially dozens of ways to create a loop implicitly.  Often my students ask the question &#8220;so, aren&#8217;t they all the same thing?&#8221;   [...]]]></description>
			<content:encoded><![CDATA[<p>There are many ways to accomplish loops in the BPMN specification.   Flowcharts only offer one way to cause a loop back, but BPMN offers 4 explicit ways, and potentially dozens of ways to create a loop implicitly.  Often my students ask the question &#8220;so, aren&#8217;t they all the same thing?&#8221;     Technically, yes, and no.   Sorry to say it, but there is no right answer according to the specification.   This is up to you to figure out.   The specification does however offer many options that can be used to express certain situations.  But to a newcomer to BPMN,  the challenge is always which one should you use, when, and why.</p>
<p><span id="more-107"></span></p>
<p>The simple answer to which loop method to use is to express yourself.   The specification leaves room for subtle differences, that when combined with some experience in process modeling and some modeling style, BPMN can be very expressive.   In some cases there is definitely an incorrect choice for the process at hand, but somehow there never seems to be an absolutely correct one.   So here is my style guide on how to pick the best expression for activities that loop.</p>
<h2>Style 1: Upstream Loop-back Flow</h2>
<p>Example:</p>
<div id="attachment_127" class="wp-caption aligncenter" style="width: 382px"><a href="http://www.rickgeneva.com/wp/wp-content/uploads/2009/04/upstreamflow11.gif"><img class="size-full wp-image-127" title="upstreamflow11" src="http://www.rickgeneva.com/wp/wp-content/uploads/2009/04/upstreamflow11.gif" alt="Upstream Looping Process Flow" width="372" height="117" /></a><p class="wp-caption-text">Upstream Looping Process Flow</p></div>
<p><strong><span style="text-decoration: underline;">Style expression:</span></strong> Use when you want to do something over again (redo), but not when you want to repeat activities and preserve the previous results.  If you want to preserve the previous results I would recommend using the looping subprocess instead.</p>
<div id="attachment_131" class="wp-caption aligncenter" style="width: 395px"><a href="http://www.rickgeneva.com/wp/wp-content/uploads/2009/04/upstreamflowwithtimer.gif"><img class="size-full wp-image-131" title="upstreamFlowWithTimer" src="http://www.rickgeneva.com/wp/wp-content/uploads/2009/04/upstreamflowwithtimer.gif" alt="Upstream looping flow with timer" width="385" height="111" /></a><p class="wp-caption-text">Upstream looping flow with timer</p></div>
<p>Upstream flow is also very useful in high-level diagrams where you don&#8217;t wish to show all of the intricate details of process flow.  I&#8217;ve found that if you are using a high-level view, it&#8217;s best to stick with subprocess shapes rather than using tasks.   A task implies an atomic single activity where something is done.  The subprocess expresses that there are several steps to complete a task, which can include the points of communication (message events, signals, or anything else required to complete the activity).   I&#8217;m not saying that the subprocess is required here.  But it might be a better option because it&#8217;s more likely to accurately depict the true nature of the process.</p>
<p style="text-align: center;">
<div id="attachment_130" class="wp-caption aligncenter" style="width: 469px"><a href="http://www.rickgeneva.com/wp/wp-content/uploads/2009/04/upstreamflowwithlanes.jpg"><img class="size-full wp-image-130" title="upstreamFlowWithLanes" src="http://www.rickgeneva.com/wp/wp-content/uploads/2009/04/upstreamflowwithlanes.jpg" alt="Upstream looping flow accross participant lanes" width="459" height="174" /></a><p class="wp-caption-text">Upstream looping flow across participant lanes</p></div>
<p><strong>Advantages:</strong></p>
<ul>
<li>Simple to model and most people with no BPMN training can easily understand it.</li>
<li>Great for showing high-level sequence flows across multiple participants (roles, systems, etc).</li>
<li>Easily shows the loopback condition as part of the gateway, without using annotations.</li>
<li>Allows you you to do a loop across multiple <a href="http://www.rickgeneva.com/wp/pages/58">swimlanes</a>, but be cautioned that this is not always a good idea (see my other post about <a href="http://www.rickgeneva.com/wp/pages/58">swimlanes</a>).</li>
</ul>
<p><strong>Disadvantages:</strong></p>
<ul>
<li> Doesn&#8217;t always capture the detail of a process flow (see my other post about <a href="http://www.rickgeneva.com/wp/pages/58">swimlanes</a>) and limits ability to show explicit message interaction between participants.</li>
<li>Not very easy to introduce exception conditions into the flow without adding a lot of extra shapes.</li>
<li>Implicit way of showing multiple iterations of an activity might lead to inaccurate interpretation.</li>
</ul>
<h2>Style 2: Looping subprocess</h2>
<div id="attachment_117" class="wp-caption aligncenter" style="width: 274px"><a href="http://www.rickgeneva.com/wp/wp-content/uploads/2009/04/loopingsubprocess.gif"><img class="size-full wp-image-117" title="Looping Subprocess" src="http://www.rickgeneva.com/wp/wp-content/uploads/2009/04/loopingsubprocess.gif" alt="Looping Subprocess" width="264" height="88" /></a><p class="wp-caption-text">Looping Subprocess</p></div>
<p><span style="text-decoration: underline;"><strong>Style Expression:</strong></span> Use when you need to repeat one or more activities while preserving the data/results of the activities for future reference.  Also very useful when you need to deal with multiple exceptional conditions that might interrupt the loop iterations.</p>
<p>In the following example I am using the simple &#8220;check mail&#8221; process.  Every hour I check the mail, and if there is something in the mailbox I reply to the mail.  When I&#8217;m done replying to the new mail the cycle repeats.   Immediately after replying to mail I go back to check for new mail.   This starts to optimize the process because if new mail arrives while I&#8217;m replying to other mail, as soon as I&#8217;m finished replying there is no wait state.</p>
<div id="attachment_135" class="wp-caption aligncenter" style="width: 263px"><a href="http://www.rickgeneva.com/wp/wp-content/uploads/2009/04/loopingsubprocesswithtimer.jpg"><img class="size-full wp-image-135" title="loopingsubprocesswithtimer" src="http://www.rickgeneva.com/wp/wp-content/uploads/2009/04/loopingsubprocesswithtimer.jpg" alt="Looping Subprocess with Timer" width="253" height="121" /></a><p class="wp-caption-text">Looping Subprocess with Timer</p></div>
<p>Dealing with exceptional conditions in a subprocess is much easier to do than with straight-through linear flow.  This is because you can place one or more exception handlers on the subprocess border.  For example, I can catch an error condition if it occurs, but I&#8217;m not really expecting this to happen all the time.  Or I can cause an alternate flow to occur when the activities don&#8217;t complete within a specified time period.  Or, I can watch for all of the above conditions and deal with them accordingly.   In contrast, the linear flowchart style diagram gets extremely complicated and difficult to read without the capability to &#8220;dynamically&#8221; create exception flow.</p>
<p>In a linear flowchart style, many conditional gateways or flows are used to check for current state.  In the BPMN style, intermediate handler events are used on the subprocess border instead.  In the following diagram I add a few layers that handle the exceptional conditions that could potentially occur.  I&#8217;m not going to explicitly check for the errors all the time. It&#8217;s more of a passive monitoring for things that might occur.</p>
<p style="text-align: center;">
<div id="attachment_133" class="wp-caption aligncenter" style="width: 341px"><a href="http://www.rickgeneva.com/wp/wp-content/uploads/2009/04/complexloopingsubprocess.jpg"><img class="size-full wp-image-133" title="complexloopingsubprocess" src="http://www.rickgeneva.com/wp/wp-content/uploads/2009/04/complexloopingsubprocess.jpg" alt="Complex Nested Looping Subprocess with Error Handling" width="331" height="227" /></a><p class="wp-caption-text">Complex Nested Looping Subprocess with Error Handling</p></div>
<p>First I can receive the intermediate message labeled &#8220;cancel&#8221;.   This is here because instead of watching for mail all day someone might give me a more meaningful way to spend my time.   So maybe my boss sends me a message to go out for coffee or something.  When this occurs I terminate this process and go do something else.</p>
<p>Next there is an intermediate event that catches any errors that might occur in my process.  This error handler will catch anything that might occur on the check mail or reply to mail.  Note that this is not necessarily a technical step geared toward the geek crowd.  This gives me a &#8220;catch all&#8221; way of dealing with exceptional conditions, regardless of what the condition is.  Most likely I&#8217;ll have to interrupt the normal pattern and do some improvising to get the process back on track.  For example, one day someone plays mailbox baseball.   For those of you who don&#8217;t know what this means, it&#8217;s when someone takes a baseball bat and smashed the box where I receive my mail.  So I can&#8217;t receive mail.  Sounds like an exceptional condition, right?  I&#8217;m not planning for this specific event to happen, but anything can happen.  So I don&#8217;t want to stop my process dead in its tracks just because I don&#8217;t have a way to deal with anything that might come up.  The error handler is most likely a generic manual step.</p>
<p>Note the outer looping subprocess.  This ensures that if an error condition occurs that I can easily jump back directly into a new instance of my inner loop, which is the main normal flow.</p>
<p>An finally, at 5 PM I&#8217;m going home, so I terminate the process.   Because I&#8217;m a &#8220;clock puncher&#8221; type of person (How I wish this were true instead of me writing this post past midnight for three days now) it doesn&#8217;t matter what I&#8217;m doing.  When the whistle blows at 5 PM (the timer event) I&#8217;m going home.  Forget about replying, forget about checking for new mail.</p>
<p>So that&#8217;s the process.   Now what would this same process look like if I didn&#8217;t have a subprocess and used upstream flow instead?  Here is the equivalent diagram without using subprocesses, or should I say as close as you can get to the equivalent behavior.</p>
<p style="text-align: center;">
<div id="attachment_138" class="wp-caption aligncenter" style="width: 370px"><a href="http://www.rickgeneva.com/wp/wp-content/uploads/2009/04/complexupstreamflow.jpg"><img class="size-full wp-image-138" title="complexupstreamflow" src="http://www.rickgeneva.com/wp/wp-content/uploads/2009/04/complexupstreamflow.jpg" alt="Complex Upstream Flow with Error Handling" width="360" height="273" /></a><p class="wp-caption-text">Complex Upstream Flow with Error Handling</p></div>
<p>To achieve 100% of the same process flow behavior using upstream flow it&#8217;s incredibly difficult. In fact, this small example took several tries for me to get it right, and I&#8217;m still not totally convinced its the same.  Feel free to comment and tell me how I did.   The point is, when you start handling errors (as you should be doing in all processes anyway) in the upstream flow style, the diagram gets very complex to create, and even more difficult to read.  Now just imagine this upstream flow example using swimlanes across multiple participants.  You will probably end up with lines going all over the place and it&#8217;s a real eye sore to look at.</p>
<p>Just to put some context around this, all we are doing here is checking for mail and it&#8217;s already getting hard to read.  Imagine if we were to model a real process!   So for detailed process design including proper exception handling, the upstream flow doesn&#8217;t work so well.</p>
<p><strong>Looping Subprocess Advantages:</strong></p>
<ul>
<li>Explicit loop control</li>
<li>Focus on a single process participant, which frequently yields a more accurate/detailed process diagram (see my other posting about <a href="http://www.rickgeneva.com/wp/pages/58">swimlanes</a>).</li>
<li>Ability to easily deal with multiple exceptional conditions without complicating the normal flow.</li>
</ul>
<p><strong>Looping Subprocess Disadvantages:</strong></p>
<ul>
<li>Slightly more difficult to understand for people that have not been trained on BPMN syntax.  Note however that this can easily be explained to the BPMN newcomer in about two minutes, or you can just as easily add a text annotation to explain the loop.</li>
<li>No way to determine what the loop condition is without annoations.</li>
</ul>
<h2>Style 3: Multiple Instance</h2>
<div id="attachment_118" class="wp-caption aligncenter" style="width: 284px"><a href="http://www.rickgeneva.com/wp/wp-content/uploads/2009/04/multiinstancesubprocess.gif"><img class="size-full wp-image-118" title="multiinstancesubprocess" src="http://www.rickgeneva.com/wp/wp-content/uploads/2009/04/multiinstancesubprocess.gif" alt="Multiple Instance Subprocess" width="274" height="95" /></a><p class="wp-caption-text">Multiple Instance Subprocess</p></div>
<p>The multiple instance has two use cases.  This sometimes happens in the BPMN specification.  It&#8217;s not always clear in the diagram which use case is actually occuring.  I suspect this will be cleared up in the 2.0 or later specification (or at least I hope so).  Because of this current issue in the BPMN specification I recommend using a text annotation externally explain the sequence behavior.    Note that the external text annotation is also a good practice for the looping subprocess as well.</p>
<p><strong>Use case 1:   Serial Execution</strong></p>
<p>Use when you want to repeat some activities for a fixed number of times. There is no condition on breaking the loop.  For example, &#8220;do this five times&#8221;.    Each instance of the activity is performed in an iteration, meaning that each after the first iteration the subsequent iterations will not occur until the previous has completed.   Essentially this is the same as the looping subprocess, except that there is no need to specify a condition that will cause the loop to break it&#8217;s loop.  Only a number of iterations is provided.</p>
<div id="attachment_147" class="wp-caption aligncenter" style="width: 149px"><a href="http://www.rickgeneva.com/wp/wp-content/uploads/2009/04/multipleinstanceserialmode.jpg"><img class="size-full wp-image-147" title="Multi Instance Serial Mode" src="http://www.rickgeneva.com/wp/wp-content/uploads/2009/04/multipleinstanceserialmode.jpg" alt="Multiple Instance Serial Execution Mode" width="139" height="120" /></a><p class="wp-caption-text">Multiple Instance Serial Execution Mode</p></div>
<p>The same diagram can be expressed using only task shapes, but requires many more shapes to accomplish the same expression.</p>
<div id="attachment_146" class="wp-caption aligncenter" style="width: 443px"><a href="http://www.rickgeneva.com/wp/wp-content/uploads/2009/04/multinstanceserialtaskequiv.jpg"><img class="size-full wp-image-146" title="Multi Instance Serial Task Equivelent" src="http://www.rickgeneva.com/wp/wp-content/uploads/2009/04/multinstanceserialtaskequiv.jpg" alt="Multi Instance Serial Task Equivelent" width="433" height="49" /></a><p class="wp-caption-text">Multi Instance Serial Task Equivalent</p></div>
<p><span style="text-decoration: underline;"><strong>Style expression for Serial Execution</strong></span>:  Use in a &#8220;for each&#8221; loop when the number of  iterations is known prior to execution.  Not applicable to a &#8220;do while&#8221; or &#8220;do until&#8221;.    Don&#8217;t use in any loop where a condition or normal flow might exist that would cause the loop to break before the number of iterations is complete.   The usage of exception handlers is acceptable (and most often encouraged).</p>
<p>An important consideration for using this expression is whether or not you know in advance the number of iterations you will perform (If I am repeating myself here it must be because this is important).  Otherwise you should use the looping subprocess instead.   Conditions such as &#8220;do until the color is sufficient&#8221;  or &#8220;keep checking the temperature every 5 minutes until the inner temperature is 200 degrees&#8221; is not a candidate for a multiple instance loop.   Instead, a good example for a multiple instance loop is &#8220;Get 100 people to sign the petition&#8221;.   Another example could be &#8220;take exactly 10 steps forward before turning left&#8221; if each step is an iteration of the looping activity.   But then again, if you want to get very technical here one could argue that each step has a dependency on the other leg (left leg/right leg) to perform its duty, so this would disqualify the multiple instance for each step.  Instead I could either hop 10 times or take 5 pairs of steps forward.</p>
<p><strong>Use case 2:  Parallel Execution</strong></p>
<p>The basic use case is the similar to the serial execution use case, except that instead of iterations, X number of instances will instantly be launched, all running in parallel.   Like the serial execution, there is no need to break the loop.  In fact, it&#8217;s not really a loop at all.   You are simply showing a different form of parallel flow in which you are launching X number of identical activities simultaneously.</p>
<div id="attachment_145" class="wp-caption aligncenter" style="width: 145px"><a href="http://www.rickgeneva.com/wp/wp-content/uploads/2009/04/multipleinstancemessages.jpg"><img class="size-full wp-image-145" title="Multiple Instance Parallel Mode" src="http://www.rickgeneva.com/wp/wp-content/uploads/2009/04/multipleinstancemessages.jpg" alt="Multiple Instance Parallel Mode" width="135" height="123" /></a><p class="wp-caption-text">Multiple Instance Parallel Mode</p></div>
<p>The same diagram using parallel gateway looks like this</p>
<p style="text-align: center;">
<div id="attachment_144" class="wp-caption aligncenter" style="width: 229px"><a href="http://www.rickgeneva.com/wp/wp-content/uploads/2009/04/multilooppargatewayequiv.jpg"><img class="size-full wp-image-144" title="Multiple instance parallel gateway equivelent" src="http://www.rickgeneva.com/wp/wp-content/uploads/2009/04/multilooppargatewayequiv.jpg" alt="Multiple instance parallel gateway equivelent" width="219" height="176" /></a><p class="wp-caption-text">Multiple instance parallel gateway equivalent</p></div>
<p><span style="text-decoration: underline;"><strong>Style expression for parallel Execution</strong></span>:  Another way to word this notation is &#8220;do something X number of times, right now, and don&#8217;t wait for anyone else to complete&#8221;.  Use when you want to perform the same activity a fixed number of times, and each activity can be performed independent of the other with no dependencies of any other instances of the same activity to complete.   Never use the parallel execution in situations where one activity might depend on another completing.  Never use this expression when the activities in each instance might contain a different sub-sequence.</p>
<p>In the example above referring to &#8220;Get 100 people to sign the petition&#8221; we could apply the multiple instance.   However, there is a subtle difference that occurs.  We would have to get 100 people in action simultaneously.   So in the serial execution example we are likely a single person going door to door for signatures.   In the case of the parallel, it&#8217;s more likely that we blasted 100 emails out to people and we are awaiting 100 responses.   So it might not be possible to actually receive 100 positive responses out of 100 emails sent unless the response is unanimous.  Instead you might want to express that out of 1000 sent emails we want to count at least 100 positive responses, which causes a break of some sort.   Normally I would suggest that you use the looping subprocess for this example.   But in this case you have a unique problem that is very difficult to resolve with a normal loop; you have to correlate each response with the preceding request that is unique for each instance.</p>
<div id="attachment_143" class="wp-caption aligncenter" style="width: 376px"><a href="http://www.rickgeneva.com/wp/wp-content/uploads/2009/04/multiinstanceloopingsubequiv.jpg"><img class="size-full wp-image-143" title="Looping Subprocess Emulating Parallel Multi-instance" src="http://www.rickgeneva.com/wp/wp-content/uploads/2009/04/multiinstanceloopingsubequiv.jpg" alt="Looping Subprocess Emulating Parallel Multi-instance" width="366" height="198" /></a><p class="wp-caption-text">Looping Subprocess Emulating Parallel Multi-instance</p></div>
<p>It&#8217;s important to note that the serial execution and parallel execution appear identically in BPMN.    According to the specification the execution mode is determined by the &#8220;attributes&#8221;.   Now you see, this is what happens when a perfectly good modeling notation meddles in process automation and execution.  I mentioned earlier that I hope this will be fixed in an upcoming version of BPMN.  For example, vertical lines for parallel execution and horizontal lines for serial execution would have been nice.  But the specification simply stops short of offering a graphical solution and suggests that execution engines use the &#8220;attributes&#8221; to specify behavior.  This does nothing for creating a diagram.  So I ask the folks at OMG to please fix this so that people who want to just create a diagram can have an easy way of doing so without having to read &#8220;attributes&#8221;.   Now that I&#8217;ve vented my frustration on this subject, might I suggest for the rest of us to use a text annotation external to the subprocess to resolve the ambiguity (as in the &#8220;multiple instance parallel mode&#8221; example).</p>
<p><strong>Multiple Instance (parallel) &#8211; Advantages:</strong></p>
<ul>
<li>No need to specify a loop condition based on data.  You can clearly tell that the activities will occur a fixed number of times, and this number of times is known before the loop begins.</li>
<li>Has the ability to dynamically generate a bunch of parallel flows without having to draw all of them explicitly (parallel execution).</li>
</ul>
<p><strong>Multiple Instance (parallel) &#8211; Disadvantages:</strong></p>
<ul>
<li>You cannot tell if this is a parallel or serial execution without any sort of annotations externally.</li>
<li>You cannot tell exactly how many parallel instance or serial iterations are actually being performed.  Again, to resolve this problem you should use external annotations.</li>
<li>Hardest to understand, least documentation and examples in the BPMN 1.2 specification.</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.rickgeneva.com/wp/posts/the-ins-and-outs-of-process-loops/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>
