Utilizando CodeLists en BTS desde VS.NET

BTS se basa en XML Schemas para definir las estructuras de los mensajes, dentro de la definición de estos esquemas en muchas ocasiones por necesidad dado el modelo de negocio se ve en la obligación de especificar que el contenido de un campo (field element) o atributo (field attribute) solo será valido si éste se encuentra en una lista de valores predeterminados.

Esta posibilidad la ofrece la especificación de XML Schema por medio de enumeraciones (Enumeration), por ejemplo, si se desea especificar que el elemento Lenguaje solo puede aceptar un valor entre en-us, es-es o es-co la forma de hacerlo seria así:

......
<xs:element name="Lenguaje">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="en-us" />
<xs:enumeration value="es-es" />
<xs:enumeration value="es-co" />
</xs:restriction>
</xs:simpleType>
</xs:element>
......

Esta definición se puede realizar de forma fácil y sencilla por medio de VS.Net en los esquemas de BTS, para ello basta con especificar en la propiedad Derived By del campo o atributo (field element or field attribute) el valor Restriction y posteriormente en el campo Enumeration ingresar los valor definidos. (Ver imagen)

Aunque esta forma de implementación es bastante sencilla, recordar estos códigos en muchas ocasiones es difícil para la persona que especificando los esquemas; para eliminar esta falencia el existe una técnica muy sencilla llamada CodeLists. Básicamente lo que logra esta técnica es definir en una base de datos todos los posibles valores que pueden estar en una lista dado un código y posteriormente seleccionar los deseados sobre el campo requerido.

Para utilizar esta técnica es necesario definir una base de datos MS Access (BTS 2004 y VS.Net solo acepta MS Acces) y allí definir la tabla que tendrá todos los códigos para el esquema generado. La tabla que se cree se debe llamar de concatenando la propiedad Standard y Standard Version por medio de un “_”, ejemplo si la propiedad Standard es XML y la propiedad Standard Version es ArchivoEntrada1 la tabla se debe llamar XML_ArchivoEntrada1. En esta taba se definirán tres columnas tipo text: Code, Value y Desc (por definición se deben llamar así); la primera columna representa el código del campo que relaciona los valores dentro de la base de datos, la segunda columna define el valor y la tercera columna define una breve descripción para reconocer fácilmente dicho valor. A continuación se muestra un ejemplo con los lenguajes anteriormente descritos.

Code Value Desc
lang en-us Ingles – Estados Unidos
lang es-es Español – España
lang es-co Español – Colombia
lang en-uk Ingles - Inglaterra

Luego de tener definida la base de datos se debe relacionar con el esquema, para ello el esquema tiene una propiedad llamada Codelist Database en la cual se dice la ruta de la base de datos. (Ver imagen)

Ahora, sobre el campo (field element or field attribute) deseado se especifica que es tipo Restriction (como se explica anteriormente) y en la propiedad CodeList se escribe el código anteriormente especificado, lang y se da clic en el botón con “…” y aparecerá una ventana con todos los valores definidos en la tabla anteriormente. (Ver imagen)

Por último simplemente se seleccionan los valores deseados y automáticamente se genera la enumeración para el campo especificado.(Ver imagen)

Esta técnica es muy útil en el momento de definición de esquemas ya que reduce el tiempo de digitación de los códigos y no obliga al desarrollador estar constantemente verificando el código que esta digitando maximizando así su implementación y evitando cualquier posible equivocación en la equivalencia de los datos al tener la lista de valores centralizada en una base de datos.

Autor: Carlos Medina

Este mensaje se proporciona "como está" sin garantías de ninguna clase, y no otorga ningún derecho