Reusable functional composition patterns for Web services
Laurence Melloul, Armando Fox · 2004
Developers write Web service composition programs in terms of functionalities (e.g., "WebSearch") to postpone choosing which services of the same functionality to invoke (Google or Yahoo). We provide a higher level of abstraction than this for higher reuse. We express high-level "patterns" (e.g., "SearchAndCollectData") as both objects that can be "specialized" to particular applications ("SearchAndDownloadPapers " vs. "SearchAndAddBooksInCart") and objects that are reusable in the construction of higherlevel ones. Our approach lets developers write patterns in terms of high-level functionalities (e.g., "CollectData") and later decide on services to compose that have lower-level functionalities (e.g., "DownloadPapers" or "addBooksInCarts "). We describe our prototype and show an example of nested pattern specialization. We also discuss a reuse trade-off, showing that too much abstraction makes the pattern less expressive. Rather, we suggest developers capture what must be guaranteed in every context of invocation, regardless of the service selection.