misc/instance.xsd (433 lines of code) (raw):
<?xml version="1.0" encoding="utf-8"?>
<xs:schema
elementFormDefault="qualified"
xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="Instance">
<xs:complexType>
<xs:all>
<xs:element name="Job" type="jobType" maxOccurs="1" minOccurs="0"/>
</xs:all>
</xs:complexType>
</xs:element>
<!--Job type defination-->
<xs:complexType name="jobType">
<xs:sequence>
<!--Job Name-->
<xs:element name="Name" maxOccurs="1" minOccurs="0" type="nameType"/>
<!-- Job Comment-->
<xs:element name="Comment" maxOccurs="1" minOccurs="0" type="string128"/>
<!--Declare parameters-->
<xs:element name="Parameters" type="parametersDeclareType" minOccurs="0" maxOccurs="1"/>
<!--Priority-->
<xs:element name="Priority" maxOccurs="1" minOccurs="0" default="9">
<xs:simpleType>
<xs:restriction base="xs:int">
<xs:minInclusive value="0"/>
<xs:maxInclusive value="9"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<!--Tasks-->
<xs:element name="Tasks">
<xs:complexType>
<xs:sequence>
<xs:choice maxOccurs="unbounded">
<xs:element type="sqlTaskType" name="SQL" minOccurs="0" maxOccurs="unbounded"/>
<xs:element type="sqlPlanTaskType" name="SQLPlan" minOccurs="0" maxOccurs="unbounded"/>
<xs:element type="dtType" name="DT" minOccurs="0" maxOccurs="unbounded"/>
<xs:element type="mapReduceType" name="MapReduce" minOccurs="0" maxOccurs="unbounded"/>
<xs:element type="graphType" name="Graph" minOccurs="0" maxOccurs="unbounded"/>
<xs:element type="mockType" name="Mock" minOccurs="0" maxOccurs="unbounded"/>
<xs:element type="adminType" name="Admin" minOccurs="0" maxOccurs="unbounded"/>
<xs:element type="subJobType" name="SubJob" minOccurs="0" maxOccurs="unbounded"/>
<xs:element type="plSQLType" name="PLSQL" minOccurs="0" maxOccurs="unbounded"/>
<xs:element type="lineageTaskType" name="Lineage" minOccurs="0" maxOccurs="unbounded"/>
<xs:element type="sqlCostTaskType" name="SQLCost" minOccurs="0" maxOccurs="unbounded"/>
<xs:element type="xLibType" name="XLib" minOccurs="0" maxOccurs="unbounded"/>
<xs:element type="xMatrixType" name="Matrix" minOccurs="0" maxOccurs="unbounded"/>
<xs:element type="xMatrixType" name="Stat" minOccurs="0" maxOccurs="unbounded"/>
<xs:element type="dupType" name="Dup" minOccurs="0" maxOccurs="unbounded"/>
<xs:element type="mergeTaskType" name="Merge" minOccurs="0" maxOccurs="unbounded"/>
<xs:element type="ctrTaskType" name="CTR" minOccurs="0" maxOccurs="unbounded"/>
<xs:element type="copyTaskType" name="COPY" minOccurs="0" maxOccurs="unbounded"/>
<xs:element type="backupTaskType" name="Backup" minOccurs="0" maxOccurs="unbounded"/>
<xs:element type="lotType" name="LOT" minOccurs="0" maxOccurs="unbounded"/>
</xs:choice>
</xs:sequence>
</xs:complexType>
</xs:element>
<!--DAG defination-->
<xs:element name="DAG" type="dagType" maxOccurs="1" minOccurs="0"/>
</xs:sequence>
<xs:attribute name="Concurrent" type="xs:boolean" use="optional"/>
</xs:complexType>
<!--Task Base-->
<xs:complexType name="taskBaseType">
<xs:sequence>
<!--Task Name-->
<xs:element name="Name" maxOccurs="1" minOccurs="1" type="nameType64"/>
<!-- Task Comment-->
<xs:element name="Comment" maxOccurs="1" minOccurs="0" type="string1K"/>
<!--Config-->
<xs:element name="Config" maxOccurs="1" minOccurs="0" type="propertiesType"/>
</xs:sequence>
</xs:complexType>
<!--COPY Task Type-->
<xs:complexType name="copyTaskType">
<xs:complexContent>
<xs:extension base="taskBaseType">
<xs:sequence>
<xs:element name="Local" type="LocalType" minOccurs="0" maxOccurs="unbounded"/>
<xs:element name="Tunnel" type="TunnelType" minOccurs="0" maxOccurs="unbounded"/>
<xs:element name="MappingItems" type="MappingItemsType" minOccurs="0" maxOccurs="1"/>
<xs:element name="JobInstanceNumber" type="xs:unsignedInt" minOccurs="0" maxOccurs="1"/>
<xs:element name="Mode" type="xs:string" minOccurs="1" maxOccurs="1"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="LOTPlanType">
<xs:sequence>
<xs:element name="ResourceName" type="xs:string" minOccurs="1" maxOccurs="1"/>
<xs:element name="Project" type="xs:string" minOccurs="1" maxOccurs="1"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="lotType">
<xs:complexContent>
<xs:extension base="taskBaseType">
<xs:sequence>
<xs:element name="Query" type="string2M" minOccurs="0" maxOccurs="1"/>
<xs:element name="Plan" type="LOTPlanType" minOccurs="0" maxOccurs="1"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="LocalType">
<xs:sequence>
<xs:element name="Type" type="xs:string" minOccurs="1" maxOccurs="1"/>
<xs:element name="Project" type="xs:string" minOccurs="1" maxOccurs="1"/>
<xs:element name="Table" type="xs:string" minOccurs="1" maxOccurs="1"/>
<xs:element name="Partition" type="xs:string" minOccurs="0" maxOccurs="1"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="TunnelType">
<xs:sequence>
<xs:element name="Type" type="xs:string" minOccurs="1" maxOccurs="1"/>
<xs:element name="Project" type="xs:string" minOccurs="1" maxOccurs="1"/>
<xs:element name="Table" type="xs:string" minOccurs="1" maxOccurs="1"/>
<xs:element name="Partition" type="xs:string" minOccurs="0" maxOccurs="1"/>
<xs:element name="EndPoint" type="xs:string" minOccurs="1" maxOccurs="1"/>
<xs:element name="OdpsEndPoint" type="xs:string" minOccurs="0" maxOccurs="1"/>
<xs:element name="Signature" type="xs:string" minOccurs="1" maxOccurs="1"/>
<xs:element name="SignatureType" type="xs:string" minOccurs="0" maxOccurs="1"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="MappingItemsType">
<xs:sequence>
<xs:element name="MappingItem" type="MappingItemType" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="MappingItemType">
<xs:sequence maxOccurs="unbounded">
<xs:element name="SourceColumn" type="xs:string"/>
<xs:element name="DestColumn" type="xs:string"/>
</xs:sequence>
</xs:complexType>
<!--SQL Task Type-->
<xs:complexType name="sqlTaskType">
<xs:complexContent>
<xs:extension base="taskBaseType">
<xs:sequence>
<xs:element name="Query" minOccurs="1" maxOccurs="1" type="string2M"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<!--SQL Plan Task Type-->
<xs:complexType name="sqlPlanTaskType">
<xs:complexContent>
<xs:extension base="taskBaseType">
<xs:sequence>
<xs:element name="Query" minOccurs="1" maxOccurs="1" type="string2M"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<!--Lineage Task Type-->
<xs:complexType name="lineageTaskType">
<xs:complexContent>
<xs:extension base="taskBaseType">
<xs:sequence>
<xs:element name="Query" minOccurs="1" maxOccurs="1" type="string2M"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<!--SQLCost Task Type-->
<xs:complexType name="sqlCostTaskType">
<xs:complexContent>
<xs:extension base="taskBaseType">
<xs:sequence>
<xs:element name="Query" minOccurs="1" maxOccurs="1" type="string2M"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<!--DT Task Type-->
<xs:complexType name="dtType">
<xs:complexContent>
<xs:extension base="taskBaseType">
<xs:sequence>
<xs:element name="Statement" maxOccurs="1" minOccurs="1" type="string1M"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<!--Map Reduce Task Type-->
<xs:complexType name="mapReduceType">
<xs:complexContent>
<xs:extension base="taskBaseType">
<xs:sequence>
<xs:element name="JobConf" type="propertiesType" minOccurs="1" maxOccurs="1"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<!--Graph Task Type-->
<xs:complexType name="graphType">
<xs:complexContent>
<xs:extension base="taskBaseType">
<xs:sequence>
<xs:element name="JobConf" type="propertiesType" minOccurs="1" maxOccurs="1"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<!--MOCK Task Type-->
<xs:complexType name="mockType">
<xs:complexContent>
<xs:extension base="taskBaseType">
<xs:sequence>
<xs:element name="Runtime" type="string32" minOccurs="1" maxOccurs="1" />
<xs:element name="Cpu" type="string32" minOccurs="1" maxOccurs="1"/>
<xs:element name="Memory" type="string32" minOccurs="1" maxOccurs="1"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<!--CTR Task-->
<xs:complexType name="ctrTaskType">
<xs:complexContent>
<xs:extension base="taskBaseType">
<xs:sequence>
<xs:element name="Method" maxOccurs="1" minOccurs="1" type="string1M"/>
<xs:element name="CTRConf" maxOccurs="1" minOccurs="1" type="string2M"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<!--Nest task type-->
<xs:complexType name="subJobType">
<xs:complexContent>
<xs:extension base="taskBaseType">
<xs:sequence>
<xs:element name="JobName" type="nameType" minOccurs="1" maxOccurs="1"/>
<xs:element name="CronExpression" type="string32" minOccurs="0" maxOccurs="1" />
<xs:element name="Parameters" maxOccurs="1" minOccurs="0" type="parametersPasstype"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<!--admin task-->
<xs:complexType name="adminType">
<xs:complexContent>
<xs:extension base="taskBaseType">
<xs:sequence>
<xs:element name="Command" type="string1M" minOccurs="1" maxOccurs="1"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<!--backup task-->
<xs:complexType name="backupTaskType">
<xs:complexContent>
<xs:extension base="taskBaseType">
<xs:sequence>
<xs:element name="Command" type="string1M" minOccurs="1" maxOccurs="1"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<!--PL sql task-->
<xs:complexType name="plSQLType">
<xs:complexContent>
<xs:extension base="taskBaseType">
<xs:sequence>
<xs:element name="Statement" type="string2M" minOccurs="1" maxOccurs="1"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<!--Dup task-->
<xs:complexType name="dupType">
<xs:complexContent>
<xs:extension base="taskBaseType">
<xs:sequence>
<xs:element name="Project" type="nameType" minOccurs="1" maxOccurs="1"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<!--Merge Task Type-->
<xs:complexType name="mergeTaskType">
<xs:complexContent>
<xs:extension base="taskBaseType">
<xs:sequence>
<xs:element name="TableName" minOccurs="1" maxOccurs="100" type="TableItem" />
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<!--Parameter in declaration-->
<xs:complexType name="parametersDeclareType">
<xs:sequence>
<xs:element name="Parameter" maxOccurs="unbounded" minOccurs="0">
<xs:complexType>
<xs:sequence>
<xs:element name="Name" maxOccurs="1" minOccurs="0" type="string32"/>
<xs:element name="Type" maxOccurs="1" minOccurs="0">
<xs:simpleType>
<xs:restriction base="xs:string">
<!--Supported types include string, int-->
<xs:pattern value="[sS][tS][rR][iI][nN][gG]|[iI][nN][tT]"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="DefaultValue" maxOccurs="1" minOccurs="0" type="string128"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
<!--Parameter in Instance pass to job-->
<xs:complexType name="parametersPasstype">
<xs:sequence>
<xs:element name="Parameter" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="Name" maxOccurs="1" minOccurs="0" type="string32"/>
<xs:element name="Value" maxOccurs="1" minOccurs="0" type="string128"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
<!--Task Config Defination-->
<!--Data Source-->
<xs:complexType name="dtDataSourceType">
<xs:sequence>
<xs:element name="URI" type="string128" maxOccurs="1" minOccurs="0"/>
<xs:element name="Properties" type="propertiesType" maxOccurs="1" minOccurs="0"/>
<xs:element name="Schema" type="dtDataSchemaType" maxOccurs="1" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
<!--Properties Type defination-->
<xs:complexType name="propertiesType">
<xs:sequence>
<xs:element name="Property" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="Name" type="string128"/>
<xs:element name="Value" type="string128K"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
<!-- Data Schema Type Defination-->
<xs:complexType name="dtDataSchemaType">
<xs:sequence>
<xs:element name="ColumnDelimiter" type="string1" maxOccurs="1" minOccurs="0"/>
<xs:element name="RowDelimiter" type="string1" maxOccurs="1" minOccurs="0"/>
<xs:element name="Columns" maxOccurs="1" minOccurs="0">
<xs:complexType>
<xs:sequence>
<xs:element name="Column" maxOccurs="unbounded" minOccurs="1">
<xs:complexType>
<xs:sequence>
<xs:element name="Name" minOccurs="1" maxOccurs="1" type="string128"/>
<xs:element name="Type" minOccurs="0" maxOccurs="1" type="string32"/>
<xs:element name="Nullable" minOccurs="0" maxOccurs="1" type="xs:boolean"/>
<xs:element name="Default" minOccurs="0" maxOccurs="1" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
<!--DAG type defination-->
<xs:complexType name="dagType">
<xs:sequence>
<xs:element name="Comment" maxOccurs="1" minOccurs="0" type="string128"/>
<xs:element name="RunMode">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:pattern value="[sS][eE][qQ][uU][eE][nN][cC][eE]|[pP][aA][rR][aA][lL][lL][eE][lL]"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
</xs:sequence>
</xs:complexType>
<!--XLib Task Type-->
<xs:complexType name="xLibType">
<xs:complexContent>
<xs:extension base="taskBaseType">
<xs:sequence>
<xs:element name="Method" type="nameType" minOccurs="1" maxOccurs="1"/>
<xs:element name="Parameters" type="string2M" minOccurs="1" maxOccurs="1"/>
<xs:element name="InputTablenames" type="string2M" minOccurs="0" maxOccurs="1"/>
<xs:element name="OutputTablenames" type="string2M" minOccurs="0" maxOccurs="1"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<!--Matrix Task Type-->
<xs:complexType name="xMatrixType">
<xs:complexContent>
<xs:extension base="taskBaseType">
<xs:sequence>
<xs:element name="Method" type="nameType" minOccurs="1" maxOccurs="1"/>
<xs:element name="Properties" maxOccurs="1" minOccurs="0" type="propertiesType"/>
<xs:element name="Parameters" type="string2M" minOccurs="0" maxOccurs="1"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<!--Data Replica Task Type-->
<!--Name type -->
<xs:simpleType name="nameType">
<xs:restriction base="xs:string">
<xs:maxLength value="32"/>
<xs:minLength value="3"/>
<xs:pattern value="([a-z]|[A-Z]){1,}([a-z]|[A-Z]|[\d]|_)*"/>
</xs:restriction>
</xs:simpleType>
<!--Name type 64 chars-->
<xs:simpleType name="nameType64">
<xs:restriction base="xs:string">
<xs:maxLength value="64"/>
<xs:minLength value="3"/>
<xs:pattern value="([a-z]|[A-Z]){1,}([a-z]|[A-Z]|[\d]|_)*"/>
</xs:restriction>
</xs:simpleType>
<!--String type length=1-->
<xs:simpleType name="string1">
<xs:restriction base="xs:string">
<xs:maxLength value="32"/>
</xs:restriction>
</xs:simpleType>
<!--String type length=32-->
<xs:simpleType name="string32">
<xs:restriction base="xs:string">
<xs:maxLength value="32"/>
</xs:restriction>
</xs:simpleType>
<!--String type length=128-->
<xs:simpleType name="string128">
<xs:restriction base="xs:string">
<xs:maxLength value="128"/>
</xs:restriction>
</xs:simpleType>
<!--String type length=1K 1024-->
<xs:simpleType name="string1K">
<xs:restriction base="xs:string">
<xs:maxLength value="1024"/>
</xs:restriction>
</xs:simpleType>
<!--String type length=128K 131072-->
<xs:simpleType name="string128K">
<xs:restriction base="xs:string">
<xs:maxLength value="131072"/>
</xs:restriction>
</xs:simpleType>
<!--String type length=10K 10240-->
<xs:simpleType name="string10K">
<xs:restriction base="xs:string">
<xs:maxLength value="10240"/>
</xs:restriction>
</xs:simpleType>
<!--String type length=1M 1048576 -->
<xs:simpleType name="string1M">
<xs:restriction base="xs:string">
<xs:maxLength value="1048576"/>
</xs:restriction>
</xs:simpleType>
<!--String type length=2M 2097152 -->
<xs:simpleType name="string2M">
<xs:restriction base="xs:string">
<xs:maxLength value="2097152"/>
</xs:restriction>
</xs:simpleType>
<xs:complexType name='TableItem'>
<xs:simpleContent>
<xs:extension base='string1K'>
<xs:attribute name="cluster_name" use="optional" type="string32"/>
<xs:attribute name="merge_cross_paths" use="optional" type="xs:boolean"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:schema>