The BPEL language includes XML programming statements that enable developers to build robust processes. These statements are called activities and can be categorized as follows: Communication activities, such as receive, reply, and invoke, which enable clients and Web services to communicate by exchanging messages. Event-driven activities such as pick, onMessage, and onAlarm are also included in this category. Control activities, such as while, switch, sequence, flow, and wait, which control how the business process flow is executed. Fault activities, such as throw, terminate, catch, catchall, and compensate, which define how to handle faults that occur during processing.