Archivos de esquema CDK de Cast Iron

Los archivos de esquema XML proporcionan la sintaxis y definen cómo elementos y atributos están representados en los archivos XML. Los archivos de esquema CDK de Cast Iron se importan al entorno de desarrollo de Studio y, a continuación, se crean los puntos finales y conexiones arrastrando elementos de esquema desde la pestaña de la caja de herramientas Proyecto a la orquestación.

Los archivos de esquema CDK son:

ci-connector-config.xsd - Este archivo lo utilizan Studio y el motor de despliegue para definir las opciones básicas de configuración disponibles al conector. Los metadatos del plugin se almacenan como elementos en el archivo XML y, una vez configuradas, las propiedades del punto final definen lo que los usuarios finales pueden ver y las actividades a las que están expuestos. A continuación se muestra el archivo 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>
				<!-- Descripción del conector -->
				<xs:element
					name="description"
					type="xs:string" />
				<!-- Definición del formulario del punto final -->
				<xs:element
					name="endpoint"
					type="tns:EndpointForm" />
				<!-- Actividades del conector -->
				<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>
						<!--
							ubicación predeterminada del punto final de aquellas
							operaciones que no han definido una o que
							no están definidas
						-->
						<xs:attribute
							name="default-endpoint-location"
							type="xs:string"
							use="optional" />
					</xs:complexType>
				</xs:element>
				<!-- Versión mínima de cliente -->
				<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>
				<!-- documentación del release -->
				<xs:element
					name="release-documentation"
					type="tns:ReleaseDocumentation"
					minOccurs="0"
					maxOccurs="unbounded" />
			</xs:sequence>
			<!--
				Nombre interno del conector. No cambie los
				nombres al cambiar de release del conector
			-->
			<xs:attribute
				name="name"
				type="xs:string"
				use="required" />
			<!-- Etiqueta legible del conector -->
			<xs:attribute
				name="label"
				type="xs:string"
				use="required" />
			<!--
				Espacio de nombres de la conexión. Se usa para asociar
				actividades a puntos finales dentro de Studio
			-->
			<xs:attribute
				name="connection-ns"
				type="xs:string"
				use="required" />
			<!-- Versión de este conector -->
			<xs:attribute
				name="version"
				type="xs:string"
				use="required" />
			<!-- notes -->
			<xs:attribute
				name="notes"
				type="xs:string" />
			<!-- fecha del release -->
			<xs:attribute
				name="release-date"
				type="xs:dateTime"
				use="optional" />
			<!--
				Sugerencia general al consumidor respecto a la
				clasificación
			-->
			<xs:attribute
				name="category"
				type="tns:ConnectorCategory" />
		</xs:complexType>
	</xs:element>
	<xs:complexType
		name="ReleaseDocumentation">
		<xs:simpleContent>
			<xs:extension
				base="xs:string">
				<!-- versión correspondiente del conector del plugin -->
				<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>
	<!--
	 Formulario del punto final. Es obligatoria una acción de conexión de prueba.
	-->
	<xs:complexType
		name="EndpointForm">
		<xs:complexContent>
			<xs:extension
				base="tns:Form">
				<xs:sequence>
					<xs:element
						name="test-connection-action"
						type="tns:TestConnectionAction" />
				<!-- Descripción del conector -->
					<xs:element
						name="endpoint-description"
						type="xs:string" />
				</xs:sequence>
				<!--
					Se utiliza para la integración del menú de Studio (p.ej.
					elemento del menú Puntos finales, nombre predeterminado de la instancia
					del punto final)
				-->
				<xs:attribute
					name="endpoint-name"
					type="xs:string"
					use="required" />
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:complexType
		name="Form">
		<xs:sequence>
			<!-- Campos del formulario -->
			<xs:element
				name="field"
				type="tns:FormField"
				minOccurs="0"
				maxOccurs="unbounded" />
			<!-- Los campos pueden agruparse -->
			<xs:element
				name="field-group"
				type="tns:FieldGroup"
				minOccurs="0"
				maxOccurs="unbounded" />
			<!-- Acciones del formulario.-->
			<xs:element
				name="actions"
				type="tns:Actions"
				minOccurs="0"
				maxOccurs="1" />
		</xs:sequence>
		<xs:attribute
			name="name"
			type="xs:string"
			use="required" />
	</xs:complexType>

	<!-- Los campos pueden ser miembros de un grupo -->
	<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" />
		<!-- Etiqueta legible del grupo -->
		<xs:attribute
			name="label"
			type="xs:string"
			use="optional" />
		<!--
			Grupos predefinidos. Si se especifican, no hay
			necesidad de especificar etiqueta, grupos o campos. Si
			especifican, se hará caso omiso de ellos.
		-->
		<xs:attribute
			name="type"
			use="optional">
			<xs:simpleType>
				<xs:restriction
					base="xs:string">
					<xs:enumeration
						value="connection-timeout" />
					<xs:enumeration
						value="connection-proxy" />
					<!-- TBD otros -->
				</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>
					<!-- texto de la descripción resumida -->
					<xs:element
						name="short-description"
						type="xs:string"
						minOccurs="0" />
					<!-- texto de la descripción detallada -->
					<xs:element
						name="long-description"
						type="xs:string"
						minOccurs="0" />
					<!-- texto de la sugerencia -->
					<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" />
					<!-- texto de la descripción resumida -->
			<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" />
				<!--
					la operación debe invocarse en
					respuesta a la acción
				-->
				<xs:attribute
					name="operation-name" />
					<!-- texto de la descripción resumida -->
				<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>


	<!-- categorías predefinidas del conector -->
	<!--
		se utiliza para indicar el tipo de solución empresarial
	-->
	<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>

	<!-- actividades -->
	<xs:complexType
		name="ActivityGroup">
		<xs:sequence>
			<xs:element
				name="activity"
				type="tns:Activity"
				minOccurs="1"
				maxOccurs="unbounded" />
		</xs:sequence>
		<!--
			esta es la etiqueta del grupo bajo el cual
			aparecerán las actividades
		-->
		<xs:attribute
			name="label"
			type="xs:string"
			use="optional" />
	</xs:complexType>

	<!-- actividad -->
	<xs:complexType
		name="Activity">
		<xs:sequence>
			<!-- operación del 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" />
		<!--
			esta es la etiqueta de la actividad que aparece
			bajo un grupo de actividades
		-->
		<xs:attribute
			name="label"
			type="xs:string"
			use="optional" />
	</xs:complexType>

	<!-- tareas de las actividades -->
	<xs:complexType
		name="Tasks">
		<xs:sequence>
			<xs:element
				name="configure-task"
				type="tns:ConfigureTask" />
		</xs:sequence>
	</xs:complexType>
	<!--
		posible mejora: determinar la "navegabilidad"
		en función de si la entrada es una extensión de tipo
		abstracto.
	-->
	<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>

	<!-- navegable o no -->
	<!--
		posible mejora: determinar la navegabilidad
		en función de si la entrada es una extensión de tipo
		abstracto.
	-->
	<xs:simpleType
		name="ConfigurationType">
		<xs:restriction
			base="xs:string">
			<xs:enumeration
				value="none" />
			<xs:enumeration
				value="browse" />
		</xs:restriction>
	</xs:simpleType>

	<!-- ¿están configuradas las entradas o las salidas? -->
	<!--
		posible mejora: determinar la navegabilidad
		en función de si la entrada es una extensión de tipo
		abstracto.
	-->
	<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>


	<!-- ******************* -->
	<!-- Descriptores...      -->
	<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" />
		<!-- texto de etiqueta legible -->
		<xs:attribute
			name="label"
			type="xs:string"
			use="optional" />
		<xs:attributeGroup
			ref="tns:counts" />
	</xs:complexType>
	<!--
		la anotación de los nodos hijos con 'volatile' indica
		que el nodo de texto se ha establecido desde fuera de la
		implementación del conector (p.ej. por un usuario final
		que esté construyendo un proyecto que utilice el conector)
	-->
	<xs:complexType
		name="FieldDescriptor">
		<xs:complexContent>
			<xs:extension
				base="tns:Descriptor">
				<xs:sequence>
					<!-- tipo de campo (p.ej. serie, booleano, ...) -->
					<xs:element
						name="type"
						type="tns:FieldType" />
					<!-- tipo de xsd asociada -->
					<xs:element
						name="soap-type"
						type="tns:SoapType"
						minOccurs="0" />
					<!--
						define un valor predeterminado para el campo cuando
						proceda
					-->
					<xs:element
						name="default-value"
						type="xs:string"
						minOccurs="0" />
					<!--
						define si los valores tienen un determinado formato
						p.ej. contraseñas, etc.
					-->
					<xs:element
						name="format"
						type="tns:FieldFormat"
						minOccurs="0" />
					<!--
						define si los posibles valores forman una colección
						(por ej., un rango o conjunto de valores)
					-->
					<xs:element
						name="field-restriction"
						type="tns:FieldRestriction"
						minOccurs="0" />
					<!--
						define si los valores están restringidos a un patrón
						regex
					-->
					<xs:element
						name="value-restriction"
						type="tns:ValueRestriction"
						minOccurs="0" />
					<!--
						volátil: valor actual o establecido. (por ejemplo,
						el valor que se "envía" ("posted") desde el panel del punto final cuando
						el usuario final pulsa el botón
						'Probar conexión'.)
					-->
					<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"/>
				-->
				<!-- espacio de nombres de este descriptor de campo -->
				<xs:attribute
					name="ns"
					type="xs:anyURI" />
				<!--
					¿se puede aplicar una propiedad de configuración a
					este campo?
				-->
				<xs:attribute
					name="configurable"
					type="xs:boolean"
					default="false" />
				<!-- interno -->
				<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>
	<!--
		El descriptor permite a los consumidores obtener
		una descripción de objeto detallada. Por ejemplo, esto permite al
	-->
	<!--
		generador de UI de Studio producir una interfaz
		de usuario con varios tipos y comportamientos de componente de ui
		(de una forma coherente.)
	-->
	<!--
		Nota: ObjectDescriptor es parte de la
		DescribeObjectResponse definida en
		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>
				<!-- espacio de nombres de este 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>

	<!-- tipos soportados -->
	<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" />
			<!-- cualquiera de los anteriores (p.ej. string, int, etc.) -->
		</xs:restriction>
	</xs:simpleType>

	<!-- tipo de xsd correspondiente -->
	<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" />
			<!--
				puede ser id, booolean, decimal, int, string,
				date, dateTime
			-->
		</xs:restriction>
	</xs:simpleType>

	<!-- formatos de tipo soportados -->
	<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" />
			<!--
				¿¿¿formatos de fecha de <xsd:enumeration value="date"/>
				???
			-->
			<xs:enumeration
				value="url" />
			<xs:enumeration
				value="email" />
			<xs:enumeration
				value="currency" />
		</xs:restriction>
	</xs:simpleType>
	<!--
		los valores posibles forman una colección bien definida
	-->
	<xs:complexType
		name="FieldRestriction">
		<xs:choice>
			<!-- el valor está limitado a un rango de valores -->
			<xs:element
				name="value-range"
				type="tns:ValueRange" />
			<!-- el valor está limitado a un conjunto de valores -->
			<xs:element
				name="value-set"
				type="tns:ValueSet" />
		</xs:choice>
	</xs:complexType>

	<!-- los valores posibles forman un conjunto -->
	<xs:complexType
		name="ValueSet">
		<xs:sequence>
			<xs:element
				name="entry"
				type="tns:ValueSetEntry"
				maxOccurs="unbounded" />
		</xs:sequence>
		<!--
			¿está el conjunto de valores abierto o cerrado
			a adiciones?
		-->
		<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" />
			<!--
				el valor debe se analizable para el FieldType especificado
			-->
			<xs:element
				name="value"
				type="xs:string" />
		</xs:sequence>
	</xs:complexType>
	<!--
		los valores posibles se encuentran dentro de un rango definido
	-->
	<xs:complexType
		name="ValueRange">
		<xs:sequence>
			<!--
				el min y el max deben ser analizables para el FieldType
				especificado
			-->
			<xs:element
				name="min"
				type="xs:string"
				minOccurs="0" />
			<xs:element
				name="max"
				type="xs:string"
				minOccurs="0" />
			<!--
				p.ej. para el FieldType 'int' con min=0, max = 4
				y step=2, los únicos valores de campo permitidos son
				0, 2 y 4
			-->
			<xs:element
				name="step"
				type="xs:string"
				minOccurs="0"
				default="1" />
		</xs:sequence>
	</xs:complexType>
	<!--
		el valor está limitado por longitud o por una expresión

	-->
	<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>

<!-- Los valores se ajustan a una expresión regular -->
	<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" />


	<!--       ...Descriptores -->
	<!-- ******************** -->
	<!--
		operationType permite definir la ubicación de un punto final
		en función de la operación.
	-->
	<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 acceder a un punto final, la aplicación necesita ser capaz de hablar con el correspondiente conector utilizando las llamadas del API del conector. Este archivo describe los tipos de petición/respuesta para las API de TestConnection, ListObjects y DescribeObject. A continuación se muestra el archivo 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>
		<!-- nombre de parte local de tipo derivado -->
		<xs:attribute
			name="name"
			type="xs:string" />
		<xs:attribute
			name="description"
			type="xs:string" />
		<!-- espacio de nombres de tipo derivado -->
		<xs:attribute
			name="typeNS"
			type="xs:string" />
		<!-- espacio de nombres de tipo base/abstracto -->
		<xs:attribute
			name="baseTypeNS"
			type="xs:string" />
		<!-- nombre de parte local de tipo base/abstracto -->
		<xs:attribute
			name="baseType"
			type="xs:string" />
	</xs:complexType>
</xs:schema>



Comentarios | Notices


Icono de fecha y hora Última actualización: Friday, November 8, 2013


http://pic.dhe.ibm.com/infocenter/wci/v7r0m0/topic/com.ibm.wci.cdk.doc/cdk_schemas.html