The Business Process Execution Language specifies Web services that work together to perform a business process. BPEL is an orchestrating language: it sets down exactly how the Web services will cooperate to carry out the overall business process. BPEL is an XML-based programming language?that is, you write BPEL programs in XML. Because XML wasn't designed with programmers in mind, the programming results aren't prime examples of elegance. Fortunately, you rarely need to write in BPEL by hand. Most BPEL programs are written using special graphical editors that let you describe the business process diagrammatically and then automatically generate the corresponding BPEL code.