Fichiers schémas CDK Cast Iron

Les fichiers schémas XML fournissent la syntaxe et définissent la manière dont les éléments et les attributs sont représentés dans les fichiers XML. Vous importez les fichiers schémas CDK Cast Iron dans votre environnement de développement Studio, puis créez vos noeuds finaux et connexions en faisant glisser les éléments de schéma de l'onglet Projet de la boîte à outils vers votre orchestration.

Les fichiers schémas CDK sont les suivants :

ci-connector-config.xsd : ce fichier est utilisé par Studio et le moteur de déploiement pour définir les options de configuration de base disponibles pour votre connecteur. Les métadonnées de plug-in sont stockées en tant qu'éléments dans votre fichier XML et une fois configurées, les propriétés de noeud final définissent ce que les utilisateurs finaux voient et les activités auxquelles ils sont exposés. Voici le fichier 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>
				<!-- Description du connecteur -->
				<xs:element
					name="description"
					type="xs:string" />
				<!-- Définition du formulaire de noeud final -->
				<xs:element
					name="endpoint"
					type="tns:EndpointForm" />
				<!-- Activités du connecteur -->
				<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>
						<!--
							Emplacement du noeud final par défaut pour les
							opérations qui n'en définissent aucun ou qui ne sont
							pas définies
						-->
						<xs:attribute
							name="default-endpoint-location"
							type="xs:string"
							use="optional" />
					</xs:complexType>
				</xs:element>
				<!-- Version client minimale -->
				<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>
				<!-- Publication de la documentation -->
				<xs:element
					name="release-documentation"
					type="tns:ReleaseDocumentation"
					minOccurs="0"
					maxOccurs="unbounded" />
			</xs:sequence>
			<!--
				Nom interne du connecteur. Ne modifiez pas
				les noms d'une édition à l'autre du connecteur
			-->
			<xs:attribute
				name="name"
				type="xs:string"
				use="required" />
			<!-- Etiquette lisible pour le connecteur -->
			<xs:attribute
				name="label"
				type="xs:string"
				use="required" />
			<!--
				Espace de nom de connexion. Permet d'associer
				les activités aux noeuds finaux dans Studio
			-->
			<xs:attribute
				name="connection-ns"
				type="xs:string"
				use="required" />
			<!-- Version de ce connecteur -->
			<xs:attribute
				name="version"
				type="xs:string"
				use="required" />
			<!-- Remarques -->
			<xs:attribute
				name="notes"
				type="xs:string" />
			<!-- Date d'édition -->
			<xs:attribute
				name="release-date"
				type="xs:dateTime"
				use="optional" />
			<!--
				Astuces générales destinées au consommateur et
				à sa classification
			-->
			<xs:attribute
				name="category"
				type="tns:ConnectorCategory" />
		</xs:complexType>
	</xs:element>
	<xs:complexType
		name="ReleaseDocumentation">
		<xs:simpleContent>
			<xs:extension
				base="xs:string">
				<!-- Version du connecteur de plug-in correspondante -->
				<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>
	<!--
		Formulaire de noeud final. Action de test de la connexion requise.
	-->
	<xs:complexType
		name="EndpointForm">
		<xs:complexContent>
			<xs:extension
				base="tns:Form">
				<xs:sequence>
					<xs:element
						name="test-connection-action"
						type="tns:TestConnectionAction" />
					<!-- Description du connecteur -->
					<xs:element
						name="endpoint-description"
						type="xs:string" />
				</xs:sequence>
				<!--
					Utilisé pour l'intégration au menu Studio (par ex.
					option de menu Noeuds finaux, nom d'instance
					de noeud final par défaut)
				-->
				<xs:attribute
					name="endpoint-name"
					type="xs:string"
					use="required" />
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:complexType
		name="Form">
		<xs:sequence>
			<!-- Zones du formulaire -->
			<xs:element
				name="field"
				type="tns:FormField"
				minOccurs="0"
				maxOccurs="unbounded" />
			<!-- Vous pouvez grouper des zones -->
			<xs:element
				name="field-group"
				type="tns:FieldGroup"
				minOccurs="0"
				maxOccurs="unbounded" />
			<!-- Actions du formulaire.   -->
			<xs:element
				name="actions"
				type="tns:Actions"
				minOccurs="0"
				maxOccurs="1" />
		</xs:sequence>
		<xs:attribute
			name="name"
			type="xs:string"
			use="required" />
	</xs:complexType>

	<!-- Les zones peuvent être membres d'un groupe -->
	<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" />
		<!-- Etiquette de groupe lisible -->
		<xs:attribute
			name="label"
			type="xs:string"
			use="optional" />
		<!--
			Groupes prédéfinis. S'ils sont spécifiés, il n'est pas
			nécessaire de spécifier une étiquette, des groupes ou des zones. 			sont spécifiés, ils seront ignorés.
		-->
		<xs:attribute
			name="type"
			use="optional">
			<xs:simpleType>
				<xs:restriction
					base="xs:string">
					<xs:enumeration
						value="connection-timeout" />
					<xs:enumeration
						value="connection-proxy" />
					<!-- A déterminer (autres) -->
				</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>
					<!-- Texte descriptif récapitulatif -->
					<xs:element
						name="short-description"
						type="xs:string"
						minOccurs="0" />
					<!-- Texte descriptif détaillé -->
					<xs:element
						name="long-description"
						type="xs:string"
						minOccurs="0" />
					<!-- Texte de l'astuce -->
					<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" />
			<!-- Texte descriptif récapitulatif -->
			<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" />
				<!--
					L'opération qui doit être appelée en
					réponse à l'action
				-->
				<xs:attribute
					name="operation-name" />
				<!-- Texte descriptif récapitulatif -->
				<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>


	<!-- Catégories de connecteur prédéfinies -->
	<!--
		utilisées pour indiquer le type de solution d'entreprise
	-->
	<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>

	<!-- Activités -->
	<xs:complexType
		name="ActivityGroup">
		<xs:sequence>
			<xs:element
				name="activity"
				type="tns:Activity"
				minOccurs="1"
				maxOccurs="unbounded" />
		</xs:sequence>
		<!--
			Etiquette du groupe sous lequel les
			activités vont apparaître
		-->
		<xs:attribute
			name="label"
			type="xs:string"
			use="optional" />
	</xs:complexType>

	<!-- Activité -->
	<xs:complexType
		name="Activity">
		<xs:sequence>
			<!-- Opération WSDL -->
			<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" />
		<!--
			Etiquette de l'activité qui apparaît
			sous un groupe d'activité
		-->
		<xs:attribute
			name="label"
			type="xs:string"
			use="optional" />
	</xs:complexType>

	<!-- Tâches d'activité -->
	<xs:complexType
		name="Tasks">
		<xs:sequence>
			<xs:element
				name="configure-task"
				type="tns:ConfigureTask" />
		</xs:sequence>
	</xs:complexType>
	<!--
		Amélioration possible : déterminez la "capacité de navigation"
		selon que les données entrées sont une extension de type
		abstrait.
	-->
	<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>

	<!-- Données pouvant être parcourues ou non -->
	<!--
		Amélioration possible : déterminez la capacité de navigation
		selon que les données entrées sont une extension de type
		abstrait.
	-->
	<xs:simpleType
		name="ConfigurationType">
		<xs:restriction
			base="xs:string">
			<xs:enumeration
				value="none" />
			<xs:enumeration
				value="browse" />
		</xs:restriction>
	</xs:simpleType>

	<!-- Les entrées ou sorties sont-elles configurées ? -->
	<!--
		Amélioration possible : déterminez la capacité de navigation
		selon que les données entrées sont une extension de type
		abstrait.
	-->
	<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>


	<!-- ******************* -->
	<!-- Descripteurs...      -->
	<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" />
		<!-- Texte de l'étiquette lisible -->
		<xs:attribute
			name="label"
			type="xs:string"
			use="optional" />
		<xs:attributeGroup
			ref="tns:counts" />
	</xs:complexType>
	<!--
		Les noeuds enfant marqués "volatile" indiquent
		que le noeud de texte est défini hors de
		la mise en oeuvre du connecteur (par ex. lorsque l'utilisateur final
		génère un projet qui utilise le connecteur)
	-->
	<xs:complexType
		name="FieldDescriptor">
		<xs:complexContent>
			<xs:extension
				base="tns:Descriptor">
				<xs:sequence>
					<!-- Type de zone (par ex. chaîne, zone booléenne, ...) -->
					<xs:element
						name="type"
						type="tns:FieldType" />
					<!-- type XSD associé -->
					<xs:element
						name="soap-type"
						type="tns:SoapType"
						minOccurs="0" />
					<!--
						Définissez une valeur par défaut pour la zone,
						le cas échéant
					-->
					<xs:element
						name="default-value"
						type="xs:string"
						minOccurs="0" />
					<!--
						Indiquez si les valeurs ont un format particulier
						par ex. : mot de passe, etc.
					-->
					<xs:element
						name="format"
						type="tns:FieldFormat"
						minOccurs="0" />
					<!--
						Définissez si les valeurs possibles forment une collection
						(par exemple, une plage ou un ensemble de valeurs)
					-->
					<xs:element
						name="field-restriction"
						type="tns:FieldRestriction"
						minOccurs="0" />
					<!--
						Définissez si les valeurs doivent exclusivement être conformes à un masque
						d'expression régulière
					-->
					<xs:element
						name="value-restriction"
						type="tns:ValueRestriction"
						minOccurs="0" />
					<!--
						Volatile : valeur en cours ou définie. (exemple :
						valeur "postée" à partir du panneau de noeud final lorsque
						l'utilisateur final appuie sur le bouton
						Tester la connexion.)
					-->
					<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"/>
				-->
				<!-- Espace de nom de ce FieldDescriptor -->
				<xs:attribute
					name="ns"
					type="xs:anyURI" />
				<!--
					Une propriété de configuration peut-elle être appliquée à
					cette zone ?
				-->
				<xs:attribute
					name="configurable"
					type="xs:boolean"
					default="false" />
				<!-- Interne -->
				<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>
	<!--
		Le descripteur autorise les consommateurs à obtenir une description
		d'objet détaillée. Par exemple,
	-->
	<!--
		le générateur de l'interface utilisateur de Studio est autorisé
		à générer une interface associée à différents types de composants d'interface
		et comportements (de manière cohérente.)
	-->
	<!--
		Remarque: ObjectDescriptor fait partie de
		la réponse de description d'objet définie dans le fichier
		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>
				<!-- Espace de nom de cet ObjectDescriptor -->
				<xs:attribute
					name="ns"
					type="xs:anyURI" />
				<!-- Interne -->
				<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>

	<!-- Types pris en charge -->
	<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" />
			<!-- L'une des valeurs ci-dessus (par ex. chaîne, nombre entier, etc.) -->
		</xs:restriction>
	</xs:simpleType>

	<!-- Type XSD correspondant -->
	<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" />
			<!--
				Il peut s'agir d'un ID, d'une valeur booléenne, décimale, d'un nombre entier, d'une chaîne,
				d'une date, d'une date-heure
			-->
		</xs:restriction>
	</xs:simpleType>

	<!-- Types de formats pris en charge -->
	<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>
	<!--
		Les valeurs possibles forment une collection bien définie
	-->
	<xs:complexType
		name="FieldRestriction">
		<xs:choice>
			<!-- La valeur doit être comprise dans une plage de valeurs -->
			<xs:element
				name="value-range"
				type="tns:ValueRange" />
			<!-- La valeur doit être comprise dans un jeu de valeurs -->
			<xs:element
				name="value-set"
				type="tns:ValueSet" />
		</xs:choice>
	</xs:complexType>

	<!-- Les valeurs possibles forment un jeu -->
	<xs:complexType
		name="ValueSet">
		<xs:sequence>
			<xs:element
				name="entry"
				type="tns:ValueSetEntry"
				maxOccurs="unbounded" />
		</xs:sequence>
		<!--
			Le jeu de valeurs est-il ouvert ou fermé aux
			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" />
			<!--
				La valeur doit être analysable pour le type de zone spécifié
			-->
			<xs:element
				name="value"
				type="xs:string" />
		</xs:sequence>
	</xs:complexType>
	<!--
		Les valeurs possibles sont comprises dans une plage définie
	-->
	<xs:complexType
		name="ValueRange">
		<xs:sequence>
			<!--
				Les valeurs minimales et maximales doivent être analysables pour le type de zone
				spécifié
			-->
			<xs:element
				name="min"
				type="xs:string"
				minOccurs="0" />
			<xs:element
				name="max"
				type="xs:string"
				minOccurs="0" />
			<!--
				Par ex., pour le type de zone 'int' où min=0, max = 4
				et step=2, les seules valeurs de zone autorisées sont
				0, 2 et 4
			-->
			<xs:element
				name="step"
				type="xs:string"
				minOccurs="0"
				default="1" />
		</xs:sequence>
	</xs:complexType>
	<!--
		La valeur est une expression régulière ou sa longueur est
		restreinte
	-->
	<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>

	<!-- Les valeurs sont conformes à une expression régulière -->
	<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" />


	<!--       ...Descripteurs -->
	<!-- ******************** -->
	<!--
		Le type d'opération autorise la définition d'un emplacement de noeud final
		pour chaque opération.
	-->
	<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 : avant que vous puissiez accéder à un noeud final, votre application doit pouvoir communiquer avec le connecteur approprié via les appels provenant de l'API de connecteur. Ce fichier décrit les types de requête/réponse pour les API TestConnection, ListObjects et DescribeObject. Voici le fichier 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>
		<!-- Nom de composant local de type dérivé -->
		<xs:attribute
			name="name"
			type="xs:string" />
		<xs:attribute
			name="description"
			type="xs:string" />
		<!-- Espace de nom de type dérivé -->
		<xs:attribute
			name="typeNS"
			type="xs:string" />
		<!-- Espace de nom de type de base/abstrait -->
		<xs:attribute
			name="baseTypeNS"
			type="xs:string" />
		<!-- Nom de composant local de type de base/dérivé -->
		<xs:attribute
			name="baseType"
			type="xs:string" />
	</xs:complexType>
</xs:schema>