<?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>Tyner Blain &#187; Business Process Modeling</title>
	<atom:link href="http://tynerblain.com/blog/category/business-analysis/business-process-modeling/feed/" rel="self" type="application/rss+xml" />
	<link>http://tynerblain.com/blog</link>
	<description>Software product success.</description>
	<lastBuildDate>Wed, 08 Feb 2012 16:38:54 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.4</generator>
		<item>
		<title>Requirements for Enterprise Architecture: First Look</title>
		<link>http://tynerblain.com/blog/2007/12/03/architecture-requirements/</link>
		<comments>http://tynerblain.com/blog/2007/12/03/architecture-requirements/#comments</comments>
		<pubDate>Tue, 04 Dec 2007 05:30:27 +0000</pubDate>
		<dc:creator>Scott Sehlhorst</dc:creator>
				<category><![CDATA[Business Analysis]]></category>
		<category><![CDATA[Business Process Modeling]]></category>
		<category><![CDATA[Process Flow]]></category>
		<category><![CDATA[Product Management]]></category>
		<category><![CDATA[Requirements]]></category>
		<category><![CDATA[application requirements]]></category>
		<category><![CDATA[architecture requirements]]></category>
		<category><![CDATA[designing architectures]]></category>
		<category><![CDATA[managing data]]></category>
		<category><![CDATA[requirements and design]]></category>

		<guid isPermaLink="false">http://tynerblain.com/blog/2007/12/03/architecture-requirements/</guid>
		<description><![CDATA[topsyWidgetPreload({ "url": "http%3A%2F%2Ftynerblain.com%2Fblog%2F2007%2F12%2F03%2Farchitecture-requirements%2F", "style": "big", "title": "Requirements for Enterprise Architecture: First Look" }); Traditional requirements happen after a multi-system architecture has been defined. But what about the requirements that feed into that architecture? The requirements that drive the enterprise architecture decisions in the first place? We haven&#8217;t talked about those before. Setting The Stage The [...]]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_blue" style="float: right;margin-left: 0.75em; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Ftynerblain.com%252Fblog%252F2007%252F12%252F03%252Farchitecture-requirements%252F%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22Requirements%20for%20Enterprise%20Architecture%3A%20First%20Look%22%20%7D);"><script type="text/javascript">topsyWidgetPreload({ "url": "http%3A%2F%2Ftynerblain.com%2Fblog%2F2007%2F12%2F03%2Farchitecture-requirements%2F", "style": "big", "title": "Requirements for Enterprise Architecture: First Look" });</script></div>
<p><img alt="the hague" title="the hague" src="http://www.smugmug.com/photos/228482567-L.jpg" /><br />
Traditional requirements happen after a multi-system architecture has been defined.</p>
<p>But what about the requirements that feed into that architecture?  The requirements that drive the enterprise architecture decisions in the first place?  We haven&#8217;t talked about those before.</p>
<p><span id="more-606"></span></p>
<h2>Setting The Stage</h2>
<p>The typical enterprise software requirements project ecosystem looks something like the following:</p>
<ol>
<li>An existing application exists within a network of (logically) interconnected applications that collectively comprise an enterprise architecture.</li>
<li>Business processes exist, each of which utilizes one or more of these applications to achieve tangible business objectives.</li>
<li>Some of these applications have user interfaces, and therefore have users who are trying to achieve the goals associated with the business processes.</li>
</ol>
<p>Within that environment, the typical enterprise software requirements project looks very familiar:</p>
<ol>
<li>There are new processes, or capabilities that are desired by the business.</li>
<li>An enterprise architect has decided that these capabilities will be embodied into one or more of the existing applications.  The end result is that each application has a &#8220;defined scope&#8221;, and a set of goals.</li>
<li>The requirements project for each application under development is initiated with these objectives and boundaries.</li>
</ol>
<p>What if you are tasked with defining the ecosystem, instead of defining a product within a pre-defined ecosystem?  How would you go about it?</p>
<ul>
<li>The architect makes design decisions about what each system in the architecture does.</li>
<li>The developer makes design decisions about what each class in the application does.</li>
</ul>
<p>Isn&#8217;t this just design, <em>writ large</em>?  Why should business analysts or product managers be involved?  This is just an implementation activity on steroids.</p>
<h2>What We Are NOT Talking About</h2>
<p>There is a very good article at IBM that defines architectural requirements as application requirements that <em>have significant impact on the architecture of a single application</em>.  That is not what we are talking about.  <a title="architectural requirements" href="http://www.ibm.com/developerworks/rational/library/4706.html">Here&#8217;s a link</a>, since that is a good article &#8211; if that&#8217;s what you were hoping to read today.</p>
<h2>The Lifecycle of Creating Software</h2>
<p>In <a title="requirements documents from different perspectives" href="http://tynerblain.com/blog/2006/05/11/requirements-documents-one-mans-trash/"><em>One Man&#8217;s Trash</em></a>, we looked at the life cycle of developing a software product from the perspective of the contributors to that product.</p>
<p><img title="requirements life cycle from different perspectives" alt="requirements life cycle from different perspectives" src="http://sehlhorst.smugmug.com/photos/69105260-M.png" /><br />
Our analysis was of a single product &#8211; not an application that has to live in an ecosystem with other products.  <strong>That analysis  showed four layers of solving the problem, but only one meta-layer of solving the problem</strong>.</p>
<p>In the uselessly big picture view, there are multiple layers of &#8220;requirements&#8221; and &#8220;design&#8221; throughout the life cycle.  When defining requirements within the &#8220;single software product&#8221; scope we wrote about before, most of the following is actually a distraction.</p>
<ol>
<li>Companies and individuals have money to invest, and they have goals associated with those investments.</li>
<li>They will choose a mix of investments, where that mix is designed to achieve a set of objectives.
<ol>
<li>Manage volatility</li>
<li>Generate ROI (where the return is utility, but is easiest to simplify as a financial return)</li>
<li>Mitigate risk</li>
</ol>
</li>
<li>Within the constraints imposed by that mix strategy, they design a portfolio.  That portfolio delegates roles to individual investments.  Investment 1 is responsible for generating a high return at a high risk.  Investment 2 is responsible is designed to hedge investment 1, mitigating risk while reducing overall return.  Investment 3 may be responsible for generating a smaller, but highly reliable return.  Each investment thus has a scope and a set of goals.</li>
<li>If one of those investments is in a company, it now has a scope and a set of goals &#8211; and a large company will develop its own portfolio of investments &#8211; choices in how it allocates funds internally.  One of those investments may be a choice to operate in a particular industry, where those operations are defined by a set of goals and constraints.  [Note - conglomerates may have additional, recursive sets of layers 1 through 4, as they manage a portfolio of companies.]</li>
<li>Those operations may manifest as a set of business processes, initiated by people using software, and supported by other systems internally.  The choice to use people, or software, and how to organize the systems is one of design.</li>
<li>Once that design choice is made, each individual piece of software has a defined scope &#8211; a set of responsibilities within the larger architecture.  And those responsibilities become goals and constraints within the context of a set of contracts between the systems.  <strong>The entire chart above lives within this one step in the bigger picture</strong>.</li>
</ol>
<p>When managing software requirements in the typical enterprise software project, this scope and these goals is already defined.  Here are a couple examples of an application being defined within an enterprise architecture:</p>
<ul>
<li>A company needs to employ direct sales reps to sell their products.  The company has a software application that the reps use to <strong>sell the products</strong>, and that application is integrated with another system that manufacturing uses to <strong>fulfill the orders</strong>.  An accounting system also exists that is responsible for <strong>collecting funds due</strong> for each of the orders.  Sales reps have to be compensated for their work, and a compensation system is identified to <strong>calculate sales rep compensation</strong>.  It must be integrated with the existing systems and is responsible for determining how much the reps should be paid.  The compensation system must integrate with the payroll system that is responsible <strong>for paying the sales reps</strong>.</li>
</ul>
<p>Each of the applications (sales, fulfillment, payroll, collections, compensation calculation) has a defined role to play in the architecture.  A typical requirements project would be to define the requirements for the compensation system.  It helps to understand the ecosystem &#8211; the context in which this product has defined responsibilities &#8211; but that is generally a constant, not a variable.  So, most requirements books, tools, and techniques are designed to operate with a presumption of a fixed set of goals and scope. The goals and scope of the product usually need to be discovered and validated, but they are perceived as immutable &#8211; at least within the timeframe of the project.</p>
<p>&#8220;Standalone software product&#8221; product management operates under essentially the same principles &#8211; the company is assumed to have a strategy, a target market, goals and a scope for the product.  Requirements work for a standalone product is similar to the requirements work for an enterprise application that &#8220;knows its place&#8221; within an enterprise architecture.</p>
<p>But what about the requirements that drove the enterprise architect to choose an approach that involves separate applications for sales, fulfillment, collections, payroll, and compensation?  These are architecture requirements</p>
<h2>Defining Architecture Requirements</h2>
<p>We know <a title="structured requirements" href="http://tynerblain.com/blog/2006/01/04/foundation-series-structured-requirements/">how to define and manage requirements</a> within a predefined environment.  Start with goals, and work our way down to &#8220;design.&#8221;  Other people on the team will start at design, and continue through development, test, deployment, and adoption.  This is a pretty comfortable environment.  It is also an effective environment.  When a problem involves the interaction of multiple systems, an efficient way to tackle that problem is through decomposition.  Just as an investor decomposes a portfolio into individual investments, a company will decompose enterprise software into multiple discrete systems.  And a developer will decompose a single system into multiple classes (or multiple modules, each made of</p>
<p>And we know the importance of requirements &#8211; the most successful teams don&#8217;t go immediately from goals and constraints to development.  Multiple studies demonstrate the cost-effectiveness of using requirements effectively to prevent mistakes in implementation.  It stands to reason that we are missing an extremely large opportunity if we don&#8217;t apply equivalent rigor to the architectural decisions that lead to the definition of those goals and constraints.  So how do we go about defining the requirements that feed into the architecture?</p>
<p><strong>Here&#8217;s a <a title="enterprise architecture essay" href="http://www.enterpriseunifiedprocess.com/essays/enterpriseArchitecture.html">really good article by Scott Ambler</a> </strong>that provides a more detailed perspective, and practical guidance for enterprise architects.  The rest of this article is geared towards business analysts who find themselves supporting enterprise architects pursuing a path like the one Scott describes.</p>
<p>The first step is to identify the business processes &#8211; <em>all</em> of the business processes that are relevant.  Using our example, these are the compensation-management processes, sales and fulfillment processes, payroll processes, and collection processes.</p>
<p>Part of defining these processes is identifying the <a title="stakeholder analysis" href="http://tynerblain.com/blog/2007/03/13/visualize-stakeholder-analysis/">stakeholders</a>.  We&#8217;re dealing with a much larger scope here &#8211; so <a title="stakeholder value analysis" href="http://tynerblain.com/blog/2007/10/25/stakeholder-value-matrix/">valuation of the different stakeholder goals</a> becomes much harder.  It is easier to prioritize &#8220;sell bundled products&#8221; versus &#8220;sell customizable products&#8221; than it is to prioritize &#8220;pay sales reps&#8221; versus &#8220;fulfill orders.&#8221;</p>
<p>A very high level view of the processes is enough to do an first iteration of an architectural design. This is also sometimes called a straw man architecture, or candidate architecture.  Notice that we said &#8220;first iteration.&#8221;</p>
<p>The next step &#8211; and arguably, it is a concurrent step &#8211; is to define the boundaries between those systems.  Where / when does the order placement system (first system) transfer responsibility to the fulfillment system (second system)?  And what does the first system have to provide to the second system for fulfillment (and possibly collections and compensation) systems to do their jobs?  And how must those systems respond?  What information must they provide to meet user requirements?  What information must they provide to satisfy audit requirements or regulatory rules?</p>
<p>While this looks like design, I would argue that this is also <em>feasibility</em> analysis.  The architects are <em>designing</em> the enterprise architecture &#8211; or the system under development.  But that system is also an <em>input</em> into the requirements processes for each of the individual applications in the architecture.  The scope of each individual application is defined by the system boundaries.  The goals for each individual application are a direct result of the responsibilities that are identified by mapping the business processes to the individual applications.</p>
<p>Now we have a candidate architecture, a set of identified business processes, and a mapping of those processes onto that architecture &#8211; defining the responsibilities of each system.  This yields a feasibility analysis by the architects.  They will take this assessment (and any identified gaps), and modify the architecture &#8211; adding or removing systems, changing responsibilities, and otherwise iterating on the candidate architecture.  Then they will review and iterate again &#8211; until there is a feasible design &#8211; just as developers will invest in the design of an application until there is a feasible solution to meet the application requirements.  And this process should involve collaboration with stakeholders, and revisiting (or even redesign) of business processes with the candidate architectures in mind.</p>
<h2>Conclusion</h2>
<p>Developing architecture requirements (and architectures) is an iterative layering exercise. As much as it isn&#8217;t &#8220;our job&#8221;, our contributions to defining the architecture requirements will not only serve to verify the feasibility of the architectural approach, but they will provide clarity about the role of each application in the architecture.  And that clarity of purpose sets the stage for a more effective &#8220;traditional&#8221; requirements process for that application.</p>
<p>This will also cause a significant reduction in requirements churn later &#8211; as flaws at the inter-system level will be identified and resolved before application requirements get underway in earnest.</p>

<div class="tweetthis" style="text-align:left;"><p> <a target="_blank" rel="nofollow" class="tt" href="http://twitter.com/intent/tweet?text=By+%40sehlhorst%3A+Requirements+for+Enterprise+Architecture%3A+First+Look+http%3A%2F%2Fbit.ly%2FergjYo+" title="Post to Twitter"><img class="nothumb" src="http://tynerblain.com/blog/wp-content/plugins/tweet-this/icons/en/twitter/tt-twitter-big1.png" alt="Post to Twitter" /></a> <a target="_blank" rel="nofollow" class="tt" href="http://www.facebook.com/share.php?u=http://tynerblain.com/blog/2007/12/03/architecture-requirements/&amp;t=Requirements+for+Enterprise+Architecture%3A+First+Look" title="Post to Facebook"><img class="nothumb" src="http://tynerblain.com/blog/wp-content/plugins/tweet-this/icons/en/facebook/tt-facebook-big4.png" alt="Post to Facebook" /></a></p></div>]]></content:encoded>
			<wfw:commentRss>http://tynerblain.com/blog/2007/12/03/architecture-requirements/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Global Processes and Business Rules</title>
		<link>http://tynerblain.com/blog/2007/09/25/global-processes-and-business-rules/</link>
		<comments>http://tynerblain.com/blog/2007/09/25/global-processes-and-business-rules/#comments</comments>
		<pubDate>Wed, 26 Sep 2007 03:55:05 +0000</pubDate>
		<dc:creator>Scott Sehlhorst</dc:creator>
				<category><![CDATA[Business Analysis]]></category>
		<category><![CDATA[Business Process Modeling]]></category>
		<category><![CDATA[Business Rules]]></category>
		<category><![CDATA[Product Management]]></category>
		<category><![CDATA[Requirements]]></category>
		<category><![CDATA[Requirements Models]]></category>
		<category><![CDATA[Use Cases]]></category>
		<category><![CDATA[business requirements]]></category>
		<category><![CDATA[global business requirements]]></category>
		<category><![CDATA[global requirements]]></category>
		<category><![CDATA[managing data]]></category>

		<guid isPermaLink="false">http://tynerblain.com/blog/2007/09/25/global-processes-and-business-rules/</guid>
		<description><![CDATA[topsyWidgetPreload({ "url": "http%3A%2F%2Ftynerblain.com%2Fblog%2F2007%2F09%2F25%2Fglobal-processes-and-business-rules%2F", "style": "big", "title": "Global Processes and Business Rules" }); We&#8217;ve written before about the importance of separating rules from requirements, particularly in use cases. We wrote that with the goal in mind of reducing the costs of system maintenance. Low-level rules like decision, calculation and inference rules tend to change frequently &#8211; [...]]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_blue" style="float: right;margin-left: 0.75em; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Ftynerblain.com%252Fblog%252F2007%252F09%252F25%252Fglobal-processes-and-business-rules%252F%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22Global%20Processes%20and%20Business%20Rules%22%20%7D);"><script type="text/javascript">topsyWidgetPreload({ "url": "http%3A%2F%2Ftynerblain.com%2Fblog%2F2007%2F09%2F25%2Fglobal-processes-and-business-rules%2F", "style": "big", "title": "Global Processes and Business Rules" });</script></div>
<p><img alt="people around a globe" title="people around a globe" src="http://sehlhorst.smugmug.com/photos/200498119-M.jpg" /></p>
<p>We&#8217;ve written before about the importance of separating rules from requirements, particularly in use cases.  We wrote that with the goal in mind of reducing the costs of system maintenance.  Low-level rules like decision, calculation and inference rules tend to change frequently &#8211; and independently of other requirements.  So a documentation approach that separates these rules from requirements can  both reduce implementation costs (by encouraging separated implementation) and reduce the time required to manage and approve changes.</p>
<p>There are also benefits to abstracting high-level, or procedural rules, when dealing with global business requirements.<br />
<span id="more-574"></span></p>
<h2>Global Businesses</h2>
<p>When companies get large enough that they start operating globally, they face an additional level of complexity in managing their processes.  And with that management burden comes the additional complexity of managing the software that implements those processes.</p>
<p>Global businesses usually don&#8217;t have the luxury of using the exact same processes, procedures, and rules in every company in which they operate.  They also have to deal with nasty problems like selling a product from one country to a customer in a second country, with a delivery address in a third country.  And the product may be shipped from a fourth country.  Now imagine that the order is split to deliver portions of it to each of multiple destinations.  And imagine it is further (orthogonally!) split because the products are being sourced from multiple locations.  That&#8217;s a lot of complexity.  How would you approach managing the requirements for something like that?</p>
<p>Let&#8217;s keep it simple and just imagine dealing with different processes and procedures in different countries.  Global businesses usually organize around regions, like the Americas, Europe, Asia, etc.  There are no formal rules to this organization, but the regional definitions are mostly consistent.  Within some of those regions, there are often variations in how the business operates within countries in those regions.  US Companies usually treat domestic US business differently than they would Canadian or Mexican operations &#8211; even on the same continent.  And Europe, Africa and the Middle East have even more variation and distinct differences between countries.</p>
<h2>Regional Growth</h2>
<p><img alt="front loader" title="front loader" src="http://sehlhorst.smugmug.com/photos/200499386-M.jpg" /><br />
When companies grow into multi-national organizations, they don&#8217;t initially start in &#8220;every country&#8221; and then gradually grow all of the divisions in lock-step.  Companies rightly focus on a single country until they are driven to grow into other countries.  Then they establish footprints in those countries, grow those businesses, and eventually reach a size where they need to organize regionally.</p>
<p>The businesses in those countries and regions are usually given both guidance and latitude in the development of their businesses.  As a result, the company will both develop new processes and extend existing processes into the new countries.  Imagine a company like Caterpillar or John Deere that sells heavy construction equipment around the world.  The company initially, likely, both manufactures and sells all of the vehicles in the same country.  Then the company begins exporting vehicles to the other countries.  Eventually, the business grows until the company sets up shop in the foreign country.</p>
<p>The company is now doing the same things in multiple countries (at a high level).  Selling vehicles, leasing vehicles from a maintained fleet, financing purchases, etc.  Consider the business of leasing vehicles &#8211; different countries have different cultures that approach borrowing differently.  They also have different regulations about leasing versus sales.  Our company may even decide to partner with a local third-party company that manages a fleet of lease vehicles for them in one country, while maintaining their own fleet in another country.</p>
<p>The people running these country-specific businesses have to react to local issues, regulations, and market dynamics.  Success in those countries may require different operations than success in the home country.  And the people responsible for these businesses are usually able to &#8220;do what it takes&#8221; to be successful in the different countries.</p>
<h2>Global Processes</h2>
<p>Now the company is faced with the situation where the same process (leasing a vehicle) exists in multiple countries or regions.  At the same time, the process is different in each of the countries, because of the differences in how the business operates in those countries.</p>
<p>The company now has the same process defined multiple times.  And that process is defined not only based on local influences, but also corporate policies, the policies that are in effect in the country where the company is based (and therefore reports income, etc), and those things that are common across the regions.</p>
<p>This means there is both variation and duplication in the process.  And that creates opportunities for improvement.</p>
<p>Consider a use case that is part of a global process.  For the vehicle leasing process, a use case (or sub-process) may be &#8220;Approve credit of lessee.&#8221;  The company requires that all leases be made only to people who have been approved as <em>credit-worthy</em>.  But determining credit-worthiness can vary by country.  And the process required to determine credit worthiness will vary by country.</p>
<h2>Variation by Country</h2>
<p>Consider the definition of credit-worthiness.  This is defined for a single country with a set of rules that represent the results of an actuarial analysis that does a risk-scoring process designed to weed out unprofitable loans.  The credit-worthiness of a lessee in a third-world country would necessarily be different than the analysis in a major industrialized nation.  And that means a different set of rules.</p>
<p>What about country regulations?  There are different privacy laws in place in different countries.  You may be allowed to contact character-references in one country, but not in another.  You may have access to three years of records in one country, and seven years in another.  These variations in regulation affect what you <em>are allowed to do</em> in the different regions.</p>
<p>And the businesses in different countries have evolved their processes independently over time.  One business may choose to pre-approve a lease for repeat customers, while another country may require credit checks for all new leases.</p>
<p>These differences make the goal of <em>globalizing</em> processes and requirements seem insurmountable.</p>
<h2>Why Globalize Requirements</h2>
<p>There are many reasons to understand processes at a global level.  Let&#8217;s look at just one.  Reporting.  Management accounting is the science (or art, if you ask a financial accountant) of inspecting measurable elements of your business so that you can make informed decisions about how you run your company.  Being able to understand, analyze, and measure the same process in every country of the world provides benefits in strategic reporting and decision making.  This consolidation can also be valuable for financial accounting and reporting of business performance for public companies.  Making good management decisions is enough of a reason, so we&#8217;ll ignore the added financial accounting and external reporting benefits of a consolidation.</p>
<p>OK, so your construction equipment company operates in multiple countries.  And you lease equipment in multiple countries.  You want to know how profitable your leasing business is.  Each country has developed different processes for leasing, with different rules for determining details like <em>who to approve for a lease</em>, and different calculations of profitability.  For example, one country may monitor gross margins, another may track contribution margin.  What about the rules for revenue recognition?  One country&#8217;s business may recognize revenue at the time of signing a lease, while another may recognize revenue only when the payments are due (or when payments are made).</p>
<p>To get better control on your businesses, or more specifically, more consistent reporting, you need every country to follow the same process.  Even though the &#8220;business&#8221; in each country needs to be handled slightly differently.</p>
<h2>Consolidate Requirements</h2>
<p>One approach is to take all 50 countries, analyze all 50 process variations, document 50 different use cases, and determine the proper reporting for each of the 50 situations.  That&#8217;s a lot of analysis work.  And a lot of risk to the reporting effort.  You avoid disrupting the individual businesses, but you may make mistakes in any of the many analyses.  And whenever any of the countries has a change in regulation, or when any of the businesses in those countries has a change in process or policy, you have to review and update your process, use case, and analysis for that country.</p>
<p>Another approach is to mandate that everyone follow an identical process &#8211; come hell or high water.  This is completely impractical.  For some countries, this will work.  For others, this will force the businesses to operate at a competitive disadvantage (remember, there was a <em>locally rational decision</em> to deviate in the first place).  And in the worst case, you may be &#8220;requiring&#8221; the business to operate illegally (or prevent it from operating at all) in some countries.</p>
<p>A third, more reasonable approach is to look for a common abstraction.  Develop a description of the process and use case that applies to all of the countries, while allowing for a representation of the variations.  This might <em>encourage</em> individual countries to make changes to their processes (in order to appear more consistent with the rest of the business), but it allows them to continue to deviate.</p>
<p>How is this possible &#8211; we&#8217;ve identified that each country has a different process, so how can the same process documentation be correct for the different countries?</p>
<h2>Business Rules Provide the Abstraction</h2>
<p>Most of the variations in process identified in the example above are really <em>variations in rules</em>, happening within similar or identical processes.  Think of it from a use case perspective &#8211; here&#8217;s a snippet from the normal flow of the &#8220;Approve Credit&#8221; use case:</p>
<ol>
<li>Lessee submits request for financing.</li>
<li>System approves lease <em>per BR01, Credit Approval Rules</em>.</li>
<li>Lessee confirms intent to lease.</li>
<li>System reserves vehicle.</li>
<li>&#8230;</li>
</ol>
<p>The key is the abstraction of <em>Credit Approval Rules</em>.  Even though those rules vary by country, all countries will follow the flow defined above.  Note &#8211; this does not address the case when the processes are structurally different.</p>
<p>Then, within your business rules repository (or spreadsheet, or wherever you maintain the rules), you will have a ruleset (BR01) that defines when credit is approved and when it is rejected.  What you can do is define different rulesets for different countries (or regions).  BR01-USA, BR01-Canada, BR01-Mexico, etc.</p>
<p>When the business within a particular country changes its credit approval criteria, you only update those rules &#8211; and not the process or use case documentation.  The use case remains unchanged.</p>
<p>In our <em>calculate profitability</em> example, you will need to either require the businesses to calculate the same way, or, because the data will be consistent, you can aggregate and report on the information at a global level &#8211; taking into account which transactions happen in what countries.</p>
<h2>When Processes Are Structurally Different</h2>
<p>What about when the process is significantly different in some countries?  Perhaps the system reserves the vehicle in advance of qualifying the lessee (pre-approval of the lease)?  We have a different process.  Technically, it is a variation on the same process &#8211; the process would share the same name and have the same high level description.  Only in the details would it be different.</p>
<p>We get to &#8220;make up an answer&#8221; here, I think &#8211; I don&#8217;t know of anyone who has standardized on a good solution for this problem.  There are two reasonable obvious approaches that come to mind.<br />
The first approach is to define multiple use cases, and organize them hierarchically beneath the original (global) version of the use case.  If the use case is &#8220;UC01 Approve Credit&#8221;, then you would add &#8220;UC01A&#8221; or &#8220;UC01-USA&#8221; to reflect that this use case is a variation on the first one.  Then you would trace the <em>special case</em> use case to the <em>global</em> use case.</p>
<p>This works, and minimizes redundancy, but it could be confusing to deal with this added complexity, in light of subordinate use cases, use case versions, and tracing of requirements.  Would the requirement for &#8220;User submits application&#8221; be traced to UC01, or UC01, UC01A, etc.?  You would trace to all variations for which the requirement is <em>required</em>.  Each country-specific implementation team can then look at each use case and say &#8220;Do we use the global one, or do we have a special variation?&#8221;   The team would then know precisely which requirements they had to implement.</p>
<p>Another approach would be to define the <em>global</em> use case &#8211; &#8220;UC01 Approve Credit&#8221;, and then for each country that has an <em>alternative process</em>, define an <em>alternate flow</em> through the use case.  This takes care of the confusion with subordinate use cases and versioning.  And it reduces the need for redundant tracing.  But it makes the individual use case harder to read.  And since most software today only traces requirements to use cases (and not individual steps in the use cases), it makes it harder for the implementation teams to know which requirements they have to implement for their countries variation.<br />
Ultimately, we document requirements to foster improved communication.  An approach that makes a use case harder to read (and approve), or harder to implement (or trace dependencies) is not as good as one that might make repository-maintenance more difficult, while improving the ability of the teams to understand both the contents and the dependencies of use cases.</p>
<h2>Summary</h2>
<p>Global businesses have variations in processes and use cases in the different countries where they do business.  Documenting the individual processes leads to redundant documentation of requirements, makes it more difficult to analyze the processes (including reporting and accounting), and does not help in standardization of practices.</p>
<p>Abstracting rules, and finding commonalities in process patterns allows for consolidation of process documentation &#8211; which improves communication and analysis of requirements.</p>
<p>Utilizing <em>alternate use cases</em> to represent when individual companies or regions deviate from the global <em>standard</em> allows businesses to deviate their processes when needed, while minimizing the impact on making and managing changes to the processes across the organization.  It also provides a framework for analysis, tracking, and encouragement of standardization of processes across a multi-national company.</p>

<div class="tweetthis" style="text-align:left;"><p> <a target="_blank" rel="nofollow" class="tt" href="http://twitter.com/intent/tweet?text=By+%40sehlhorst%3A+Global+Processes+and+Business+Rules+http%3A%2F%2Fbit.ly%2FfBAIrB+" title="Post to Twitter"><img class="nothumb" src="http://tynerblain.com/blog/wp-content/plugins/tweet-this/icons/en/twitter/tt-twitter-big1.png" alt="Post to Twitter" /></a> <a target="_blank" rel="nofollow" class="tt" href="http://www.facebook.com/share.php?u=http://tynerblain.com/blog/2007/09/25/global-processes-and-business-rules/&amp;t=Global+Processes+and+Business+Rules" title="Post to Facebook"><img class="nothumb" src="http://tynerblain.com/blog/wp-content/plugins/tweet-this/icons/en/facebook/tt-facebook-big4.png" alt="Post to Facebook" /></a></p></div>]]></content:encoded>
			<wfw:commentRss>http://tynerblain.com/blog/2007/09/25/global-processes-and-business-rules/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Elicitation Techniques for Processes, Rules, and Requirements</title>
		<link>http://tynerblain.com/blog/2007/09/13/elicitation-techniques-2/</link>
		<comments>http://tynerblain.com/blog/2007/09/13/elicitation-techniques-2/#comments</comments>
		<pubDate>Fri, 14 Sep 2007 04:17:49 +0000</pubDate>
		<dc:creator>Scott Sehlhorst</dc:creator>
				<category><![CDATA[Business Analysis]]></category>
		<category><![CDATA[Business Process Modeling]]></category>
		<category><![CDATA[Business Rules]]></category>
		<category><![CDATA[Product Management]]></category>
		<category><![CDATA[Requirements]]></category>
		<category><![CDATA[Requirements gathering]]></category>
		<category><![CDATA[business rules elicitation]]></category>
		<category><![CDATA[effectiveness of elicitation]]></category>
		<category><![CDATA[elicitation techniques]]></category>
		<category><![CDATA[gathering business rules]]></category>
		<category><![CDATA[gathering requirements]]></category>
		<category><![CDATA[managing data]]></category>
		<category><![CDATA[process definition]]></category>
		<category><![CDATA[process definition techniques]]></category>
		<category><![CDATA[requirements elicitation]]></category>
		<category><![CDATA[requirements gathering techniques]]></category>
		<category><![CDATA[rules elicitation]]></category>
		<category><![CDATA[rules gathering techniques]]></category>

		<guid isPermaLink="false">http://tynerblain.com/blog/2007/09/13/elicitation-techniques-2/</guid>
		<description><![CDATA[topsyWidgetPreload({ "url": "http%3A%2F%2Ftynerblain.com%2Fblog%2F2007%2F09%2F13%2Felicitation-techniques-2%2F", "style": "big", "title": "Elicitation Techniques for Processes, Rules, and Requirements" }); Each elicitation technique we have in our toolbox is a tool. But not every elicitation job is the same. If we have a hammer, we might be working with nails, or screws, or even an egg. In our analysis, we have [...]]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_blue" style="float: right;margin-left: 0.75em; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Ftynerblain.com%252Fblog%252F2007%252F09%252F13%252Felicitation-techniques-2%252F%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22Elicitation%20Techniques%20for%20Processes%2C%20Rules%2C%20and%20Requirements%22%20%7D);"><script type="text/javascript">topsyWidgetPreload({ "url": "http%3A%2F%2Ftynerblain.com%2Fblog%2F2007%2F09%2F13%2Felicitation-techniques-2%2F", "style": "big", "title": "Elicitation Techniques for Processes, Rules, and Requirements" });</script></div>
<p><img title="hammer and egg" alt="hammer and egg" src="http://sehlhorst.smugmug.com/photos/195382781-M.jpg" /></p>
<p>Each elicitation technique we have in our toolbox is a tool.  But not every elicitation job is the same.  If we have a hammer, we might be working with nails, or screws, or even an egg.  In our analysis, we have to develop a deep understanding of our customer&#8217;s business(es).  And that means we need to understand not only the goals and ROI, but the processes, rules, and requirements.  Which is the right tool for each job?</p>
<p><span id="more-569"></span></p>
<h3>Elicitation Techniques</h3>
<p>The BABoK (Business Analyst Body of Knowledge) identifies ten different methods of gathering information.  That list is a good one for describing the <em>complete</em> tool set that business analysts should have for elicitation.  The same techniques are valuable for product managers too.</p>
<p>We wrote about those techniques almost a year ago, from a <a title="Techniques for gathering requirements" href="http://tynerblain.com/blog/2006/11/21/ten-requirements-gathering-techniques/">requirements gathering perspective</a>.  Check out that article for more details, but here&#8217;s the short list:</p>
<ol type="1" start="1" style="margin-top: 0in">
<li class="MsoNormal">Brainstorming</li>
<li class="MsoNormal">Document      Analysis</li>
<li class="MsoNormal">Focus      Group</li>
<li class="MsoNormal">Interface      Analysis</li>
<li class="MsoNormal">Interview</li>
<li class="MsoNormal">Observation</li>
<li class="MsoNormal">Prototyping</li>
<li class="MsoNormal">Requirements      Workshop</li>
<li class="MsoNormal">Reverse      Engineering</li>
<li class="MsoNormal">Survey</li>
</ol>
<h2>Different Views of the Business</h2>
<p>Processes, requirements, and rules all represent <a title="Why separate rules from requirements" href="http://tynerblain.com/blog/2007/09/11/why-separate-rules-from-requirements/">different elements of how the business works</a>, or how software must work to support the business.  The most obvious distinction is one of perspective.<br />
To oversimplify a little, some rules define the regulations and policies that constrain how a business operates.  Some rules represent calculations, inferences, or enable actions that provide some precision about the business operates at a greater level of precision.</p>
<p>Processes represent a <em>business</em> design decision by the company.  Given a set of goals and constraints (both &#8220;rule constraints&#8221; and practical ones &#8211; resources, costs, market forces, etc), processes are <em>designed</em> to achieve business objectives.  They generally manifest as procedural instructions for the business.  Note that they should be modeled at a higher level of detail than &#8220;open this file, walk down to purchasing&#8230;&#8221;</p>
<p>Requirements are an articulation of what a tool (in our case, a software product) must do when it is used in one of the business processes.  The <em>design</em> of those processes has an impact on the requirements of the software.  The rules that constrain the business (and by extension, the processes) must be enforced within the software.</p>
<p>Ultimately, we have to understand all three to create successful software.</p>
<h2>Different Drivers of Change</h2>
<p>A more subtle difference is in recognizing that processes, rules, and requirements change differently.  Each class of artifacts changes for different reasons, on a different time scale.</p>
<p><em>Policy</em> rules generally change as top-down mandates, or external forces.  State or federal regulation changes can affect how a company does business.  The Sarbanes-Oxley act has driven massive changes in how companies operate.  These are relatively infrequent, but sweeping changes.  Their effects cascade through everything the business does (and therefore everything that is required of the tools used to operate the business).</p>
<p><em>Decision</em> rules generally change as part of feedback loops in processes.  Consider the set of rules that an insurance provider uses for determining what premium to charge for a given policy.  These rules are so extensive that they are maintained in rate tables, or other complex rules-calculation systems.  An insurance company will have a department who&#8217;s responsibility is to maximize the profits that come from setting premiums.  That means that they will tweak the rules in their rate table on a regular basis &#8211; like an ongoing science experiment.  Predict, modify, inspect, repeat.</p>
<p>Process changes can happen as a result of policy changes, but more likely, they happen because of business re-engineering.  This is the same feedback loop that affects low level rules, but on a grander scale.  The big business consulting companies make <em>very</em> good money providing business consulting services.  Part of that is strategic guidance, and part of it is process re-engineering.  They look for inefficiencies and missed opportunities in processes.  The predict the ROI of changing the processes, propose changes (maybe even help manage those changes), and repeat.  These larger changes take more time than changing low-level rules.</p>
<p>Requirements articulate how the software must support the given processes, while implementing or enforcing the company&#8217;s rules.  Requirements can change because of process changes, and policy rules changes.  As long as you separate rules from requirements, then changes to low-level rules will not force changes in requirements.  And ideally, for volatile rules, will not require you to modify (and test and re-release) your software.  Requirements also change because they represent <em>our understanding</em> of the business&#8217; <em>understanding</em> of what they wanted when we gathered them.  And the business can change it&#8217;s mind, as it gets new data.  One of the arguments for iterative development is that people don&#8217;t know what they want until you&#8217;ve given them what they don&#8217;t want.  There&#8217;s some truth in that.</p>
<h3>Effectiveness of Different Techniques</h3>
<p>We&#8217;ve mentioned before that the same elicitation activities, and people, generally gather process data, rules, and requirements.  And that presents one of the challenges in managing them independently.  Here&#8217;s a table that summarizes the effectiveness of different elicitation techniques for uncovering and defining a business&#8217; processes, rules, and requirements.</p>
<p><img title="elicitation technique comparison table" alt="elicitation technique comparison table" src="http://sehlhorst.smugmug.com/photos/195381967-O.gif" /></p>
<p>Each technique has a row, and is graded <em>Consumer Reports</em> style.  Each type of artifact has a column.  A full green circle means that the technique is well suited to eliciting that information.  A half-filled circle means that you can use that technique to gather the data, but it is not as effective as the full-green-circle techniques.  An empty circle means it isn&#8217;t impossible, but you should avoid it if you can.</p>
<p>As an example, reverse engineering is ineffective at defining any of the above.  Reverse engineering can tell you what you have, but in no way can you assume that what you have is what you need.  In fact, if it were, then your customer wouldn&#8217;t need to do the new project at all.  Reverse engineering is a last resort that we sometimes have to rely on, but you should always treat it as a &#8220;starting point&#8221; &#8211; a baseline to be corrected and validated.  It is certainly going to paint an incomplete picture &#8211; and often an inaccurate one.</p>
<h2>And You?</h2>
<p>These effectiveness assessments are based on experiences with dozens of clients in the enterprise software space, over a decade of elicitation.  That means they are anecdotal.  Thousands of people will read this article [Really.  How cool is that?!].  So if you can confirm the above, or even better &#8211; correct it and share your experiences, we&#8217;ll be able to paint a much better picture.  So &#8211; join in the discussion and let us all know.</p>

<div class="tweetthis" style="text-align:left;"><p> <a target="_blank" rel="nofollow" class="tt" href="http://twitter.com/intent/tweet?text=By+%40sehlhorst%3A+Elicitation+Techniques+for+Processes%2C+Rules%2C+and+Requirements+http%3A%2F%2Fbit.ly%2Fi1QhLK+" title="Post to Twitter"><img class="nothumb" src="http://tynerblain.com/blog/wp-content/plugins/tweet-this/icons/en/twitter/tt-twitter-big1.png" alt="Post to Twitter" /></a> <a target="_blank" rel="nofollow" class="tt" href="http://www.facebook.com/share.php?u=http://tynerblain.com/blog/2007/09/13/elicitation-techniques-2/&amp;t=Elicitation+Techniques+for+Processes%2C+Rules%2C+and+Requirements" title="Post to Facebook"><img class="nothumb" src="http://tynerblain.com/blog/wp-content/plugins/tweet-this/icons/en/facebook/tt-facebook-big4.png" alt="Post to Facebook" /></a></p></div>]]></content:encoded>
			<wfw:commentRss>http://tynerblain.com/blog/2007/09/13/elicitation-techniques-2/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Free BPMN Stencils for Visio 2002</title>
		<link>http://tynerblain.com/blog/2007/04/11/bpmn-stencils-2/</link>
		<comments>http://tynerblain.com/blog/2007/04/11/bpmn-stencils-2/#comments</comments>
		<pubDate>Wed, 11 Apr 2007 15:35:05 +0000</pubDate>
		<dc:creator>Scott Sehlhorst</dc:creator>
				<category><![CDATA[Business Process Modeling]]></category>
		<category><![CDATA[bpmn]]></category>
		<category><![CDATA[managing data]]></category>
		<category><![CDATA[visio bpmn stencils]]></category>
		<category><![CDATA[visio stencils]]></category>
		<category><![CDATA[visio templates]]></category>

		<guid isPermaLink="false">http://tynerblain.com/blog/2007/04/11/bpmn-stencils-2/</guid>
		<description><![CDATA[topsyWidgetPreload({ "url": "http%3A%2F%2Ftynerblain.com%2Fblog%2F2007%2F04%2F11%2Fbpmn-stencils-2%2F", "style": "big", "title": "Free BPMN Stencils for Visio 2002" }); We created a series of Visio 2003 stencils last September to support our series of articles on BPMN. Anthony Britton has created a Visio 2002 version of the stencils for people who do not have Visio 2003 (or Visio 2007). Thanks Anthony! [...]]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_blue" style="float: right;margin-left: 0.75em; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Ftynerblain.com%252Fblog%252F2007%252F04%252F11%252Fbpmn-stencils-2%252F%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22Free%20BPMN%20Stencils%20for%20Visio%202002%22%20%7D);"><script type="text/javascript">topsyWidgetPreload({ "url": "http%3A%2F%2Ftynerblain.com%2Fblog%2F2007%2F04%2F11%2Fbpmn-stencils-2%2F", "style": "big", "title": "Free BPMN Stencils for Visio 2002" });</script></div>
<p><img title="visio template image" alt="visio template image" src="http://sehlhorst.smugmug.com/photos/98242614-M.jpg" /></p>
<p>We created a series of <a title="Visio 2003 Stencils" href="http://tynerblain.com/blog/2006/09/26/bpmn-stencils/">Visio 2003 stencils</a> last September to support our series of articles on BPMN.  Anthony Britton has created a Visio 2002 version of the stencils for people who do not have Visio 2003 (or Visio 2007).</p>
<p><span id="more-458"></span></p>
<p><strong>Thanks Anthony!</strong></p>
<p>The <a title="Visio 2002 Stencils" href="http://tynerblain.com/downloads/BPMN_1_0_Stencils.Visio2002.v1_0.zip">Visio 2002 stencils for BPMN can be downloaded here</a>, or from the <a title="Visio 2002 Stencils" href="http://tynerblain.com/blog/2006/09/26/bpmn-stencils/">original article</a>.  Any future updates will be recorded in the original article (this post will not be updated).</p>

<div class="tweetthis" style="text-align:left;"><p> <a target="_blank" rel="nofollow" class="tt" href="http://twitter.com/intent/tweet?text=By+%40sehlhorst%3A+Free+BPMN+Stencils+for+Visio+2002+http%3A%2F%2Fbit.ly%2Fh0fmyM+" title="Post to Twitter"><img class="nothumb" src="http://tynerblain.com/blog/wp-content/plugins/tweet-this/icons/en/twitter/tt-twitter-big1.png" alt="Post to Twitter" /></a> <a target="_blank" rel="nofollow" class="tt" href="http://www.facebook.com/share.php?u=http://tynerblain.com/blog/2007/04/11/bpmn-stencils-2/&amp;t=Free+BPMN+Stencils+for+Visio+2002" title="Post to Facebook"><img class="nothumb" src="http://tynerblain.com/blog/wp-content/plugins/tweet-this/icons/en/facebook/tt-facebook-big4.png" alt="Post to Facebook" /></a></p></div>]]></content:encoded>
			<wfw:commentRss>http://tynerblain.com/blog/2007/04/11/bpmn-stencils-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Use Case vs. Process Flow &#8211; Failure Handling</title>
		<link>http://tynerblain.com/blog/2007/03/19/use-case-vs-process-flow-1/</link>
		<comments>http://tynerblain.com/blog/2007/03/19/use-case-vs-process-flow-1/#comments</comments>
		<pubDate>Tue, 20 Mar 2007 03:38:02 +0000</pubDate>
		<dc:creator>Scott Sehlhorst</dc:creator>
				<category><![CDATA[Business Analysis]]></category>
		<category><![CDATA[Business Process Modeling]]></category>
		<category><![CDATA[Product Management]]></category>
		<category><![CDATA[Requirements]]></category>
		<category><![CDATA[Requirements Models]]></category>
		<category><![CDATA[Requirements gathering]]></category>
		<category><![CDATA[Use Cases]]></category>
		<category><![CDATA[failure handling]]></category>
		<category><![CDATA[managing data]]></category>
		<category><![CDATA[process modeling]]></category>
		<category><![CDATA[requirements management]]></category>
		<category><![CDATA[sample use cases]]></category>
		<category><![CDATA[use case examples]]></category>
		<category><![CDATA[use case extensions]]></category>
		<category><![CDATA[use cases]]></category>

		<guid isPermaLink="false">http://tynerblain.com/blog/2007/03/19/use-case-vs-process-flow-1/</guid>
		<description><![CDATA[Should you use use cases or process flow diagrams to document business requirements?  At some level, they both document the same thing, they just document it differently.  The best requirements will come from doing both - but what if you are forced to choose one?  What are the tradeoffs between use cases and process flows?  In this article we look at the documentation of failure handling.]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_blue" style="float: right;margin-left: 0.75em; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Ftynerblain.com%252Fblog%252F2007%252F03%252F19%252Fuse-case-vs-process-flow-1%252F%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22Use%20Case%20vs.%20Process%20Flow%20-%20Failure%20Handling%22%20%7D);"><script type="text/javascript">topsyWidgetPreload({ "url": "http%3A%2F%2Ftynerblain.com%2Fblog%2F2007%2F03%2F19%2Fuse-case-vs-process-flow-1%2F", "style": "big", "title": "Use Case vs. Process Flow - Failure Handling" });</script></div>
<p><img title="football fight" alt="football fight" src="http://sehlhorst.smugmug.com/photos/137291601-M.jpg" /><br />
Should you use use cases or process flow diagrams to document business requirements?  At some level, they both document the same thing, they just document it differently.  The best requirements will come from doing both &#8211; but what if you are forced to choose one?  What are the tradeoffs between use cases and process flows?  In this article we look at the documentation of failure handling.</p>
<p><strong>Documenting Failure Modes or Error Handling</strong></p>
<p>Failure handling is something that software has to do.  In every process or use case, there are going to be non-trivial <em>failures</em> or other unanticipated events.  The exercise of identifying those failure modes is relatively straightforward.  Deciding what to do in each situation is harder.  Documenting and communicating those requirements can be harder still.</p>
<p><strong>A Simple Use Case Example of Failure</strong><br />
Alistair Cockburn uses a simple example in <em>Writing Effective Use Cases</em>, to describe how to handle this situation with a use case extension.  We&#8217;re paraphrasing his example here:</p>
<blockquote><p>1. User requests to update her billing information.</p>
<p>2. System requests authentication of user identity.</p>
<p>3. User enters authentication information.</p>
<p>4. System authenticates user.</p>
<p>5. System presents billing information for editing.</p>
<p>6. User edits her billing information.</p>
<p>7. User indicates that edits are complete.</p>
<p>8. System updates billing information.</p>
<p>9. System acknowledges update of billing information.</p></blockquote>
<p><em>What happens if the user authentication fails?</em></p>
<p>Cockburn suggests using a use case extension to deal with this situation.  His suggestion applied to our example would read:</p>
<blockquote><p>4a. Failed authentication</p>
<p>4a1. System notifies user of failed authentication and re-requests authentication.</p>
<p>4a2. User re-enters authentication information.</p>
<p>4a3. System authenticates user.</p></blockquote>
<p>One thing you will notice is that this is a linear representation of the use case.  It includes the anticipated failure condition &#8211; failed authentication.</p>
<p><strong>Process Flow Example of Failure</strong></p>
<p>You can create the equivalent example of the <em>Edit Billing Information</em> use case as a process flow.</p>
<blockquote><p><img title="process flow example" alt="process flow example" src="http://sehlhorst.smugmug.com/photos/137329142-M.jpg" /></p>
<p>[<a title="larger process flow example" href="http://sehlhorst.smugmug.com/photos/137329134-O.png">larger image</a>]</p></blockquote>
<p>The process flow diagram provides two immediate benefits relative to the sample use case.  First, by using swim-lanes, there is a visual reinforcement of the roles of the user and the system.  The use case identifies the actor for each step as well &#8211; as text.  Second, the decision box highlights the possibility of failure, and makes it obvious that there is a desired way to address failed user authentication.  The use case shows this information, but only at the end of the prose, because of the linear structure of the text.</p>
<p>These benefits come from the <em>spatial</em> representation of the process.  By laying out a diagram in two dimensions, you increase the information density of the artifact.  The need for, and execution of authentication failure handling is more clear in this example.</p>
<p><strong>More Complex Examples</strong></p>
<p>Reviewing this simple example could lead you to conclude that there is near parity between the two documentation approaches.  Consider a process with more failure modes, or even failures within failures.  What if the system is required to lock out the user account after three failed authentication attempts?  This is a straightforward extension to either example &#8211; but the use case form begins to get &#8220;clunky&#8221; with nesting extensions.  The process flow diagram scales better to complexity.</p>
<p><strong>Generalized Conditional Branching</strong></p>
<p>This example can be generalized for any if&#8230;then situation.</p>
<p>When writing a use case, there is the often overlooked step of replacing &#8220;if&#8230;then&#8221; with &#8220;if&#8230;then&#8230;else.&#8221;  It can be easy to overlook a missing branch to a decision tree.  One of the goals of writing requirements is to <a title="Writing Complete Requirements" href="http://tynerblain.com/blog/2006/06/08/writing-complete-requirements/">write complete requirements</a>.  You want to avoid anything that makes it easy to write an incomplete requirement.</p>
<p>As a justification for making sure that you identify failure conditions and failure handling when writing use cases, Cockburn points out the completeness benefits.  He says that you may even identify new actors, processes, and business rules while defining the failure handling extension of a use case step.  We feel this is a weakness of the use case format, not a benefit of failure handling.</p>
<p><strong>Other Factors</strong></p>
<p>As with almost every element of requirements management, there are many factors to consider.  Process flows are not universally better than use cases, or vice versa.  This article focuses only on the need to deal with conditional branching.</p>
<p>For communicating the requirements associated with conditional branching in a process, a process flow diagram is better than a use case.</p>

<div class="tweetthis" style="text-align:left;"><p> <a target="_blank" rel="nofollow" class="tt" href="http://twitter.com/intent/tweet?text=By+%40sehlhorst%3A+Use+Case+vs.+Process+Flow+%E2%80%93+Failure+Handling+http%3A%2F%2Fbit.ly%2FhKD8UT+" title="Post to Twitter"><img class="nothumb" src="http://tynerblain.com/blog/wp-content/plugins/tweet-this/icons/en/twitter/tt-twitter-big1.png" alt="Post to Twitter" /></a> <a target="_blank" rel="nofollow" class="tt" href="http://www.facebook.com/share.php?u=http://tynerblain.com/blog/2007/03/19/use-case-vs-process-flow-1/&amp;t=Use+Case+vs.+Process+Flow+%E2%80%93+Failure+Handling" title="Post to Facebook"><img class="nothumb" src="http://tynerblain.com/blog/wp-content/plugins/tweet-this/icons/en/facebook/tt-facebook-big4.png" alt="Post to Facebook" /></a></p></div>]]></content:encoded>
			<wfw:commentRss>http://tynerblain.com/blog/2007/03/19/use-case-vs-process-flow-1/feed/</wfw:commentRss>
		<slash:comments>13</slash:comments>
		</item>
		<item>
		<title>2007 &#8211;  The Year of the Business Analyst</title>
		<link>http://tynerblain.com/blog/2007/01/08/year-of-the-ba/</link>
		<comments>http://tynerblain.com/blog/2007/01/08/year-of-the-ba/#comments</comments>
		<pubDate>Tue, 09 Jan 2007 03:00:50 +0000</pubDate>
		<dc:creator>Scott Sehlhorst</dc:creator>
				<category><![CDATA[Business Analysis]]></category>
		<category><![CDATA[Business Process Modeling]]></category>
		<category><![CDATA[IIBA]]></category>
		<category><![CDATA[Organizations]]></category>
		<category><![CDATA[Requirements management software]]></category>
		<category><![CDATA[ba]]></category>
		<category><![CDATA[bpmn]]></category>
		<category><![CDATA[bpmn training]]></category>
		<category><![CDATA[business analyst]]></category>
		<category><![CDATA[managing data]]></category>
		<category><![CDATA[Outsourcing]]></category>

		<guid isPermaLink="false">http://tynerblain.com/blog/2007/01/08/year-of-the-ba/</guid>
		<description><![CDATA[Outsourcing is gaining momentum not only as a way to reduce costs, but as a way to create global teams.  This trend is driving an increase in demand for business analysts.  The change in perspective is driving companies to think about how they manage their business in new ways, and driving interest in new tools for business analysts to achieve these goals.]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_blue" style="float: right;margin-left: 0.75em; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Ftynerblain.com%252Fblog%252F2007%252F01%252F08%252Fyear-of-the-ba%252F%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%222007%20-%20%20The%20Year%20of%20the%20Business%20Analyst%22%20%7D);"><script type="text/javascript">topsyWidgetPreload({ "url": "http%3A%2F%2Ftynerblain.com%2Fblog%2F2007%2F01%2F08%2Fyear-of-the-ba%2F", "style": "big", "title": "2007 -  The Year of the Business Analyst" });</script></div>
<p><img alt="champion" title="champion" src="http://sehlhorst.smugmug.com/photos/121884446-M.jpg" /></p>
<p>Outsourcing is gaining momentum not only as a way to reduce costs, but as a way to create global teams.  This trend is driving an increase in demand for business analysts.  The change in perspective is driving companies to think about how they manage their business in new ways, and driving interest in new tools for business analysts to achieve these goals.</p>
<p>Hat tip to Ryan for his <a title="The Year of the BA" href="http://accidentalbusinessanalyst.com/?p=29">article on the year of the BA</a>.  The source that Ryan found is this yahoo article on <a title="seven trends" href="http://news.yahoo.com/s/cmp/196603897">7 trends for 2007</a>.</p>
<p><strong>Trends</strong></p>
<blockquote><p>The role of the business analyst has emerged as a focal point for enterprises trying to wring more out of their automation-technology investments.[...]   Ironically, outsourcing is feeding a frenzy to bring aboard more analysts. The experience of outsourcing IT has taught firms <strong>their technology-project specifications were in much worse shape than they believed</strong>. When companies would deliver specs to outside firms and individuals who didn&#8217;t have deep experience with their existing automation solutions, the knowledge gaps became painfully apparent.</p>
<p><em> Neal McWhorter, in the </em><cite>Yahoo article (emphasis ours)</cite></p></blockquote>
<p>We&#8217;ve all <a title="Outsourcing Conversation" href="http://tynerblain.com/blog/2006/04/05/outsourcing-conversation-one-topic-two-blogs-three-cs/">talked about outsourcing</a>, and many of us have designed teams with <a title="Four Outsourcing Models" href="http://tynerblain.com/blog/2006/03/31/four-outsourcing-models-for-software-development/">different collaboration models</a> to address the communication challenges.</p>
<p>This <a title="computerworld survey" href="http://www.computerworld.com/action/article.do?command=viewArticleBasic&#038;articleId=9006699&#038;source=NLT_AM&#038;nlid=1">Computerworld article</a> suggests that business analysts are one of 5 top areas for hiring, and business process management is one of 5 top technologies being explored.</p>
<p><strong>How Business Analysts Adapt</strong></p>
<p>Neal suggests that BAs will evolve their role and responsibilities to be something analogous to a product manager.  We&#8217;ve been treating the roles similarly here &#8211; with the primary distinction being a <em>single-customer</em> focus for business analysts.</p>
<p>Neal mentions the IIBA and their new certification program as a likely means of setting expectations of and for business analysts.  Barbara <a title="IIBA Certification Dates" href="http://www.b2ttraining.com/page/business-analyst-blog/archives/70/2007-iiba-certification-exams-dates-announced">writes</a> about the upcoming <a title="2007 Schedule" href="http://www.theiiba.org/content.asp?ContentId=558">certification schedule for 2007</a>.</p>
<p><strong>Tools</strong></p>
<p>We can&#8217;t overemphasize the need to be <a title="Writing Good Requirements - 12 Rules" href="http://tynerblain.com/blog/2006/05/25/writing-good-requirements-the-big-ten-rules/">good at writing requirements first</a>, and then using tools to become more efficient second.  With that said, the increasing importance of business analysts drives the increasing importance of <a title="Don't Prevent My Success" href="http://tynerblain.com/blog/2006/10/19/dont-prevent-my-success/">helping BAs be more effective</a>.</p>
<p>Two areas where there are huge opportunities for improvement are business process modeling and requirements gathering/management.</p>
<p><strong>BPMN</strong></p>
<p>There are tools and vendors for <a title="Foundation Series on BPMN" href="http://tynerblain.com/blog/2006/07/18/foundation-series-business-process-modeling/">BPMN</a> solutions, and it looks like training is finally going to be more available in 2007.  Bruce Silver is <a title="Silver's approach" href="http://www.brsilver.com/wordpress/2006/12/18/deeper-into-simulation-part-1/">developing training</a> that uses ITP Commerce as a tool provider.  We&#8217;re currently designing a training course as well, built by extending the <a title="BPMN Articles" href="http://tynerblain.com/blog/category/business-process-modeling/">tutorial series we wrote last year</a>, using <a title="Free Visio 2003 BPMN Templates" href="http://tynerblain.com/blog/2006/09/26/bpmn-stencils/">visio stencils</a> and a vendor-agnostic approach.</p>
<p><strong>Requirements Management Software</strong></p>
<p>Today, the space can be characterized as having the following solutions available:</p>
<ul>
<li>Spend <strong>a lot</strong> on an enterprise package, and mandate that all your projects use it, in order to recover the costs.</li>
<li>Build your own solution, using spreadsheets, documents, email and other tools.</li>
</ul>
<p>We expect this to change in 2007 too.  Both of the approaches above can be cost ineffective for single-projects within a large company, SMBs looking to become more effective, and small consulting shops providing services to other firms.  There&#8217;s a lot of opportunity here for the right solution.</p>
<p><strong>Conclusion</strong></p>
<p>Is it the year of the business analyst?  The need is indisputable.  Will the C-level execs act on it?</p>

<div class="tweetthis" style="text-align:left;"><p> <a target="_blank" rel="nofollow" class="tt" href="http://twitter.com/intent/tweet?text=By+%40sehlhorst%3A+2007+%E2%80%93+The+Year+of+the+Business+Analyst+http%3A%2F%2Fbit.ly%2Fi0xXoV+" title="Post to Twitter"><img class="nothumb" src="http://tynerblain.com/blog/wp-content/plugins/tweet-this/icons/en/twitter/tt-twitter-big1.png" alt="Post to Twitter" /></a> <a target="_blank" rel="nofollow" class="tt" href="http://www.facebook.com/share.php?u=http://tynerblain.com/blog/2007/01/08/year-of-the-ba/&amp;t=2007+%E2%80%93++The+Year+of+the+Business+Analyst" title="Post to Facebook"><img class="nothumb" src="http://tynerblain.com/blog/wp-content/plugins/tweet-this/icons/en/facebook/tt-facebook-big4.png" alt="Post to Facebook" /></a></p></div>]]></content:encoded>
			<wfw:commentRss>http://tynerblain.com/blog/2007/01/08/year-of-the-ba/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Business Rules And Requirements</title>
		<link>http://tynerblain.com/blog/2006/10/18/business-rules-and-requirements/</link>
		<comments>http://tynerblain.com/blog/2006/10/18/business-rules-and-requirements/#comments</comments>
		<pubDate>Thu, 19 Oct 2006 04:00:13 +0000</pubDate>
		<dc:creator>Scott Sehlhorst</dc:creator>
				<category><![CDATA[Business Process Modeling]]></category>
		<category><![CDATA[Product Management]]></category>
		<category><![CDATA[Requirements]]></category>
		<category><![CDATA[Requirements gathering]]></category>
		<category><![CDATA[business requirements]]></category>
		<category><![CDATA[Business Rules]]></category>
		<category><![CDATA[eliciting requirements]]></category>
		<category><![CDATA[gathering business requirements]]></category>
		<category><![CDATA[gathering business rules]]></category>
		<category><![CDATA[gathering requirements]]></category>
		<category><![CDATA[managing data]]></category>
		<category><![CDATA[requirements elicitation]]></category>
		<category><![CDATA[rules]]></category>
		<category><![CDATA[rules and requirements]]></category>

		<guid isPermaLink="false">http://tynerblain.com/blog/2006/10/18/business-rules-and-requirements/</guid>
		<description><![CDATA[What is the difference between a business rule and a business requirement? Does the difference matter? A business requirement is something that is multi-customer, and a business rule represents a single customer's approach to meeting that requirement. Product managers and analysts care about both, but product managers emphasize requirements, and analysts focus more on rules.]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_blue" style="float: right;margin-left: 0.75em; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Ftynerblain.com%252Fblog%252F2006%252F10%252F18%252Fbusiness-rules-and-requirements%252F%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22Business%20Rules%20And%20Requirements%22%20%7D);"><script type="text/javascript">topsyWidgetPreload({ "url": "http%3A%2F%2Ftynerblain.com%2Fblog%2F2006%2F10%2F18%2Fbusiness-rules-and-requirements%2F", "style": "big", "title": "Business Rules And Requirements" });</script></div>
<p><img alt="No parking sign" title="No parking sign" src="http://sehlhorst.smugmug.com/photos/102685201-M.jpg" /></p>
<p>What is the difference between a business rule and a business requirement?  Does the difference matter?  A business requirement is something that is multi-customer, and a business rule represents a single customer&#8217;s approach to meeting that requirement.  Product managers and analysts care about both, but  product managers emphasize requirements, and analysts focus more on rules.</p>
<p><strong>A Simple Example</strong></p>
<p>We&#8217;ll set the stage for discussion by showing a requirement, a rule, and a design and implementation.</p>
<ul>
<li><strong>Requirement</strong> &#8211; The building will provide a measure of protection against fire damage.</li>
<li><strong>Rule</strong> &#8211; Firefighters will be assured access to the building to enable extinguishing of any fires.</li>
<li><strong>Design</strong> &#8211; The street near the fire hydrant and main entry of the building will be reserved for exclusive use of firefighters.</li>
<li><strong>Implementation</strong> &#8211; A sign will be posted in a visible location, instructing people not to park in the reserved location.</li>
</ul>
<p><strong>Background</strong></p>
<p>The debate about <a title="Reqs vs Design - which is which" href="http://tynerblain.com/blog/2006/02/11/requirements-vs-design-which-is-which-and-why/">requirements versus design</a>, and the <a title="Describing SDLC" href="http://tynerblain.com/blog/2006/01/29/describing-the-software-development-process/">level of detail of specification</a> has been an active one over the past year.  We&#8217;ve written about how you can imagine software as an onion, where implementation is wrapped in design, which is wrapped in requirements.  When we include awareness of business processes as part of what we&#8217;re doing, we can add another layer &#8211; business rules.</p>
<p>One point of confusion may be that many contracts are described as &#8220;gather requirements&#8221; when in reality, the work is &#8220;define rules appropriate to a set of predefined requirements.&#8221;  This inconsistency leads to many debates that include arguments like &#8220;that isn&#8217;t a requirement, therefore it must be design&#8221; with the response of &#8220;that isn&#8217;t design.&#8221;</p>
<p><strong>Ideation</strong></p>
<p>Moving from each layer to the next involves ideation, and exhibits concreteness.  For a given requirement, an approach can be defined for  meeting that goal, and with that approach comes rules.  For each rule, a design can be selected, and for each design, an implementation is created.</p>
<p>Each step involves ideation &#8211; making inventive choices about how to achieve that next step.  Consider our example.  We have the requirement of providing protection against fire damage.  We could choose to achieve this requirement by mandating that only non-flammable materials be used in the construction of the building, or by integrating fire suppression equipment in the building, or by optimizing the access for firefighters to the building.  Once we make that choice &#8211; an ideation step &#8211; we define the rules that express how we will achieve our goal with the selected approach.  Our rule is assured access in this example.  The design approach is to <em>reserve</em> the street near the main entry to the building.  The implementation of this &#8220;reservation&#8221; is a sign.  It could be special barricades that block access to anyone who isn&#8217;t a firefighter.</p>
<p>The point is that there are choices at each step of the way.</p>
<p>Each step becomes more concrete, more focused, and more narrowly applicable.</p>
<p><strong>Product Managers Are Market-Centric</strong></p>
<p>As a product manager, when interacting with customers to better define the needs of the market, we need to recognize that the rules are not the requirements.  In the example, access for firefighters isn&#8217;t the requirement, protection against fire damage is the requirement.  This is the level of abstraction that can be used to describe market needs.</p>
<p><strong>Business Analysts Are Customer-Centric</strong></p>
<p>A business analyst needs to understand the requirement (protection), but only in so much as it affects her company.  This allows her to explore alternative rules (access, suppression, prevention, etc.) that will achieve the requirement.</p>
<p><strong>Requirements Elicitation Can Fall Short</strong><br />
When <a title="5 Requirements Tips" href="http://tynerblain.com/blog/2006/01/14/top-five-requirements-gathering-tips/">we interview people to gather requirements</a>, they will usually talk about implementation, design, and rules.  Rarely will they describe requirements.  Users and subject matter experts (SMEs) generally talk about implementation and design (&#8220;We have a sign, because the street needs to be reserved.&#8221;).  Our <a title="How to Interview" href="http://tynerblain.com/blog/2006/01/15/how-to-interview-when-gathering-requirements/">elicitation techniques</a> and <a title="5 Listening Tips" href="http://tynerblain.com/blog/2006/01/27/top-five-ways-to-be-a-better-listener/">listening methods</a> help us identify rules by asking <em>&#8220;<a title="elicitiing requirements by asking why" href="http://tynerblain.com/blog/2005/12/13/everything-i-needed-to-know-i-forgot-in-kindergarden/">Why?</a>&#8220;</em>  (&#8220;To assure access to the building for the firefighters.&#8221;).  Without those techniques, we will only uncover implementation and design.</p>
<p><strong>Getting to Requirements From Rules </strong></p>
<p>To get to the requirements, we need to keep asking why.  (&#8220;To provide protection against fire damage.&#8221;)  If we keep asking &#8220;Why?&#8221; we will eventually get to a useless &#8220;primary goal.&#8221;  And by useless, we mean that it is a goal that is too nebulous to drive anything actionable.  Consider these possible chains of <em>why</em> questions and answers for our example:</p>
<ul>
<li>Why provide protection against fire damage?  To allow us to meet city codes.  Why does that matter?  So that we can legally rent out space in the building.  Why does that matter?  Because we need to rent the space to make a profit.  Why does that matter?  Because our shareholders demand it.</li>
<li>Why provide protection against fire damage?  To allow us to charge higher rent to tenants.  Why does that matter?  Because we need to maximize our profits.  Why?  Shareholders.</li>
</ul>
<p>Part of the art of product management is knowing when to stop.  &#8220;Protection&#8221; is actionable.  &#8220;Satisfying shareholders&#8221; and &#8220;Profit&#8221;, while laudable goals, do not provide the needed direction and detail to be actionable.</p>
<p><strong>Summary</strong></p>
<p>The line between requirements and design is broad, and is more of a region than a line.  Rules live in that region &#8211; from one perspective they embody a design approach to achieving a requirement.  From the other perspective, they represent the business requirement, in more detail.  Use elicitation techniques and ask <em>why</em> to uncover the rules and requirements.</p>

<div class="tweetthis" style="text-align:left;"><p> <a target="_blank" rel="nofollow" class="tt" href="http://twitter.com/intent/tweet?text=By+%40sehlhorst%3A+Business+Rules+And+Requirements+http%3A%2F%2Fbit.ly%2FdUSBGR+" title="Post to Twitter"><img class="nothumb" src="http://tynerblain.com/blog/wp-content/plugins/tweet-this/icons/en/twitter/tt-twitter-big1.png" alt="Post to Twitter" /></a> <a target="_blank" rel="nofollow" class="tt" href="http://www.facebook.com/share.php?u=http://tynerblain.com/blog/2006/10/18/business-rules-and-requirements/&amp;t=Business+Rules+And+Requirements" title="Post to Facebook"><img class="nothumb" src="http://tynerblain.com/blog/wp-content/plugins/tweet-this/icons/en/facebook/tt-facebook-big4.png" alt="Post to Facebook" /></a></p></div>]]></content:encoded>
			<wfw:commentRss>http://tynerblain.com/blog/2006/10/18/business-rules-and-requirements/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Free BPMN Stencils for Visio 2003 and Visio 2002</title>
		<link>http://tynerblain.com/blog/2006/09/26/bpmn-stencils/</link>
		<comments>http://tynerblain.com/blog/2006/09/26/bpmn-stencils/#comments</comments>
		<pubDate>Wed, 27 Sep 2006 04:39:43 +0000</pubDate>
		<dc:creator>Scott Sehlhorst</dc:creator>
				<category><![CDATA[Business Process Modeling]]></category>
		<category><![CDATA[bpmn stencil]]></category>
		<category><![CDATA[bpmn symbols]]></category>
		<category><![CDATA[BPMN Symbols for Visio 2003]]></category>
		<category><![CDATA[bpmn template]]></category>
		<category><![CDATA[bpmn visio stencil]]></category>
		<category><![CDATA[bpmn visio template]]></category>
		<category><![CDATA[free bpmn]]></category>
		<category><![CDATA[free bpmn tool]]></category>
		<category><![CDATA[managing data]]></category>
		<category><![CDATA[visio]]></category>
		<category><![CDATA[visio 2003]]></category>

		<guid isPermaLink="false">http://tynerblain.com/blog/2006/09/26/bpmn-stencils/</guid>
		<description><![CDATA[In support of our series of BPMN Tutorial posts, we've created a series of Visio 2003 stencils (*.vss) and a template (BPMN_Template.vst) of BPMN symbols.  Download this free resource today courtesy of Tyner Blain!]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_blue" style="float: right;margin-left: 0.75em; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Ftynerblain.com%252Fblog%252F2006%252F09%252F26%252Fbpmn-stencils%252F%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22Free%20BPMN%20Stencils%20for%20Visio%202003%20and%20Visio%202002%22%20%7D);"><script type="text/javascript">topsyWidgetPreload({ "url": "http%3A%2F%2Ftynerblain.com%2Fblog%2F2006%2F09%2F26%2Fbpmn-stencils%2F", "style": "big", "title": "Free BPMN Stencils for Visio 2003 and Visio 2002" });</script></div>
<p><img title="bpmn template screenshot" alt="bpmn template screenshot" src="http://sehlhorst.smugmug.com/photos/98242614-M.jpg" /></p>
<p>In support of our series of BPMN Tutorial posts, we&#8217;ve created a series of Visio 2003 stencils (*.vss) and a template (BPMN_Template.vst) of BPMN symbols.  Anthony Britton has created a Visio 2002 version of the free stencils &#8211; thanks Anthony!</p>
<p>Download this free resource today courtesy of Tyner Blain!</p>
<p><span id="more-291"></span></p>
<h2>BPMN</h2>
<p>We wrote an <a title="Foundation Series on BPMN" href="http://tynerblain.com/blog/2006/07/18/foundation-series-business-process-modeling/">introduction to BPMN</a> as a process diagramming approach on July 18th.  We followed that with <a title="All BPMN Articles at Tyner Blain" href="http://tynerblain.com/blog/category/business-process-modeling/">a series of 24 articles providing an introduction to diagramming with BPMN</a>.  We created stencils to support our BPMN diagram creation, and a template, to make it easy to create diagrams in Visio 2003.  With Anthony&#8217;s contribution, you can also use these stencils with Visio 2002.</p>
<h2>Stencils</h2>
<p>The 1.0 version of the stencils includes the following elements:</p>
<ul>
<li>Start, End, and Intermediate Events</li>
<li>Tasks and Subprocesses</li>
<li>Gateways</li>
<li>Flow Elements</li>
<li>Artifacts</li>
</ul>
<h2>Download</h2>
<p><a title="BPMN Symbols for Visio 2003" href="http://tynerblain.com/downloads/BPMN_1_0_Stencils.Visio2003.v1_0.zip">Download the 1.0 Version of BPMN Stencils and Template For Visio 2003 today</a>.</p>
<p>http://tynerblain.com/downloads/BPMN_1_0_Stencils.Visio2003.v1_0.zip</p>
<p><a title="Visio 2002 BPMN Stencils" href="http://tynerblain.com/downloads/BPMN_1_0_Stencils.Visio2002.v1_0.zip">Download the 1.0 Version of BPMN Stencils and Template For Visio 2002 today</a>.</p>
<p>http://tynerblain.com/downloads/BPMN_1_0_Stencils.Visio2002.v1_0.zip</p>
<h2>Usage</h2>
<p>The contents of this zip file may be <strong>freely used for personal or commercial purposes</strong>.  Modification or resale of this work is expressly prohibited without the consent of the author.</p>
<p>Redistribution/republication of these files is not permissable. Please direct people to this page for downloads.  Any future updates or corrections to the files will be made available at that location.</p>
<h2>Feedback<br />
</h2>
<h2>
<p>Please add comments with any feedback or suggestions for improvement.  Otherwise, enjoy the free stencils!</h2>

<div class="tweetthis" style="text-align:left;"><p> <a target="_blank" rel="nofollow" class="tt" href="http://twitter.com/intent/tweet?text=By+%40sehlhorst%3A+Free+BPMN+Stencils+for+Visio+2003+and+Visio+2002+http%3A%2F%2Fbit.ly%2Fi2bhGD+" title="Post to Twitter"><img class="nothumb" src="http://tynerblain.com/blog/wp-content/plugins/tweet-this/icons/en/twitter/tt-twitter-big1.png" alt="Post to Twitter" /></a> <a target="_blank" rel="nofollow" class="tt" href="http://www.facebook.com/share.php?u=http://tynerblain.com/blog/2006/09/26/bpmn-stencils/&amp;t=Free+BPMN+Stencils+for+Visio+2003+and+Visio+2002" title="Post to Facebook"><img class="nothumb" src="http://tynerblain.com/blog/wp-content/plugins/tweet-this/icons/en/facebook/tt-facebook-big4.png" alt="Post to Facebook" /></a></p></div>]]></content:encoded>
			<wfw:commentRss>http://tynerblain.com/blog/2006/09/26/bpmn-stencils/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>Cost Reduction Potential</title>
		<link>http://tynerblain.com/blog/2006/09/25/cost-reduction-potential/</link>
		<comments>http://tynerblain.com/blog/2006/09/25/cost-reduction-potential/#comments</comments>
		<pubDate>Tue, 26 Sep 2006 05:35:17 +0000</pubDate>
		<dc:creator>Scott Sehlhorst</dc:creator>
				<category><![CDATA[Business Process Modeling]]></category>
		<category><![CDATA[Requirements]]></category>
		<category><![CDATA[Requirements gathering]]></category>
		<category><![CDATA[managing data]]></category>
		<category><![CDATA[Prioritization]]></category>
		<category><![CDATA[process engineering]]></category>
		<category><![CDATA[process re-engineering]]></category>
		<category><![CDATA[process reengineering]]></category>

		<guid isPermaLink="false">http://tynerblain.com/blog/2006/09/25/cost-reduction-potential/</guid>
		<description><![CDATA[All process improvements are not created equal. How should we select which processes (or process steps) to improve? How do we approach this for a really large migration project? Start with understanding the potential for improvement and then narrow it down from there.]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_blue" style="float: right;margin-left: 0.75em; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Ftynerblain.com%252Fblog%252F2006%252F09%252F25%252Fcost-reduction-potential%252F%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22Cost%20Reduction%20Potential%22%20%7D);"><script type="text/javascript">topsyWidgetPreload({ "url": "http%3A%2F%2Ftynerblain.com%2Fblog%2F2006%2F09%2F25%2Fcost-reduction-potential%2F", "style": "big", "title": "Cost Reduction Potential" });</script></div>
<p><img alt="roulette wheel" title="roulette wheel" src="http://sehlhorst.smugmug.com/photos/98012757-M.jpg" /></p>
<p>All process improvements are not created equal.  How should we select which processes (or process steps) to improve?  How do we approach this for a really large migration project?  Start with understanding the <em>potential for improvement</em> and then narrow it down from there.</p>
<p><strong>The Basic Concept</strong></p>
<p>When re-engineering a business process, ultimately we want to maximize the ROI of our improvements.  That means understanding the costs of today&#8217;s process, the costs of tomorrow&#8217;s process, and the costs of creating and transitioning to the new process.  On a large project, this can be a herculean task.  We don&#8217;t have enough time to do all the math.  We don&#8217;t want to get paralyzed with analysis activities.  Where should we start?</p>
<p>We should start with the processes that have the highest <em>potential</em> for improvement.  Since profit can be simplified to a simple equation of savings minus deployment costs, we should start by finding the processes (or process steps) with the highest initial costs (and therefore the highest potential savings).</p>
<p><strong>A Simplification</strong></p>
<p>To simplify the presentation of this idea, we will ignore probabilistic costs (risks, errors, modeling) &#8211; not because they aren&#8217;t relevant, but because the cloud the issue.  Imagine for the rest of this article that the only costs in a process are operating costs.  The same approach can be extended and refined to include other very real costs.</p>
<p>We will also use an example that depicts process steps &#8211; it could easily depict processes.  The only difference is the level of detail.  On really large projects, use this technique to identify <em>high potential</em> processes, then drill down into them to identify <em>high potential</em> process steps.</p>
<p><strong>Potential</strong></p>
<p>To calculate potential, we calculate the costs of existing process steps.  Consider the following simple (existing) process:</p>
<p><img alt="simple process" title="simple process" src="http://sehlhorst.smugmug.com/photos/98016887-M.png" /></p>
<p>The process has five steps, A through E.  Step B is a decision, meaning that some times we execute step C, and other times we execute steps D and E.</p>
<p>We want to know which step of the process to focus on improving &#8211; so we have to identify the step with the greatest potential for savings.</p>
<p>There is a simple formula for defining the cost of any step in the process.</p>
<blockquote><p>Frequency x Effort x Burden x Period</p>
<ul>
<li>Frequency (number of occurences per unit of time)</li>
<li>Effort (units of time spent in the task)</li>
<li>Burden (money per unit of time)</li>
<li>Period (unit of time for the analysis)</li>
</ul>
</blockquote>
<p>We can represent this with a simple template of a spreadsheet.</p>
<p><img alt="template" title="template" src="http://sehlhorst.smugmug.com/photos/98017306-M.jpg" /></p>
<p><strong>Sample Data</strong></p>
<p>By creating sample data for each input, and calculating the cost, we can compare the potential for each step in the process.</p>
<p><img alt="sample data" title="sample data" src="http://sehlhorst.smugmug.com/photos/98017299-M.jpg" /></p>
<p>If we were to ignore frequency information, then step C would appear to have the most potential, because it has the highest &#8220;per occurence-cost (with an effort of 5 hrs at $20 / hr).  However, by recognizing that step C is only executed 10% of the time, we see that the cost of step D is actually the highest (at $36,000 per year).</p>
<p><img alt="real data" title="real data" src="http://sehlhorst.smugmug.com/photos/98017300-M.jpg" /></p>
<p><strong>Interpretation</strong></p>
<p>Our interpretation is that step D has the greatest <em>potential</em> for savings, because it has the highest cost.  Steps A and E come are next, followed by step C.  Step B is so cheap that it isn&#8217;t likely to be worth evaluating.</p>
<p><strong>Next Step</strong></p>
<p>The next step is to propose a replacement for the highest potential step (D).  Alternately, we may look for a way to combine steps D and E with a single replacement (as mentioned in this <a title="processes are not isolated" href="http://tynerblain.com/blog/2006/09/19/before-and-after/">article about process improvement</a>).  After exploring this solution approach, we would look at steps A and E as candidates for replacement.  Estimating the costs of replacing these steps is the next thing we do.  The costs of performing the steps today, minus the costs of performing the new steps in the future (plus the development and transition costs) determine if we should consider this as a step for replacement.</p>
<p>We will only consider those steps where the profitability of change  exceeds our <a title="NPV and hurdle rate" href="http://tynerblain.com/blog/2006/03/05/definition-of-npv-net-present-value/">hurdle rate</a> for investment.</p>
<p>Once we have profit data for each proposed step change, we can prioritize these changes, and then schedule them in conjunction with the skills of our development team.</p>
<p><strong>Strategic Change Loophole</strong></p>
<p>Executives like loopholes.  Perhaps because their accountants find so many for them.  We have a loophole here too &#8211; a process step may need to get replaced because of internal office politics, or for &#8220;strategic&#8221; reasons.  We need to make sure our stakeholders have a way to include financially excluded choices.</p>
<p><strong>Summary</strong></p>
<p>Identify the most expensive processes to run.  Determine ways to replace them.  Calculate <a title="ROI definition" href="http://tynerblain.com/blog/2006/02/01/definition-of-roi-return-on-investment/">ROI</a> and use it to <a title="prioritization" href="http://tynerblain.com/blog/2006/01/18/prioritizing-requirements-three-techniques/">drive prioritization</a>.</p>

<div class="tweetthis" style="text-align:left;"><p> <a target="_blank" rel="nofollow" class="tt" href="http://twitter.com/intent/tweet?text=By+%40sehlhorst%3A+Cost+Reduction+Potential+http%3A%2F%2Fbit.ly%2FgMvaqt+" title="Post to Twitter"><img class="nothumb" src="http://tynerblain.com/blog/wp-content/plugins/tweet-this/icons/en/twitter/tt-twitter-big1.png" alt="Post to Twitter" /></a> <a target="_blank" rel="nofollow" class="tt" href="http://www.facebook.com/share.php?u=http://tynerblain.com/blog/2006/09/25/cost-reduction-potential/&amp;t=Cost+Reduction+Potential" title="Post to Facebook"><img class="nothumb" src="http://tynerblain.com/blog/wp-content/plugins/tweet-this/icons/en/facebook/tt-facebook-big4.png" alt="Post to Facebook" /></a></p></div>]]></content:encoded>
			<wfw:commentRss>http://tynerblain.com/blog/2006/09/25/cost-reduction-potential/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Process 2006 &#8211; Day 1 by Sandy Kemsley</title>
		<link>http://tynerblain.com/blog/2006/09/21/process-2006-day-1/</link>
		<comments>http://tynerblain.com/blog/2006/09/21/process-2006-day-1/#comments</comments>
		<pubDate>Fri, 22 Sep 2006 03:16:23 +0000</pubDate>
		<dc:creator>Scott Sehlhorst</dc:creator>
				<category><![CDATA[Business Process Modeling]]></category>
		<category><![CDATA[managing data]]></category>
		<category><![CDATA[process 2006]]></category>
		<category><![CDATA[sandy kelmsey]]></category>

		<guid isPermaLink="false">http://tynerblain.com/blog/2006/09/21/process-2006-day-1/</guid>
		<description><![CDATA[Sandy, of Column 2 fame, is blogging the Process 2006 convention "live" as it goes. Subscribe to her blog to stay on top of things. For now, here are the articles she's posted from day 1.]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_blue" style="float: right;margin-left: 0.75em; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Ftynerblain.com%252Fblog%252F2006%252F09%252F21%252Fprocess-2006-day-1%252F%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22Process%202006%20-%20Day%201%20by%20Sandy%20Kemsley%22%20%7D);"><script type="text/javascript">topsyWidgetPreload({ "url": "http%3A%2F%2Ftynerblain.com%2Fblog%2F2006%2F09%2F21%2Fprocess-2006-day-1%2F", "style": "big", "title": "Process 2006 - Day 1 by Sandy Kemsley" });</script></div>
<p>Sandy Kemsley, of Column 2 fame, is blogging the Process 2006 convention &#8220;live&#8221; as it goes.  Subscribe to her <a title="Column 2" href="http://www.ebizq.net/blogs/column2/">blog</a> to stay on top of things.  For now, here are the articles she&#8217;s posted from day 1.</p>
<ul>
<li><a title="keynote" href="http://www.ebizq.net/blogs/column2/archives/2006/09/process_2006_da.php"><span class="titletext">Peter Fingar Keynote</span></a></li>
<li><a title="martin ould" href="http://www.ebizq.net/blogs/column2/archives/2006/09/process_2006_da_1.php"><span class="titletext" /></a><a title="martin ould" href="http://www.ebizq.net/blogs/column2/archives/2006/09/process_2006_da_1.php"><span class="black">Martin Ould</span></a></li>
<li><a title="broninski" href="http://www.ebizq.net/blogs/column2/archives/2006/09/process_2006_da_2.php"><span class="titletext">Keith Harrison-Broninski</span></a></li>
<li><a title="deeks" href="http://www.ebizq.net/blogs/column2/archives/2006/09/process_2006_da_3.php"><span class="titletext">David Deeks, Sunderland University</span></a></li>
<li><a title="networking" href="http://www.ebizq.net/blogs/column2/archives/2006/09/process_2006_da_4.php"><span class="titletext">Networking</span></a></li>
<li><a title="blatter" href="http://www.ebizq.net/blogs/column2/archives/2006/09/process_2006_da_5.php"><span class="titletext">Peter Blatter, Citibank Germany</span></a></li>
<li><span class="titletext"><a title="wrapup" href="http://www.ebizq.net/blogs/column2/archives/2006/09/process_2006_da_6.php">Wrapup</a></span></li>
</ul>
<p>Some choice quotes from Sandy&#8217;s posts:</p>
<blockquote><p>&#8220;One thing that I really liked was his analogy about BPM: buying MS-Word  doesn&#8217;t make you a novelist, and buying a BPMS doesn&#8217;t make you a  process-oriented company.The technology is an important enabler, but there&#8217;s  much more to it than that.&#8221;</p>
<p>&#8220;[OMG, we just hit a slide with 249 words -- the print is getting smaller and  smaller. Keith, you're killing me!]&#8221;</p>
<p>&#8220;This is definitely the first presentation that I have ever seen, anywhere, that  quotes Winnie the Pooh, and gives an example of strategic objectives as  illustrated by Christopher Robin and Edward Bear. By the time he got to his main  case study, which was the hospital administration process around having a  vasectomy, I was wishing that he had been my prof at university.&#8221;</p>
<p>&#8220;Surprisingly, he then went on to talk about the emotional aspect of  decision-making as it relates to customer centricity: how some decisions are  almost purely emotional (like buying a convertible or having plastic surgery)  and the financial practicalities of those decisions become less important. Not  the argument that I expected from a reason-driven German banking COO, but he  posits that being a customer-centric organization is understanding the balance  between reason and emotion.&#8221;</p></blockquote>
<p>I won&#8217;t tell you which quotes are from what articles &#8211; you&#8217;ll just have to check them out to find out more about the stuff you like.  :)</p>
<p>Thanks Sandy for the blow-by-blow.</p>
<p><span class="titletext" /></p>

<div class="tweetthis" style="text-align:left;"><p> <a target="_blank" rel="nofollow" class="tt" href="http://twitter.com/intent/tweet?text=By+%40sehlhorst%3A+Process+2006+%E2%80%93+Day+1+by+Sandy+Kemsley+http%3A%2F%2Fbit.ly%2FeRDcu2+" title="Post to Twitter"><img class="nothumb" src="http://tynerblain.com/blog/wp-content/plugins/tweet-this/icons/en/twitter/tt-twitter-big1.png" alt="Post to Twitter" /></a> <a target="_blank" rel="nofollow" class="tt" href="http://www.facebook.com/share.php?u=http://tynerblain.com/blog/2006/09/21/process-2006-day-1/&amp;t=Process+2006+%E2%80%93+Day+1+by+Sandy+Kemsley" title="Post to Facebook"><img class="nothumb" src="http://tynerblain.com/blog/wp-content/plugins/tweet-this/icons/en/facebook/tt-facebook-big4.png" alt="Post to Facebook" /></a></p></div>]]></content:encoded>
			<wfw:commentRss>http://tynerblain.com/blog/2006/09/21/process-2006-day-1/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>BPMN Deadlock</title>
		<link>http://tynerblain.com/blog/2006/09/20/bpmn-deadlock/</link>
		<comments>http://tynerblain.com/blog/2006/09/20/bpmn-deadlock/#comments</comments>
		<pubDate>Thu, 21 Sep 2006 02:45:53 +0000</pubDate>
		<dc:creator>Scott Sehlhorst</dc:creator>
				<category><![CDATA[Business Process Modeling]]></category>
		<category><![CDATA[bpmn]]></category>
		<category><![CDATA[bpmn deadlock]]></category>
		<category><![CDATA[bpmn deadlock example]]></category>
		<category><![CDATA[bpmn example]]></category>
		<category><![CDATA[bpmn symbols]]></category>
		<category><![CDATA[business process modeling example]]></category>
		<category><![CDATA[business process modeling notation]]></category>
		<category><![CDATA[business process modeling symbols]]></category>
		<category><![CDATA[managing data]]></category>

		<guid isPermaLink="false">http://tynerblain.com/blog/2006/09/20/bpmn-deadlock/</guid>
		<description><![CDATA[One danger of using a precise language like BPMN to describe business processes is that you can precisely get yourself into trouble.  Deadlock (in BPMN) is a condition used to describe a process that can't be completed.  By designing (or describing) the wrong business process, you can create a process that never finishes.]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_blue" style="float: right;margin-left: 0.75em; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Ftynerblain.com%252Fblog%252F2006%252F09%252F20%252Fbpmn-deadlock%252F%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22BPMN%20Deadlock%22%20%7D);"><script type="text/javascript">topsyWidgetPreload({ "url": "http%3A%2F%2Ftynerblain.com%2Fblog%2F2006%2F09%2F20%2Fbpmn-deadlock%2F", "style": "big", "title": "BPMN Deadlock" });</script></div>
<p><img title="standoff" alt="standoff" src="http://sehlhorst.smugmug.com/photos/96031960-M.jpg" /></p>
<p>One danger of using a precise language like BPMN to describe business processes is that you can precisely get yourself into trouble.  Deadlock (in BPMN) is a condition used to describe a process that can&#8217;t be completed.  By designing (or describing) the wrong business process, you can create a process that never finishes.</p>
<p><strong>Rewarding the Pedants</strong></p>
<p>At the end of our earlier article about <a title="BPMN Compensation Events" href="http://tynerblain.com/blog/2006/09/18/bpmn-compensation-correction/">compensation events</a>, we hinted that there was another problem with the diagram we debugged.  That problem was <em>deadlock</em>.  We diagrammed a process that could never complete.  Congrats to the people who caught it!</p>
<p><strong>A Simple Deadlock Example</strong></p>
<p>Take a look at the following process diagram and see if you can identify the deadlock condition.  Here&#8217;s a hint &#8211; you might want to review <a title="Using BPMN Gateways" href="http://tynerblain.com/blog/2006/07/27/bpmn-gateways/">how gateways work in BPMN</a>.</p>
<p><img title="Deadlocked BPMN process" alt="Deadlocked BPMN process" src="http://sehlhorst.smugmug.com/photos/96021616-O.png" /></p>
<p>The process splits at an inclusive OR gateway, and then joins together with a parallel gateway.  The deadlock case (a process that can&#8217;t complete) comes from the precise nature of the definitions.</p>
<ul>
<li>Flow from an inclusive OR gateway will follow at least one, and could follow some or all of the paths that leave it.</li>
<li>Flow into a parallel gateway requires that all incoming paths be resolved before continuing</li>
</ul>
<p>When the salesman sells more than twenty cars, both paths are taken from the OR gateway, and then both paths are combined in the parallel gateway.  There is no <em>deadlock</em> condition.  We have a problem when the salesman sells twenty or fewer cars.</p>
<p>In the problem case, one of the paths (&#8220;More than 20&#8243;) is <strong>not</strong> taken by the process (the salesman does not get a bonus).  The parallel gateway still requires both paths before completing &#8211; it has no way of knowing that the bonus-path was never started (or rather, the parallel gateway doesn&#8217;t care).  So the parallel gateway will &#8220;hold up&#8221; the process until both input paths are completed.  Since the &#8220;bonus path&#8221; is never started, the parallel gateway will never be satisfied and the process will never finish.  This is what BPMN folks call <em>deadlock</em>.</p>
<p><strong>Simple Solution To A Simple Problem</strong></p>
<p>The solution for this illustrative example is as simple as the problem.</p>
<p><img title="Corrected BPMN Deadlock example" alt="Corrected BPMN Deadlock example" src="http://sehlhorst.smugmug.com/photos/96021575-O.png" /></p>
<p>The parallel gateway that joins the flows together before &#8220;Pay Bills&#8221; has been replaced with an inclusive OR gateway.  This gateway specifically waits for every path <em>that was activated</em>.  When only one path is initiated, only one path is required.  When both paths are started, then both paths must be completed before proceding.</p>
<p><strong>A More Complex Example</strong></p>
<p>This example is more along the lines of <a title="BPMN Deadlock mistake" href="http://tynerblain.com/blog/2006/09/18/bpmn-compensation-correction/">the mistake we referenced</a> in our earlier article.</p>
<p><img title="Deadlocked BPMN Process" alt="Deadlocked BPMN Process" src="http://sehlhorst.smugmug.com/photos/96351540-O.png" /></p>
<p>In this example, our actor attempts to walk and chew gum at the same time.  If he trips, he will reach one of the end events, but he won&#8217;t achive the multitasking award.  At first glance this seems acceptable &#8211; the process starts and ends, and the actor doesn&#8217;t get a multitasking award.</p>
<p>However, this process is also <em>deadlocked</em>, because of the join gateway.  The join gateway must complete both of the incoming sequence flows &#8211; but if the actor trips, the flow from the XOR gateway (trip?) will not be activated and the gateway will never complete.</p>
<p><strong>A More Complex Solution</strong></p>
<p>The key to solving this deadlock problem is to make sure that all of the paths into the parallel gateway are completed.</p>
<p><img title="BPMN Deadlock removed" alt="BPMN Deadlock removed" src="http://sehlhorst.smugmug.com/photos/96353920-O.png" /></p>
<p>The XOR gateway (trip?) is now processed after the two sequence flows are reconnected.  If the actor tripped, he will not receive the multitasking award.  If the actor didn&#8217;t trip, he would.</p>
<p><strong>Summary</strong></p>
<p>When using parallel gateways to join paths, we <strong>must</strong> make sure that all incoming paths are handled.  We can avoid the deadlock problem by replacing a parallel gateway with an inclusive OR gateway.  We can also resequence our process steps to assure that all incoming sequence flows to a parallel gateway are activated.</p>

<div class="tweetthis" style="text-align:left;"><p> <a target="_blank" rel="nofollow" class="tt" href="http://twitter.com/intent/tweet?text=By+%40sehlhorst%3A+BPMN+Deadlock+http%3A%2F%2Fbit.ly%2FfkDYQA+" title="Post to Twitter"><img class="nothumb" src="http://tynerblain.com/blog/wp-content/plugins/tweet-this/icons/en/twitter/tt-twitter-big1.png" alt="Post to Twitter" /></a> <a target="_blank" rel="nofollow" class="tt" href="http://www.facebook.com/share.php?u=http://tynerblain.com/blog/2006/09/20/bpmn-deadlock/&amp;t=BPMN+Deadlock" title="Post to Facebook"><img class="nothumb" src="http://tynerblain.com/blog/wp-content/plugins/tweet-this/icons/en/facebook/tt-facebook-big4.png" alt="Post to Facebook" /></a></p></div>]]></content:encoded>
			<wfw:commentRss>http://tynerblain.com/blog/2006/09/20/bpmn-deadlock/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Before And After &#8211; A Rule For Improving Processes</title>
		<link>http://tynerblain.com/blog/2006/09/19/before-and-after/</link>
		<comments>http://tynerblain.com/blog/2006/09/19/before-and-after/#comments</comments>
		<pubDate>Wed, 20 Sep 2006 03:51:41 +0000</pubDate>
		<dc:creator>Scott Sehlhorst</dc:creator>
				<category><![CDATA[Business Process Modeling]]></category>
		<category><![CDATA[Requirements]]></category>
		<category><![CDATA[business process reengineering]]></category>
		<category><![CDATA[managing data]]></category>
		<category><![CDATA[migration project requirements]]></category>
		<category><![CDATA[migration projects]]></category>
		<category><![CDATA[process improvement]]></category>

		<guid isPermaLink="false">http://tynerblain.com/blog/2006/09/19/before-and-after/</guid>
		<description><![CDATA[Nils proposes his rule of three boxes as a consideration when developing software or software features to improve business processes.  In short, make sure that you can actually execute the new process.  It isn't enough to create a good "replacement process" - you have to be able to transition to the new process and then back out of it.  The new process is plugged into a business ecosystem, and it must coexist with the existing processes.]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_blue" style="float: right;margin-left: 0.75em; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Ftynerblain.com%252Fblog%252F2006%252F09%252F19%252Fbefore-and-after%252F%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22Before%20And%20After%20-%20A%20Rule%20For%20Improving%20Processes%22%20%7D);"><script type="text/javascript">topsyWidgetPreload({ "url": "http%3A%2F%2Ftynerblain.com%2Fblog%2F2006%2F09%2F19%2Fbefore-and-after%2F", "style": "big", "title": "Before And After - A Rule For Improving Processes" });</script></div>
<p><img title="three fingers" alt="three fingers" src="http://sehlhorst.smugmug.com/photos/96363682-M.jpg" /></p>
<p>Nils proposes his <em>rule of three boxes</em> as a consideration when developing software or software features to improve business processes.  In short, make sure that you can actually execute the new process.  It isn&#8217;t enough to create a good &#8220;replacement process&#8221; &#8211; you have to be able to transition to the new process and then back out of it.  The new process is plugged into a business ecosystem, and it must coexist with the existing processes.</p>
<p><strong>From Nils&#8230;</strong></p>
<blockquote><p>Improving the process is all well and good. But this rule addresses the fact that processes don&#8217;t live on their own &#8211; there are processes that come before and that come after.</p>
<p><cite><a title="Three Boxes article" href="http://www.nilsnet.com/index.php?/archives/51-Rules-of-thumb-the-three-boxes.html">Nils Davis</a></cite></p></blockquote>
<p>Nils presents an easy to understand diagram of the original process (A->B->C) and the end state after replacing &#8220;B&#8221; (A->B&#8217;->C).</p>
<p>Nils also presents four common causes of friction between the new improved process and the existing processes with which it works.</p>
<ul>
<li>Platform Mismatch</li>
<li>Technology Change</li>
<li>Unfamiliar Look and Feel</li>
<li>Legacy Data Integration</li>
</ul>
<p><strong>From Tyner Blain</strong></p>
<p>Nils uses photoshop as a great example &#8211; photoshop is easily an order of magnitude better at editing images than previous manual solutions.  However, getting the image from a film negative to photoshop, and then onto paper (for use by the printer) was still hard.  This slowed the growth of photoshop (or drove growth in the digital imaging and digital printing industries).</p>
<p>In addition to considering how best to integrate B&#8217; with A and C, we should also consider A and C as &#8220;fair game&#8221; for re-engineering.  We should consider the possibility of going from {A->B->C} to {A->D} or {D->C} or just {D}.</p>
<p>By keeping our requirements at the proper level of abstraction (<a title="Requirements vs Design" href="http://tynerblain.com/blog/2006/02/11/requirements-vs-design-which-is-which-and-why/">not design</a> and <a title="Definition of ROI" href="http://tynerblain.com/blog/2006/02/01/definition-of-roi-return-on-investment/">value focused</a>), we can question the importance of replacing each element of the previous process.  We can also develop an understanding of why the original process was put in place, and how best to modify it.  This is a great approach when dealing with <a title="Migration Project Software Requirements" href="http://tynerblain.com/blog/2006/03/09/software-requirements-for-migration-projects/">migration projects</a>.</p>
<p>Another consideration is change management &#8211; what does our customer have to do when migrating from their old process to our new one?  Perhaps the change management should break that transition down into stages (e.g. initial dual systems, then mixed systems, then finally a new system).</p>
<p><strong>Conclusion</strong></p>
<p>Make sure you&#8217;ve targeted the highest priority problems to fix.  Then make sure the solution can be integrated into the existing process.  Then determine how best to manage the transition of <em>actually running the business</em> from the old system to the new.</p>

<div class="tweetthis" style="text-align:left;"><p> <a target="_blank" rel="nofollow" class="tt" href="http://twitter.com/intent/tweet?text=By+%40sehlhorst%3A+Before+And+After+%E2%80%93+A+Rule+For+Improving+Processes+http%3A%2F%2Fbit.ly%2FfgCJ5V+" title="Post to Twitter"><img class="nothumb" src="http://tynerblain.com/blog/wp-content/plugins/tweet-this/icons/en/twitter/tt-twitter-big1.png" alt="Post to Twitter" /></a> <a target="_blank" rel="nofollow" class="tt" href="http://www.facebook.com/share.php?u=http://tynerblain.com/blog/2006/09/19/before-and-after/&amp;t=Before+And+After+%E2%80%93+A+Rule+For+Improving+Processes" title="Post to Facebook"><img class="nothumb" src="http://tynerblain.com/blog/wp-content/plugins/tweet-this/icons/en/facebook/tt-facebook-big4.png" alt="Post to Facebook" /></a></p></div>]]></content:encoded>
			<wfw:commentRss>http://tynerblain.com/blog/2006/09/19/before-and-after/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>BPMN Compensation Event Correction</title>
		<link>http://tynerblain.com/blog/2006/09/18/bpmn-compensation-correction/</link>
		<comments>http://tynerblain.com/blog/2006/09/18/bpmn-compensation-correction/#comments</comments>
		<pubDate>Tue, 19 Sep 2006 04:04:43 +0000</pubDate>
		<dc:creator>Scott Sehlhorst</dc:creator>
				<category><![CDATA[Business Process Modeling]]></category>
		<category><![CDATA[bpmn]]></category>
		<category><![CDATA[bpmn example]]></category>
		<category><![CDATA[bpmn symbols]]></category>
		<category><![CDATA[business process modeling example]]></category>
		<category><![CDATA[compensation end event]]></category>
		<category><![CDATA[compensation intermediate event]]></category>
		<category><![CDATA[end compensation event]]></category>
		<category><![CDATA[intermediate compensation event]]></category>
		<category><![CDATA[managing data]]></category>

		<guid isPermaLink="false">http://tynerblain.com/blog/2006/09/18/bpmn-compensation-correction/</guid>
		<description><![CDATA[One of our readers (thank you!) pointed out that another blogger was critiqueing one of our earlier business process modeling notation (BPMN) diagrams. Turns out we made a couple mistakes. Here's a more detailed look at the compensation end event.]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_blue" style="float: right;margin-left: 0.75em; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Ftynerblain.com%252Fblog%252F2006%252F09%252F18%252Fbpmn-compensation-correction%252F%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22BPMN%20Compensation%20Event%20Correction%22%20%7D);"><script type="text/javascript">topsyWidgetPreload({ "url": "http%3A%2F%2Ftynerblain.com%2Fblog%2F2006%2F09%2F18%2Fbpmn-compensation-correction%2F", "style": "big", "title": "BPMN Compensation Event Correction" });</script></div>
<p><img alt="bpmn diagram" title="bpmn diagram" src="http://sehlhorst.smugmug.com/photos/84231750-M.gif" /></p>
<p>One of our readers (thank you!) pointed out that another blogger was critiquing one of our earlier business process modeling notation (BPMN) diagrams.  Turns out we made a couple mistakes.  Here&#8217;s a more detailed look at the compensation end event.</p>
<p><strong>The Web-Publishing Process</strong></p>
<p>One of the great things about writing and publishing on the Tyner Blain blog is the feedback loop.  In BPMN, it looks a little like this:</p>
<p><img alt="blogging process" title="blogging process" src="http://sehlhorst.smugmug.com/photos/95927313-O.png" /></p>
<p>Usually, when a critic finds a mistake he will point it out to me directly, or traffic will come from the critic&#8217;s site, and we&#8217;ll find out via our analytics.</p>
<p>It turns out that we did make a couple mistakes, so thanks <a title="critique" href="http://www.brsilver.com/wordpress/2006/09/06/whats-wrong-with-this-picture/">Bruce </a>for pointing them out.</p>
<p><strong>First, The Mistakes</strong></p>
<p>In one of our articles on <a title="BPMN End Events" href="http://tynerblain.com/blog/2006/08/14/bpmn-end-events-2/">end events</a>, we created an example to demonstrate <em>compensation end events</em>, and we had a couple mistakes in the diagram &#8211; not too good for a tutorial.  Here&#8217;s the offending diagram, with a couple annotations in red showing the problems.</p>
<p><img alt="bpmn compensation event mistakes" title="bpmn compensation event mistakes" src="http://sehlhorst.smugmug.com/photos/95927320-O.png" /></p>
<p>These two mistakes (circled in red) indicate a mis-application of the compensation end event.</p>
<p>The compensating activity, &#8220;Record Possible CC Fraud&#8221; is a mis-application of the <a title="Intermediate compensation event" href="http://tynerblain.com/blog/2006/09/05/bpmn-intermediate-compensation/">compensation intermediate event</a>, because that task doesn&#8217;t actually <em>undo</em>, or <em>compensate</em> for the task to which it is associated (Process Credit Card).</p>
<p>The second mistake is that there are two <a title="BPMN Gateways" href="http://tynerblain.com/blog/2006/07/27/bpmn-gateways/">gateways </a>(a fork and an exclusive OR) that can be reached before the compensation end event, but no other <a title="BPMN Activities" href="http://tynerblain.com/blog/2006/07/31/bpmn-activities/">activities</a>.  The compensation events, when triggering compensation, are designed to allow you to &#8220;go backwards&#8221; in the process, and as such, expect that at least one activity is processed before deciding to compensate.  The presumption is that if compensation can be initiated without performing any other tasks, then it could happen immediately from within the task that has a compensation intermediate event on its boundary.  The gateways don&#8217;t count as activities, because they only analyze existing data.</p>
<p><strong>The Corrections</strong></p>
<p>Here&#8217;s a new example diagram, without those two errors.</p>
<p><img title="BPMN compensation event example" alt="BPMN compensation event example" src="http://sehlhorst.smugmug.com/photos/95927326-O.png" /></p>
<p>The first correction shows that the compensating task, &#8220;Record Transaction Recision&#8221;, is truly something that is done to <em>compensate</em> for recording the transaction.  The second change is that there are two distinct tasks between the activity being compensated and the compensation end event.  The first task, &#8220;Request Credit Card Charge&#8221;, sends and receives messages from the bank.  This is the task that could cause a compensation (controlled by the gateway&#8217;s analysis of the results of that request).  The second task, &#8220;Notify Customer of Failure&#8221; will also occur, but only if the bank denied the charge to the credit card.</p>
<p><strong>Summary</strong></p>
<p>Compensation events require that tasks be processed between the task being compensated and the triggering of that compensation.  Compensating tasks must <em>compensate</em> for the task to which they are associated.</p>
<p><strong>For the Truly Pedantic</strong></p>
<p>There is also a semantic concern with the original diagram &#8211; the original diagram shows that the product would be delivered, even if the credit card charge failed to go through.  This could indeed happen &#8211; when a vendor is unable to contact the bank, but unwilling to lose a sale.  Think about the old &#8220;paper charge&#8221; handheld machines &#8211; they would create a slip that records the transaction in exchange for goods or services &#8211; and only later process that transaction, which could fail.  But this is a concern, since it is very uncommon these days (only us old folks remember).</p>
<p>There is also another problem, although it may be more of a problem with the BPMN spec than the original diagram.  We&#8217;ll talk about that in a future article. [Update - it is definitely a problem with the diagram, and not the spec. - Discussion to appear in 20 Sep article]</p>

<div class="tweetthis" style="text-align:left;"><p> <a target="_blank" rel="nofollow" class="tt" href="http://twitter.com/intent/tweet?text=By+%40sehlhorst%3A+BPMN+Compensation+Event+Correction+http%3A%2F%2Fbit.ly%2Fi2sE60+" title="Post to Twitter"><img class="nothumb" src="http://tynerblain.com/blog/wp-content/plugins/tweet-this/icons/en/twitter/tt-twitter-big1.png" alt="Post to Twitter" /></a> <a target="_blank" rel="nofollow" class="tt" href="http://www.facebook.com/share.php?u=http://tynerblain.com/blog/2006/09/18/bpmn-compensation-correction/&amp;t=BPMN+Compensation+Event+Correction" title="Post to Facebook"><img class="nothumb" src="http://tynerblain.com/blog/wp-content/plugins/tweet-this/icons/en/facebook/tt-facebook-big4.png" alt="Post to Facebook" /></a></p></div>]]></content:encoded>
			<wfw:commentRss>http://tynerblain.com/blog/2006/09/18/bpmn-compensation-correction/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>BPMN Diagrams &#8211; Sequence Flow</title>
		<link>http://tynerblain.com/blog/2006/09/14/bpmn-sequence-flow/</link>
		<comments>http://tynerblain.com/blog/2006/09/14/bpmn-sequence-flow/#comments</comments>
		<pubDate>Fri, 15 Sep 2006 04:26:57 +0000</pubDate>
		<dc:creator>Scott Sehlhorst</dc:creator>
				<category><![CDATA[Business Process Modeling]]></category>
		<category><![CDATA[bpmn]]></category>
		<category><![CDATA[bpmn symbols]]></category>
		<category><![CDATA[business process modelling]]></category>
		<category><![CDATA[exception flow]]></category>
		<category><![CDATA[managing data]]></category>
		<category><![CDATA[modeling exceptions]]></category>
		<category><![CDATA[modeling flows]]></category>
		<category><![CDATA[modelling exceptions]]></category>
		<category><![CDATA[modelling flow]]></category>
		<category><![CDATA[sequence flow]]></category>

		<guid isPermaLink="false">http://tynerblain.com/blog/2006/09/14/bpmn-sequence-flow/</guid>
		<description><![CDATA[BPMN Diagrams don't use the term control flow to describe processes. They use the terms sequence flow and message flow. Within sequence flow, there are four classifications of flow.]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_blue" style="float: right;margin-left: 0.75em; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Ftynerblain.com%252Fblog%252F2006%252F09%252F14%252Fbpmn-sequence-flow%252F%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22BPMN%20Diagrams%20-%20Sequence%20Flow%22%20%7D);"><script type="text/javascript">topsyWidgetPreload({ "url": "http%3A%2F%2Ftynerblain.com%2Fblog%2F2006%2F09%2F14%2Fbpmn-sequence-flow%2F", "style": "big", "title": "BPMN Diagrams - Sequence Flow" });</script></div>
<p><img title="bpmn diagram" alt="bpmn diagram" src="http://sehlhorst.smugmug.com/photos/84231750-M.gif" /></p>
<p>BPMN Diagrams don&#8217;t use the term <em>control flow</em> to describe processes.  They use the terms <em>sequence flow</em> and <em>message flow</em>.  Within sequence flow, there are four classifications of flow.</p>
<ul>
<li>Normal Flow</li>
<li>Exception Flow</li>
<li>Link Events</li>
<li>Ad Hoc</li>
</ul>
<p>Normal flow is exactly what you would expect &#8211; flow starts at a start event, travels through activities (both tasks and subprocesses), and then ends at an end event.</p>
<p>Exception flow is the type of flow that happens when a process deviates from the normal flow.  A timer intermediate event, for example, can initiate exception flow at a specified time.  After triggering at least one activity, his exception flow may lead to a stop event or may rejoin the normal flow.</p>
<p>Link events connect processes and subprocesses together.  The &#8220;flow&#8221; that happens between two links is not represented in the diagram by the solid-arrow, but is inferred from the link events.</p>
<p>Ad Hoc flow can be considered a lack of flow, or an undefined flow.  Ad hoc flows simply indicate that the activities within a subprocess that uses ad hoc flow can be processed in any order &#8211; there are no rules associated with the sequencing of the activities.</p>
<p><strong>Normal Vs. Exception Flow</strong></p>
<p>In this business process modeling example, a worker has a daily routine.  The worker either goes to the office or works from home.  She will work all day, except to take a break for lunch, and then will enjoy her evening.  Each sequence flow in the diagram is identified as being either a normal flow or an exception flow.</p>
<p><img alt="bpmn exception flow" title="bpmn exception flow" src="http://sehlhorst.smugmug.com/photos/95218624-O.png" /><br />
The BPMN specification does not clarify exactly which flows qualify as exception flows.  It is possible that only the flow immediately attached to an intermediate boundary event is considered to be exception flow, or it could be that all flow reached via an intermediate boundary event is <em>exception</em> flow.  A third possibility would be that all flow that can be reached <em>only via an intermediate boundary event</em> should be considered to be exception flow.</p>
<blockquote><p>Exception Flow occurs outside the Normal Flow of the Process and is based upon an event (an Intermediate Event) that<br />
occurs during the performance of the Process. While Intermediate Events can be included in the Normal Flow to set<br />
delays or breaks to wait for a message, when they are attached to the boundary of an activity, either a Task or a Sub-<br />
Process (see Figure 10.53), they create Exception Flow.</p></blockquote>
<p>We propose that all flow that can only result from an exception to the normal process should be considered exception flow.</p>
<p><strong>Link Events</strong></p>
<p>Link events connect processes and subprocesses.  A link event can be an end event, or it can be an intermediate event.  Both of those articles provide detail on how link events work.  The &#8220;flow&#8221; between the first link event (leaving the current process) and the second link event (entering the new process) is considered to be a type of sequence flow, but no one talks about it that way.  It is included in the list of sequence flows for completeness, not clarity.</p>
<p><strong>Ad Hoc Flow</strong></p>
<p>Ad hoc flow, precisely, is a set of activities with no pre-defined sequence requirements.  Further, there is no specification about how many times any activity is performed.</p>
<p>The following example shows the unstructured day of our worker if she were to call in sick.  The sequence flow that enters and exits the expanded subprocess in the diagram is <em>normal</em> flow, and all possible paths within the subprocess are considered to be <em>ad hoc</em> flow.</p>
<p><img alt="bpmn ad hoc flow diagram" title="bpmn ad hoc flow diagram" src="http://sehlhorst.smugmug.com/photos/95218799-O.png" /><br />
The worker can choose to perform the tasks within the subprocess at any time, in any order, and repeating any number of times.</p>
<p><strong>Summary</strong></p>
<p>The most common sequence flow is normal flow.  Exception flow happens outside the course of the normal flow.  When flow transfers from one link event to another, it is considered to be link flow.  Ad hoc flow is the undefined flow within an ad hoc subprocess.</p>

<div class="tweetthis" style="text-align:left;"><p> <a target="_blank" rel="nofollow" class="tt" href="http://twitter.com/intent/tweet?text=By+%40sehlhorst%3A+BPMN+Diagrams+%E2%80%93+Sequence+Flow+http%3A%2F%2Fbit.ly%2Fht0REj+" title="Post to Twitter"><img class="nothumb" src="http://tynerblain.com/blog/wp-content/plugins/tweet-this/icons/en/twitter/tt-twitter-big1.png" alt="Post to Twitter" /></a> <a target="_blank" rel="nofollow" class="tt" href="http://www.facebook.com/share.php?u=http://tynerblain.com/blog/2006/09/14/bpmn-sequence-flow/&amp;t=BPMN+Diagrams+%E2%80%93+Sequence+Flow" title="Post to Facebook"><img class="nothumb" src="http://tynerblain.com/blog/wp-content/plugins/tweet-this/icons/en/facebook/tt-facebook-big4.png" alt="Post to Facebook" /></a></p></div>]]></content:encoded>
			<wfw:commentRss>http://tynerblain.com/blog/2006/09/14/bpmn-sequence-flow/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>BPMN Diagrams &#8211; Intermediate Multiple Events</title>
		<link>http://tynerblain.com/blog/2006/09/13/bpmn-intermediate-multiple/</link>
		<comments>http://tynerblain.com/blog/2006/09/13/bpmn-intermediate-multiple/#comments</comments>
		<pubDate>Thu, 14 Sep 2006 03:21:12 +0000</pubDate>
		<dc:creator>Scott Sehlhorst</dc:creator>
				<category><![CDATA[Business Process Modeling]]></category>
		<category><![CDATA[bpmn]]></category>
		<category><![CDATA[bpmn intermediate event]]></category>
		<category><![CDATA[bpmn intermediate multiple event]]></category>
		<category><![CDATA[bpmn multiple]]></category>
		<category><![CDATA[bpmn multiple intermediate event]]></category>
		<category><![CDATA[bpmn symbols]]></category>
		<category><![CDATA[intermediate event]]></category>
		<category><![CDATA[intermediate multiple event]]></category>
		<category><![CDATA[managing data]]></category>
		<category><![CDATA[multiple intermediate event]]></category>
		<category><![CDATA[process modeling]]></category>

		<guid isPermaLink="false">http://tynerblain.com/blog/2006/09/13/bpmn-intermediate-multiple/</guid>
		<description><![CDATA[We can simplify BPMN Diagrams with intermediate multiple events.  These events are combinations of different intermediate events, much like complex gateways combine different gateways.]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_blue" style="float: right;margin-left: 0.75em; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Ftynerblain.com%252Fblog%252F2006%252F09%252F13%252Fbpmn-intermediate-multiple%252F%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22BPMN%20Diagrams%20-%20Intermediate%20Multiple%20Events%22%20%7D);"><script type="text/javascript">topsyWidgetPreload({ "url": "http%3A%2F%2Ftynerblain.com%2Fblog%2F2006%2F09%2F13%2Fbpmn-intermediate-multiple%2F", "style": "big", "title": "BPMN Diagrams - Intermediate Multiple Events" });</script></div>
<p><img title="bpmn diagram" alt="bpmn diagram" src="http://sehlhorst.smugmug.com/photos/84231750-M.gif" /></p>
<p>We can simplify BPMN Diagrams with intermediate <em>multiple</em> events.  These events are combinations of different intermediate events, much like <a title="Explaining Complex Gateways" href="http://tynerblain.com/blog/2006/07/27/bpmn-gateways/">complex gateways</a> combine different gateways.</p>
<p><strong>Background</strong></p>
<p>We presented <a title="Foundation Series on BPMN" href="http://tynerblain.com/blog/2006/07/18/foundation-series-business-process-modeling/">an  introduction to BPMN diagrams</a> in July. Business analysts are often required  to document <em>as-is</em> processes and <em>to-be</em> processes. These  diagrams help identify the scope of a software project. The diagrams can also  help <a title="Top 5 Requirements Gathering Tips" href="http://tynerblain.com/blog/2006/01/14/top-five-requirements-gathering-tips/">uncover  requirements</a> that might be overlooked without diagramming the processes.</p>
<p>The BPMN specification is designed to establish a common language and  convention for creating process diagrams. This common convention allows people  who are familiar with modeling, but new to a project to avoid learning a new  diagramming language on each project or for each client. We have a link to the  official version of the spec in our introductory post (we will update that link  if and when the spec changes).</p>
<p><a title="BPMN Intermediate Events" href="http://tynerblain.com/blog/2006/08/15/bpmn-intermediate-events/">Intermediate  events</a> are one of the more unfamiliar items in the BPMN language. They also  allow for some of the cleanest, unambiguous expressions of steps in business  processes.</p>
<p><strong>Multiple Different Intermediate Events</strong></p>
<p>In our previous example of the business process model for a day trader, we had two different intermediate events that could create exception flow from the second &#8220;Watch Stock&#8221; task.  An <a title="bpmn intermediate rule event example" href="http://tynerblain.com/blog/2006/09/08/bpmn-intermediate-rule/">intermediate rule event</a> was used to prevent excessive losses or lock in a target gain on the stock transaction.  An <a title="bpmn intermediate timer event explained" href="http://tynerblain.com/blog/2006/08/28/bpmn-intermediate-timer2/">intermediate timer event</a> was used to force the day trader to sell the stock at the end of the day, if he had not already done so.</p>
<p><img title="bpmn intermediate event example" alt="bpmn intermediate event example" src="http://sehlhorst.smugmug.com/photos/93977628-O.png" /></p>
<p><strong>Simpify With An Intermediate <em>Multiple </em>Event </strong></p>
<p>We can combine the two intermediate events from the previous diagram (the rule intermediate event and the timer intermediate event) into a single <em>multiple</em> intermediate event.</p>
<p><img title="bpmn intermediate multiple event example" alt="bpmn intermediate multiple event example" src="http://sehlhorst.smugmug.com/photos/94101551-O.png" /></p>
<p>In this bpmn example, we&#8217;ve also added the possibility of receiving a message from the boss requesting that we sell the stock.  We have replaced three intermediate events  (rule, timer, and message) with a single intermediate event (multiple).</p>
<p><strong>Summary</strong></p>
<p>The multiple intermediate event can be used to consolidate more than one intermediate events into a single entity in the diagram.</p>

<div class="tweetthis" style="text-align:left;"><p> <a target="_blank" rel="nofollow" class="tt" href="http://twitter.com/intent/tweet?text=By+%40sehlhorst%3A+BPMN+Diagrams+%E2%80%93+Intermediate+Multiple+Events+http%3A%2F%2Fbit.ly%2FeM08WL+" title="Post to Twitter"><img class="nothumb" src="http://tynerblain.com/blog/wp-content/plugins/tweet-this/icons/en/twitter/tt-twitter-big1.png" alt="Post to Twitter" /></a> <a target="_blank" rel="nofollow" class="tt" href="http://www.facebook.com/share.php?u=http://tynerblain.com/blog/2006/09/13/bpmn-intermediate-multiple/&amp;t=BPMN+Diagrams+%E2%80%93+Intermediate+Multiple+Events" title="Post to Facebook"><img class="nothumb" src="http://tynerblain.com/blog/wp-content/plugins/tweet-this/icons/en/facebook/tt-facebook-big4.png" alt="Post to Facebook" /></a></p></div>]]></content:encoded>
			<wfw:commentRss>http://tynerblain.com/blog/2006/09/13/bpmn-intermediate-multiple/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>BPMN Diagrams &#8211; Hit the Links With Intermediate Events</title>
		<link>http://tynerblain.com/blog/2006/09/11/bpmn-intermediate-link/</link>
		<comments>http://tynerblain.com/blog/2006/09/11/bpmn-intermediate-link/#comments</comments>
		<pubDate>Tue, 12 Sep 2006 03:44:17 +0000</pubDate>
		<dc:creator>Scott Sehlhorst</dc:creator>
				<category><![CDATA[Business Process Modeling]]></category>
		<category><![CDATA[bpmn]]></category>
		<category><![CDATA[bpmn example]]></category>
		<category><![CDATA[bpmn symbol]]></category>
		<category><![CDATA[bpmn tutorial]]></category>
		<category><![CDATA[classical flowchart]]></category>
		<category><![CDATA[example]]></category>
		<category><![CDATA[flowchart]]></category>
		<category><![CDATA[intermediate link event]]></category>
		<category><![CDATA[intermediate link example]]></category>
		<category><![CDATA[link intermediate event]]></category>
		<category><![CDATA[managing data]]></category>

		<guid isPermaLink="false">http://tynerblain.com/blog/2006/09/11/bpmn-intermediate-link/</guid>
		<description><![CDATA[Drawing business process diagrams can be tricky.  Just getting the layout on the page to look good can be tricky.  Intermediate link events can be used to clean up diagrams.  They can also be used to jump from a specified point in one process to a specific point in another process. ]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_blue" style="float: right;margin-left: 0.75em; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Ftynerblain.com%252Fblog%252F2006%252F09%252F11%252Fbpmn-intermediate-link%252F%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22BPMN%20Diagrams%20-%20Hit%20the%20Links%20With%20Intermediate%20Events%22%20%7D);"><script type="text/javascript">topsyWidgetPreload({ "url": "http%3A%2F%2Ftynerblain.com%2Fblog%2F2006%2F09%2F11%2Fbpmn-intermediate-link%2F", "style": "big", "title": "BPMN Diagrams - Hit the Links With Intermediate Events" });</script></div>
<p><img alt="BPMN Diagram" title="BPMN Diagram" src="http://sehlhorst.smugmug.com/photos/84231750-M.gif" /></p>
<p>Drawing business process diagrams can be tricky.  Just getting the layout on the page to look good can be tricky.  Intermediate link events can be used to clean up diagrams.  They can also be used to jump from a specified point in one process to a specific point in another process.</p>
<p><strong>Background</strong></p>
<p>We presented <a title="Foundation Series on BPMN" href="http://tynerblain.com/blog/2006/07/18/foundation-series-business-process-modeling/">an  introduction to BPMN diagrams</a> in July. Business analysts are often required  to document <em>as-is</em> processes and <em>to-be</em> processes. These  diagrams help identify the scope of a software project. The diagrams can also  help <a title="Top 5 Requirements Gathering Tips" href="http://tynerblain.com/blog/2006/01/14/top-five-requirements-gathering-tips/">uncover  requirements</a> that might be overlooked without diagramming the processes.</p>
<p>The BPMN specification is designed to establish a common language and  convention for creating process diagrams. This common convention allows people  who are familiar with modeling, but new to a project to avoid learning a new  diagramming language on each project or for each client. We have a link to the  official version of the spec in our introductory post (we will update that link  if and when the spec changes).</p>
<p><a title="BPMN Intermediate Events" href="http://tynerblain.com/blog/2006/08/15/bpmn-intermediate-events/">Intermediate  events</a> are one of the more unfamiliar items in the BPMN language. They also  allow for some of the cleanest, unambiguous expressions of steps in business  processes.</p>
<p><strong>Business Process Model of a Requirements Analyst</strong></p>
<p>One of the many jobs of a requirements analyst is to document requirements.  Ideally <a title="10 rules for writing good requirements" href="http://tynerblain.com/blog/2006/05/25/writing-good-requirements-the-big-ten-rules/">writing good requirements</a>, but regardless of quality there is a process to follow.  First we review a classical flowchart of the requirements documentation writing process.<br />
<img alt="classical flowchart example of writing requirements documents" title="classical flowchart example of writing requirements documents" src="http://sehlhorst.smugmug.com/photos/93985075-O.png" /></p>
<p>The requirements analyst begins by writing a requirements document.  If she gets the document approved, she will baseline it and be done.  If the document is not approved, it may only need editing, or it may need to be started over from scratch.  If the document is edited, the approval process is repeated.  If the document is approved after editing, it will be baselined.  Otherwise, it will either be edited again or the requirements analyst will start over from scratch.</p>
<p>The &#8220;go to A&#8221; symbol and the &#8220;A&#8221; symbol work together to jump around on the same page without cluttering the diagram with too many lines (or line crossings).  This is a handy tool in classical flowcharting, and BPMN has an analogous symbol.</p>
<p><strong>BPMN Example</strong></p>
<p>In this BPMN example of the same process, we use a link intermediate event to control the jumping around.</p>
<p><img alt="bpmn link intermediate event example" title="bpmn link intermediate event example" src="http://sehlhorst.smugmug.com/photos/93985072-O.png" /></p>
<p>The requirements analyst writes a requirements document, then the flow proceeds to a <a title="bpmn gateways explained" href="http://tynerblain.com/blog/2006/07/27/bpmn-gateways/">complex gateway</a>.  If the document needs to be rewritten, <a title="Understanding bpmn normal flow" href="http://tynerblain.com/blog/2006/08/03/bpmn-flow/">flow</a> returns to the original task.  If it only needs to be edited, flow continues to the &#8220;Edit Requirements Document&#8221; <a title="How to use bpmn task examples" href="http://tynerblain.com/blog/2006/08/01/bpmn-tasks/">task</a>.  If the document has been approved, it will be baselined and then the process will end.</p>
<p>A link intermediate event follows the &#8220;Edit Requirements Document&#8221; activity in the diagram.  There is a single normal flow branch feeding into one of two link events.  When control reaches this first half of the pair of link events, it jumps to the second link intermediate event at the top of the diagram.  Flow proceeds from this link event to the complex decision gateway.</p>
<p><strong>Summary</strong></p>
<p>Using link intermediate events is just as powerful as using the &#8220;go to&#8221; symbols in a classical flowchart.</p>

<div class="tweetthis" style="text-align:left;"><p> <a target="_blank" rel="nofollow" class="tt" href="http://twitter.com/intent/tweet?text=By+%40sehlhorst%3A+BPMN+Diagrams+%E2%80%93+Hit+the+Links+With+Intermediate+Events+http%3A%2F%2Fbit.ly%2FdVIP2m+" title="Post to Twitter"><img class="nothumb" src="http://tynerblain.com/blog/wp-content/plugins/tweet-this/icons/en/twitter/tt-twitter-big1.png" alt="Post to Twitter" /></a> <a target="_blank" rel="nofollow" class="tt" href="http://www.facebook.com/share.php?u=http://tynerblain.com/blog/2006/09/11/bpmn-intermediate-link/&amp;t=BPMN+Diagrams+%E2%80%93+Hit+the+Links+With+Intermediate+Events" title="Post to Facebook"><img class="nothumb" src="http://tynerblain.com/blog/wp-content/plugins/tweet-this/icons/en/facebook/tt-facebook-big4.png" alt="Post to Facebook" /></a></p></div>]]></content:encoded>
			<wfw:commentRss>http://tynerblain.com/blog/2006/09/11/bpmn-intermediate-link/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>BPMN Diagrams &#8211; Intermediate Rule Events</title>
		<link>http://tynerblain.com/blog/2006/09/08/bpmn-intermediate-rule/</link>
		<comments>http://tynerblain.com/blog/2006/09/08/bpmn-intermediate-rule/#comments</comments>
		<pubDate>Sat, 09 Sep 2006 03:41:57 +0000</pubDate>
		<dc:creator>Scott Sehlhorst</dc:creator>
				<category><![CDATA[Business Process Modeling]]></category>
		<category><![CDATA[bpmn]]></category>
		<category><![CDATA[bpmn example]]></category>
		<category><![CDATA[bpmn symbols]]></category>
		<category><![CDATA[classical flow charting]]></category>
		<category><![CDATA[complex flowchart]]></category>
		<category><![CDATA[flowchart]]></category>
		<category><![CDATA[intermediate rule]]></category>
		<category><![CDATA[intermediate rule event]]></category>
		<category><![CDATA[intermediate rule example]]></category>
		<category><![CDATA[intermediate rules]]></category>
		<category><![CDATA[managing data]]></category>
		<category><![CDATA[rule intermediate event]]></category>

		<guid isPermaLink="false">http://tynerblain.com/blog/2006/09/08/bpmn-intermediate-rule/</guid>
		<description><![CDATA[Business process modeling is rarely applied to simplistic processes.  Real world business processes often embody complex decision making.  Complex decisions imply choices of action.  Rule intermediate events, in BPMN, are designed to express these hard ideas with easy to read diagrams.]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_blue" style="float: right;margin-left: 0.75em; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Ftynerblain.com%252Fblog%252F2006%252F09%252F08%252Fbpmn-intermediate-rule%252F%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22BPMN%20Diagrams%20-%20Intermediate%20Rule%20Events%22%20%7D);"><script type="text/javascript">topsyWidgetPreload({ "url": "http%3A%2F%2Ftynerblain.com%2Fblog%2F2006%2F09%2F08%2Fbpmn-intermediate-rule%2F", "style": "big", "title": "BPMN Diagrams - Intermediate Rule Events" });</script></div>
<p><img alt="bpmn diagram" title="bpmn diagram" src="http://sehlhorst.smugmug.com/photos/84231750-M.gif" /></p>
<p>Business process modeling is rarely applied to simplistic processes.  Real world business processes often embody complex decision making.  Complex decisions imply choices of action.  Rule intermediate events, in BPMN, are designed to express these hard ideas with easy to read diagrams.</p>
<p><strong>Background</strong></p>
<p>We presented <a title="Foundation Series on BPMN" href="http://tynerblain.com/blog/2006/07/18/foundation-series-business-process-modeling/">an  introduction to BPMN diagrams</a> in July. Business analysts are often required  to document <em>as-is</em> processes and <em>to-be</em> processes. These  diagrams help identify the scope of a software project. The diagrams can also  help <a title="Top 5 Requirements Gathering Tips" href="http://tynerblain.com/blog/2006/01/14/top-five-requirements-gathering-tips/">uncover  requirements</a> that might be overlooked without diagramming the processes.</p>
<p>The BPMN specification is designed to establish a common language and  convention for creating process diagrams. This common convention allows people  who are familiar with modeling, but new to a project to avoid learning a new  diagramming language on each project or for each client. We have a link to the  official version of the spec in our introductory post (we will update that link  if and when the spec changes).</p>
<p><a title="BPMN Intermediate Events" href="http://tynerblain.com/blog/2006/08/15/bpmn-intermediate-events/">Intermediate  events</a> are one of the more unfamiliar items in the BPMN language. They also  allow for some of the cleanest, unambiguous expressions of steps in business  processes.</p>
<p><strong>Business Process Model of a Day Trader</strong></p>
<p>We can use classical flowcharting to describe a process that a day trader (someone who buys and sells stocks during the same day, to attempt to capitalize on short-term market movements) would follow for purchasing a stock that he intends to sell by the end of the day for a quick profit.</p>
<p><img title="complex classical flowchart" alt="complex classical flowchart" src="http://sehlhorst.smugmug.com/photos/93977633-O.png" /></p>
<p>The daytrader will inspect a stock, and if a buy signal is received (based on some undefined criteria), he will purchase the stock.  If a buy signal is not received, he will continue to inspect the stock until one is received.  Once the daytrader has purchased the stock, he enters into another loop of inspecting the stock until one of three conditions occurs.  If the stock price drops by 2% or goes up by 5% he will sell the stock.  If the daytrader still owns the stock at the end of the trading day he will sell the stock.</p>
<p><strong>BPMN Example</strong></p>
<p>We can use a much simpler BPMN diagram to represent the same process.  In this diagram we will use two intermediate rule events and an intermediate timer event.</p>
<p><img title="bpmn intermediate rule event example" alt="bpmn intermediate rule event example" src="http://sehlhorst.smugmug.com/photos/93977628-O.png" /></p>
<p>The day trader starts by watching a stock.  There is an intermediate rule event attached to the boundary of the &#8220;Watch Stock&#8221; <a title="BPMN activities explained" href="http://tynerblain.com/blog/2006/07/31/bpmn-activities/">activity</a>.  Unlike the looping construct in the classical flowchart, repeatedly inspecting the stock, the BPMN activity represents a continuous activity of watching the stock.  The intermediate rule event is triggered if the buy signal is received.  This creates an exception flow that causes the day trader to buy the stock, and then immediately start watching it again.</p>
<p>The <a title="Intermediate Timer Event" href="http://tynerblain.com/blog/2006/08/28/bpmn-intermediate-timer2/">intermediate timer event</a> will trigger an exception flow to the &#8220;Sell Stock&#8221; <a title="BPMN tasks explained" href="http://tynerblain.com/blog/2006/08/01/bpmn-tasks/">task</a> if the day trader is still watching the stock at the end of the trading day.</p>
<p>The intermediate rule event will trigger an exception flow to the same &#8220;Sell Stock&#8221; task if either the 2% stop loss or the 5% profit price target is reached.</p>
<p>As an aside, we drew the exception flows both going directly into the &#8220;Sell Stock&#8221; task.  We could have drawn an <a title="Understanding BPMN gateways" href="http://tynerblain.com/blog/2006/07/27/bpmn-gateways/">inclusive (OR) gateway</a> showing the flows reconnecting into the same task.  This is an optional element, but it should be used consistently within and across diagrams used by the same people.<br />
<strong>Summary</strong></p>
<p>Intermediate rule events in BPMN can be used to represent complex decision making in a concise diagram.  When writing the <em>rules</em> for an event, keep in mind that if the rule evaluates to <em>true</em>, then the event is triggered and the flow diverts from the normal flow (aka sequence flow) to the exception flow coming out of the event.</p>

<div class="tweetthis" style="text-align:left;"><p> <a target="_blank" rel="nofollow" class="tt" href="http://twitter.com/intent/tweet?text=By+%40sehlhorst%3A+BPMN+Diagrams+%E2%80%93+Intermediate+Rule+Events+http%3A%2F%2Fbit.ly%2FdZLhFB+" title="Post to Twitter"><img class="nothumb" src="http://tynerblain.com/blog/wp-content/plugins/tweet-this/icons/en/twitter/tt-twitter-big1.png" alt="Post to Twitter" /></a> <a target="_blank" rel="nofollow" class="tt" href="http://www.facebook.com/share.php?u=http://tynerblain.com/blog/2006/09/08/bpmn-intermediate-rule/&amp;t=BPMN+Diagrams+%E2%80%93+Intermediate+Rule+Events" title="Post to Facebook"><img class="nothumb" src="http://tynerblain.com/blog/wp-content/plugins/tweet-this/icons/en/facebook/tt-facebook-big4.png" alt="Post to Facebook" /></a></p></div>]]></content:encoded>
			<wfw:commentRss>http://tynerblain.com/blog/2006/09/08/bpmn-intermediate-rule/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>BPMN Diagrams &#8211; Make It Right With Intermediate Compensation Events</title>
		<link>http://tynerblain.com/blog/2006/09/05/bpmn-intermediate-compensation/</link>
		<comments>http://tynerblain.com/blog/2006/09/05/bpmn-intermediate-compensation/#comments</comments>
		<pubDate>Wed, 06 Sep 2006 03:52:37 +0000</pubDate>
		<dc:creator>Scott Sehlhorst</dc:creator>
				<category><![CDATA[Business Process Modeling]]></category>
		<category><![CDATA[Requirements]]></category>
		<category><![CDATA[Requirements gathering]]></category>
		<category><![CDATA[bpmn]]></category>
		<category><![CDATA[bpmn symbols]]></category>
		<category><![CDATA[business process modeling symbols]]></category>
		<category><![CDATA[business process modeling technique]]></category>
		<category><![CDATA[compensation]]></category>
		<category><![CDATA[compensation event]]></category>
		<category><![CDATA[compensation intermediate event]]></category>
		<category><![CDATA[intermediate compensation event]]></category>
		<category><![CDATA[intermediate event]]></category>
		<category><![CDATA[managing data]]></category>

		<guid isPermaLink="false">http://tynerblain.com/blog/2006/09/05/bpmn-intermediate-compensation/</guid>
		<description><![CDATA[Sometimes we can't undo our actions.  Water under the bridge.  But we can make it right by doing something else to compensate.  BPMN allows us to use intermediate events to compensate for mistakes in the past.  A classic example is cancellation of a purchase.  Our example is a little more fun.]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_blue" style="float: right;margin-left: 0.75em; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Ftynerblain.com%252Fblog%252F2006%252F09%252F05%252Fbpmn-intermediate-compensation%252F%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22BPMN%20Diagrams%20-%20Make%20It%20Right%20With%20Intermediate%20Compensation%20Events%22%20%7D);"><script type="text/javascript">topsyWidgetPreload({ "url": "http%3A%2F%2Ftynerblain.com%2Fblog%2F2006%2F09%2F05%2Fbpmn-intermediate-compensation%2F", "style": "big", "title": "BPMN Diagrams - Make It Right With Intermediate Compensation Events" });</script></div>
<p><img alt="BPMN DIAGRAM" title="BPMN DIAGRAM" src="http://sehlhorst.smugmug.com/photos/84231750-M.gif" /></p>
<p>Sometimes we can&#8217;t undo our actions.  Water under the bridge.  But we can make it right by doing something else to compensate.  BPMN allows us to use intermediate events to compensate for mistakes in the past.  A classic example is cancellation of a purchase.  Our example is a little more fun.</p>
<p><strong>Background</strong></p>
<p>We presented <a title="Foundation Series on BPMN" href="http://tynerblain.com/blog/2006/07/18/foundation-series-business-process-modeling/">an  introduction to BPMN diagrams</a> in July. Business analysts are often required  to document <em>as-is</em> processes and <em>to-be</em> processes. These  diagrams help identify the scope of a software project. The diagrams can also  help <a title="Top 5 Requirements Gathering Tips" href="http://tynerblain.com/blog/2006/01/14/top-five-requirements-gathering-tips/">uncover  requirements</a> that might be overlooked without diagramming the processes.</p>
<p>The BPMN specification is designed to establish a common language and  convention for creating process diagrams. This common convention allows people  who are familiar with modeling, but new to a project to avoid learning a new  diagramming language on each project or for each client. We have a link to the  official version of the spec in our introductory post (we will update that link  if and when the spec changes).</p>
<p><a title="BPMN Intermediate Events" href="http://tynerblain.com/blog/2006/08/15/bpmn-intermediate-events/">Intermediate  events</a> are one of the more unfamiliar items in the BPMN language. They also  allow for some of the cleanest, unambiguous expressions of steps in business  processes.</p>
<p><strong>This Sounds Familiar</strong></p>
<p>In our article on <a title="bpmn compensation end event example" href="http://tynerblain.com/blog/2006/08/14/bpmn-end-events-2/"><em>end </em>compensation events</a>, we demonstrated how intermediate compensation events attached to the boundary of an activity can be used to compensate for an activity or set of activites.  The intermediate compensation event is triggered by a business process reaching an end compensation event.  Here&#8217;s the diagram from that article for a quick review.</p>
<p><img alt="bpmn compensation end event example" title="bpmn compensation end event example" src="http://sehlhorst.smugmug.com/photos/88242064-O.png" /></p>
<p>In the business process modeling example above, when an invalid card is discovered within the <a title="bpmn subprocess example" href="http://tynerblain.com/blog/2006/08/02/bpmn-subprocesses/">subprocess</a> <a title="bpmn flow example" href="http://tynerblain.com/blog/2006/08/03/bpmn-flow/">flow</a>, it triggers the compensation of the &#8220;Process Credit Card&#8221; task, with the &#8220;Record Possible CC Fraud&#8221; task.  Since this end event terminates the flow within the subprocess, the parent process then continues to the &#8220;Record Transaction&#8221; step.</p>
<p>Intermediate compensation events are handy because they allow us to compensate for transactions that can not (or should not) be undone.  We can use cancel events to truly undo steps within transactional subprocesses.  Compensation events are used when we don&#8217;t want to undo a step, but do want to record both that step and a future activity (<a title="bpmn diagram task examples" href="http://tynerblain.com/blog/2006/08/01/bpmn-tasks/">task </a>or subprocess) that compensates for the original activity.</p>
<p>[Update 20060918]</p>
<p>The example above shows a process with two misinterpretations of compensation event semantics.  <a title="Compensation event correction" href="http://tynerblain.com/blog/2006/09/18/bpmn-compensation-correction/">A detailed explanation of the mistakes</a> has been published.  First, the compensating task above does not really compensate for (undo) the associated activity.  Second, there are no additional activities between the task being compensated and the compensation end event.</p>
<p>The following example also suffers from the second of those two mistakes.</p>
<p>[End Update]</p>
<p>In the following example, our morning diner eats a breakfast burritto.  This is a step that can not be undone.  If our diner gets heartburn, he will take an antacid, which will make him feel better.  He finishes up the process by enjoying the day &#8211; either because he didn&#8217;t get heartburn, or because he did, but taking the antacid compensated for his folly.</p>
<p><img alt="bpmn diagram example of a compensation intermediate event" title="bpmn diagram example of a compensation intermediate event" src="http://sehlhorst.smugmug.com/photos/93320686-O.png" /></p>
<p><strong>Summary</strong></p>
<p>The key point to take from this is that compensation is used when we can&#8217;t <em>undo</em> a step in a process, but we can perform another action designed to neutralize the effect of the former step. [Update 20060918: Please review <a title="Correction to compensation event behavior" href="http://tynerblain.com/blog/2006/09/18/bpmn-compensation-correction/">this correction</a> to avoid the mistakes in this article]</p>

<div class="tweetthis" style="text-align:left;"><p> <a target="_blank" rel="nofollow" class="tt" href="http://twitter.com/intent/tweet?text=By+%40sehlhorst%3A+BPMN+Diagrams+%E2%80%93+Make+It+Right+With+Intermediate+Compensation+Events+http%3A%2F%2Fbit.ly%2FdUwxdq+" title="Post to Twitter"><img class="nothumb" src="http://tynerblain.com/blog/wp-content/plugins/tweet-this/icons/en/twitter/tt-twitter-big1.png" alt="Post to Twitter" /></a> <a target="_blank" rel="nofollow" class="tt" href="http://www.facebook.com/share.php?u=http://tynerblain.com/blog/2006/09/05/bpmn-intermediate-compensation/&amp;t=BPMN+Diagrams+%E2%80%93+Make+It+Right+With+Intermediate+Compensation+Events" title="Post to Facebook"><img class="nothumb" src="http://tynerblain.com/blog/wp-content/plugins/tweet-this/icons/en/facebook/tt-facebook-big4.png" alt="Post to Facebook" /></a></p></div>]]></content:encoded>
			<wfw:commentRss>http://tynerblain.com/blog/2006/09/05/bpmn-intermediate-compensation/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>BPMN Diagrams &#8211; Stop The Presses! With Intermediate Cancel Events</title>
		<link>http://tynerblain.com/blog/2006/09/04/bpmn-intermediate-cancel/</link>
		<comments>http://tynerblain.com/blog/2006/09/04/bpmn-intermediate-cancel/#comments</comments>
		<pubDate>Tue, 05 Sep 2006 03:35:09 +0000</pubDate>
		<dc:creator>Scott Sehlhorst</dc:creator>
				<category><![CDATA[Business Process Modeling]]></category>
		<category><![CDATA[Requirements]]></category>
		<category><![CDATA[Requirements gathering]]></category>
		<category><![CDATA[bpmn]]></category>
		<category><![CDATA[bpmn cancel event]]></category>
		<category><![CDATA[bpmn end process]]></category>
		<category><![CDATA[bpmn intermediate events]]></category>
		<category><![CDATA[bpmn stop process]]></category>
		<category><![CDATA[bpmn symbols]]></category>
		<category><![CDATA[business process modeling cancel]]></category>
		<category><![CDATA[cancel intermediate event]]></category>
		<category><![CDATA[classic flowchart]]></category>
		<category><![CDATA[classical flowchart]]></category>
		<category><![CDATA[classical flowcharting]]></category>
		<category><![CDATA[flowchart]]></category>
		<category><![CDATA[intermediate event]]></category>
		<category><![CDATA[managing data]]></category>

		<guid isPermaLink="false">http://tynerblain.com/blog/2006/09/04/bpmn-intermediate-cancel/</guid>
		<description><![CDATA[Business processes often need to be cancelled.  An error condition can cause a process to terminate, or an incoming message can cause a process to be terminated.  Error conditions occur within transactional subprocesses and a cancel intermediate event is used to describe any special cancellation steps.]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_blue" style="float: right;margin-left: 0.75em; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Ftynerblain.com%252Fblog%252F2006%252F09%252F04%252Fbpmn-intermediate-cancel%252F%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22BPMN%20Diagrams%20-%20Stop%20The%20Presses%21%20With%20Intermediate%20Cancel%20Events%22%20%7D);"><script type="text/javascript">topsyWidgetPreload({ "url": "http%3A%2F%2Ftynerblain.com%2Fblog%2F2006%2F09%2F04%2Fbpmn-intermediate-cancel%2F", "style": "big", "title": "BPMN Diagrams - Stop The Presses! With Intermediate Cancel Events" });</script></div>
<p><img alt="bpmn diagram" title="bpmn diagram" src="http://sehlhorst.smugmug.com/photos/84231750-M.gif" /></p>
<p>Business processes often need to be cancelled.  An <em>error condition</em> can cause a process to terminate, or an incoming message can cause a process to be terminated.  Error conditions occur within transactional subprocesses and a cancel intermediate event is used to describe any special cancellation steps.</p>
<p><strong>Background</strong></p>
<p>We presented <a title="Foundation Series on BPMN" href="http://tynerblain.com/blog/2006/07/18/foundation-series-business-process-modeling/">an  introduction to BPMN diagrams</a> in July. Business analysts are often  required to document <em>as-is</em> processes and <em>to-be</em> processes.  These diagrams help identify the scope of a software project. The diagrams can  also help <a title="Top 5 Requirements Gathering Tips" href="http://tynerblain.com/blog/2006/01/14/top-five-requirements-gathering-tips/">uncover  requirements</a> that might be overlooked without diagramming the processes.</p>
<p>The BPMN specification is designed to establish a common language and convention for creating process diagrams. This common convention allows people who are familiar with modeling, but new to a project to avoid learning a new diagramming language on each project or for each client. We have a link to the official version of the spec in our introductory post (we will update that link if and when the spec changes).</p>
<p><a title="BPMN Intermediate Events" href="http://tynerblain.com/blog/2006/08/15/bpmn-intermediate-events/">Intermediate  events</a> are one of the more unfamiliar items in the BPMN language. They also allow for some of the cleanest, unambiguous expressions of steps in business processes.</p>
<p><strong>Before Intermediate Error Events</strong></p>
<p>With classical flowcharting describing an interruptable process involves creating a couple decision boxes and a loop.  One decision box tests to see if the process is done, cycling back until it is.  The other decision box looks for an interruption, so that the flow can be diverted from the normal looping behavior.  It would look like the following example.</p>
<p><img title="example of interrupted process flow chart" alt="example of interrupted process flow chart" src="http://sehlhorst.smugmug.com/photos/92818747-O.png" /></p>
<p>In this flow, the publisher collects stories, organizes the daily edition and then begins the printing process by printing copies.  If the editor calls to interrupt the process, the publisher will stop the presses and recycle the paper that was used.  If the editor does not call, the publisher keeps printing until all the copies are complete, and then distributes the paper.</p>
<p><strong>The BPMN Way</strong></p>
<p>With BPMN we can handle the possibility of interruption a little more gracefully.  Consider the following business process modeling example of the same process using BPMN.</p>
<p><img title="bpmn diagram example of intermediate cancel event" alt="bpmn diagram example of intermediate cancel event" src="http://sehlhorst.smugmug.com/photos/92819415-O.png" /> <img align="top" title="bpmn subprocess" alt="bpmn subprocess" src="http://sehlhorst.smugmug.com/photos/92818746-O.png" /></p>
<p>The editor will again collect stories and organize the daily edition.  He will then begin the &#8220;Publish Paper&#8221; <a title="BPMN Subprocesses" href="http://tynerblain.com/blog/2006/08/02/bpmn-subprocesses/">subprocess</a>.  When that subprocess is complete, he will distribute copies of the paper &#8211; unless the printing was cancelled.  If the subprocess is cancelled, the intermediate cancel event diverts flow to the &#8220;Recycle Paper&#8221; <a title="BPMN Tasks" href="http://tynerblain.com/blog/2006/08/01/bpmn-tasks/">task</a>.</p>
<p>The expanded subprocess is drawn with double lines, indicating that it is a transaction.  Transactional subprocesses can be cancelled, and in our example, if an <a title="BPMN Intermediate Message Events" href="http://tynerblain.com/blog/2006/08/22/bpmn-intermediate-messages2/">intermediate message</a> is received from the editor during the &#8220;Print Copies&#8221; task, flow is diverted to stop the presses and cancel the subprocess.  The intermediate cancel event in the main diagram shows how the cancel end event in the subprocess is handled.  There is another example of this behavior in our article on <a title="BPMN Cancel End Events" href="http://tynerblain.com/blog/2006/08/11/bpmn-end-events-1/">BPMN cancel end events</a>.</p>
<p>Also note that there are no awkward <a title="BPMN Gateways" href="http://tynerblain.com/blog/2006/07/27/bpmn-gateways/">gateways </a>or looping flows required to represent this process.  The BPMN representation shows that the process is either completed or diverted &#8211; without requiring an artificial looping construct.<br />
<strong>Summary</strong></p>
<p>The BPMN method provides for a cleaner diagram, as well as better encapsulation.  It is clear in the BPMN diagram that the &#8220;Publish Paper&#8221; subprocess represents a distinct set of activities, where that isn&#8217;t as obvious in the classical flow chart.  This clarity could be very handy when managing or optimizing a business process &#8211; for example, outsourcing of the printing process becomes an obvious topic of discussion when using the BPMN representation.</p>

<div class="tweetthis" style="text-align:left;"><p> <a target="_blank" rel="nofollow" class="tt" href="http://twitter.com/intent/tweet?text=By+%40sehlhorst%3A+BPMN+Diagrams+%E2%80%93+Stop+The+Presses%21+With+Intermediate+Cancel+Events+http%3A%2F%2Fbit.ly%2FgHTLyH+" title="Post to Twitter"><img class="nothumb" src="http://tynerblain.com/blog/wp-content/plugins/tweet-this/icons/en/twitter/tt-twitter-big1.png" alt="Post to Twitter" /></a> <a target="_blank" rel="nofollow" class="tt" href="http://www.facebook.com/share.php?u=http://tynerblain.com/blog/2006/09/04/bpmn-intermediate-cancel/&amp;t=BPMN+Diagrams+%E2%80%93+Stop+The+Presses%21+With+Intermediate+Cancel+Events" title="Post to Facebook"><img class="nothumb" src="http://tynerblain.com/blog/wp-content/plugins/tweet-this/icons/en/facebook/tt-facebook-big4.png" alt="Post to Facebook" /></a></p></div>]]></content:encoded>
			<wfw:commentRss>http://tynerblain.com/blog/2006/09/04/bpmn-intermediate-cancel/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>BPMN Diagrams &#8211; Play Catch With Intermediate Errors</title>
		<link>http://tynerblain.com/blog/2006/09/01/bpmn-intermediate-error/</link>
		<comments>http://tynerblain.com/blog/2006/09/01/bpmn-intermediate-error/#comments</comments>
		<pubDate>Sat, 02 Sep 2006 04:46:34 +0000</pubDate>
		<dc:creator>Scott Sehlhorst</dc:creator>
				<category><![CDATA[Business Process Modeling]]></category>
		<category><![CDATA[Requirements]]></category>
		<category><![CDATA[Requirements gathering]]></category>
		<category><![CDATA[bpmn]]></category>
		<category><![CDATA[bpmn error events]]></category>
		<category><![CDATA[bpmn example]]></category>
		<category><![CDATA[bpmn intermediate events]]></category>
		<category><![CDATA[bpmn symbols]]></category>
		<category><![CDATA[bpmn tutorial]]></category>
		<category><![CDATA[classical flow charts]]></category>
		<category><![CDATA[error events]]></category>
		<category><![CDATA[flow chart]]></category>
		<category><![CDATA[flow chart examples]]></category>
		<category><![CDATA[intermediate error events]]></category>
		<category><![CDATA[managing data]]></category>
		<category><![CDATA[process modeling]]></category>

		<guid isPermaLink="false">http://tynerblain.com/blog/2006/09/01/bpmn-intermediate-error/</guid>
		<description><![CDATA[Business Processes might start out as easy-to-diagram simple processes.  Over time, these processes get more complex, as they have to deal with real-world considerations and unanticipated situations.  Things can go wrong.  Classical flow diagramming gets complex when dealing with errors or exceptions in a process, while BPMN modeling keeps things simple.]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_blue" style="float: right;margin-left: 0.75em; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Ftynerblain.com%252Fblog%252F2006%252F09%252F01%252Fbpmn-intermediate-error%252F%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22BPMN%20Diagrams%20-%20Play%20Catch%20With%20Intermediate%20Errors%22%20%7D);"><script type="text/javascript">topsyWidgetPreload({ "url": "http%3A%2F%2Ftynerblain.com%2Fblog%2F2006%2F09%2F01%2Fbpmn-intermediate-error%2F", "style": "big", "title": "BPMN Diagrams - Play Catch With Intermediate Errors" });</script></div>
<p><img alt="BPMN Diagram" title="BPMN Diagram" src="http://sehlhorst.smugmug.com/photos/84231750-M.gif" /></p>
<p>Business Processes might start out as easy-to-diagram simple processes.  Over time, these processes get more complex, as they have to deal with real-world considerations and unanticipated situations.  Things can go wrong.  Classical flow diagramming gets complex when dealing with errors or exceptions in a process, while BPMN modeling keeps things simple.</p>
<p><strong>Background</strong></p>
<p>We presented <a title="Foundation Series on BPMN" href="http://tynerblain.com/blog/2006/07/18/foundation-series-business-process-modeling/">an  introduction to BPMN diagrams</a> in July. Business analysts are often  required to document <em>as-is</em> processes and <em>to-be</em> processes.  These diagrams help identify the scope of a software project. The diagrams can  also help <a title="Top 5 Requirements Gathering Tips" href="http://tynerblain.com/blog/2006/01/14/top-five-requirements-gathering-tips/">uncover  requirements</a> that might be overlooked without diagramming the processes.</p>
<p>The BPMN specification is designed to establish a common language and  convention for creating process diagrams. This common convention allows people  who are familiar with modeling, but new to a project to avoid learning a new  diagramming language on each project or for each client. We have a link to the  official version of the spec in our introductory post (we will update that link  if and when the spec changes).</p>
<p><a title="BPMN Intermediate Events" href="http://tynerblain.com/blog/2006/08/15/bpmn-intermediate-events/">Intermediate  events</a> are one of the more unfamiliar items in the BPMN language. They also  allow for some of the cleanest, unambiguous expressions of steps in business  processes.</p>
<p><strong>Before Intermediate Error Events</strong></p>
<p>Before we look at intermediate error events, we will take a look at how the same situation would be handled with classical flow-charting.</p>
<p><strong>Original Plan</strong></p>
<p>Consider a classical flow chart model of a bank robber&#8217;s original plan for robbing a bank.</p>
<p><img alt="simple classical flow chart" title="simple classical flow chart" src="http://sehlhorst.smugmug.com/photos/92310097-M.png" /></p>
<p>The bank robber announces that he is robbing the bank, steals the money from the vault, and runs away.  The only problem is that the process is too simplistic.  If it were this easy, everyone would be robbing banks.  The robber needs to improve his plan.  Business process modeling is trivial with simplistic processes, and interesting with interesting processes.<br />
<strong>Improved Plan</strong></p>
<p>We can redesign the bank-robbery process to account for contingencies and mistakes.  The bank robber realizes that he might accidentally set of an alarm.  Further, the robber realizes that it takes time to steal the cash from the vault.  If he trips the alarm, he can still get away, if he&#8217;s already done stealing the cash.  If he&#8217;s still inside the vault when the alarm goes off, he knows he will be arrested.   And if he trips the alarm before he even gets into the vault, he can still escape, but without any money.</p>
<p><img alt="complex classical flow chart example" title="complex classical flow chart example" src="http://sehlhorst.smugmug.com/photos/92312160-O.png" /></p>
<p>This improved plan is more representative of an actual bank heist.  It also looks a lot more like a real-world business process than the original plan.  Unfortunately, the classical flow chart diagram of this process is pretty convoluted.  We have to create two parallel flows, one for possibly triggering the alarm and one for robbing the bank.  Since triggering the alarm may or may not happen, we need to represent it with two entities &#8211; a decision entity and a task.  We also have to use a combination of three entities to represent that stealing cash from the vault takes time, and if he&#8217;s still in the vault when the alarm goes off he will get arrested.</p>
<p>This business process model of a heist is more complex than it needs to be, but as simple as it can be using classical flowcharting techniques.</p>
<p><strong>Using Intermediate Error Events</strong></p>
<p>We can use BPMN intermediate error events to simplify the diagram, while describing the intent of the robber more explicitly.  For people who were following BPMN when it was still a draft proposal, the <em>error</em> intermediate event is the updated name for the <em>exception</em> intermediate event.  When you see references to &#8216;<em>exception</em>&#8216; in older documents, replace them with &#8216;<em>error</em>&#8216;.</p>
<p><img alt="BPMN diagram example of intermediate error event" title="BPMN diagram example of intermediate error event" src="http://sehlhorst.smugmug.com/photos/92308276-O.png" /></p>
<p><strong>Interpreting the Intermediate Error Events</strong></p>
<p>BPMN intermediate error events can be used in two ways &#8211; either as elements in the <a title="BPMN Sequence Flows and Message Flows" href="http://tynerblain.com/blog/2006/08/03/bpmn-flow/">sequence flow</a> of the process, or as boundary events attached to an <a title="BPMN Activities examples" href="http://tynerblain.com/blog/2006/07/31/bpmn-activities/">activity</a>.  We have an example of each in this example.</p>
<p>An intermediate error event in the sequence flow (or normal flow) <em>throws</em> an error.  An intermediate error event attached to the boundary of an activity <em>catches</em> an error.  If the robber triggers the alarm (an optional path coming out of the gateway), it <em>throws</em> an error.  The error may or may not get caught.</p>
<p>An intermediate error event attached to the boundary of an activity (either a <a title="BPMN task examples" href="http://tynerblain.com/blog/2006/08/01/bpmn-tasks/">task </a>or a <a title="BPMN subprocess examples" href="http://tynerblain.com/blog/2006/08/02/bpmn-subprocesses/">subprocess</a>) will <em>catch</em> an error <em>if that activity is being processed when the error is thrown</em>.  If the error is thrown after the activity has been completed, then it will not be caught.</p>
<p><strong>Interpreting the BPMN Diagram of a Bank Robbery</strong></p>
<p>Our robber will announce that he is robbing the bank, and by default will begin stealing cash from the vault (although he may not).  He may or may not also follow the path of triggering the alarm.  To put it another way, there are three possibilities for what happens in the <a title="BPMN gateway examples" href="http://tynerblain.com/blog/2006/07/27/bpmn-gateways/">gateway </a>when the robber reaches it (after announcing that he is robbing the bank):</p>
<ol>
<li>The robber starts stealing cash from the vault without triggering the alarm.</li>
<li>The robber triggers the alarm but does not start stealing cash from the vault (he panics and runs away).</li>
<li>The robber starts both triggers the alarm and starts stealing cash from the vault.</li>
</ol>
<p>The interesting thing about the parallel processes is that the relative timing of tasks on each thread is not specified.  The robber could trigger the alarm before or after stealing the cash, or could trigger the alarm from inside the vault.  This is where the intermediate events help us determine what happens.</p>
<p><em>If</em> the robber triggers the alarm, an error is <em>thrown</em> by the intermediate error event in the sequence flow following the &#8220;Trigger Alarm&#8221; task.  The only activity in the diagram that can <em>catch</em>  the error is the &#8220;Steal Cash From Vault&#8221; task.  Technically, the intermediate error event attached to the boundary of the activity catches the error (not the activity itself).</p>
<p>If the robber is currently in the vault when the alarm is triggered and the error is thrown, the boundary intermediate error event with catch the error and divert the flow.  The current task (&#8220;Steal Cash From Vault&#8221;) will be interrupted, and the process will move to the &#8220;Get Arrested&#8221; task.</p>
<p>If the robber has completed the &#8220;Steal Cash From Vault&#8221; task when the error is thrown, he will not change his plans &#8211; he will still escape with the money.</p>
<p>If the robber triggers the alarm before starting the &#8220;Steal Cash From Vault&#8221; task, he would presumably elect to not try and steal the cash, but just run away.  It isn&#8217;t clear (to me) what the BPMN standard would specify in this circumstance &#8211; if the error isn&#8217;t immediately caught, does it continue to exist until it is caught, or does it dissappear?  Using this example, if the alarm is tripped first,  and the robber still chooses to steal the cash from the bank, would the boundary intermediate error event <em>catch</em> the error (because it is still out there, waiting) and get the robber arrested?  Or would the robber run away with the money?</p>
<p>In the absence of an answer to this question, we could insert a gateway immediately prior to the &#8220;Steal Cash From Vault&#8221; task, that makes the robber&#8217;s choice explicit &#8211; if the alarm has been triggered already, he runs away.</p>
<p><strong>Benefits of the BPMN Approach</strong></p>
<p>This business process modeling diagram has several benefits over the classical flowcharting approach.</p>
<ul>
<li>Using intermediate error events simplifies the representation of a task that takes a while but <em>might</em> be interrupted.</li>
<li>The flow of the process (as drawn) is easier to visualize and understand.</li>
<li>The &#8220;get arrested&#8221; branch of the process is clearly identified as an <em>error</em> and not just an alternative branch.  This makes the desired process easier to distinguish from the <em>contingency paths</em>.</li>
</ul>
<p><strong>Summary</strong></p>
<p>Using intermediate error events to throw and catch errors greatly simplifies the expression of real-world processes that have contingency plans.  And most real-world processes do have backups, error-handling, and other forms of <em>alternative</em> flow.</p>

<div class="tweetthis" style="text-align:left;"><p> <a target="_blank" rel="nofollow" class="tt" href="http://twitter.com/intent/tweet?text=By+%40sehlhorst%3A+BPMN+Diagrams+%E2%80%93+Play+Catch+With+Intermediate+Errors+http%3A%2F%2Fbit.ly%2FhXGQhT+" title="Post to Twitter"><img class="nothumb" src="http://tynerblain.com/blog/wp-content/plugins/tweet-this/icons/en/twitter/tt-twitter-big1.png" alt="Post to Twitter" /></a> <a target="_blank" rel="nofollow" class="tt" href="http://www.facebook.com/share.php?u=http://tynerblain.com/blog/2006/09/01/bpmn-intermediate-error/&amp;t=BPMN+Diagrams+%E2%80%93+Play+Catch+With+Intermediate+Errors" title="Post to Facebook"><img class="nothumb" src="http://tynerblain.com/blog/wp-content/plugins/tweet-this/icons/en/facebook/tt-facebook-big4.png" alt="Post to Facebook" /></a></p></div>]]></content:encoded>
			<wfw:commentRss>http://tynerblain.com/blog/2006/09/01/bpmn-intermediate-error/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

