Constructs for BPMN

advertisement
Attack What do we have so far? We have business analyst viewing a Business Process
Diagram by a modeling tool. The business process contains BPMN Activities – Tasks
and Sub-Processes – referencing Activities in a shared repository, the Customer
Model Repository. An Activity might result in an exception. But the modeling tool
can't tell what kind of an exception if any, since a referenced Activity is not accessible
and its shared meta-data does not contain an Errors list. And so the tool cannot warn
against unhandled Error Events.
To solve that we extended BPMN by adding two attributes to the local Activity's
meta-data, as opposed to the shared Activity. The attributes, Errors list and Handlers
list, give the static verification procedure possible exceptions information and so the
tool can warn against unhandled exceptions. This is a partial answer to question Q4 –
how can we improve the tool.
Still another question remains (Q4.1) – how to populate the two attributes. Manually
by the business analyst seems tedious, not user-friendly and error prone.
Automatically by the tool is not possible, considering the lack of data. Even given a
list of Error Events, how can we write an algorithm that will presume to know how to
handle these Error Events? We can't and we won’t try to. The Handlers list is
completely under the responsibility of the business analyst. It will be populated by the
Intermediate Error Events the business analyst will attach to the Activity. So, at the
very least let's make his life easier choosing the Errors.
We will start with a limited list of standard Errors that can happen to most Activities.
The user will be able to choose from this standard list.
Then, since meta-data of the Activity is not shared, we will extend the Activity
element further and add to its meta-data another attribute – Parameters. The
Parameters of an Activity are certain settings that describe the Activity behavior at
run time. And the hope is that from these Parameters one could deduce possible run
time exceptions.
We call this Activity extension, Construct. Also known as Building Block.
Constructs for BPMN
A Construct is a BPMN Activity with the attributes Parameters, Errors and Handlers.
These attributes should be the same for all references of the Activity. But due to
technical difficulties – system requirements – mentioned in the previous chapter, the
references are not related.
When we come to give a standard list of Parameters and Errors to the general
Activity, be it Task or Sub-Process, it occurs to us that if we can distinguish different
behavior of Activities we may be able give specialized lists to different Activities.
This is a much better help than just one standard for all.
After reviewing the different types of BPMN Tasks, we conclude that aside from the
base Task, there are only two types that can have special recognition – Send Task and
Receive Task. Knowing, at design time, that your Task will send data or is waiting for
a response yields some special Errors – depending on the Parameters of the data
transfer. But we do not look upon the Tasks themselves. We look on the combination
of Send Task with a Receive Task. This pattern, of a Send followed by a Receive,
unites in it the concept of data transfer. And the concept of simple data transfer is
what has the special Parameters and Errors. We call the base-Activity Construct,
Internal Activity, to tell apart from Activity. And we call the Send Receive Construct,
ahmm… Send-Receive Construct.
As we know, an Activity is either a Task or a Sub-Process. In general, and this is quite
true in Prosero, Sub-Process references a Process which begins with a Start Event,
which receives a message, and ends with an End Event, which returns a message. If
we assume that all Processes are built with this pattern then we can give a SubProcess special Parameters and Errors as well. So, we do assume that Sub-Process
refers to such a pattern and we name its Construct Receive-Process-Reply.
We will now begin an in-depth examination of these three Constructs. For each we
will present its relevant Parameters, its possible Errors, and then look for a connection
between the Parameters and Errors. This connection will allow the tool to
automatically choose an Error if the user chose the related Parameter.
Internal-Activity
 Behavior: Any single, finite stand-alone activity.
 Parameters:
o Maximal Duration
 The longest time the Activity is allowed to take.
o Failure modes (one by default)
 General failures that leads to exceptions.
o Resources 1,..,n
 Resources the Activity is using, such as databases, etc.
o Relevant external events 1,..,m
 Expected events to influence the Activity.
 Errors:
o Time-out
 The Activity took to long to complete.
o Failure-Mode 1,…, Failure-Mode n
 The Activity failed due to Failure-Mode X.
o Unavailable resource (1,…,n)
 The Activity failed due to unavailable resource.
o External event 1,…,External-event m
 The Activity failed due to an external event.
 Parameters → Errors:
o Maximal Duration → Time-out
o Failure modes → Failure-Mode
o Resources → Unavailable resource
o Relevant external events → External event
Send-Receive
 Behavior: Send a data-object, and receive a reply (optional).
 Parameters:
o Maximal Duration
 The longest time the Activity is allowed to take.
o Number of retries (default 1)
 Number of times the Task will attempt to send the data before
giving up. I.e. number of permitted failures.
o Security
 Is the Task using a security protocol of some sort.
o Non-repudiation
 Is the Task using a protocol to ensure the validity of the data.
o Synchronous/asynchronous
 Is the send-receive protocol synchronous or not.
 Errors:
o Time-out
 The Activity took to long to complete.
o Send failed
 Data was not received by the target.
o Send rejected
 The target received and rejected the data.
o Incompliance with security/non-repudiation
 Transmission did not comply with the security/non-repudiation
settings.
 Parameters → Errors:
o Maximal Duration → Time-out
o Security → Incompliance with security
o Non-repudiation → Incompliance with non-repudiation
Receive-Process-Reply
 Behavior: The top-level framework for a business process. Receive a request,
“execute” the process that handles the request and return a reply.
 Parameters:
o All activity arguments for process
 Arguments the process will use
o Maximal duration for the reply
 The longest time the End Even is allowed to take to send the
message.
o Number of retries for the reply

o
o
o
o
o
Number of times the End Event will attempt to send the reply
message before giving up.
Security
 Do receive and reply use a security protocol of some sort.
Non-repudiation
 Do receive and reply use a protocol to ensure the validity of the
data.
Synchronous/asynchronous
 Is the reply protocol synchronous or not.
Log update required
 This process will need to access a Log resource and update its
activity.
Commitment level
 How committed is the provider of the process to the validity of
the data it returns.
 Errors:
o All activity errors for process
o Time-out reply
 The End Event took to long to complete, sending the message.
o Receive rejected: format
 Improper syntax of the request. The received data is not of the
expected format – missing or unexpected fields. The Error can
contain either one or more field names.
o Receive rejected: authentication
 The sender of the received data, the caller, could not be
authenticated.
o Receive rejected: authorization
 Unauthorized request. The sender of the received data, the
caller, is not authorized to use this process.
o In-compliance with security/non-repudiation
 Reply transmission did not comply with the security/nonrepudiation settings.
o Send failed
 Data was not received by the Reply target, the caller.
o Send rejected
 The Reply target, the caller, received and rejected the returned
data.
 Parameters → Errors:
o Activity arguments → Activity errors
o Maximal Duration → Time-out reply
o Security → Incompliance with security
o Non-repudiation → Incompliance with non-repudiation
In the case of Receive-Process-Reply, the Parameter and Errors refer mainly to the
Receive and Reply Events. If we knew the process part is of certain functionality,
maybe we could estimate better the possible errors. The world of business processes is
complex and diverse. It would be quite difficult, for example, to compare one
"Purchase Order" process with another "Purchase Order". But if we look at a higher
level we can find a very general outline of short processes – simple handling of the
received message. "Purchase Order", for example, is a complex handling. We divided
the simple handling into four types:

Query – search for the data in the received message and return
the results.

Notification – update certain entries according to received
message.

Verify – compare the received message to your records and
approve or disapprove its validity.

Update – update your records with the received message and
approve its consistency.
And so we add to the Parameters:
o Process type: query, notification, verify, update.
We add to Errors:
o Query failed
o Verify failed
o Update failed
Each Error can contain one or more items of failures. Note that Notification does not
have an Error. It's not that the Process cannot fail; it cannot fail on account of business
Notification, which does not include any processing.
And we add to Parameters → Errors:
o Process type Query → Query failed
o Process type Verify → Verify failed
o Process type Update → Update failed
Let's sum up this sweet part. We divided all Activities to three categories of
Constructs: Internal Activity, Send-Receive and Receive-Process-Reply. All of which
hold Parameters and Errors to which the referenced Activity is, technically, unaware.
And we identified four basic types of business processes, aside from the general
business process: Query, Notification, Verify and Update.
Our innovation is giving the business analyst the ability to assign an Activity its
Parameters and Errors according to his knowledge. Although we help by suggesting
possible Parameter and Errors and associating items in the two lists, we can't really
verify his knowledge. Meaning, we can't make sure that a Process marked by the
business analyst as a Query is not in fact an Update, or even a simple Task. We
cannot verify the structure of the referenced Sub-Process or the type of the referenced
Task. But there is something we can do – we can allow the business analyst to create a
new Sub-Process which behaves in the expected manner and is referenced by the
Activity. This leads up to the idea of a Template.
Download