Compensation is concerned with undoing steps that were already successfully completed, because their results, and
possibly side effects, are no longer desired and need to be reversed.
If an Activity is still active, it cannot be compensated,
but rather needs to be canceled. Cancellation in turn can result in compensation of already successfully completed
portions of an active Activity, in case of a Sub-Process.
Note: Compensation is performed by a compensation handler. A compensation handler performs the steps necessary to reverse
the effects of an Activity. In case of a Sub-Process, the compensation handler has access to Sub-Process data at the
time of its completion (“snapshot data”).
Note: Compensation is triggered by a throw Compensation Event, which typically will be raised by an error handler, as part
of cancellation, or recursively by another compensation handler. That Event specifies the Activity for which
compensation is to be performed, either explicitly or implicitly.