Tuesday, September 3, 2019

12c SOA Event Delivery Network (EDN)

EDN uses JMS to deliver events from subscribers to publishers, but the configuration of JMS queues and topics and any associated filters is hidden from users of the EDN Service.

Advantages:
  1. When an event is published, it will be published in the entire domain. This means you can publish an event in one composite and subscribe to it in an other composite. You can subscribe to an event from another composite by browsing to its .edl file when adding the event to your mediator.
  2. You can play around with the consistency of the event when you subscribe to it. You can choose one of three: One and Only one, Guaranteed & Immediate.
In 11g ⇾
EDN uses DB AQ by default for publish and subscribe model of business events. This can be confirmed by verifying value of MBean property EdnJmsMode.
    False value denotes EDN using DB AQ
    True value denotes EDN using Weblogic JMS.
You can verify by navigating to oracle.as.soainfra. config –> SoaInfraConfig –> soa-infra in Application Defined MBeans.

In 12c ⇾
EDN uses Weblogic JMS by default. This can be confirmed by verifying value of MBean property JmsType .
    WLJMS value denotes EDN  using Weblogic JMS
    AQJMS value denotes EDN using AQ DB .
You can verify by navigating to oracle.as.soainfra.config –> EDNConfig –> edn in Application Defined MBeans

We will create following way of publishing and subscribing the events:
  1. BPEL based
  2. Mediator based
Through BPEL Implementation:
Step1: Create a XSD which we need to generate event definition (.edl) file.

XSD code:
<?xml version="1.0" encoding="windows-1252" ?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://www.emp.sample"
            targetNamespace="http://www.emp.sample" elementFormDefault="qualified">
  <xsd:element name="EmployeeRoot">
    <xsd:complexType>
      <xsd:sequence>
        <xsd:element name="Employee" maxOccurs="unbounded" minOccurs="0">
          <xsd:complexType>
            <xsd:sequence>
              <xsd:element name="Name" type="xsd:string"/>
              <xsd:element name="Id" type="xsd:string"/>
              <xsd:element name="Type" type="xsd:string"/>
            </xsd:sequence>
          </xsd:complexType>
        </xsd:element>
      </xsd:sequence>
    </xsd:complexType>
  </xsd:element>
</xsd:schema>

Step2: Create a EDL file using the created xsd.










Step3: Create BPEL to publish the event.



In the BPEL, drag and drop invoke activity and choose Interaction type as event.


Choose the event and variable name.







Step4: Subscribe event through BPEL





Now deploy and test.

Through Mediator Implementation:

Step1: Create XSD to generate the event definition to be used in the EDN.

<?xml version="1.0" encoding="windows-1252" ?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://www.emp.sample"
            targetNamespace="http://www.emp.sample" elementFormDefault="qualified">
  <xsd:element name="EmployeeRoot">
    <xsd:complexType>
      <xsd:sequence>
        <xsd:element name="Employee" maxOccurs="unbounded" minOccurs="0">
          <xsd:complexType>
            <xsd:sequence>
              <xsd:element name="Name" type="xsd:string"/>
              <xsd:element name="Id" type="xsd:string"/>
              <xsd:element name="Type" type="xsd:string"/>
            </xsd:sequence>
          </xsd:complexType>
        </xsd:element>
      </xsd:sequence>
    </xsd:complexType>
  </xsd:element>
</xsd:schema>

Step2: Create Event definition using the created XSD.









Step3: Create a mediator to publish the event.












Step4: Subscribe the event






Now deploy to EM console and test.


No comments:

Post a Comment

Featured Post

11g to 12c OSB projects migration points

1. Export 11g OSB code and import in 12c Jdeveloper. Steps to import OSB project in Jdeveloper:   File⇾Import⇾Service Bus Resources⇾ Se...