Monday, September 02, 2013

Exceptions, Business as Usual?

In this article I describe some aspects considering using BPMN exceptions to handle business exceptions. The conclusion is that you should carefully consider if doing so is appropriate, or that using a combination of a gateway and End event would be a better option.

Bruce Silver writes in his book BPM Method & Style that he used to use BPMN Exception end events only for technical exceptions. For business exceptions he used to use a combination of a gateway and an end state test.

When I first read that I found that to be a peculiar remark, as - coming from a Oracle BPM 10g direction - I used them for business exceptions all the time! Moreover, as most technical exceptions could be caught and managed in BPL (the 10g, Java-like scripting language) I even adviced people to to use Exceptions for technical exceptions only if unavoidable with the argument that the business audience is not interested in technical exceptions, and that therefore they should be left out of the model if possible. After all, wouldn't you agree that the first model (in which exceptions are used for business exceptions) looks simpler that the second one (which is more the gateway/end-state type of solution)?


Using BPMN Error end event

Using gateways

The model presented is inspired by a business process model with a similar complexity, but then bigger. From a functional point of view both models do the same. Examples like this may explain why later on Bruce Silver changed his mind based on feedback from his students.

With Oracle BPM 10g it was easy to write some generic (technical) business exception handling process with a retry option (using the BACK action). With this retry you could simply return to the happy path even when an Exception end event had occurred.

The first time I started to have second thoughts about using Exceptions for business exceptions was when I found that with 11g this back functionality is no longer possible (although it is supposed to come back in 12c in some way or another).

The second second thoughts came when I realized that throwing an Exception and catch that in an Event Sub-process, also has some other peculiarities, as I will explain using the model below:



In this sample model there is an Event Sub-process with a non-interrupting Get Status Message start event, and a Return Status Message end event. This exposes a getStatus services operation that can be called by some 3rd party to find out where the process is, and for that returns a status that is set by the Set Rejected Status and Set Reconsidering Status Script activities. When the Rejected Error event is thrown this is caught by the Event Sub-process with the Rejection Error start event. An Event Sub-process that starts with an Error start event, is interrupting by definition.

Patterns like this (where some operation or service is exposed to interact with a running instance) are very common in my practice. As a matter of fact, as far as I recall more than half of the models I created have a similar Event Sub-process, either to get or to set some process data on the run.

The issue that I found is that when the order is rejected without the option to reconsider - meaning that the Rejected Error event is thrown, the normal flow of the process is aborted (because of the interrupting nature of Error events). As a result, when the process is in the Confirm activity, and the getStatus operation is called, it won't react because that operation it is tied to the normal flow, which is no longer active. In contrast, when the process is in the Reconsider this is not a problem.

It is unclear to me what the BPMN specifications say about this. I can imagine that this behavior is in line with the specifications, or that the specifications are not explicit about what that behavior should be. In any case, this is how it works with 11g, which made me realize that throwing Error end events in case of business exceptions has some drawbacks that might make that modeling by using a gateway plus end state is not so peculiar after all.

8 comments:

Unknown said...

NICE ARTICLE.
Cara Cepat Mengobati Penyakit Kanker Serviks Tanpa Operasi
Cara Cepat Untuk Mengobati Penyakit Kanker Serviks Tanpa Operasi
Cara Cepat Mengobati Gejala Penyakit Kanker Serviks Tanpa Operasi
Cara Cepat Buat Mengobati Penyakit Kanker Serviks Tanpa Operasi
Cara Cepat Utk Mengobati Penyakit Kanker Serviks Tanpa Operasi

Anonymous said...

good
Cara Mengobati Kemaluan Mengeluarkan Nanah
Mengobati Kemaluan Mengeluarkan Nanah
Cara Tradisional Mengobati Kelamin Mengeluarkan Nanah
Cara ampuh Mengobati Kemaluan Mengeluarkan Nanah
Cara Ampuh Mengobati Kemaluan Mengeluarkan Nanah
Cara Mengobati Kemaluan Mengeluarkan Nanah
Cara Alami Mengobati Kelamin Mengeluarkan Nanah
Cara tradisional Mengobati Kemaluan Mengeluarkan Nanah
Mengobati Kelamin Mengeluarkan Nanah tanpa ke Dokter
Mengobati Kemaluan Mengeluarkan Nanah
Mengobati Kemaluan Mengeluarkan Nanah tanpa harus ke Dokter
pengobatan Kemaluan Mengeluarkan Nanah tanpa ke Dokter
Mengobati Kelamin Mengeluarkan Nanah Secara Alami
Mengobati Kemaluan Mengeluarkan Nanah
Mengobati Kemaluan Mengeluarkan Nanah Secara Ampuh
Mengobati Kelamin Mengeluarkan Nanah Secara Ampuh
Mengobati Kemaluan Mengeluarkan Nanah Tradisional
Mengobati Kelamin Mengeluarkan Nanah Secara Tradisional
Mengobati Kemaluan Mengeluarkan Nanah Secara alami
pengobatan Kemaluan Mengeluarkan Nanah Secara Tradisional
pengobatan Kemaluan Mengeluarkan Nanah dengan Herbal
Mengobati Kemaluan Mengeluarkan Nanah
Mengobati Kelamin Mengeluarkan Nanah
Mengobati Kelamin Mengeluarkan Nanah dengan Herbal
Obat Ambeyen Resep Dokter
pengobatan Ambeien Resep Dokter
Obat Ambeien dr Resep Dokter
Obat Ambeien ampuh Resep Dokter
Obat Ambeien Tanpa rasa Nyeri
pengobatan Ambeien Tanpa Nyeri
Obat alami Ambeien Tanpa Nyeri
pengobatan Ambeien Tanpa rasa Nyeri
Obat Ambeien yang Herbal Mujarab
Obat Ambeien Herbal
pengobatan Ambeien Herbal Mujarab
Obat Ambeien dari Herbal Mujarab

Heni Herbal said...

I hope the spirit of today's activity? Thank you for giving information which is so very useful
Obat Alami Penyakit Paru-Paru Basah Paling Ampuh
Obat Alami Penyempitan Jantung Paling Ampuh
Obat Alami Kanker Nasofaring Paling Ampuh
Obat Alami Penyakit Gondok Paling Ampuh
Cara Alami Mengobati Batu Empedu Tanpa Operasi

Sehat Alami said...

information about the differences myoma and cysts Perbedaan Miom Dan Kista

Cara Melangsingkan Tubuh Secara Alami Dan Tradisional said...

thanks for this useful information

Cara Mengobati Tulang Ekor Sakit said...

information regarding treatment for coccyx pain

Anonymous said...

good
Kanker Serviks Stadium 3 Masih Sembuh
Kanker Serviks Stadium 1 Masih Bisa Sembuh
Kanker Serviks Stadium 2 Masih Bisa Sembuh
Kanker Serviks Stadium 4 Masih Bisa Sembuh
Obat Kanker Serviks Stadium 1 Bisa Sembuh
Obat Kanker Serviks Stadium 2 Bisa Sembuh
Obat Kanker Serviks Stadium 4 Bisa Sembuh
Obat Kanker Serviks Stadium 3
Tumbuhan Obat Sakit Kanker Usus
Tumbuhan Obat Untuk Kanker Usus
Obat Kanker Usus
Tumbuhan Obat Penyakit Kanker Usus
Tumbuhan Obat Alami Penyakit Kanker Usus
Tumbuhan Obat Kanker Usus
Tumbuhan Alami Obat Penyakit Kanker Usus
Tumbuhan Obat Untuk Penyakit Kanker Usus
Tumbuhan Obat Kanker Usus Yang Parah
Obat Kanker Usus Parah
Tumbuhan Obat Alami Kanker Usus Parah
Tumbuhan Obat Ampuh Kanker Usus Parah
Tumbuhan Obat Kanker Usus
Tumbuhan Alami Obat Kanker Usus Akut
Tumbuhan Ampuh Obat Kanker Usus Akut
Tumbuhan Obat Kanker Usus Yang Akut
Obat Kutil Kemaluan ada di Apotik
Obat Kutil Kemaluan Apotik
Pengobatan Kutil Kemaluan di Apotik
Obat Ampuh Kutil Kemaluan di Apotik
Jual Obat Alami Kutil Kemaluan di Apotik
Jual Obat Kutil Kemaluan Apotik
Jual Obat Herbal Kutil Kemaluan di Apotik
Jual Obat Tradisional Kutil Kemaluan di Apotik
Resep Obat Kutil Kemaluan
Resep Obat Kutil Kemaluan Apotik
Resep Obat Alami Kutil Kemaluan di Apotik
Resep Obat Herbal Kutil Kemaluan di Apotik

Obat Herbal Maag Paling Ampuh Semua Usia said...

nice article