This survey introduces a link between BPEL and a more abstract BPEL-like language.
It is tutorial in nature, focusing on features particular to BPEL, like scope-based
compensation and fault-handling. Such features are demonstrated here with a number
of executable BPEL programs. Although BPEL also provides features common to other
programming languages, it contains three important components: the BPEL program
(program algebra), XSD (Data types) and WSDL (Input/Output). This survey
concentrates on clarifying program logic and algebra instead of syntax. In doing
so an undesirable feature of compensation in BPEL is observed and a correction for
it proposed. It is argued that such observations justify the more abstract view of
BPEL taken here which facilitates accountable correctness.