Главное не результат, главное процесс

BPM-блог Анатолия Белайчука

Процессный паттерн: «Найдите жертву»

Какие только красоты не рисуют начинающие авторы, чтобы средствами BPMN показать взаимодействие с внешними участниками процесса!

Характерный пример:

Рис.1

Тут целый букет ошибок:

  1. Пул «Поставщик» должен моделироваться как «черный ящик», т.е. не содержать внутри задач. Это внешний участник рассматриваемого процесса закупки, и мы не вправе регламентировать его деятельность.
  2. «Составить список потребностей» и «Получить предложение» должны быть соединены потоком управления (сплошной линией со стрелочкой). Потоков сообщений, которые идут в пул «Поставщик» и обратно, недостаточно – без потока управления обработчик события «Получить предложение» не активируется и, соответственно, никакого предложения не получит.
  3. Обработчик события «Получить сообщение» по сути является автоматическим действием, «роботом». А на стороне поставщика готовит и отправляет предложение, скорее всего, человек. Как человек будет Но роботы с людьми не разговаривают.
  4. Поставщик вполне может проигнорировать наш запрос, и процесс закупки в этом случае зависнет в ожидании навечно.

Забавно, что подобные диаграммы – типичный случай горя от ума. Аналитик, который пользуется только квадратиками, стрелочками и ромбиками, вероятно нарисовал бы гораздо лучшую диаграмму:

Рис.2

Я называю это паттерном «Найдите жертву», имеется в виду – «жертву» внутри организации.

Давайте отвлечемся от нотации, включим здравый смысл и спросим себя: как в реальной жизни наша организация добивается чего-то от контрагентов? Понятно как – через собственных сотрудников: с поставщиками связываются менеджеры по закупкам, с заказчиками – менеджеры по продажам или сотрудники клиентского отдела и т.д. (автоматические B2B сценарии оставляем за скобками). Общаются по телефону, по электронной почте или еще как, по большому счету, нам неважно, главное – задача «Связаться с контрагентом» должна быть выполнена. (Ну как «выполнена» – имеется в виду, что попытка должна быть сделана, а там уж как получится; отрицательный результат в данном случае тоже результат Поэтому за задачей появляется ромбик развилки.)

Как видите, рассматриваемая процессная задача решается с использованием минимума элементов BPMN. Если же автор узнал, что в BPMN оказывается есть еще кружочки с конвертиками, и горит желанием их использовать, то тогда беда. BPMN нужно знать либо очень поверхностно, либо очень глубоко. Иначе получается как с Гедеваном Александровичем, который «все время говорит на языках, продолжения которых не знает».

Поэтому хочу призвать к здоровому минимализму: можете обойтись небольшим числом элементов – и отлично! Пожалуйста, не надо тащить на диаграмму BPMN новый элемент только потому, что вы недавно его для себя открыли.

В заключение рассмотрим вопрос об использовании пулов – внешних сущностей. Надо ли в рассматриваемом примере показывать «черный ящик» поставщика? Это можно сделать, например, так:

Рис.3

Можно, да. Но нужно ли?

Опять-таки, будьте прагматичны,– стала диаграмма от добавления пула «Поставщик» понятнее? На мой взгляд, добавление пула не помогает восприятию диаграммы, ведь из названия задачи «Получить предложение поставщика» и так понятно, что поставщик где-то тут есть. Но если элемент не помогает восприятию диаграммы, то значит мешает! Поскольку любой лишний элемент загромождает диаграмму, делая ее более сложной для восприятия.

Графически моделировать контрагента и коммуникации с ним, как показано на рис.3, следует в том случае, если вы следуете соответствующей методологии. Например, в методологии Outside-In мы исходно рассматривали бы не процесс продажи (это взгляд изнутри нашей компании, inside-out), а процесс покупки глазами нашего клиента (взгляд снаружи, outside-in). В этой методологии постулируется, что качество процесса с точки зрения клиента определяется количеством и качеством взаимодействий с нами, в которые клиент вынужден вступать. В ней для обозначения точки взаимодействия процесса с клиентом, чтобы подчеркнуть ее важность, даже придуман специальный термин – «Момент истины» (Moment of Truth). Если вы придерживаетесь методологии Outside-In, то пулы «Клиент» или «Поставщик» и потоки сообщений есть смысл изобразить, чтобы наглядно увидеть процесс глазами контрагента и все моменты истины.

Но большинство пользователей BPMN не слышало про Outside-In и не готово воспринять эти идеи. Если вы относитесь к их числу, то забудьте про внешние сущности на диаграммах BPMN и изображайте процесс так, как показано на рис.2.

17.08.13 | Статьи | ,    

Комментарии (17)

  1. Дмитрий Бацюро 08.10.13 13:18

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

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

  2. Дмитрий Бацюро 08.10.13 13:21

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

  3. Anatoly Belychook 08.10.13 13:42

    Дмитрий

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

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

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

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

  4. Дмитрий Бацюро 15.10.13 15:20

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

  5. Anatoly Belychook 15.10.13 15:38

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

  6. Cristian 31.10.13 17:21

    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 31.10.13 17:57

    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 31.10.13 19:31

    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 31.10.13 20:37

    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 31.10.13 21:01

    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 01.11.13 20:37

    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 05.11.13 16:14

    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 05.11.13 22:45

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

  14. Xipe 06.11.13 06:39

    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 06.11.13 11:55

    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 06.11.13 18:45

    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

    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

Комментирование закрыто

Copyright © 2008-2024 Анатолий Белайчук. Спасибо Wordpress и Yahoo.  Контент  Комментарии