Definition:
- “Enterprise Process” (equivalent term “End-to-End Process”) is a business process connected to external customer at both ends and going through more than one top-level company’s departments.
Axiom:
- A BPM initiative would pay for itself only if you target end-to-end processes.
Otherwise you’ll be guilty of suboptimization sin according to Lean methodology or will “shoot sparrows with a cannon” according to Russian proverb. Yet it doesn’t mean you must begin with such a process - you may use something else for training but you won’t win a medal for training only.
Typical errors:
- BPM vendors love to illustrate their products by supporting processes like “Employee Onboarding” or “Expenses Report” thus provoking prospects to do the same. It’s OK for training but there is simply not enough money beghind these processes to justify enterprise-wide project which what BPM project is by definition.
- Many prospect wish to go for “Negotiating a Contract” process. There are money behind it but is this a process really? For me it’s rather a fragment of end-to-end process “Sales of Goods or Services”. Customer’s concern being the end result - i.e. performance of the process as a whole - it may happen that the bottleneck wouldn’t be this particular fragment. Narrowing a scope leads to suboptimization.
- And here is the worst case: “We have a process here, well-studied and alredy automated, now let’s implement it in BPM for comparison”. In other words, let’s make a race between good and better. For your project to be acknowledged by the management you must not only implement some process in BPM but also significantly improve it. You’d hardly make it with a process that was well worked on already.
OK, let’s assume that we do everything right and consider “Order to Cash”, a classic example of end-to-end process. (Good questions would be: “Why exactly this process?” or “How to pick up the best one from many company’s processes?” These deserve detailed answers however so let’s leave them for the next time.)
“Order to Cash” process in “produce-to-order” business scenario may consist of prepayment, manufacturing, delivery and closure subprocesses:
What’s wrong with the above diagram? It assumes (since we have only one pool) that manufacturing works synchronously with sales: no order - manufacturing is idle, order arrives - manufacturing starts working on it. If we got deeper into manufacturing subprocess, we would probably found materials and/or parts purchasing subprocess, sychronized with manufacturing in turn.
But businesses just don’t work like “one-two-three”!
Manufacturing does not switch on/off by every client’s order even if we produce to order. Clients’ orders are accumulated and picked up on regular basis, say daily by production scheduling process. Similarly, purchasing is not triggered by a single order usually but rather runs regularily or is triggered by stock level going below a limit.
Technically such work is implemented in BPM not by a singe sychronous process like shown on the diagram above but by several asynchronously executed processes that communcate with each other by data and/or messages. Such scheme can be drawn with BPMN and executed by BPMS - which, from my point of view, is a big advantage of BPMS over workflow. But let’s consider the correct diagram next time - what I’m going to say here is that asychronous execution is a core feature not only of this particular but of every end-to-end process.
Definitions:
- “Process Orchestration” means tasks execution sequence and logic within a single process frame.
- “Process Choreography” means the logic of several processes asynchronous execution coordinated by data/message flows.
Theorem:
- End-to-end process should be modeled by the choreography, not by the orchestration.
It was confirmed by practice and could be proved by the following consideration: since end-to-end process by definition goes through several top-level departments, you’ll have to take into account the working rhytm of each one of them, which means - modeling asynchronous execution.
An attempt to model it by pure orchestration is nothing else but following an anti-pattern which I will call “End-to-End Process Archistration”.
http://improving-bpm-systems.blogspot.com/2008/12/comment-on-anti-pattern-end-to-end.html
Alexander
Please be less pedantic Or better ask BPMN standard body to be more precise
Of course production goes after ordering - did I said the contrary here? The question is: whether an order fires production (in that case it may be implemented as a subprocess within the same pool) or production is triggered by some other event e.g. by a timer (then it’s another pool). My point is that novice BPM desingers tend to use former model but the latter is more realistic.
Branches from a parallel gateway may go over other pools? I seriously doubt this. Not in BPMN. But you are right: parallel gateways do produce asynchronous threads.
My favourite analogy to process choreography is threads programming in java.
http://improving-bpm-systems.blogspot.com/2008/12/comment-2-on-anti-pattern-end-to-end.html
Alexander
Of course you diagrammed both choreography and orchestration. The words “branches may go” from your first post are misleading I’m afraid: most people would suppose you mean sequence flow. So it’s my turn to ask you be more accurate
http://improving-bpm-systems.blogspot.com/2008/12/comment-4-on-anti-pattern-end-to-end.html
Sorry Alexander, don’t understand you. I believe you get choreography as soon as you draw more than one pool and messages accross them. Please share your interpretation.
http://improving-bpm-systems.blogspot.com/2008/12/comment-7-on-anti-pattern-end-to-end.html
Alexander
I follow Bruce Silver’s interpretation:
* orchestration = single pool, sequence flow
* choreography = communication between multiple pools, message flow
BPMN 1.1 spec define choreography as “an ordered sequence of B2B message exchanges”. It’s close to your interpretation because B2B situation implies lesser predictability.
Two interpretations diverge on multi-pool processes with pools representing different process instances, not different business entities. And this is exactly the subject of the original post. Under your interpretation, I should have call it “Single pool end-to-end process”. Not a bad idea may be, thank you for the input.
Продажи - это не сквозной процесс, как мне кажется, а набор фрагментов различных процессов
Сергей, загляните вот сюда: http://mainthing.ru/ru/item/150/
Правильно ли я понимаю, что с выходом BPMN 2.0 в данной статье оркестровку надо заменить на межпроцессное взаимодействие (collaboration)?
Сделал опечатку, имел в виду:
“… хореографию надо заменить на межпроцессное взаимодействие (collaboration)?”
Да, правильно.