The JEDI Event-Based Infrastructure and Its Application to the Development of the OPSS WFMS Gianpaolo Cugola, Elisabetta Di Nitto, and Alfonso Fuggetta AbstractÐThe development of complex distributed systems demands for the creation of suitable architectural styles (or paradigms) and related runtime infrastructures. An emerging style that is receiving increasing attention is based on the notion of event. In an event- based architecture, distributed software components interact by generating and consuming events. An event is the occurrence of some state change in a component of a software system, made visible to the external world. The occurrence of an event in a component is asynchronously notified to any other component that has declared some interest in it. This paradigm (usually called ªpublish/ subscribe,º from the names of the two basic operations that regulate the communication) holds the promise of supporting a flexible and effective interaction among highly reconfigurable, distributed software components. In the past two years, we have developed an object-oriented infrastructure called JEDI (Java Event-Based Distributed Infrastructure). JEDI supports the development and operation of event-based systems and has been used to implement a significant example of distributed system, namely, the OPSS workflow management system (WFMS). The paper illustrates the main features of JEDI and how we have used them to implement OPSS. Moreover, the paper provides an initial evaluation of our experiences in using the event-based architectural style and a classification of some of the event-based infrastructures presented in the literature. Index TermsÐEvent-based systems, distributed systems, software architectures, workflow, business processes, object-orientation, publish/subscribe middleware. æ 1 INTRODUCTION C ONVERGENCE between telecommunication, broadcasting, and computing is opening new opportunities and challenges for a potentially large market of innovative network-wide services. The class of users interested by this revolution is significantly large: families, professionals, large organizations, government agencies, and administra- tions. The services range from home banking and electronic commerce, to coordination and workflow support for large dispersed teams, within the same company or even across multiple companies. Many research and industrial activities are currently being carried out to identify feasible strategies to develop and operate these services in an effective and economically viable way. The requirements and technical problems that have to be addressed are complex and critical: . Services must be able to operate on a wide area network with acceptable performance. . The software technology used to implement these services must be ªlight,º i.e., it should be scalable in terms of the number of both components and users involved and of their distribution. . The technology must enable a ªplug and playº approach to support dynamic reconfiguration and introduction of new service components. . Finally, it is essential to support openness and interoperability between different platforms since the services are usually implemented in a hetero- geneous hardware infrastructure. To foster the diffusion of network-wide applications, we need to identify proper architectural styles and supporting infrastructures able to cope with the above requirements and challenges. Actually, there is a wide range of distributed architectural styles and middleware infrastruc- tures that have purposely been conceived to address the above issues. Most of these existing styles and infrastruc- tures are based on a point-to-point communication model. For instance, the basic service offered by CORBA [36], RMI [51], and DCOM [20] is the synchronous invocation of a remote service offered by some server over the network. The wide diffusion of the point-to-point communication model has been fostered by the availability of RPC, which is certainly an effective mechanism to implement a wide range of distributed systems. RPC is characterized by a tight conceptual coupling between the component that requests a service (i.e., the client) and the component that satisfies such request (i.e., the server). Before invoking a service, the client has to know the existence of a server capable of satisfying its request and it has to obtain a reference to such server. Even extensions and new facilities of advanced middleware infrastructures such as CORBA Naming Service [37] and CORBA Dynamic Invocation Interface do not depart significantly from the underlying RPC paradigm. Despite the effectiveness and conceptual simplicity of the point-to-point communication model, many situations require the availability of a more decoupled model. In particular, the communication among the components of a IEEE TRANSACTIONS ON SOFTWARE ENGINEERING, VOL. 27, NO. 9, SEPTEMBER 2001 827 . The authors are with the Politecnico di Milano, Department of Electronics and Information, Piazza Leonardo da Vinci, 3220133 Milano, Italy. E-mail: {cugola, dinitto, fuggetta}@elet.polimi.it. Manuscript received 21 Sept. 1998; revised 26 Apr. 1999; accepted 7 Apr. 2000. Recommended for acceptance by M. Jazayeri. For information on obtaining reprints of this article, please send e-mail to: tse@computer.org, and reference IEEECS Log Number 107430. 0098-5589/01/$10.00 ß 2001 IEEE