Download Convenciones de Nombre en la definición de documentos XSD

Document related concepts
no text concepts found
Transcript
Lineamientos, estándares y convenciones para la creación de Documentos XSD y WSDL
Estándares y recomendaciones para el manejo de errores de Servicios Web
LINEAMIENTOS, ESTÁNDARES Y CONVENCIONES
PARA LA CREACIÓN DE DOCUMENTOS XSD y WSDL
ESTÁNDARES Y RECOMENDACIONES PARA EL MANEJO DE ERRORES
DE SERVICIOS WEB
PROYECTO DE INTEROPERABILIDAD LIBRE ORIENTADA A SERVICIOS
PARA EL ESTADO VENEZOLANO
Nombre del Documento
Versión del documento
Fecha
Dirigido a
XSD-WSDL.odt
2.0
16 de Junio 2009
Integrantes del Proyecto Interoperabilidad Libre
Orientada a Servicios para el Estado Venezolano
Este documento define lineamientos generales, estándares y convenciones acordadas para la
creación de documentos XSD y WSDL y los estándares y recomendaciones para el manejo de
errores de servicios Web en el proyecto de Interoperabilidad Libre Orientada a Servicios para el
Estado Venezolano.
Aprobación
Autor
Revisión
Revisión
Aprobación
Aprobación
Javier Santana
Willie Nieto
Victor Liendo
Julio Cejas
Elizabeth Sierraalta
16/06/2009
Pág. 1
Lineamientos, estándares y convenciones para la creación de Documentos XSD y WSDL
Estándares y recomendaciones para el manejo de errores de Servicios Web
Lineamientos generales para la creación de documentos XSD:
1. Todo elemento XML global definido en un documento XSD debe representar
una entidad del modelo.
2. Crear un archivo XSD por cada elemento XML a definir, esto con el objetivo de
reutilizar. Utilizar el elemento import para reutilizar definiciones de elementos XML
presentes en otros documentos XSD.
3. Todo elemento XML a definir debe pertenecer a un Name Space (targetNamespace).
4. Definir el atributo elementFormDefault="qualified"en el elemento schema de
todo documento XSD.
5. Utilizar el enfoque Venedetian Blinds Style1 para definición de elementos
XML: utilizar un tipo complejo (complexType) por cada elemento XML
global definido.
6. Se recomienda una filosofía Bottom-Up para el diseño de los XSD de forma de iniciar el
diseño en los tipos de datos más sencillos y mediante composición se definen los más
complejos. Esta filosofía promoverá la organización y reutilización.
7. Para cada documento XSD debería definirse un elemento documentación que permita
describir el tipo complejo y opcionalmente a nivel de los atributos dependiendo de la
complejidad de su nombre.
Convenciones y Estándares para la creación de XSD:
Nombre de Elemento XML
para
definición
de
Entidades (ComplexType,
SimpleType y elementos
globales)
Utilizar nombres representativos empleando las mismas
convenciones de código Java para la declaración de Clases.
Ej.
•
•
•
Ciudadano
TipoCiudadano
DeclaracionJurada
NOTA: Los ComplexType y los SimpleType deberán tener el
prefijo Tipo.
Nombre de Elemento XML
para
definición
de
Atributos
(elementos
internos)
Utilizar nombres representativos empleando las mismas
convenciones de código Java para la declaración de Atributos.
Ej.
•
cedula
1 http://www.xfront.com/GlobalVersusLocal.html#ThirdDesign
Pág. 2
Lineamientos, estándares y convenciones para la creación de Documentos XSD y WSDL
Estándares y recomendaciones para el manejo de errores de Servicios Web
•
•
Nombre de archivo XSD
nombre
primerNombre
Utilizar como nombre de archivo el nombre del elemento XML
global definido en el documento XSD.
En el caso de encontrase más de un elemento global definido,
utilizar el nombre del elemento más representativo.
En el caso de que deban existir archivos con el mismo nombre
se crearían subcarpetas para almacenar los distintos
subdominios existentes.
<NombreDeElementoXML>.xsd
Ej.
•
•
•
Name Space
Ciudadano.xsd
TipoCiudadano.xsd
DeclaracionJurada.xsd
Todo elemento XML debe ser asociado a un XML Name Space
cuyo identificador debe cumplir el siguiente formato:
<url_organimo>/schema/<nombre_del_subdominio>
/<nombre_del_elemento_xml>
Ej.
•
•
http://www.cnti.gob.ve/schema/ciudadano
/Ciudadano
http://www.cnti.gob.ve/schema/ciudadano
/TipoCedula
Lineamientos generales para la creación de documentos WSDL:
1. Diseñar todo Servicio Web basando en el estilo Document/literal.
2. Emplear un Binding tipo SOAP/HTTP para todo Servicio definido.
3. Definir elementos wsdl:documentation para describir de forma general el servicio,
las operaciones, las entradas y salidas de cada operación.
Convenciones y Estándares para la creación de documentos WSDL:
Nombre de Servicio Web
Utilizar nombres representativos empleando las mismas
convenciones de código Java para la declaración de Clases.
Servicio<NombreDeServicio>
NOTA: Todos los servicios deberán tener la palabra
Pág. 3
Lineamientos, estándares y convenciones para la creación de Documentos XSD y WSDL
Estándares y recomendaciones para el manejo de errores de Servicios Web
“Servicio” como prefijo.
Ej.
•
•
Nombre de operación
ServicioIdentificacion
ServicioDeclaracionJurada
Utilizar nombres representativos empleando las mismas
convenciones de código Java para la declaración de Métodos.
Ej.
•
•
Mensaje de entrada de una
operación
identificarCiudadano
realizarDeclaracionJurada
Utilizar el nombre de la operación con el sufijo “Entrada”.
<NombreDeOperacion>Entrada
Ej.
•
•
Mensaje de salida de una
operación
identificarCiudadanoEntrada
realizarDeclaracionEntrada
Utilizar el nombre de la operación con el sufijo Salida.
<NombreDeOperacion>Salida
Ej.
•
•
Nombre de archivo WSDL
indentificarCiudadanoSalida
realizarDeclaracionJuradaSalida
Utilizar como nombre de archivo el nombre del Servicio Web
definido en el documento.
Servicio<NombreDeServicio>.wsdl
Ej.
•
•
Nombre del WSDL
(Atributo name del
elemento definitions)
ServicioIndentificacion.wsdl
ServicioDeclaracionJurada.wsdl
Utilizar el nombre del Servicio Web con el sufijo WSDL.
Servicio<NombreDeServicio>WSDL
Ej.
•
•
ServicioIndentificacionWSDL
ServicioDeclaracionJuradaWSDL
Pág. 4
Lineamientos, estándares y convenciones para la creación de Documentos XSD y WSDL
Estándares y recomendaciones para el manejo de errores de Servicios Web
Name Space
Todo Servicio Web declarado en un documento WSDL debe ser
asociado a un XML Name Space cuyo identificador debe
cumplir el siguiente formato:
<url_organimo>/servicio/Servicio<NombreDeServicio>
Donde Servicio<NombreDeServicio> es el nombre del
Servicio Web definido en el documento WSDL, el cuál coincide
con el nombre del archivo WSDL.
Ej.
•
•
PortType Name
http://www.cnti.gob.ve/servicio/ServicioI
dentificacion
http://www.onidex.gob.ve/servicio/Servici
oIdentificacion
Utilizar el sufijo “Definicion” para definir el PortType dentro del
WSDL
Servicio<NombreDeServicio>Definicion
Ej.
•
Binding Name
ServicioIdentificacionDefinicion
Utilizar el sufijo Implementacion para definir el Binding dentro
del WSDL
Servicio<NombreDeServicio>Implementacion
Ej.
•
Port Name
ServicioIdentificacionImplementacion
Utilizar el sufijo “Ubicacion” para definir el Port dentro del WSDL
Servicio<NombreDeServicio>Ubicacion
Ej.
•
soapAction
ServicioIdentificacionUbicacion
Emplear el nombre de la operación para el soapAction
correspondiente.
Ej.
•
•
identificarCiudadano
realizarDeclaracionJurada
Pág. 5
Lineamientos, estándares y convenciones para la creación de Documentos XSD y WSDL
Estándares y recomendaciones para el manejo de errores de Servicios Web
Estándares para el Manejo de Errores en un WSDL:
2. Para cada operación de un Servicio Web crear los siguientes Faults (tipos de errores):
•
Error de Sistema (System Fault): indica un error del sistema por alguna falla de
algún componente, Ej. caída de la red, servidor base de datos no disponible. El
nombre del Fault debe seguir la siguiente convensión:
<NombreDeOperacion>ErrorSistema
Ej. IdentificarCiudadanoErrorSistema
•
Error de Aplicación (Application Fault): indica un uso incorrecto del servicio por
ejemplo que un ciudadano no exista. El nombre del Fault debe seguir la
siguiente convensión:
<NombreDeOperacion>ErrorAplicacion
Ej. IdentificarCiudadanoErrorAplicacion
3. Se recomienda utilizar el siguiente tipo de dato complejo para la definición de cada
error especificado en el paso anterior:
<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
targetNamespace="<url_organimo>/schema/error/TipoError"
elementFormDefault="qualified">
<xsd:complexType name="TipoError">
<xsd:annotation>
<xsd:documentation>Tipo de Dato que define un error genérico</xsd:documentation>
</xsd:annotation>
<xsd:sequence>
<xsd:element name="codigo" type="xsd:string" minOccurs="1" maxOccurs="1"/>
<xsd:element name="descripcion" type="xsd:string" minOccurs="1" maxOccurs="1"/>
<xsd:element name="detallesTecnicos" type="xsd:string" minOccurs="0" maxOccurs="1"/>
</xsd:sequence>
</xsd:complexType>
</xsd:schema>
<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
targetNamespace="<url_organimo>/schema/error"
elementFormDefault="qualified"
xmlns:error="<url_organimo>/schema/error/TipoError">
<xsd:import namespace="<url_organimo>/schema/error/TipoError" schemaLocation="TipoError.xsd"/>
<xsd:element name="ErrorSistema" type="error:TipoError">
<xsd:annotation>
<xsd:documentation>Tipo de Dato que define un error de sistema</xsd:documentation>
</xsd:annotation>
</xsd:element>
<xsd:element name="ErrorAplicacion" type="error:TipoError">
<xsd:annotation>
<xsd:documentation>Tipo de Dato que define un error de aplicación</xsd:documentation>
</xsd:annotation>
</xsd:element>
</xsd:schema>
Estándares para la definición de los códigos de Error en los Servicios:
1. Los códigos de error son reutilizables para diferentes servicios.
2. Los errores de sistema deben utilizar el prefijo “SIS” y los errores de aplicación el
prefijo “APP”
3. Los próximos 4 digitos es un número entero que identifica de forma única al error.
Pág. 6
Lineamientos, estándares y convenciones para la creación de Documentos XSD y WSDL
Estándares y recomendaciones para el manejo de errores de Servicios Web
4. El último carácter identifica la severidad de la condición de la excepción:
•
“F” (Fatal): Representa un error grave e indica que la opreación no debe
reintentarse.
•
“E” (Error): Representa un error no faltal e indica que la operación puede
reintentarse.
•
“W” (Warning): Indica que la operación se ha ejecutado pero existen
advertencias.
En consecuencia a partir de los errores que pudieran existir en lo servicios Web se debe crear
una tabla como la siguiente:
Codigo
SIS0001F
SIS0002E
APP5001E
Descripción
Error grave
Error de time-out a la base de
datos...
Error de acceso a la base de
datos
El ciudadano es menor de edad
APP5002W
APP5003E
Dirección no válida
El argumento X es invalido
SIS0003E
Detalles Técnicos
java.lang.OutOfMemoryError.....
java.net.ConnectException....
java.sql.SQLException.......
El ciudadano debe ser mayor de 18
años para solicitar su habilitación
como radioaficionado
No existe el código postal
java.io.UnsupportedEncodingExceptio
n
Recomendaciones para el Manejo de Errores en Servicios Web:
•
Todos los servicios deben reportar al consumidor, los errores técnicos que puedan
presentarse durante la ejecución.
•
Se presentarán casos en los que servicios que manejan excepciones requieren ser
consumidos por plataformas que no manejan excepciones. La recomendación en este
caso consiste en agregar un método adicional a la interfaz del servicio que permita a la
plataforma cliente nueva (la que no consume excepciones) consumir el servicio
mediante el uso de códigos de error. No se debe sacar un servicio de integración
aparte, sólo un método aparte dentro de la misma interfaz, si esto no funciona,
entonces si se debe construir un servicio nuevo de exposición que consuma el mismo
canónico.
•
Un servicio debe incorporar una funcionalidad de notificación cuando se ha producido
errores de conexión son sistemas proveedores, como base de datos, servicios,
sistemas de mensajería asíncrona, lectura de documentos xml, memoria, etc.
•
Un servicio debe incorporar una lógica para mantener un numero de reintentos hasta
alcanzar un umbral.
Pág. 7