The concepts of programming in the large and programming in the small distinguish between two aspects of writing the type of long-running asynchronous processes that one typically sees in business processes: The origins of WS-BPEL go back to Web Services Flow Language (WSFL) and Xlang.
Microsoft even went ahead and created a scripting variant called XLANG/s which would later serve as the basis for their Orchestrations services inside their BizTalk Server.
In June 2007, Active Endpoints, Adobe Systems, BEA, IBM, Oracle, and SAP published the BPEL4People and WS-HumanTask specifications, which describe how human interaction in BPEL processes can be implemented.
A choreography specifies a protocol for peer-to-peer interactions, defining, e.g., the legal sequences of messages exchanged with the purpose of guaranteeing interoperability.
In addition to providing facilities to enable sending and receiving messages, the BPEL programming language also supports: There is no standard graphical notation for WS-BPEL, as the OASIS technical committee decided this was out of scope.
This feature enables a direct visual representation of BPEL process descriptions in the form of structograms, in a style reminiscent of a Nassi–Shneiderman diagram.
[citation needed] BPEL's control structures such as 'if-then-elseif-else' and 'while' as well as its variable manipulation facilities depend on the use of 'programming in the small' languages to provide logic.
BPELJ[12] is an effort related to JSR 207[13] that may enable Java to function as a 'programming in the small' language within BPEL.
A coordination protocol is introduced in order to control autonomy and life cycle of service-enabled human tasks in an interoperable manner.