F XML Schemas

The following XML Schemas for the rule class properties and the rule conditions can be used to build authoring tools for rule management:

Rule Class Properties

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
            xmlns:xdb="http://xmlns.oracle.com/xdb"
            xmlns:rlmp="http://www.oracle.com/rlmgr/rsetprop.xsd"
            elementFormDefault="qualified"
            targetNamespace="http://www.oracle.com/rlmgr/rsetprop.xsd">
<xsd:element name="simple" type="rlmp:SimpleRuleSetProp"/>
<xsd:element name="composite" type="rlmp:CompositeRuleSetProp">
  <xsd:unique name="objtype">
    <xsd:selector xpath="./*"/>
    <xsd:field xpath="@type"/>
  </xsd:unique>
</xsd:element>

<!-- Properties of a rule class with simple events -->
<xsd:complexType name="SimpleRuleSetProp">
  <xsd:complexContent>
    <xsd:restriction base="xsd:anyType"> <!-- empty element -->
      <xsd:attribute name="ordering" type="xsd:string"/>
      <xsd:attribute name="storage" type="xsd:string"/>
      <xsd:attribute name="autocommit">
        <xsd:simpleType>
          <xsd:restriction base="xsd:string">
            <xsd:enumeration value="yes"/>
            <xsd:enumeration value="no"/>
          </xsd:restriction>
        </xsd:simpleType>
      </xsd:attribute>
      <xsd:attribute name="dmlevents">
        <xsd:simpleType>
          <xsd:restriction base="xsd:string">
            <xsd:enumeration value="I"/>
            <xsd:enumeration value="IU"/>
            <xsd:enumeration value="IUD"/>
          </xsd:restriction>
        </xsd:simpleType>
      </xsd:attribute>
      <xsd:attribute name="cnfevents">
        <xsd:simpleType>
          <xsd:restriction base="xsd:string">
            <xsd:enumeration value="I"/>
            <xsd:enumeration value="IU"/>
            <xsd:enumeration value="IUD"/>
          </xsd:restriction>
        </xsd:simpleType>
      </xsd:attribute>
      <xsd:attribute name="consumption">
        <xsd:simpleType>
          <xsd:restriction base="xsd:string">
            <xsd:enumeration value="exclusive"/>
           <xsd:enumeration value="shared"/>
           <xsd:enumeration value="rule"/>
         </xsd:restriction>
       </xsd:simpleType>
     </xsd:attribute>
   </xsd:restriction>
  </xsd:complexContent>
</xsd:complexType>
<xsd:group name="ObjectOrCollectionProp">
   <xsd:choice>
     <xsd:element name="object" type="rlmp:PrimEventProp"
                minOccurs="0" maxOccurs="1"/>
     <xsd:element name="collection" type="rlmp:CollectionProp" 
                minOccurs="0" maxOccurs="1"/>
  </xsd:choice>
</xsd:group>

<!-- Properties of a rule class with composite events -->
<xsd:complexType name="CompositeRuleSetProp">
  <xsd:sequence>
    <xsd:group ref="rlmp:ObjectOrCollectionProp" minOccurs="0"
                 maxOccurs="unbounded"/>
  </xsd:sequence>
  <xsd:attribute name="ordering" type="xsd:string"/>
  <xsd:attribute name="storage" type="xsd:string"/>
  <xsd:attribute name="autocommit">
    <xsd:simpleType>
      <xsd:restriction base="xsd:string">
        <xsd:enumeration value="yes"/>
        <xsd:enumeration value="no"/>
      </xsd:restriction>
    </xsd:simpleType>
  </xsd:attribute>
  <xsd:attribute name="equal" type="xsd:string"/>
  <xsd:attribute name="consumption">
    <xsd:simpleType>
      <xsd:restriction base="xsd:string">
        <xsd:enumeration value="exclusive"/>
        <xsd:enumeration value="shared"/>
      </xsd:restriction>
    </xsd:simpleType>
  </xsd:attribute>
  <xsd:attribute name="duration">
    <xsd:simpleType>
      <xsd:restriction base="xsd:string">
        <xsd:pattern value="call"/>
        <xsd:pattern value="([1-9]|[1-9][0-9]|[1-9][0-9]{2}|[1-9][0-9]{3})
                                                   (minutes|hours|days)"/>
      </xsd:restriction>
    </xsd:simpleType>
  </xsd:attribute>
</xsd:complexType>

<!-- Primitive event properties with a composite event/rule class -->
<xsd:complexType name="PrimEventProp">
  <xsd:complexContent>
    <xsd:restriction base="xsd:anyType">
      <xsd:attribute name="type" type="xsd:string" use="required"/>
      <xsd:attribute name="consumption">
        <xsd:simpleType>
          <xsd:restriction base="xsd:string">
            <xsd:enumeration value="exclusive"/>
            <xsd:enumeration value="shared"/>
          </xsd:restriction>
        </xsd:simpleType>
      </xsd:attribute>
    <xsd:attribute name="duration">
      <xsd:simpleType>
        <xsd:restriction base="xsd:string">
          <xsd:pattern value="transaction"/>
          <xsd:pattern value="session"/>
          <xsd:pattern value="([1-9]|[1-9][0-9]|[1-9][0-9]{2}|[1-9][0-9]{3})
                                                     (minutes|hours|days)"/>
        </xsd:restriction>
      </xsd:simpleType>
     </xsd:attribute>
    </xsd:restriction>
   </xsd:complexContent>
  </xsd:complexType>
  <xsd:complexType name="CollectionProp">
    <xsd:complexContent>
      <xsd:restriction base="xsd:anyType">
        <xsd:attribute name="type" type="xsd:string" use="required"/>
        <xsd:attribute name="groupby" type="xsd:string"/>
        <xsd:attribute name="compute" type="xsd:string"/>
      </xsd:restriction
    </xsd:complexContent>
  </xsd:complexType>
</xsd:schema>

Rule Condition

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
            xmlns:xdb="http://xmlns.oracle.com/xdb"
            xmlns:rlmc="http://www.oracle.com/rlmgr/rulecond.xsd"
            elementFormDefault="qualified"
            targetNamespace="http://www.oracle.com/rlmgr/rulecond.xsd">

      <xsd:element name="condition">
        <xsd:complexType mixed="true">
          <xsd:choice>
            <xsd:element name="and" type="rlmc:AndType"
                                    minOccurs="0" maxOccurs="1"/>
            <xsd:element name="any" type="rlmc:AnyType"
                                    minOccurs="0" maxOccurs="1"/>
            <xsd:element name="object" type="rlmc:ObjectCondType"
                                    minOccurs="0" maxOccurs="1"/>
          </xsd:choice>
        </xsd:complexType >
        <xsd:unique name="objNamesAny">
          <xsd:selector xpath=".//object"/>
          <xsd:field xpath="@name"/>
        </xsd:unique>
      </xsd:element>
      <xsd:group name="ObjectOrCollectionCondition">
        <xsd:choice>
          <xsd:element name="object" type="rlmc:ObjectCondType" 
                       minOccurs="1" maxOccurs="1"/>
          <xsd:element name="collection" type="rlmc:CollectionCondType"
                       minOccurs="1" maxOccurs="1"/>
        </xsd:choice>
      </xsd:group>

      <xsd:complexType name="AndType">
        <xsd:sequence>
          <xsd:group ref="rlmc:ObjectOrCollectionCondition"
                       minOccurs="1" maxOccurs="unbounded"/>
          <xsd:choice>
            <xsd:element name="not" type="rlmc:NotCondType"
                       minOccurs="0" maxOccurs="1"/>

            <xsd:element name="notany" type="rlmc:NotAnyCondType"
                       minOccurs="0" maxOccurs="1"/>

          </xsd:choice>
        </xsd:sequence>
        <xsd:attribute name="join" type="xsd:string"/>
        <xsd:attribute name="equal" type="xsd:string"/>
        <xsd:attribute name="having" type="xsd:string"/>
        <xsd:attribute name="sequence">
          <xsd:simpleType>
            <xsd:restriction base="xsd:string">
              <xsd:enumeration value="yes"/>
              <xsd:enumeration value="no"/>
            </xsd:restriction>
          </xsd:simpleType>
        </xsd:attribute>
      </xsd:complexType>

      <xsd:complexType name="NotCondType">
        <xsd:sequence>
          <xsd:element name="object" type="rlmc:ObjectCondType"
                       minOccurs="0" maxOccurs="1"/>
        </xsd:sequence>
        <xsd:attribute name="by" type="xsd:string"/>
        <xsd:attribute name="join" type="xsd:string"/>
      </xsd:complexType>

      <xsd:complexType name="NotAnyCondType">
        <xsd:sequence>
          <xsd:element name="object" type="rlmc:ObjectCondType" minOccurs="1"
                       maxOccurs="unbounded"/>
        </xsd:sequence>
        <xsd:attribute name="count" type="xsd:positiveInteger"/>
        <xsd:attribute name="by" type="xsd:string"/>
        <xsd:attribute name="join" type="xsd:string"/>
      </xsd:complexType>

      <xsd:complexType name="AnyType">
        <xsd:sequence>
          <xsd:element name="object" type="rlmc:ObjectCondType" minOccurs="1"
                       maxOccurs="unbounded"/>
        </xsd:sequence>
        <xsd:attribute name="count" type="xsd:positiveInteger"/>
        <xsd:attribute name="join" type="xsd:string"/>
        <xsd:attribute name="equal" type="xsd:string"/>
        <xsd:attribute name="sequence">
          <xsd:simpleType>
            <xsd:restriction base="xsd:string">
              <xsd:enumeration value="yes"/>
              <xsd:enumeration value="no"/>
            </xsd:restriction>
          </xsd:simpleType>
        </xsd:attribute>
      </xsd:complexType>
      <xsd:complexType name="ObjectCondType">
        <xsd:simpleContent>
          <xsd:extension base="xsd:string">
            <xsd:attribute name="name" type="xsd:string" use="required"/>
           <xsd:attribute name="ref" type="xsd:string"/>
          </xsd:extension>
        </xsd:simpleContent>
      </xsd:complexType>
 
      <xsd:complexType name="CollectionCondType">
        <xsd:simpleContent>
          <xsd:extension base="xsd:string">
            <xsd:attribute name="name" type="xsd:string" use="required"/>
            <xsd:attribute name="groupby" type="xsd:string" use="required"/> 
            <xsd:attribute name="having" type="xsd:string"/>
            <xsd:attribute name="compute" type="xsd:string"/>
            <xsd:attribute name="windowsize" type="xsd:string"/>
            <xsd:attribute name="windowlen" type="xsd:string"/>
          </xsd:extension>
        </xsd:simpleContent>
      </xsd:complexType>
   </xsd:schema>