SLIDE 68 68
Exceptions
- Event handler defines the triggering event and the activity set to be
performed when the event occurs
- <exception>
- Content: (onMessage | onTimeout | onFault)+
- </exception>
- 3 types of events
– onMessage event handler responds to an input message
- <onMessage>
- Content: (documentation?, action, context?, {any activity}+)
- </onMessage>
– onTimeout event handler responds to a time-out event
- <onTimeout property = Qname type = duration | dateTime : duration
- reference = QName | QName’@start’ | QName’@end’>
- Content: (documentation?, context?, {any activity}+)
- </onTimeout>
– onFault event handler responses to a fault.
- <onFault code = QName>
- Content: (documentation?, context?, {any activity}+)
- </onFault>
Transactions
- Transactions allow multiple activities to be treated as a single unit of
work, providing a guarantee of consistency and reliability
– name = NCName – type = atomic | open : atomic – participation = supports | always | never : never – retries = nonNegativeInteger : 0> – Content: (compensation?)
- </transaction>
- Atomic Transactions
– All activities performed as part of the transaction behave as a single unit of work – If the transaction cannot complete successfully, it will rollback to the state before the beginning of the transaction – In order to provide an all-or-nothing guarantee, an atomic transaction must exhibit the ACID (Atomicity , Consistency, Isolation, Durable) properties
– These can be used for long-lived transactions that cannot complete in a short time span – Resources are acquired for short periods of time and then released – Isolation requirement is relaxed and arbitrary levels of nesting is allowed