The compensation end event can be read as "a business failure has occurred within the scope of the enclosing sub-process, go and do any necessary compensating activities for work that has been completed.
The compensation activity associated with book hotel does all that is necessary to undo the booking in the business sense. It is not a roll-back in the IT or database sense.
To get this to work in Intalio (5.2 Beta) we have to make some allowances for the incomplete implementation of compensation but the original is still recognisable.
In this representation (which generates executable BPEL), the failure of the Book Air subprocess is represented by a simple failure end event to be trapped by an intermediate failure event on a containing subprocess. In this case, the error handler for failure is in the outermost subprocess.
The exception flow is directed into a compensation end event and this forces any eligible compensation activities to be executed. If there are other actions that should be done by the error handler, the compensation end event can be placed inside a subprocess. There is currently a restriction that prevents the exception flow from having more than one symbol (task, subprocess, end event).
BPMN allows for the compensation end event to specify a target activity or to apply compensation to all eligible sub-processes. Intalio implements these alternatives.
It is definitely worth thinking about patterns of business process and workflow before letting the business analysts loose with BPMN tools. Using implementable patterns will save time resolving syntax problems in every business process definition.
Intalio is well on the way to a practical implementation of BPMN compensation. It would be an advance if all valid BPMN could be drawn (regardless of the capability of translation into BPEL) and those bits that will not be executable flagged at design stage. At present, there is an unhappy combination of illogical BPEL and correct BPMN not being permitted.