Network-based applications usually rely on the explicit distribution of components, which interact by means of message passing. Assembling components into a workflow is challenging due to the asynchronism inherent to the underlying message-passing communication model. This paper presents the PaCE language, which aims at coordinating asynchronous network-based components by exploiting the data-flow execution model. Specifically, PaCE has been designed for dealing with components compliant with the P-REST architectural style for pervasive adaptive systems. Moreover PaCE provides reflective features enabling run-time adaptation and evolution of workflows.