The core idea of Compositional CRUD is to provide the basic CRUD operations not as discrete SOA services but as composable commands following the Command Pattern and the Promise Pipelining concept. This Jazoon Conference presentation shows how this approach has been implemented for managing complex price models at Credit Suisse Private Banking using the Eclipse Modeling Framework.
CRUD is a well-known approach for systematically deriving data access services from data models. While this approach is widely applied and easy to understand, it leads to several well-known limitations, especially in the context of service oriented architectures. Since only primitive data manipulation operations are made available, more complex operations require the sequential execution of these primitive operations. In typical SOA environments this has severe negative impacts on performance and, potentially, even consistency. To avoid these disadvantageous consequences, we’d like to introduce a refined approach, called Compositional CRUD.
Based on commands as building blocks, arbitrarily complex manipulations can be composed by chaining commands. Resulting command chains can be executed within a single server invocation, thus eliminating the disadvantages of the traditional CRUD approach without compromising on its genericity. Moreover, Compositional CRUD changes the perspective from separated database tables to operations on interconnected objects graphs. Beyond SOA, other important requirements need to be supported in the Enterprise: Data has to be (bi-temporally) historized and versioned, data changes must be controlled by workflows, and complex constraints on data models must be enforced.