| Oracle® Complex Event Processing Visualizer User's Guide 11g Release 1 (11.1.1) Part Number E14302-03 |
|
|
View PDF |
Example A-1 lists the XML schema document (XSD) you use when creating a template for use in the Oracle CQL Query Wizard.
For more information on creating a template, see Section 2.4.7, "Creating an Oracle CQL Template for the Query Wizard".
Example A-1 wlevs_queryconstructor_config.xsd
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns="http://www.bea.com/ns/wlevs/config/queryconstructor"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.bea.com/ns/wlevs/config/queryconstructor">
<!-- This is the first draft for the xsd used
by the query constructor feature of the visualizer. -->
<!-- The types of Operators supported by the query constructor-->
<xs:simpleType name="operatorTypes">
<xs:restriction base="xs:string">
<xs:enumeration value="DStream" />
<xs:enumeration value="Filter" />
<xs:enumeration value="Intersect" />
<xs:enumeration value="IStream" />
<xs:enumeration value="Join" />
<xs:enumeration value="Minus" />
<xs:enumeration value="Output" />
<xs:enumeration value="Pattern" />
<xs:enumeration value="RStream" />
<xs:enumeration value="Select" />
<xs:enumeration value="Source" />
<xs:enumeration value="Union" />
<xs:enumeration value="Window" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="timeUnitTypes">
<xs:restriction base="xs:string">
<xs:enumeration value="" />
<xs:enumeration value="nanoseconds" />
<xs:enumeration value="milliseconds" />
<xs:enumeration value="microseconds" />
<xs:enumeration value="seconds" />
<xs:enumeration value="minutes" />
<xs:enumeration value="hours" />
<xs:enumeration value="days" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="windowTypes">
<xs:restriction base="xs:string">
<xs:enumeration value="now" />
<xs:enumeration value="range-time" />
<xs:enumeration value="range-unbounded" />
<xs:enumeration value="row-time" />
<xs:enumeration value="rows" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="viewOutputTypes">
<xs:restriction base="xs:string">
<xs:enumeration value="Stream" />
<xs:enumeration value="Relation" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="sourceTypes">
<xs:restriction base="xs:string">
<xs:enumeration value="ExtRelation" />
<xs:enumeration value="Stream" />
<xs:enumeration value="Relation" />
<xs:enumeration value="View" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="outputTypes">
<xs:restriction base="xs:string">
<xs:enumeration value="View" />
<xs:enumeration value="Query" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="patternSkipTypes">
<xs:restriction base="xs:string">
<xs:enumeration value="DEFAULT" />
<xs:enumeration value="ALL MATCHES" />
</xs:restriction>
</xs:simpleType>
<!-- Outer element for all querys/views, root attribute points to the Output operator's ID for this query-->
<xs:element name="Rule">
<xs:complexType>
<xs:sequence>
<xs:element name="Operator" type="operatorType"
minOccurs="1" maxOccurs="unbounded" />
</xs:sequence>
<xs:attribute name="root" type="xs:integer" />
</xs:complexType>
</xs:element>
<!-- Each "box" in the query constructor GUI is an Operator element -->
<xs:complexType name="operatorType">
<xs:sequence>
<!-- Every operator has an associated CQL DDL -->
<xs:element name="cql-property" type="xs:string"
minOccurs="1" maxOccurs="1" />
<!-- The inputs to this operator. A source operator has 0 inputs, all other operators have one or more inputs -->
<xs:element name="inputs" type="inputsType" minOccurs="0"
maxOccurs="1" />
<!-- Some operators might have an alias, e.g. source, pattern -->
<xs:element name="alias" type="xs:string" minOccurs="0"
maxOccurs="1" />
<!-- An operator may be any one of those defined in the operatorTypes enumeration -->
<xs:choice minOccurs="1" maxOccurs="1">
<xs:group ref="DStreamOperatorType" />
<xs:group ref="FilterOperatorType" />
<xs:group ref="IntersectOperatorType" />
<xs:group ref="IStreamOperatorType" />
<xs:group ref="JoinOperatorType" />
<xs:group ref="MinusOperatorType" />
<xs:group ref="OutputOperatorType" />
<xs:group ref="PatternOperatorType" />
<xs:group ref="RStreamOperatorType" />
<xs:group ref="SelectOperatorType" />
<xs:group ref="SourceOperatorType" />
<xs:group ref="UnionOperatorType" />
<xs:group ref="WindowOperatorType" />
</xs:choice>
</xs:sequence>
<!-- What type of operator is this -->
<xs:attribute name="type" type="operatorTypes" use="required" />
<!-- This xml document is a tree of operators, the ID is used as a unique identifier to point to an operator.
The input tag holds an ID of an operator which is an input to 'this' operator.
-->
<xs:attribute name="ID" type="xs:integer" use="required" />
</xs:complexType>
<!-- The inputs to an operator. Only a source operator has 0 inputs -->
<xs:complexType name="inputsType">
<xs:sequence>
<xs:element name="input" type="xs:integer" minOccurs="1"
maxOccurs="unbounded" />
</xs:sequence>
</xs:complexType>
<!-- DStream operator structure -->
<xs:group name="DStreamOperatorType">
<xs:sequence>
<!-- there are no elements as of now in the DStream operator structure -->
</xs:sequence>
</xs:group>
<!-- Filter operator structure -->
<xs:group name="FilterOperatorType">
<xs:sequence>
<xs:element name="predicates" type="filterPredicatesType"
minOccurs="1" maxOccurs="1" />
</xs:sequence>
</xs:group>
<xs:complexType name="filterPredicatesType">
<xs:sequence>
<xs:element name="predicate" type="xs:string" minOccurs="1"
maxOccurs="1" />
</xs:sequence>
</xs:complexType>
<!-- Intersect Operator structure -->
<xs:group name="IntersectOperatorType">
<xs:sequence>
<!-- there are no elements as of now in the Intersect operator structure -->
</xs:sequence>
</xs:group>
<!-- IStream operator structure -->
<xs:group name="IStreamOperatorType">
<xs:sequence>
<!-- there are no elements as of now in the IStream operator structure -->
</xs:sequence>
</xs:group>
<xs:group name="JoinOperatorType">
<xs:sequence>
<xs:element name="predicates" type="joinPredicatesType"
minOccurs="1" maxOccurs="1" />
</xs:sequence>
</xs:group>
<xs:complexType name="joinPredicatesType">
<xs:sequence>
<xs:element name="predicate" type="xs:string" minOccurs="1"
maxOccurs="1" />
</xs:sequence>
</xs:complexType>
<!-- Intersect Operator structure -->
<xs:group name="MinusOperatorType">
<xs:sequence>
<!-- there are no elements as of now in the Minus operator structure -->
</xs:sequence>
</xs:group>
<!-- Output operator structure -->
<xs:group name="OutputOperatorType">
<xs:sequence>
<xs:element name="output-type" type="outputTypes" />
<xs:element name="output-name" type="xs:string" />
<xs:element name="view-schema-list" minOccurs="0"
maxOccurs="1" />
</xs:sequence>
</xs:group>
<xs:complexType name="viewSchemaList">
<xs:sequence minOccurs="1" maxOccurs="unbounded">
<xs:element name="view-attr">
<xs:complexType>
<xs:sequence>
<xs:element name="name" type="xs:string" />
<xs:element name="type" type="xs:string" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
<!-- Pattern operator structure -->
<xs:group name="PatternOperatorType">
<xs:sequence>
<xs:element name="pattern-skip" type="patternSkipTypes"
minOccurs="1" maxOccurs="1" />
<xs:element name="partition-by" minOccurs="0"
maxOccurs="1">
<xs:complexType>
<xs:sequence>
<xs:element name="partition-attr"
type="xs:string" minOccurs="1" maxOccurs="unbounded" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="define-list" minOccurs="1"
maxOccurs="1">
<xs:complexType>
<xs:sequence>
<xs:element name="define-attr" type="xs:string"
minOccurs="1" maxOccurs="unbounded" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="measures-list" minOccurs="1"
maxOccurs="1">
<xs:complexType>
<xs:sequence>
<xs:element name="measure-attr" type="xs:string"
minOccurs="1" maxOccurs="unbounded" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="pattern-list" minOccurs="1"
maxOccurs="1">
<xs:complexType>
<xs:sequence>
<xs:element name="pattern-attr" type="xs:string"
minOccurs="1" maxOccurs="unbounded" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="subsets" minOccurs="0" maxOccurs="1">
<xs:complexType>
<xs:sequence>
<xs:element name="subset" type="subsetType"
minOccurs="1" maxOccurs="unbounded" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="timer-event" minOccurs="0"
maxOccurs="1">
<xs:complexType>
<xs:sequence>
<xs:element name="duration" type="xs:string" />
<xs:element name="multiple-duration"
type="xs:boolean" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:group>
<xs:complexType name="subsetType">
<xs:sequence>
<xs:element name="subset-name" type="xs:string" />
<xs:element name="corr-attr-name" type="xs:string" />
</xs:sequence>
</xs:complexType>
<!-- Rstream operator structure -->
<xs:group name="RStreamOperatorType">
<xs:sequence>
<!-- there are no elements as of now in the RStream operator structure -->
</xs:sequence>
</xs:group>
<!-- Select operator structure -->
<xs:group name="SelectOperatorType">
<xs:sequence>
<xs:element name="select-list" type="selectListType"
minOccurs="1" maxOccurs="1" />
<xs:element name="group-list" type="groupListType"
minOccurs="0" maxOccurs="1" />
<xs:element name="having-clause" type="xs:string"
minOccurs="0" maxOccurs="1" />
<xs:element name="order-by-list" minOccurs="0"
maxOccurs="1" />
</xs:sequence>
</xs:group>
<xs:complexType name="groupListType">
<xs:sequence>
<xs:element name="group-by" type="xs:string" minOccurs="1"
maxOccurs="unbounded" />
</xs:sequence>
</xs:complexType>
<xs:complexType name="orderByListType">
<xs:sequence>
<xs:element name="order-by-attr" type="orderByAttrType"
minOccurs="1" maxOccurs="unbounded" />
</xs:sequence>
</xs:complexType>
<xs:complexType name="orderByAttrType">
<xs:sequence>
<xs:element name="order-by-symbol" type="xs:string" />
<xs:element name="ascending" type="xs:boolean" />
<xs:element name="nulls-first" type="xs:boolean" />
</xs:sequence>
</xs:complexType>
<xs:complexType name="selectListType">
<xs:sequence>
<xs:element name="select-attr" type="selectAttrType"
minOccurs="1" maxOccurs="unbounded">
</xs:element>
</xs:sequence>
</xs:complexType>
<xs:complexType name="selectAttrType">
<xs:sequence>
<xs:element name="select-expression" type="xs:string" />
<xs:element name="alias" type="xs:string" />
</xs:sequence>
</xs:complexType>
<!-- Source operator structure -->
<xs:group name="SourceOperatorType">
<xs:sequence>
<!-- The name of this source in the CQL engine -->
<xs:element name="source-name" type="xs:string" />
<!-- Is this a 'View' / 'Stream' / 'Relation' -->
<xs:element name="source-type" type="sourceTypes" />
<!-- If this is a view, does it produce a 'Stream' or a 'Relation' -->
<xs:element name="view-output-type" type="viewOutputTypes"
minOccurs="0" maxOccurs="1" />
</xs:sequence>
</xs:group>
<!-- Intersect Operator structure -->
<xs:group name="UnionOperatorType">
<xs:sequence>
<!-- Is this a union all statement? true/false -->
<xs:element name="union-all" type="xs:boolean" />
</xs:sequence>
</xs:group>
<!-- Window operator structure -->
<xs:group name="WindowOperatorType">
<xs:sequence>
<!-- what type of window is this -->
<xs:element name="type" type="windowTypes" />
<!-- only for partition windows -->
<xs:element name="partition-by" type="xs:string"
minOccurs="0" maxOccurs="1" />
<!-- required for all windows except "now" -->
<xs:element name="range-params" type="windowRangeParamsType"
minOccurs="0" maxOccurs="1" />
</xs:sequence>
</xs:group>
<xs:complexType name="windowRangeParamsType">
<xs:sequence>
<xs:element name="timeSpecType" minOccurs="0" maxOccurs="1" />
<xs:element name="slideSpecType" minOccurs="0"
maxOccurs="1" />
<xs:element name="rows" type="xs:integer" minOccurs="0"
maxOccurs="1" />
</xs:sequence>
</xs:complexType>
<xs:complexType name="slideSpecType">
<xs:sequence>
<xs:element name="slidevalue" type="xs:integer" />
<xs:element name="slideunit" type="timeUnitTypes" />
</xs:sequence>
</xs:complexType>
<xs:complexType name="timeSpecType">
<xs:sequence>
<xs:element name="timevalue" type="xs:decimal" />
<xs:element name="timeunit" type="timeUnitTypes" />
</xs:sequence>
</xs:complexType>
</xs:schema>