Referencias cruzadas (xref_ValueXRef y xref_IDXRef)

BTS 2004 almacena lo datos relacionados con las referencias cruzadas (cross referencing) varias tablas pertenecientes a la base de datos BizTalkMgmtDb. En la documentación para referencias cruzadas de BTS se dice: "The tables are, however, initially empty.", esto quiere decir que inicialmente las tablas vienen vacías; pero aquellos curiosos que han visto estas tablas se han dado cuenta que menos dos tablas (xref_ValueXRef y xref_IDXRef) realmente vienen vacias inicialmente.

Cada una de las tablas tiene un registro creado con un valor vacio (""), el cual utiliza para asignar a los argumentos de los mensajes definidos que no se relacionan directamente con alguna entidad o valor predefinido. Para explicar mejor este concepto, supongamos que tenemos estos dos mensajes los cuales se van a grabar en BTS (ver referencia):

<listOfMessageDef>
<messageDef >
<code>USUARIO_INVALIDO</code >
<description>El usuario es inválido</description >
<argumentName idXRefName="User">ID Usuario</ argumentName>
< /messageDef >
< messageDef >
< code>TIPO_MONEDA_INVALIDO</code >
< description>La moneda no es válida</description >
< argumentName>Moneda</argumentName >
</ messageDef>
</ listOfMessageDef> 

La tabla de BTS que almacena los argumentos (xref_MessageArgument) exige que estos se asocien una entidad y un valor ya existentes en BTS (tablas xref_ValueXRef y xref_IDXRef ). Como se observa en la anterior definición el primer mensaje recibe un argumento que se relaciona con una entidad previamente definida, pero el segundo mensaje tiene un argumento que no se relaciona con ninguna entidad o valor. 

Cuando ejecutamos la utilidad btsxrefimport.exe para importar estos valores a la base de datos de BTS se evaluará si el argumento tiene alguna entidad o valor referenciados y si es así el caso asociará los ID's internos a los argumentos; pero cuando el argumento no tiene una entidad o valor referenciado para almacenarlo en la base de datos la utilidad automaticamente asociará el ID de la entidad o valor establecidos como vacio (""). Este procedimiento se realiza asi para guardar la integridad de la base de datos.

Por último, se puede alertar que si en algún momento se deseará purgar o limpiar toda la información asociada a las referenciadas cruzadas (cross referencing) en BTS se podrá realizar un "truncate" (tablas que se nombran xref_* ) , pero después será necesario ingresar de nuevo un registro vacío en las dos tablas.

set IDENTITY_INSERT xref_IDXRef ON
insert xref_IDXRef (idXRefID, idXRef) values (1, '')
Set IDENTITY_INSERT xref_IDXRef OFF

set IDENTITY_INSERT xref_ValueXRef ON
insert xref_ValueXRef (valueXRefID, valueXRefName) values (1, '')
Set IDENTITY_INSERT xref_ValueXRef OFF

Autor: Carlos Medina

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