Creating a Custom Event Definition

This section provides instructions for creating a custom event definition. Using the ExampleEventDefinition.wsdl file as a template, you provide values that let external products generate events.

Important: This topic provides instructions for manually creating a custom event definition. It is more convenient to create a custom event definition in SBM Composer. For more information, see Creating a New Custom Event Definition.

To create a custom event definition:

  1. Create an empty folder on your local system.
  2. Copy the advanced_orchestration_package.zip file and paste it in the folder.
  3. Extract the advanced_orchestration_package.zip file.
    • The ALFEventManager.wsdl file is the ALF Event Manager WSDL. Note that the ExampleEventDefinition.wsdl imports the ALFEventManager.wsdl.
    • The ALFEventBase_1.xsd file is the ALF event base schema.
    • ExampleEventDefinition.wsdl is the template for your custom event definition. The other files are explained in other topics.
      Note: You can also obtain a copy of the ALF Event Manager WSDL and the ALFEventBase_1.xsd files from the installDir\Composer\Conf folder.
  4. Create a copy of the ExampleEventDefinition.wsdl file in an XML editor and rename it as your external product WSDL file, for example, SCMProduct.wsdl. If you ever move this file to a different folder, be sure to place a copy of the ALFEventManager.wsdl and the ALFEventBase_1.xsd files in the folder as well.
  5. Edit this new file to modify it for your installation:
    1. Look for following section for event type declaration. Change the value attribute of the enumeration to your event type. Each enumeration value corresponds to different event occurring in your application.
      <xs:simpleType name="MyEventDefinitionEventType">
      <xs:restriction base="EventTypeType">
      <xs:enumeration value="MyEventDefinitionEvent"/>
      </xs:restriction>
      </xs:simpleType>

      You can define as many enumeration values as you want, for example:

      <xs:simpleType name="MyEventDefinitionEventType">
      <xs:restriction base="EventTypeType">
      <xs:enumeration value="Issue Created"/>
      <xs:enumeration value="Issue Deleted"/>
      <xs:enumeration value="Waiting for Approval"/>
      </xs:restriction>
      </xs:simpleType>
    2. Look for the following section for object type declaration. You can define as many enumeration values as you want. However, it is recommended that you define only one object type. Change the enumeration value to your external product specific object.
      <xs:simpleType name="MyEventDefinitionObjectType">
      <xs:restriction base="ObjectTypeType">
      <xs:enumeration value="MyEventDefinitionObject"/>
      </xs:restriction>
      </xs:simpleType>
    3. Look for product value, product instance and product version declarations. Product value indicates the external product name. Product version is the number you want to give this event declaration. You can use this value to distinguish the events between versions of a product if the event definitions are changed in an incompatible way. If the events are completely compatible, however, you should in general not change this value. Product instance is the "logical location," and is determined by the particular installation of the external product in your system. It can default to what is specified in the event definition, but you can also use SBM Composer to indicate the external product from which you are expecting the event.
      <xs:simpleType name="MyEventDefinitionProductType">
          <xs:restriction base="ProductType">
            <xs:enumeration value="MyEventDefinition"/>
          </xs:restriction>
        </xs:simpleType>
        
        <!-- Derived ProductVersionType -->
        <xs:simpleType name="MyEventDefinitionProductVersionType">
          <xs:restriction base="ProductVersionType">
            <xs:enumeration value="1.0"/>
          </xs:restriction>
        </xs:simpleType>
        
        <!-- Derived ProductInstanceType -->
        <xs:simpleType name="MyEventDefinitionProductInstanceType">
          <xs:restriction base="ProductInstanceType">
            <xs:enumeration value="MyEventDefinitionInstance"/>
          </xs:restriction>
        </xs:simpleType>
      

      Again in all three cases, replace the enumeration values to match the values for the external product.

      Note: The event type, object type, product, product instance, and product version values make a set of events match, and are used to determine which orchestration workflows need to be invoked.
    4. Look for the section where extension data is defined. Here you can define different fields you want to send as input to your orchestration workflows. Remember you can send only one set of data using one process app tool.
      <xs:complexType name="MyEventDefinitionCustomExtension">
          <xs:annotation>
            <xs:documentation>
              Custom Extension
            </xs:documentation>
          </xs:annotation>
          <xs:sequence>
            <xs:element name="MyEventDefinitionData" type="xs:string"/>
          </xs:sequence>
          <xs:anyAttribute/>
        </xs:complexType>
      

      You can define any type of schema under sequence either simple type elements as shown above or complex type.

    5. Replace all remaining occurrences of "MyEventDefinition" with your product value.
  6. At this point, your event definition WSDL is ready to be imported it into SBM Composer.

Related Topics

Accessing the Advanced Orchestration Package

Defining an Event Definition

Creating a Custom Event Definition