experiences with codifying event processing function patterns
An event processing flow can be represented as a directed graph that describes how events are obtained from one or more sources, processed by one or more components, and finally sent to one or more sinks. Such flows are often used by experts in different domains, on different platforms, to obtain customized information and alerts. In previous work, the Cascade language has been proposed for describing commonly used patterns of flows. The patterns cover different possible variations of the flows, including variations in the structure of the flow, the components in the flow and the possible parameterizations of these components. The patterns help in codifying best practices in terms of event processing flows in different domains. We refer to these patterns as function patterns. This is in contrast to design patterns that outline a strategy to solve a design challenge, but stop short of actually recommending a complete procedure to perform a function. We have developed tools that allow domain experts to construct, parameterize and deploy specific flows that follow a certain pattern. In this paper, we describe some experiences in using the flow patterns in a real-world domain. Some of the key lessons we learned are: 1) the use of patterns and associated tools helped make domain experts more productive and reduced their dependency on a supporting team of developers, 2) developing patterns requires a change in programming style, often resulting in more reusable and modularized code, 3) challenges remain with regard to code evolution and testing.
event processing function patterns cascade flow composition case-study