c or Powerbuilder, that access a shared relational database residing on a backend server. More recent packages have exploited multi-tier architectures where the presentation layer (often Web browser-based) is separated from the processing layer (C++ or Java) via application programming interfaces. These layers are in turn separated from the data layer - a relational or sometimes object-oriented database. What this all means, from an integration point of view, is that when integrating an OSS platform based on "best-in- breed" applications, the integrator potentially must deal with many techniques for extracting and importing data. Triggers and Log Tables Real-time notification Database reads/writes Polling Shared temporary tables Something happened App A App B App A App B Did something happen? Utility File Extracts and Loads Screen Scraping Green screen GUI App A App B App A App B Figure 22. Data and Event Capture Techniques Chapter 6 - Integrating the OSS Platform Figure 22 illustrates some of the common techniques used to capture and replicate events and data from package applications. There are, broadly speaking, four major interface types generally involved in integration today. Application Programming Interfaces (APIs). The application- programming interface represents the best possible integration option based on current thinking. The primary reason is that this style of integration insulates the user from the underlying programs and databases used to implement the package. Providing this separation enables the vendors to change the internal structure of the application without affecting the APIs and the integration dependent upon them. APIs come in several "flavors." The most common are APIs represented as Java, C++ or C class libraries or function calls and APIs exposed as CORBA interface definition language (IDL). Some APIs, particularly the CORBA based APIs, provide a notification mechanism. When an event occurs within the application, registered "listeners" will be notified via the API. For example, whe