| Contents (hide) 1 Research 1.1 Background 1.2 Our Categories 2 Prosero (implementation) 2.1 Problem with timeouts |
Error Categories
Research
Background
First, how are errors represented in BPMN spec: 3 types of intermediate events- error/exception
- compensation
- fail
When we come to decide on error types we first look on existing suggestions by workflowpatterns:
- Work Item Failure
- Deadline Expiry
- Resource Unavailability
- External Trigger
- Constrain Violation
Fault message
On BPEL error means we received a "Fault" message as a reply.
On BPEL error means we received a "Fault" message as a reply.
Our Categories
- Process Errors
- Failure
- generic infrastructure failure stemming from low levels that cannot be anticipated at BPMN level.
- Analogous to "work-item failure".
- Timeout
- Analogous to "deadline expiry".
- Data Errors
- Superficial data error
- can be checked without special processing (e.g., wrong argument type).
- Content level data error
- requires processing (e.g., incorrect URL).
- Meta-data level error
- something wrong with meta-data, e.g., authorization, authentication, etc.
- Commitment/precondition violation
- correct data that violates some existing token or requires a missing token
- see topic Tokens:
- As noted, only this level can be handled without raising a lower-level exception.
- This is the only "business-level" error, i.e., does not require raising an exception from outside.
Prosero (implementation)
Eclipse
To send messages to Eclipse-view "Problems", remember: classes *Marker, static class PlatformUI.
To send messages to Eclipse-view "Problems", remember: classes *Marker, static class PlatformUI.
Problem with timeouts
Considering the fact that the error-handling will be translated from BPMN to BPEL, we see two support issued for the Timeout error:- On infrastructure level all web-services has timeout setting. These settings are set by the server configuration. Meaning we cannot influence them from BPMN level. Although, to us, it seems reasonable that the analyst will be able to set a timeout in the model, apperantly it isn't so in execution.
- Normally, the service-engine (server) initiates timeout on a service. If we will cause timeout exception in a service, it will happen without the support and knowledge of the service-engine.
We could simply say that our BPMN language does support Timeout error handling, but that there is no executable (BPEL) implementation for that. The concept of defining a timeout is good. It is not our fault that current implementation does not fully support it.
Ronen's note
I agree with your suggestion, although I believe even Prosero can implement some time outs. Notice that you are referring to timeout for web services. However, if our time out refers to a process, it should be possible to support it. For instance, when send-receive is not synchronous, we can use a timeout to indicate how long we will wait for an answer. When a local timeout occurs, we simply continue with the process. I'm guessing this could be implemented, as well as other similar cases.
I agree with your suggestion, although I believe even Prosero can implement some time outs. Notice that you are referring to timeout for web services. However, if our time out refers to a process, it should be possible to support it. For instance, when send-receive is not synchronous, we can use a timeout to indicate how long we will wait for an answer. When a local timeout occurs, we simply continue with the process. I'm guessing this could be implemented, as well as other similar cases.