Uso de tablas de cross references como almacenamiento (4)

Creado el día 03/08/2010 14:45 por zorry

Una vez que hemos visto cómo obtener datos de las tablas de referencia cruzada provistas por BizTalk Server, en este artículo vamos a ver un ejemplo práctico de uso de esta funcionalidad. En este ejemplo veremos como realizar un formateo de mensaje parametrizado.

Primero deberemos establecer el texto del mensaje y sus parámetros. Para ello modificaremos los archivos XML correspondientes:

List_Of_Message_Definition.xml

<listOfMessageDef>
	<messageDef>
		<code>APP1_EMAIL_BODY</code>
		<description>Email to send in case of error in process.</description>
		<argumentName>Argument1 Id</argumentName>
		<argumentName idXRefName="APP1_APPCODE">App Code</argumentName>
	</messageDef>
</listOfMessageDef>

En este XML definimos un mensaje, de nombre APP1_EMAIL_BODY. Este mensaje tendrá dos parámetros:

  • El primero (Argument1 Id) será un parámetro de reemplazamiento (el valor que facilitemos en el primer parámetro será sustituido directamente en la cadena del mensaje).
  • El segundo parámetro (App Code) será un parámetro enlazado con una cross reference. Es decir, que se tomará el valor de la cross reference indicado por el valor suministrado al segundo parámetro, y se introducirá en el mensaje.

List_Of_Message_Text.xml

<listOfMessageText lang="es-ES">
   <messageText code="APP1_EMAIL">This is a mail message with id '%1', 
      please contact %2.</messageText>
</listOfMessageText>

En este XML definimos el texto del mensaje, en el que se puede ver que podemos, para un mismo nombre de mensaje, podríamos definir más de un literal de nombre (para su localización). En el literal, se define la posición de los dos argumentos con el literal %n, siendo n la posición del argumento.

List_Of_IdXRef.xml

<listOfIDXRef>
	<idXRef>
		<name>APP1_APPCODE</name>
		<description/>
	</idXRef>
</listOfIDXRef>

En este XML definimos el nombre de la cross reference que empleamos como argumento en el mensaje.

List_Of_IdXRef_Value.xml

<listOfIDXRefData>
	<idXRef name="APP1_APPCODE">
		<appInstance name="APP1_INSTANCE">
			<appID commonID="12">Pedro García</appID>
		</appInstance>
	</idXRef>	
</listOfIDXRefData>

En este XML definimos el valor de la cross reference Para un CommonID 12.

Para el ejemplo supondremos que hemos definido una instancia de aplicación APP1_INSTANCE, dependiente de un tipo de aplicación APP1_TYPE, en sus correspondientes archivos XML de importación.

Una vez definidos e importados los datos mediante BTSXRefImport.exe, simplemente tendremos que llamar al método FormatMessage:

//Reads message body from configuration
varAuxString = Microsoft.BizTalk.CrossReferencing.CrossReferencing.
    FormatMessage("APP1_EMAIL", "es-ES", "APP1_INSTANCE", 
    null, "Identification", "12");

O bien mediante el functoid equivalente, si necesitamos obtener el mensaje desde un mapa:

image

Con este ejemplo, finalizamos esta serie de artículos que hablan acerca de esta funcionalidad poco documentada de BizTalk Server 2006.


No se aceptan más comentarios