Oracle SOA Business Events简介。
官方文档(Using Business Events and the Event Delivery Network):https://docs.oracle.com/html/E10224_05/obe_intro.htm
You can raise business events when a situation of interest occurs. For example, in a loan flow scenario, a BPEL Process service component executing a loan process can raise a loan completed event at the completion of the process. Other systems within the infrastructure of this application can listen for these events and, upon receipt of one instance of an event:
1)Use the event context to derive business intelligence or dashboard data. 2)Signal to a mail department that a loan package must be sent to a customer. 3)Invoke another business process. 4)Send information to Oracle Business Activity Monitoring (BAM)
Business events are typically a one-way, fire-and-forget, asynchronous way to send a notification of a business occurrence. The business process does not:
1)Rely on any service component receiving the business event to complete. 2)Care if any other service components receive the business event. 3)Need to know where subscribers (if any) are and what they do with the data.
These are important distinctions between business events and direct service invocations that rely on the Web Services Description Language (WSDL) file contract (for example, a SOAP service client). If the author of the event depends on the receiver of the event, then messaging typically must be accomplished through service invocation rather than through a business event. Unlike direct service invocation, the business event separates the client from the server.
A business event is defined using the event definition language (EDL). EDL is a schema used to build business event definitions. Applications work with instances of the business event definition.
EDL consists of the following:
1)Global name Typically a Java package name (for example, com.acme.ExpenseReport.created), though this is not required. 2)Payload definition The most common use for a definition is an XML Schema (XSD). The payload of a business event is defined using an XSD. The schema URI is contained in the root element of the payload.
Example 39-1 shows an EDL file with two business events in the BugReport event definition: bugUpdated and bugCreated. The namespace (BugReport) and associated schema file (BugReport.xsd) are referenced.
Example 39-1 EDL File with Two Business Events
<?xml version = '1.0' encoding = 'UTF-8'?> <definitions targetNamespace="/model/events/edl/BugReport" xmlns:ns0="/model/events/schema/BugReport" xmlns="http://schemas.oracle.com/events/edl"> <schema-import namespace="/model/events/schema/BugReport" location="BugReport.xsd"/> <event-definition name="bugCreated"> <content element="ns0:bugCreatedInfo"/> </event-definition> <event-definition name="bugUpdated"> <content element="ns0:bugUpdatedInfo"/> </event-definition> </definitions>
These two events are available for subscription in Oracle Mediator.
Business events are deployed to the metadata service (MDS) repository. Deploying a business event to MDS along with its artifacts (for example, the XSDs) is known as publishing the EDL (or event definition). This action transfers the EDL and its artifacts to a shared area in MDS. An object in an MDS shared area is visible to all applications in the Resource Palette of Oracle JDeveloper. After an EDL is published, it can be subscribed to by other applications. EDLs cannot be unpublished; the definition always exists.
A subscription is for a specific qualified name (QName) (for example, x.y.z/newOrders). A QName is a tuple (URI, localName) that may be derived from a string prefix:localName with a namespace declaration such as xmlns:prefix=URI or a namespace context. In addition, subscriptions can be further narrowed down by using content-based filters.
Business events are published in the Event Delivery Network (EDN). The EDN runs within every SOA instance. Raised events are delivered by EDN to the subscribing service components. Oracle Mediator service components and BPEL Process service components can subscribe to and publish events.
The EDN has two different implementations:
1)EDN-DB: Uses an Oracle database as a backend store and depends on Oracle-specific features. 2)EDN-JMS: Uses a generic JMS queue as a back-end store.
If you are using an Oracle database, Oracle recommends that you use EDN-DB instead of EDN-JMS.
Local and Remote Events Boundaries
A single SOA composite application instance can reside in a single container or can be clustered across multiple containers. Another application (for example, an Oracle Application Development Framework (ADF) Business Component application) can be configured to run in the same container as the SOA composite application instance or in a different container.
Raising an event from a Java EE application can be done through a local event connection or a remote event connection:
1)Local event connection If the publisher resides on the same Oracle WebLogic Server as the application and the publisher uses a local business event connection factory, the event is raised through a local event connection. In this scenario, synchronous subscriptions are executed synchronously. 2)Remote event connection If the caller resides in a different container (different JVM) then the application, the event is raised through a remote event connection. Only asynchronous subscriptions are supported for remote event connections.
You can also raise events through PL/SQL APIs.
If another application (for example, an Oracle ADF Business Component application) is configured to run in the same container as the SOA composite application, it is optimized to use local event connections. The boundary for events is the application instance. When an event is raised in the application instance, subscriptions registered in the application instance are executed. Events are not propagated from one application instance to another. Propagation can be achieved through an Oracle Mediator in both instances, which listens to events and publishes them to a JMS queue.
其他官方文档:
35.Managing Business Events https://docs.oracle.com/cd/E29542_01/admin.1111/e10226/busevent_mang.htm#SOAAG37099