Arquivos de Esquema CDK do Cast Iron

Os arquivos de esquema XML fornecem a sintaxe e definem como os elementos e atributos são representados em arquivos XML. Importe os arquivos de esquema CDK do Cast Iron para o ambiente de desenvolvimento do Studio, em seguida crie os terminais e as conexões arrastando elementos do esquema da guia Projeto na caixa de ferramentas para a orquestração.

Os arquivos de esquema CDK:

ci-connector-config.xsd - Este arquivo é usado pelo Studio e pelo mecanismo de desenvolvimento para definir as opções básicas de configuração disponíveis para o conector. O metadados do plug-in é armazenado como elementos em seu arquivo XML e, uma vez configurados, as propriedades do terminal definem o que os usuários finais podem consultar e as atividades a que eles estão expostos. Eis aqui o arquivo ci-connector-config.xsd:
<xs:schema
	id="ci-cdk-config"
	version="1.0"
	targetNamespace="http://www.approuter.com/schemas/cdk/config/"
	xmlns:tns="http://www.approuter.com/schemas/cdk/config/"
	xmlns:xs="http://www.w3.org/2001/XMLSchema"
	xmlns:jaxb="http://java.sun.com/xml/ns/jaxb"
	xmlns:xjc="http://java.sun.com/xml/ns/jaxb/xjc"
	jaxb:extensionBindingPrefixes="xjc"
	jaxb:version="2.0"
	elementFormDefault="qualified">
	<xs:annotation>
		<xs:appinfo>
			<jaxb:schemaBindings>
				<jaxb:package
					name="com.approuter.studio.connectors.cdk.config" />
			</jaxb:schemaBindings>
			<jaxb:globalBindings>
				<xjc:simple />
			</jaxb:globalBindings>
		</xs:appinfo>
	</xs:annotation>
	<xs:element
		name="connectorConfiguration">
		<xs:complexType>
			<xs:sequence>
				<!-- Connector description -->
				<xs:element
					name="description"
					type="xs:string" />
				<!-- Endpoint form definition -->
				<xs:element
					name="endpoint"
					type="tns:EndpointForm" />
				<!-- Connector activities -->
				<xs:element
					name="activity-group"
					type="tns:ActivityGroup" />
				<xs:element
					name="operations"
					minOccurs="0">
					<xs:complexType>
						<xs:sequence>
							<xs:element
								name="operation"
								type="tns:operationType"
								minOccurs="0"
								maxOccurs="unbounded" />
						</xs:sequence>
						<!--
							default endpoint location for those
							operations that do not define one or are
							not defined
						-->
						<xs:attribute
							name="default-endpoint-location"
							type="xs:string"
							use="optional" />
					</xs:complexType>
				</xs:element>
				<!-- Minimum client version -->
				<xs:element
					name="clients"
					minOccurs="0">
					<xs:complexType>
						<xs:sequence>
							<xs:element
								name="client"
								type="tns:CompatibleClient"
								minOccurs="0"
								maxOccurs="unbounded" />
						</xs:sequence>
					</xs:complexType>
				</xs:element>
				<!-- release documentation -->
				<xs:element
					name="release-documentation"
					type="tns:ReleaseDocumentation"
					minOccurs="0"
					maxOccurs="unbounded" />
			</xs:sequence>
			<!--
				Internal name of the connector. Do not change
				names between releases of the connector
			-->
			<xs:attribute
				name="name"
				type="xs:string"
				use="required" />
			<!-- Readable label for connector -->
			<xs:attribute
				name="label"
				type="xs:string"
				use="required" />
			<!--
				Connection namespace. Used to associate
				activities with endpoints within Studio
			-->
			<xs:attribute
				name="connection-ns"
				type="xs:string"
				use="required" />
			<!-- Version of this connector -->
			<xs:attribute
				name="version"
				type="xs:string"
				use="required" />
			<!-- notes -->
			<xs:attribute
				name="notes"
				type="xs:string" />
			<!-- release date -->
			<xs:attribute
				name="release-date"
				type="xs:dateTime"
				use="optional" />
			<!--
				General hint to consumer as to its
				classification
			-->
			<xs:attribute
				name="category"
				type="tns:ConnectorCategory" />
		</xs:complexType>
	</xs:element>
	<xs:complexType
		name="ReleaseDocumentation">
		<xs:simpleContent>
			<xs:extension
				base="xs:string">
				<!-- corresponding plugin connector version -->
				<xs:attribute
					name="release-version"
					type="xs:string" />
			</xs:extension>
		</xs:simpleContent>
	</xs:complexType>
	<xs:complexType
		name="CompatibleClient">
		<xs:attribute
			name="clientName"
			type="xs:string"
			default="castiron-studio" />
		<xs:attribute
			name="minimumClientVersion"
			type="xs:string"
			default="6.0" />
	</xs:complexType>
	<!--
		Endpoint form. Test connection action required.
	-->
	<xs:complexType
		name="EndpointForm">
		<xs:complexContent>
			<xs:extension
				base="tns:Form">
				<xs:sequence>
					<xs:element
						name="test-connection-action"
						type="tns:TestConnectionAction" />
					<!-- Connector description -->
					<xs:element
						name="endpoint-description"
						type="xs:string" />
				</xs:sequence>
				<!--
					Used for Studio menu integration (e.g.
					Endpoints menu-item, default endpoint
					instance name)
				-->
				<xs:attribute
					name="endpoint-name"
					type="xs:string"
					use="required" />
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:complexType
		name="Form">
		<xs:sequence>
			<!-- Form fields -->
			<xs:element
				name="field"
				type="tns:FormField"
				minOccurs="0"
				maxOccurs="unbounded" />
			<!-- Fields can be grouped -->
			<xs:element
				name="field-group"
				type="tns:FieldGroup"
				minOccurs="0"
				maxOccurs="unbounded" />
			<!-- Form actions.   -->
			<xs:element
				name="actions"
				type="tns:Actions"
				minOccurs="0"
				maxOccurs="1" />
		</xs:sequence>
		<xs:attribute
			name="name"
			type="xs:string"
			use="required" />
	</xs:complexType>

	<!-- Fields can be a member of a group -->
	<xs:complexType
		name="FieldGroup">
		<xs:sequence>
			<xs:element
				name="field"
				type="tns:FormField"
				minOccurs="0"
				maxOccurs="unbounded" />
			<xs:element
				name="field-group"
				type="tns:FieldGroup"
				minOccurs="0"
				maxOccurs="unbounded" />
		</xs:sequence>
		<xs:attribute
			name="name"
			type="xs:string"
			use="required" />
		<!-- Readable group label -->
		<xs:attribute
			name="label"
			type="xs:string"
			use="optional" />
		<!--
			Predefined groups. If specified, there is no
			need to specify label, groups, or fields. If
			specified they will be ignored.
		-->
		<xs:attribute
			name="type"
			use="optional">
			<xs:simpleType>
				<xs:restriction
					base="xs:string">
					<xs:enumeration
						value="connection-timeout" />
					<xs:enumeration
						value="connection-proxy" />
					<!-- TBD others -->
				</xs:restriction>
			</xs:simpleType>
		</xs:attribute>
	</xs:complexType>
	<xs:complexType
		name="FormField">
		<xs:annotation>
			<xs:appinfo>
				<jaxb:bindings
					node="//xs:complexType[@name='FormField']">
					<jaxb:class
						implClass="com.approuter.studio.connectors.cdk.config.ConnectorFormField" />
				</jaxb:bindings>
			</xs:appinfo>
		</xs:annotation>
		<xs:complexContent>
			<xs:extension
				base="tns:FieldDescriptor">
				<xs:sequence>
					<!-- summary description text -->
					<xs:element
						name="short-description"
						type="xs:string"
						minOccurs="0" />
					<!-- detailed description text -->
					<xs:element
						name="long-description"
						type="xs:string"
						minOccurs="0" />
					<!-- hint text -->
					<xs:element
						name="hint"
						type="xs:string"
						minOccurs="0" />
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:complexType
		name="Actions">
		<xs:sequence>
			<xs:element
				name="action"
				type="tns:Action"
				maxOccurs="unbounded" />
			<!-- summary description text -->
			<xs:element
				name="short-description"
				type="xs:string"
				minOccurs="0" />
		</xs:sequence>
		<xs:attribute
			name="label"
			type="xs:string"
			use="optional" />
	</xs:complexType>
	<xs:complexType
		name="Action">
		<xs:simpleContent>
			<xs:extension
				base="xs:string">
				<xs:attribute
					name="label"
					type="xs:string" />
				<!--
					the operation that should be invoked in
					response to the action
				-->
				<xs:attribute
					name="operation-name" />
				<!-- summary description text -->
				<xs:attribute
					name="short-description"
					type="xs:string"
					use="required" />
			</xs:extension>
		</xs:simpleContent>
	</xs:complexType>
	<xs:complexType
		name="TestConnectionAction">
		<xs:simpleContent>
			<xs:restriction
				base="tns:Action">
				<xs:attribute
					name="operation-name"
					fixed="TestConnection" />
				<xs:attribute
					name="label"
					type="xs:string"
					fixed="Test Connection" />
			</xs:restriction>
		</xs:simpleContent>
	</xs:complexType>


	<!-- predefined connector categories -->
	<!--
		used to indicate the enterprise solution type
	-->
	<xs:simpleType
		name="ConnectorCategory">
		<xs:restriction
			base="xs:string">
			<xs:enumeration
				value="CRM" />
			<xs:enumeration
				value="SCM" />
			<xs:enumeration
				value="ERP" />
			<xs:enumeration
				value="ECM" />
			<xs:enumeration
				value="SFA" />
			<xs:enumeration
				value="BPM" />
			<xs:enumeration
				value="IBP" />
			<xs:enumeration
				value="ORM" />
			<xs:enumeration
				value="MIS" />
			<xs:enumeration
				value="SIS" />
			<xs:enumeration
				value="COM" />
			<xs:enumeration
				value="MOM" />
			<xs:enumeration
				value="PIM" />
			<xs:enumeration
				value="Database" />
			<!-- etc -->
		</xs:restriction>
	</xs:simpleType>

	<!-- activities -->
	<xs:complexType
		name="ActivityGroup">
		<xs:sequence>
			<xs:element
				name="activity"
				type="tns:Activity"
				minOccurs="1"
				maxOccurs="unbounded" />
		</xs:sequence>
		<!--
			this is the label of the group under which the
			activities will appear
		-->
		<xs:attribute
			name="label"
			type="xs:string"
			use="optional" />
	</xs:complexType>

	<!-- activity -->
	<xs:complexType
		name="Activity">
		<xs:sequence>
			<!-- wsdl operation -->
			<xs:element
				name="operation-name"
				type="xs:string" />
			<xs:element
				name="description"
				type="xs:string" />
			<xs:element
				name="task-list"
				type="tns:Tasks" />
		</xs:sequence>
		<xs:attribute
			name="name"
			type="xs:string"
			use="required" />
		<!--
			this is the label of the activity that appears
			under an activity group
		-->
		<xs:attribute
			name="label"
			type="xs:string"
			use="optional" />
	</xs:complexType>

	<!-- activity tasks -->
	<xs:complexType
		name="Tasks">
		<xs:sequence>
			<xs:element
				name="configure-task"
				type="tns:ConfigureTask" />
		</xs:sequence>
	</xs:complexType>
	<!--
		possible enhancement: determine "browsability"
		based on if input is an extension of abstract
		type.
	-->
	<xs:complexType
		name="ConfigureTask">
		<xs:sequence>
			<xs:element
				name="type"
				type="tns:ConfigurationType"
				default="browse" />
			<xs:element
				name="applies-to"
				type="tns:AppliesTo"
				minOccurs="0"
				default="inputs" />
		</xs:sequence>
	</xs:complexType>

	<!-- browsable or not -->
	<!--
		possible enhancement: determine browsability
		based on if input is an extension of abstract
		type.
	-->
	<xs:simpleType
		name="ConfigurationType">
		<xs:restriction
			base="xs:string">
			<xs:enumeration
				value="none" />
			<xs:enumeration
				value="browse" />
		</xs:restriction>
	</xs:simpleType>

	<!-- are the inputs or outputs configured? -->
	<!--
		possible enhancement: determine browsability
		based on if input is an extension of abstract
		type.
	-->
	<xs:simpleType
		name="AppliesTo">
		<xs:restriction
			base="xs:string">
			<xs:enumeration
				value="inputs" />
			<xs:enumeration
				value="outputs" />
			<xs:enumeration
				value="both" />
		</xs:restriction>
	</xs:simpleType>


	<!-- ******************* -->
	<!-- Descriptors...      -->
	<xs:simpleType
		name="allNNI">
		<xs:annotation>
			<xs:documentation> for maxOccurs
			</xs:documentation>
		</xs:annotation>
		<xs:union
			memberTypes="xs:nonNegativeInteger">
			<xs:simpleType>
				<xs:restriction
					base="xs:NMTOKEN">
					<xs:enumeration
						value="unbounded" />
				</xs:restriction>
			</xs:simpleType>
		</xs:union>
	</xs:simpleType>
	<xs:attributeGroup
		name="counts">
		<xs:attribute
			name="minCount"
			type="xs:nonNegativeInteger"
			use="optional"
			default="1" />
		<xs:attribute
			name="maxCount"
			type="tns:allNNI"
			use="optional"
			default="1" />
	</xs:attributeGroup>
	<xs:complexType
		name="Descriptor"
		abstract="true">
		<xs:sequence />
		<xs:attribute
			name="name"
			type="xs:string"
			use="required" />
		<!-- readable label text -->
		<xs:attribute
			name="label"
			type="xs:string"
			use="optional" />
		<xs:attributeGroup
			ref="tns:counts" />
	</xs:complexType>
	<!--
		child nodes annotated with 'volatile' indicate
		that text node is set externally to the
		connector implementation (e.g. by end-user
		building a project that uses the connector)
	-->
	<xs:complexType
		name="FieldDescriptor">
		<xs:complexContent>
			<xs:extension
				base="tns:Descriptor">
				<xs:sequence>
					<!-- field type (e.g. string, boolean, ...) -->
					<xs:element
						name="type"
						type="tns:FieldType" />
					<!-- associated xsd type -->
					<xs:element
						name="soap-type"
						type="tns:SoapType"
						minOccurs="0" />
					<!--
						define a default value for the field if
						applicable
					-->
					<xs:element
						name="default-value"
						type="xs:string"
						minOccurs="0" />
					<!--
						define if values are of a particular format
						e.g. password etc
					-->
					<xs:element
						name="format"
						type="tns:FieldFormat"
						minOccurs="0" />
					<!--
						define if possible values form a collection
						(e.g. a range or set of values)
					-->
					<xs:element
						name="field-restriction"
						type="tns:FieldRestriction"
						minOccurs="0" />
					<!--
						define if values are restricted to regex
						pattern
					-->
					<xs:element
						name="value-restriction"
						type="tns:ValueRestriction"
						minOccurs="0" />
					<!--
						volatile: current or set value. (e.g.
						"posted" value from endpoint panel when
						end-user presses the 'Test Connection'
						button.)
					-->
					<xs:element
						name="value"
						type="xs:string"
						minOccurs="0">
						<xs:annotation>
							<xs:appinfo>volatile</xs:appinfo>
						</xs:annotation>
					</xs:element>
				</xs:sequence>
				<!--
					<xs:attribute name="readable"
					type="xs:boolean" use="optional"
					default="true"/> <xs:attribute
					name="writable" type="xs:boolean"
					default="true" use="optional"/>
				-->
				<!-- namespace of this FieldDescriptor -->
				<xs:attribute
					name="ns"
					type="xs:anyURI" />
				<!--
					can a configuration property be applied to
					this field?
				-->
				<xs:attribute
					name="configurable"
					type="xs:boolean"
					default="false" />
				<!-- internal -->
				<xs:attribute
					name="used"
					type="xs:boolean"
					default="true">
					<xs:annotation>
						<xs:appinfo>volatile</xs:appinfo>
					</xs:annotation>
				</xs:attribute>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<!--
		Descriptor allows consumers to obtain detailed
		object description. For instance, this allows
	-->
	<!--
		Studio's UI generator to produce a user
		interface with various ui-component types and
		behaviors (in a consistent way.)
	-->
	<!--
		Note: ObjectDescriptor is part of
		DescribeObjectResponse defined in
		ci-connector-api.xsd
	-->
	<xs:complexType
		name="ObjectDescriptor">
		<xs:complexContent>
			<xs:extension
				base="tns:Descriptor">
				<xs:sequence>
					<xs:element
						name="field"
						type="tns:FieldDescriptor"
						minOccurs="0"
						maxOccurs="unbounded" />
					<xs:element
						name="object"
						type="tns:ObjectDescriptor"
						minOccurs="0"
						maxOccurs="unbounded" />
				</xs:sequence>
				<!-- namespace of this ObjectDescriptor -->
				<xs:attribute
					name="ns"
					type="xs:anyURI" />
				<!-- internal -->
				<xs:attribute
					name="used"
					type="xs:boolean"
					default="true">
					<xs:annotation>
						<xs:appinfo>volatile</xs:appinfo>
					</xs:annotation>
				</xs:attribute>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>

	<!-- supported types -->
	<xs:simpleType
		name="FieldType">
		<xs:restriction
			base="xs:string">
			<xs:enumeration
				value="string" />
			<xs:enumeration
				value="base64" />
			<xs:enumeration
				value="boolean" />
			<xs:enumeration
				value="int" />
			<xs:enumeration
				value="decimal" />
			<xs:enumeration
				value="date" />
			<xs:enumeration
				value="dateTime" />
			<xs:enumeration
				value="anyType" />
			<!-- any of the above (e.g. string, int, etc) -->
		</xs:restriction>
	</xs:simpleType>

	<!-- cooresponding xsd type -->
	<xs:simpleType
		name="SoapType">
		<xs:restriction
			base="xs:string">
			<xs:enumeration
				value="xs:base64Binary" />
			<xs:enumeration
				value="xs:boolean" />
			<xs:enumeration
				value="xs:decimal" />
			<xs:enumeration
				value="xs:int" />
			<xs:enumeration
				value="xs:string" />
			<xs:enumeration
				value="xs:date" />
			<xs:enumeration
				value="xs:dateTime" />
			<xs:enumeration
				value="xs:anyType" />
			<!--
				can be id, booolean, decimal, int, string,
				date, dateTime
			-->
		</xs:restriction>
	</xs:simpleType>

	<!-- supported type formats -->
	<xs:simpleType
		name="FieldFormat">
		<xs:restriction
			base="xs:string">
			<xs:enumeration
				value="string" />
			<xs:enumeration
				value="password" />
			<xs:enumeration
				value="percent" />
			<xs:enumeration
				value="phone" />
			<!--
				<xsd:enumeration value="date"/> date
				formats???
			-->
			<xs:enumeration
				value="url" />
			<xs:enumeration
				value="email" />
			<xs:enumeration
				value="currency" />
		</xs:restriction>
	</xs:simpleType>
	<!--
		possible values form a well defined collection
	-->
	<xs:complexType
		name="FieldRestriction">
		<xs:choice>
			<!-- value is restricted to a range of values -->
			<xs:element
				name="value-range"
				type="tns:ValueRange" />
			<!-- value is restricted to a set of values -->
			<xs:element
				name="value-set"
				type="tns:ValueSet" />
		</xs:choice>
	</xs:complexType>

	<!-- possible values form a set -->
	<xs:complexType
		name="ValueSet">
		<xs:sequence>
			<xs:element
				name="entry"
				type="tns:ValueSetEntry"
				maxOccurs="unbounded" />
		</xs:sequence>
		<!--
			is the set of values open or closed to
			additions
		-->
		<xs:attribute
			name="restricted"
			type="xs:boolean"
			use="optional"
			default="true" />
	</xs:complexType>
	<xs:complexType
		name="ValueSetEntry">
		<xs:sequence>
			<xs:element
				name="label"
				type="xs:string"
				minOccurs="0" />
			<!--
				value must be parsable for specified FieldType
			-->
			<xs:element
				name="value"
				type="xs:string" />
		</xs:sequence>
	</xs:complexType>
	<!--
		possible values are within a defined range
	-->
	<xs:complexType
		name="ValueRange">
		<xs:sequence>
			<!--
				min and max must be parsable for specified
				FieldType
			-->
			<xs:element
				name="min"
				type="xs:string"
				minOccurs="0" />
			<xs:element
				name="max"
				type="xs:string"
				minOccurs="0" />
			<!--
				e.g. for FieldType 'int' with min=0, max = 4,
				and step=2, the only allowed field values are
				0, 2, and 4
			-->
			<xs:element
				name="step"
				type="xs:string"
				minOccurs="0"
				default="1" />
		</xs:sequence>
	</xs:complexType>
	<!--
		value is restricted in length or regular
		expression
	-->
	<xs:complexType
		name="ValueRestriction">
		<xs:sequence>
			<xs:element
				ref="tns:length"
				minOccurs="0" />
			<xs:element
				ref="tns:min-length"
				minOccurs="0" />
			<xs:element
				ref="tns:max-length"
				minOccurs="0" />
			<xs:element
				ref="tns:pattern"
				minOccurs="0" />
		</xs:sequence>
	</xs:complexType>
	<xs:complexType
		name="ValueAttrib">
		<xs:complexContent>
			<xs:extension
				base="xs:anyType">
				<xs:attribute
					name="value"
					use="required" />
				<xs:attribute
					name="fixed"
					type="xs:boolean"
					use="optional"
					default="false" />
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:complexType
		name="NumAttrib">
		<xs:complexContent>
			<xs:restriction
				base="tns:ValueAttrib">
				<xs:attribute
					name="value"
					type="xs:nonNegativeInteger"
					use="required" />
			</xs:restriction>
		</xs:complexContent>
	</xs:complexType>

	<!-- values conform to a regular expression -->
	<xs:complexType
		name="Pattern">
		<xs:complexContent>
			<xs:restriction
				base="tns:ValueAttrib">
				<xs:attribute
					name="value"
					type="xs:string"
					use="required" />
			</xs:restriction>
		</xs:complexContent>
	</xs:complexType>
	<xs:element
		name="length"
		id="length"
		type="tns:NumAttrib" />
	<xs:element
		name="min-length"
		id="minLength"
		type="tns:NumAttrib" />
	<xs:element
		name="max-length"
		id="maxLength"
		type="tns:NumAttrib" />
	<xs:element
		name="pattern"
		id="pattern"
		type="tns:Pattern" />


	<!--       ...Descriptors -->
	<!-- ******************** -->
	<!--
		operationType allows defining endpoint location
		on a per operations basis.
	-->
	<xs:complexType
		name="operationType">
		<xs:sequence>
			<xs:element
				name="endpoint-location"
				type="xs:string" />
		</xs:sequence>
		<xs:attribute
			name="name">
			<xs:simpleType>
				<xs:restriction
					base="xs:string">
					<xs:enumeration
						value="testConnection" />
					<xs:enumeration
						value="listObjects" />
					<xs:enumeration
						value="describeObject" />
				</xs:restriction>
			</xs:simpleType>
		</xs:attribute>
	</xs:complexType>
</xs:schema>
ci-connector-api.xsd - Antes de poder acessar um terminal, o aplicativo precisa ser capaz de falar com o conector apropriado, utilizando chamadas a partir da API do conector. Este arquivo descreve os tipos de solicitação/resposta para as APIs TestConnection, ListObjects e DescribeObject. Segue abaixo o arquivo ci-connector-api.xsd:
<xs:schema
	id="ci-cdk-api"
	version="1.0"
	targetNamespace="http://www.approuter.com/schemas/cdk/api/"
	xmlns:tns="http://www.approuter.com/schemas/cdk/api/"
	xmlns:ccc="http://www.approuter.com/schemas/cdk/config/"
	xmlns:xs="http://www.w3.org/2001/XMLSchema"
	xmlns:jaxb="http://java.sun.com/xml/ns/jaxb"
	xmlns:xjc="http://java.sun.com/xml/ns/jaxb/xjc"
	jaxb:extensionBindingPrefixes="xjc"
	jaxb:version="2.0"
	elementFormDefault="qualified">
	<xs:import
		namespace="http://www.approuter.com/schemas/cdk/config/"
		schemaLocation="ci-connector-config.xsd" />
	<xs:annotation>
		<xs:appinfo>
			<jaxb:schemaBindings>
				<jaxb:package
					name="com.approuter.studio.connectors.cdk.api" />
			</jaxb:schemaBindings>
		</xs:appinfo>
	</xs:annotation>
	<xs:complexType
		name="TestConnection">
		<xs:sequence>
			<xs:element
				name="endpoint"
				type="ccc:EndpointForm" />
		</xs:sequence>
	</xs:complexType>
	<xs:complexType
		name="TestConnectionResponse">
		<xs:sequence>
			<xs:element
				name="success"
				type="xs:boolean" />
			<xs:element
				name="message"
				type="xs:string" />
		</xs:sequence>
	</xs:complexType>
	<xs:complexType
		name="ListObjects">
		<xs:sequence>
			<xs:element
				name="endpoint"
				type="ccc:EndpointForm" />
			<xs:element
				name="operation"
				type="xs:string"
				minOccurs="1" />
		</xs:sequence>
	</xs:complexType>
	<xs:complexType
		name="ListObjectsResponse">
		<xs:sequence>
			<xs:element
				name="objectType"
				type="tns:ObjectType"
				minOccurs="1"
				maxOccurs="unbounded" />
		</xs:sequence>
	</xs:complexType>
	<xs:complexType
		name="ObjectType">
		<xs:simpleContent>
			<xs:extension
				base="xs:string">
				<xs:attribute
					name="label"
					type="xs:string"
					use="optional" />
			</xs:extension>
		</xs:simpleContent>
	</xs:complexType>
	<xs:complexType
		name="DescribeObject">
		<xs:sequence>
			<xs:element
				name="endpoint"
				type="ccc:EndpointForm"
				minOccurs="1" />
			<xs:element
				name="objectType"
				type="xs:string"
				minOccurs="1" />
			<xs:element
				name="operation-name"
				type="xs:string" />
		</xs:sequence>
	</xs:complexType>
	<xs:complexType
		name="DescribeObjectResponse">
		<xs:sequence>
			<xs:element
				name="object"
				type="ccc:ObjectDescriptor" />
			<xs:element
				name="responseObject"
				type="ccc:ObjectDescriptor" />
		</xs:sequence>
		<!-- local part name of the derived type -->
		<xs:attribute
			name="name"
			type="xs:string" />
		<xs:attribute
			name="description"
			type="xs:string" />
		<!-- namespace of derived type -->
		<xs:attribute
			name="typeNS"
			type="xs:string" />
		<!-- namespace of base/abstract type -->
		<xs:attribute
			name="baseTypeNS"
			type="xs:string" />
		<!-- local part name of base/abstract type -->
		<xs:attribute
			name="baseType"
			type="xs:string" />
	</xs:complexType>
</xs:schema>



Feedback | notices