Process Is The Main Thing

@ Anatoly Belaychuk’s BPM Blog

Process Pattern: “Find a Victim”

Depicting process interactions with external stakeholders is a standard stumbling block for BPMN newcomers.

A typical example:

Fig.1

There are a whole bunch of errors:

  1. “Supplier” pool should be modeled as a “black box”, i.e. not contain tasks. This is an external participant and we are not in position to arrange its work.
  2. “Create wish list” and “Get proposal” must be connected with a control flow (solid line with an arrow). Message flows that go to the “Supplier” pool and back do not suffice because without a control flow the “Get proposal” event handler won’t be activated therefore no proposals would be received.
  3. “Get proposal” event is essentially an automatic action, a “robot”, while a task on the supplier’s side would likely be performed by a human. But robots don’t talk to humans.
  4. Supplier may ignore our request, resulting in the purchasing process waiting forever.

Amazingly, this kind of diagram are typically produced by half-educated analysts; a naive analyst knowing only rectangles, arrows and diamonds would likely draw much better diagram:

Fig.2

I call this pattern “Find a Victim”, meaning “victim” within the organization.

Let’s forget about the notation for a while and switch to common sense to ask ourselves: how does our organization get something from external parties in real life? Well, via its own employees: purchasing managers communicate with suppliers, sales managers or client department employees talk with customers, etc. (I’m leaving automatic B2B scenarios out of scope). They communicate by phone, email or personally - from the process perspective we don’t really care. What does matter - the task “Contact counterparty” should be accomplished. (Well, “accomplished” means that an attempt was be made, not necessarily successfully. Hence the fork appears after the task that checks its result.)

As we can see, the example process can be successfully depicted with a minimal use of BPMN palette. But if the author has learned that there are also circles with the envelopes in BPMN and is eager to use them then he may be in trouble. It’s better to know BPMN either at very basic or very deep level.

A healthy minimalism is your friend: if you are able to depict a process with a minimum palette then it’s good for you! Never drag a BPMN element to the diagram just because you recently discovered it for yourself.

Before the end, let’s consider the use of black box pools - external entities. Should we depict the “Supplier” like this?

Fig.3

Again, be pragmatic - did the diagram become more clear? In my view, “Supplier” pool didn’t add much because we can figure out from the name of the task “Get supplier’s proposal” that there is a supplier around. Now if an element doesn’t make the diagram better then it makes it worse! Simply because extra elements clutter the diagram.

Modeling a counterparty graphically as shown in Figure 3 makes sense only if you follow an appropriate methodology. Within the “Outside-In” methodology for example we’d start not from the selling process (this is an inside-out view of our company) but from the buying process of our client (outside-in). It is postulated in this methodology that the quality of the process from the customer’s perspective is determined by the quantity and quality of his interactions with the process. To emphasize the importance of such interactions they use a special term - “Moment of Truth”. If one follows the Outside-In methodology then usage of a “Customer” or “Supplier” pool and message flows is a good idea because they’ll let visualize the process from customer’s perspective and show all moments of truth.

But most BPMN users didn’t hear about Outside-In and are not ready to accept these ideas. If this is the case then better forget about external entities and depict the process as shown in Figure 2.

08/17/13 | Articles | ,    

Comments (17)

  1. Дмитрий Бацюро 10/08/13 01:18 PM

    На самом деле, в реальной жизни как происходит: отправляешь поставщику запрос, устанавливаешь контрольный срок его получения, если в срок запрос не получен, то пинаешь поставщика и принимаешь по его реакции решение - то ли ждать его еще (тогда цикл - новый контрольный срок, новое пинание), то ли попытать счастья в другом месте (то есть неудача). Все это можно считать внутренностями активности “Получить предложение поставщика”, но она на самом деле не является каким-то атомарным действием, которое выполняет непрерывно наш сотрудник. А если ее представить именно как одной активностью, то это значит, что у него непрерывно висит задача “что-то делать”, но на протяжении большого периода делать-то ему ничего и не нужно. Поэтому на самом деле это подпроцесс, внутри которого “Отправить запрос поставщику”, а дальше - развилка по событиям, за которой получение месседжа и таймер. За таймером - пинок и решение, уходить ли на новый круг или сменить поставщика; за месседжем - выход из подпроцесса (ну, правда, если мы уверены, что всегда получаем от поставщика что-то пригодное для жизни, иначе тоже принятие решения: либо цикл, либо выход с ошибкой). Месседж же прилетает из другого пула типа “разбор входящих” (была тут публикация и на эту тему).

    Но в чем я согласен, это уже для разбирающихся в деталях BPMN-строения. А на начальном уровне или для презентации руководству достаточно просто понимать, что “в этом месте мы всеми правдами и неправдами добиваемся наличия ответа от поставщика”.

  2. Дмитрий Бацюро 10/08/13 01:21 PM

    Правда, бывает, что именно открытие глаз на внутренний механизм задачи “Получить предложение поставщика” - то есть на то, как приходится сотрудникам извращаться при работе с поставщиками - приводит руководство компании к пониманию, что поставщики от рук отбились, и надо их застроить, что позволит существенно сэкономить ресурсы отдела по работе с поставщиками.

  3. Anatoly Belychook 10/08/13 01:42 PM

    Дмитрий

    Спасибо что поделились мыслями.

    Что касается “висящей” задачи, то это ведь относится к большинству того, что мы делаем. Время, в течении которого задача нам назначено, и время на нее потраченное (трудоемкость) - это разные вещи.

    Всё тот же выбор - дирижировать или реагировать http://mainthing.ru/ru/item/613/

    Не вполне согласен что выбор определяется начальным или продвинутым уровнем, скорее - интенсивностью и продолжительностью.

  4. Дмитрий Бацюро 10/15/13 03:20 PM

    Согласен, когда у сотрудника задач не много, то может так и повисеть. Но если много (причём не обязательно задач именно этого типа, а в принципе - из любых-разных процессов), то ему будет трудно ориентироваться, где у него “висящая” задача, а где реальная, которую надо прямо сейчас делать. Это само по себе будет снижать его производительность.

  5. Anatoly Belychook 10/15/13 03:38 PM

    Налицо полный консенсус :)

  6. Cristian 10/31/13 05:21 PM

    Hi Anatoly,

    I remember you mentioned in one of your blogs that only around 5-10 % of the processes of an organization should be made executable, the critical ones to justify the ROI. I assume you implied the other 90-95 % would be modeled in BPMN2 for homogeneity and practical reasons, but wouldn’t be executable BPM processes. Let’s say most of these non-executable processes will have some UI and will be implemented the traditional way. Let’s also assume one uses BizAgi to implement the executable 5-10 % of processes. What will happen to the other 90-95 % of the system? Most of them would also have user interfaces, implemented using, for example, some UI technologies, let’s say RichFaces or some Ajax stuff. Also, let’s assume one would like the executable BPM processes to have user interfaces with the same look and feel as the non-BPM UIs. How doable is this if one uses BizAgi? Also, does BizAgi UI have any Ajax capabilities or ways to extend its basic behavior with extras such as Ajax capabilities or use something like JSF for UI? Also, as far as I understood by quickly looking at BizAgi, this product kind of forces adopters to build everything around its philosophy and have everything embedded into BizAgi’s foundation, as opposed to other BPM engines or platforms which are themselves more embeddable into the app at hand without imposing their own way into the app using them. Could you please give me your opinion on my concerns? I hope I make sense with my questions.

    Thank you,

    Cristian

  7. Anatoly Belychook 10/31/13 05:57 PM

    Cristian

    Some processes are automated in ERP and other packaged apps. Although many people try to use BPMN in ERP implementation projects, it’s usefulness is limited - the roundtrip problem will make the process reside in programming code after some time.

    Another set of projects are managed via written procedures and/or process diagrams. No UI, no automation.

    And there is always a number of processes executed in ad-hoc manner. It’s OK as soon as they aren’t critical and aren’t cross-functional. No automation either.

    I believe that only minority of processes should be fully under control of BPMS. It’s the most advanced way yet it’s most expensive too. The process analysts and process developers resources will always be limited therefore they should be focused on principal business issues and corresponding processes.

    I’ve got an impression from your comment that BPMS is just another way to develop computer applications. It isn’t - it assumes a radically new way for business and IT to communicate with each other, to align the process with strategic goals. And it’s another (agile) way of delivering applications.

    In short, BPM(S) ain’t automation. Automation means doing the same things faster with the help of computers. Automation doesn’t assume deep rethinking of what we are doing which is based both on business and technology new capabilities - BPM does. Deeper you get into Ajax, JSF and similar stuff, farther you are from BPM.

    Bizagi BPM Suite 9.1 portal utilized web 1.0 “click and wait” style. The basic AJAX capabilities were intoduced in 10.0. In 10.2 released last week it was greatly improved.

    Bizagi BPM Suite follows classic BPMS concept. It’s not about application development per se, it’s not about automation - it’s about rapidly identifying and implementing business improvement opportunities.

    Embedded BPM platform is another kind of beast - more suitable to build packaged applications that would be more flexible comparing to traditional behemoths but not as nimble as pure BPM Suite.

  8. Cristian 10/31/13 07:31 PM

    Anatoly,

    Thank you for your instructive reply. I have started reading about BPM a few months ago and I am still learning, of course. I used some open source process engines (jBPM and Activiti) to build some small prototypes in order to get a better sense of how it works and I am still thinking what product to adopt. We considered BizAgi as well, that’s why I asked those questions. My understanding is that when thinking about BPM, one does not focus on UI and Ajax, BPM is higher level and more strategic, more about what (high-level) than about how (low-level), I guess. But the thing is once some BPM processes are automated, they will live together with other non-BPM automated parts of a system. And at some point the things which are not the central piece of BPM have to be harmonized with the usage of BPM automated processes, such as the seamless integration of the forms related to process human tasks and the forms not related to process human tasks. The details of taking the idea all the way and integrating all parts together has to be dealt with at some point. And here is where my question applies, without it being central to BPM.

    To me, the main reasons of using BPM are:

    - visibility of processes under a (graphical) language (ie bpmn palette) which is common for both business and IT people so that as process model evolves, business and IT people stay in true touch and business people have the IT people evolve the model according to the real business needs

    - the fact that process models allow the monitoring (BAM) and querying of process instances historical data (BI) in terms which are proper to the business domain language (mainly along bpmn activities lines), by having a generic DSL that works for all businesses. I think this generality allows BPM engines to provide APIs that allow its consumers to query in a generic way. And the generic constructs (ie the bpmn palette) can be arranged in such a way that they give the specificity for each case at hand.

    - BPM is holistic and knows no boundaries within the enterprise and the visibility of processes combined with BI statistics allow for improving them as time passes by changing them in real-time, through the support of the used BPM platform.

    Am I that far with my understanding?

    Cristian

  9. Anatoly Belychook 10/31/13 08:37 PM

    Cristian

    There is no practical BPMS project without integration with legacy systems. We need to integrate systems just like we need to integrate people and departments.

    BPMS being a relatively young technology was designed with SOA in mind. Hence integration task from BPMS side is easy, really. The other part may be a problem.

    When evaluating a BPMS integration capabilities, pay attention to the following: the system should be able not just call a webservice (it may be taken for granted) but also expose its API via webservices. One may be able to start a process and send a message to a running process via a web service as a minimum.

    Bizagi has couple of very nice integration mechanisms in addition to this: replication and virtualization. Forrester BPMS has set eyes on it in their Wave’20013.

    Your understanding of BPM concept is absolutely right!

  10. Cristian 10/31/13 09:01 PM

    Anatoly,

    Thank you so much for sharing knowledge with me and for, practically, doing free-of-charge teaching. I always come back here to improve my BPM knowledge. I will take into account your suggestions on how to pick up the BPMS to use. I guess BizAgi has all these, since you are using it.

    Cristian

  11. Cristian 11/01/13 08:37 PM

    Hi Anatoly,

    I dare do ask you something again, because I noticed you have posted something here: http://www.bp-3.com/blogs/2013/04/its-business-management-not-bpm/

    The way I got to that page is by researching if and how I can model a lifecycle of an entity in BPM. It seems others had this need before me, which gave me a bit of confidence I might be on the right track. The kind of application I am trying to model using BPM is a framework of our company, where the main thing is the lifecycle of some permits to explore for minerals. These permits have a lifecycle, they get created, kept in good standing, sold, canceled etc. thru some functions of the system (use cases). But we have to adapt the framework for various customers and our intention is to model in a generic way and then specialize the generic model to the case at hand. In enterprise systems there is freedom to improve processes to achieve goals the most efficient way, obeying some rules such as legislation, auditing, contracts etc. In our case, all the lifecycle flows in a predefined way (relative to the lifecycle of permit), so there is not much room to “improve” process. I wonder if this case can get benefits out of BPM philosophy.

    However, I have a strange feeling that BPMN is not the most proper notation to show more of a state diagram, than a process made of actions. I have read something like CMMN as well, but I think that’s still in progress and it’s not BPMN. Could you comment on this, please?

    Here is a number of links on this topic:

    http://en.wikipedia.org/wiki/Artifact-centric_business_process_model
    http://www.column2.com/2010/11/enabling-smarter-bpm-through-business-entities-with-lifecycles/
    http://www.bp-3.com/blogs/2013/04/its-business-management-not-bpm/
    http://www.togaf-modeling.org/models/data-architecture-menu/data-lifecycle-diagrams-menu.html

    Cristian

  12. Anatoly Belychook 11/05/13 04:14 PM

    Cristian

    Quite opposite, BPMN is the perfect fit for this kind of applications.

    It’s actually a pattern - we hit it all the time. It isn’t published here yet, stuck in drafts for too long.

    One reason is that it’s a bit tricky. There are actually two ways to implement this scenario.

    The other is that I don’t have a decent example at hand - some of them are ugly and overloaded with details, others cannot be published due to confidentiality.

    Your case looks nice so I could use it to illustrate the “state machine” BPMN pattern here at the blog if you are willing and have right to share some details.

    Kind regards
    Anatoly

  13. Cristian 11/05/13 10:45 PM

    Thank you, Anatoly. I am in the middle of preparing this and then I will post here more details.

  14. Xipe 11/06/13 06:39 AM

    Hi Anatoly,

    Here is what I came up with. Some things are a bit far-fetched, but this would still be good enough to illustrate a state machine, I hope. I have some confidentiality issues, so I had to build some similar requirements to my real case.

    Let’s say we want to build a system for issue tracking software issues and we model the lifecycle of an issue as a BPMN2 process diagram. Each issue will be created under a project. Each project will have a name and a project manager whose name and email are input when creating the project in the system. There will be an Add Person function which will make persons available for issues assignment across all projects.

    Whenever a new issue is created in the system under an existing project, it will have status New. From there on, through the usage of function Update Status, issue status may change to Open, On Hold, In Progress, Solved, Tested Passed, Reopen, Closed.

    These are the possible transitions.

    New ->Open
    Open-> On Hold, Solved, Closed
    On Hold -> In Progress, Solved, Closed
    In Progress -> Open, On Hold, Solved, Closed
    Solved ->Tested Passed, Reopen
    Tested Passed-> Reopen, Closed
    Closed-> Reopen
    Reopen-> On Hold, In Progress, Solved, Tested Passed, Closed

    Once user chose an existing project from the list of projects, the function Add Issue will be available thru some menu and use can add issues to that specific project.

    When an issue is created, it always has status New. In order for status to be changed, the function Update Status is executed from a menu of system once a given issue is selected from one existing project. It will only allow the updates to happen according to the transitions described above.

    Beside the status of an issue, other things may change as well. For example, the issue item may be edited in terms of description and other characteristics such as the component to which it belongs, fix version etc. through the Edit function.

    Also, if an issue is created and then its status stays New for more than 2 weeks, the system will trigger an email informing project manager of this situation.

    There will be a function in the system called Assign Issue which allows issues to be assigned to various people, previously added to the system via Add Person function. Assign Issue will operate on the chosen issue from one of the projects.

    Also, some issues may be grouped together and the system will generate a group number in format G such as G17. When grouping, a group description may also be provided to give the group a meaning. This functionality will be available under the Group Issues for Assignment function of the system. Whenever an issue is grouped with others and a member (issue) of the group is assigned to some person, the whole group is assigned to same person. The function execution will prompt for issues selection and then for group description.

    A project may be open or closed as well. When created, it will have status Open. A function called Close Project will also be available. Whenever a project is closed, all Open issues will have their statuses changed to On Hold. Whenever a project is reopened, all its issues having status On Hold will change to Open.

    Also, if issue description changes through the Edit function, its status must jump back to New. If description becomes empty, the issue status must become Closed.

    I hope this is good enough.

    Cristian

  15. Anatoly Belychook 11/06/13 11:55 AM

    Cristian

    You told two different stories: one about permit’s lifecycle, another about some arbitrary issues. BPMN/BPMS is a perfect fit for the former but not for the latter.

    BPM deals with concrete, repetable, predictable, cross-functional work. Issues/problems are better to deal with via project, case management or issue tracking tools.

  16. Cristian 11/06/13 06:45 PM

    Hi Anatoly,

    Okay, sorry. I should have realized that. I will try to come up with something proper for BPMN modelling.

  17. Cristian 11/11/13 03:12 AM

    Here is my made-up story: we are trying to model and implement a computerized system for handling the lifecycle of some licence obeying the rules below.

    The Ministry of Energy of some country issues licences for oil exploration and production to applying oil companies. Oil companies must get a licence before they may legally produce or explore for oil in that country. When companies get a licence from ministry, they are said to own the licence. In order to get the licence, a company must first apply for it via ministry. Any licence application gets reviewed by ministry staff and, if application is approved, it results in the issuance of the licence. A licence has an Issue Date and an Expiry Date. Every time Expiry Date is moved forward, it does so at most one year at a time, but it may be moved forward repeatedly thru the Renew Licence function of the system.

    When applying for a licence, the applicant must specify if they want the licence to be issued Right Away or on the coming 1 Apr. If they specify Right Away, the licence will be issued on the day it’s approved (issue date) and it will be valid until next 1 Apr (expiry date). Usually, applications are assessed the day they arrive. If applicant specifies they want the licence to be issued on coming 1 Apr, if approved, it will be issued on the coming 1 Apr and it will be valid until the next 31 Mar coming right after 1 Apr when the licence was issued. A licence may have two statuses: Active or Inactive. If applicant applied for a Right Away licence, if approved, it will have its status set to Active. If the applicant specified they want licence issued on coming 1 Apr, if approved, licence will only be issued on coming 1 Apr, it will be valid until 31 Mar coming right after 1 Apr of issuance, and it will have status Active. The applications also have a status. When companies apply, their applications are stored in the system with status Pending. If application for licence is approved, its status becomes Approved. If application for licence is rejected, its status becomes Rejected. If an application was rejected, the applicant qualifies for a full refund of paid fees (50 dollars).

    In order to keep a licence Active, the owner of licence must renew it using a Renew Licence function of system, which does not require staff assessment.Also, an owner may choose to Deactivate an active licence using the Deactivate Licence function of system. If the owner of a licence does not renew their licence before its Expiry Date, it will be deactivated automatically by the system. If a licence is deactivated, it may be reactivated through the Renew Licence function of the system. It doesn’t matter if a licence was inactive for one day or a number of years, it may still be renewed using Renew Licence function. Once a company owns or owned a licence, they may not apply again for a licence. When they need an active licence again, they need to use Renew Licence to bring it back to life. When applying for licence, there is a 50 US dollar fee. Same for renewal. If some company applies for licence, they need to pay the fee. Same for renewal. Also, if the licence owner company does some things which are against the law, their licence will be automatically deactivated if system can detect that. Also, if staff detects some illegal action of licence owner company, they may initiate Deactivate Licence function in the system and choose from a list of potential reasons why the deactivated the licence.

    Thank you,

    Cristian

Comments are closed

Copyright © 2008-2024 Anatoly Belychook. Thanks to Wordpress and Yahoo.  Content  Comments