Applications are defined as networks of “black box” processes, which exchange data across predefined connections. These black box processes can be reconnected endlessly to form different applications without having to be changed internally. […] The application developer works with flows of data, being processed asynchronously, rather than the conventional single hierarchy of sequential, procedural code. […] Items travel from station to station, undergoing various transformations. Think of a soft drink bottling factory, where bottles are filled at one station, capped at the next and labelled at yet another one.