In this book, we assume that supported composite services are pre-defined and can only contain simple services. This means all required services and their locations can be determined based on the BPEL and index information. In reality, however, composite services could be much more complex. For example, a composite service could invoke other composite services. This would result in a more complicated invocation sequence. Furthermore, only two types of BPEL activities, sequence and flow, are considered for composite services covered in this book. BPEL activities such as if, while, forEach, and repeatUntil () could produce more complex composite services than the supported types in this book. For example, an if activity indicates that some invoked services may not be determined until the invoking services have been executed. This would require access methods to update the access sequence based on which services are to be invoked. Some other BPEL activities such as while could require some services to be executed repeatedly. In such case, these services might need to be cached locally for a longer period of time to avoid frequent retrievals from broadcast channels.