<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Alexandra Bravo Restrepo</title>
	<atom:link href="http://blogs.itsynergy.co/blogs/abravor/feed/" rel="self" type="application/rss+xml" />
	<link>http://blogs.itsynergy.co/blogs/abravor</link>
	<description>iT Synergy - BizTalk. .NET</description>
	<lastBuildDate>Mon, 19 Dec 2011 23:53:36 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>gacutil.exe en 64-bits</title>
		<link>http://blogs.itsynergy.co/blogs/abravor/2011/12/19/gacutil-exe-en-64-bits/</link>
		<comments>http://blogs.itsynergy.co/blogs/abravor/2011/12/19/gacutil-exe-en-64-bits/#comments</comments>
		<pubDate>Mon, 19 Dec 2011 23:14:57 +0000</pubDate>
		<dc:creator>Alexandra Bravo Restrepo</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[BizTalk]]></category>

		<guid isPermaLink="false">http://blogs.itsynergy.co/blogs/abravor/2011/12/19/gacutil-exe-en-64-bits/</guid>
		<description><![CDATA[En una maquina de 64-bits, el gacutil.exe se encuentra en la ruta: C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin\NETFX 4.0 Tools\x64 Este ejecutable se puede copiar en otra carpeta y para que funcione correctamente es necesario copiar los archivos resaltados a continuación El gacutil.exe y gacutil.exe.config, se encuentran en la carpeta C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin\NETFX 4.0 Tools\x64 y &#8230; </p><p><a class="more-link block-button" href="http://blogs.itsynergy.co/blogs/abravor/2011/12/19/gacutil-exe-en-64-bits/">Continue reading &#187;</a>]]></description>
			<content:encoded><![CDATA[<p align="justify">En una maquina de 64-bits, el gacutil.exe se encuentra en la ruta:</p>
<p align="justify">C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin\NETFX 4.0 Tools\x64</p>
<p align="justify">Este ejecutable se puede copiar en otra carpeta y para que funcione correctamente es necesario copiar los archivos resaltados a continuación</p>
<p align="justify"><a href="http://blogs.itsynergy.co/blogs/abravor/files/2011/12/clip_image001.png"><img style="margin: 5px" border="0" alt="clip_image001" src="http://blogs.itsynergy.co/blogs/abravor/files/2011/12/clip_image001_thumb.png" width="288" height="189" /></a></p>
<p align="justify">El gacutil.exe y gacutil.exe.config, se encuentran en la carpeta C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin\NETFX 4.0 Tools\x64 y la dll gacutlrc, se encuentra en la carpeta C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin\NETFX 4.0 Tools\x64\1033.</p>
<p align="justify"><b>Para instalar o desinstalar un assembly del GAC se deben seguir los siguientes pasos:</b></p>
<p align="justify">- Abrir una ventana de comandos como administrador</p>
<p align="justify">- Ingresar a la ruta donde se encuentra el gacutil.exe</p>
<p align="justify">- Para instalar se debe utilizar el comando gacutil.exe /i ruta/nombre.dll</p>
<p align="justify"><a href="http://blogs.itsynergy.co/blogs/abravor/files/2011/12/clip_image002.png"><img style="margin: 5px" border="0" alt="clip_image002" src="http://blogs.itsynergy.co/blogs/abravor/files/2011/12/clip_image002_thumb.png" width="556" height="96" /></a></p>
<p align="justify">- Para desinstalar se debe utilizar el comando gacutil.exe /u NombreAssembly</p>
<p align="justify"><a href="http://blogs.itsynergy.co/blogs/abravor/files/2011/12/clip_image003.png"><img style="margin: 5px" border="0" alt="clip_image003" src="http://blogs.itsynergy.co/blogs/abravor/files/2011/12/clip_image003_thumb.png" width="537" height="157" /></a></p>
<p align="justify">Para validar si un assembly quedo bien instalado, se debe ingresar a la ruta del GAC de 64-bits: C:\Windows\Microsoft.NET\assembly\GAC_MSIL</p>
<p align="justify"><a href="http://blogs.itsynergy.co/blogs/abravor/files/2011/12/clip_image005.jpg"><img style="margin: 5px" border="0" alt="clip_image005" src="http://blogs.itsynergy.co/blogs/abravor/files/2011/12/clip_image005_thumb.jpg" width="578" height="107" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.itsynergy.co/blogs/abravor/2011/12/19/gacutil-exe-en-64-bits/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>BizTalk ESB &#8211; Error 115004 en el send port ALL.Exceptions de la aplicaci&#243;n BizTalk Microsoft.Practices.ESB</title>
		<link>http://blogs.itsynergy.co/blogs/abravor/2011/11/08/biztalk-esb-error-115004-en-el-send-port-all-exceptions-de-la-aplicacin-biztalk-microsoft-practices-esb/</link>
		<comments>http://blogs.itsynergy.co/blogs/abravor/2011/11/08/biztalk-esb-error-115004-en-el-send-port-all-exceptions-de-la-aplicacin-biztalk-microsoft-practices-esb/#comments</comments>
		<pubDate>Tue, 08 Nov 2011 18:33:08 +0000</pubDate>
		<dc:creator>Alexandra Bravo Restrepo</dc:creator>
				<category><![CDATA[BizTalk]]></category>
		<category><![CDATA[ESB]]></category>

		<guid isPermaLink="false">http://blogs.itsynergy.co/blogs/abravor/2011/11/08/biztalk-esb-error-115004-en-el-send-port-all-exceptions-de-la-aplicacin-biztalk-microsoft-practices-esb/</guid>
		<description><![CDATA[El Send Port ALL.Exceptions utiliza el pipeline ESBFaultProcessor, este pipeline está compuesto por varios componentes pipeline, entre estos el ESB.Exceptions.Encoder, el cual serializa todas las propiedades del mensaje de error en un mensaje XML. El pipeline ESBFaultProcessor utiliza el método ExceptionMgmt.IsExceptionSerializable(), de tal manera que cuando una excepción contiene excepciones internas no serializables a más &#8230; </p><p><a class="more-link block-button" href="http://blogs.itsynergy.co/blogs/abravor/2011/11/08/biztalk-esb-error-115004-en-el-send-port-all-exceptions-de-la-aplicacin-biztalk-microsoft-practices-esb/">Continue reading &#187;</a>]]></description>
			<content:encoded><![CDATA[<p align="justify">El Send Port ALL.Exceptions utiliza el pipeline ESBFaultProcessor, este pipeline está compuesto por varios componentes pipeline, entre estos el ESB.Exceptions.Encoder, el cual serializa todas las propiedades del mensaje de error en un mensaje XML.</p>
<p align="justify"><a href="http://blogs.itsynergy.co/blogs/abravor/files/2011/11/clip_image002.jpg"><img style="border-bottom: 0px;border-left: 0px;padding-left: 0px;padding-right: 0px;border-top: 0px;border-right: 0px;padding-top: 0px" border="0" alt="clip_image002" src="http://blogs.itsynergy.co/blogs/abravor/files/2011/11/clip_image002_thumb.jpg" width="409" height="206" /></a></p>
<p align="justify">El pipeline ESBFaultProcessor utiliza el método ExceptionMgmt.IsExceptionSerializable(), de tal manera que cuando una excepción contiene excepciones internas no serializables a más de un nivel de profundidad, El método ExceptionMgmt.IsExceptionSerializable() comprueba que sólo la excepción de la raíz sea serializable, y como resultado, el ESBFaultProcessor falla. Cuando se presenta este caso los mensajes del puerto ALL.Exceptions de la aplicación BizTalk Microsoft.Practices.ESB quedan en estado suspended (resumable), esto se puede visualizar en la consola de administración de BizTalk</p>
<p align="justify"><a href="http://blogs.itsynergy.co/blogs/abravor/files/2011/11/clip_image004.jpg"><img style="border-bottom: 0px;border-left: 0px;padding-left: 0px;padding-right: 0px;border-top: 0px;border-right: 0px;padding-top: 0px" border="0" alt="clip_image004" src="http://blogs.itsynergy.co/blogs/abravor/files/2011/11/clip_image004_thumb.jpg" width="438" height="161" /></a></p>
<p align="justify">Al hacer doble clic en la instancia suspendida del puerto ALL.Exceptions, se puede visualizar el error 115004</p>
<p align="justify"><a href="http://blogs.itsynergy.co/blogs/abravor/files/2011/11/clip_image005.png"><img style="border-bottom: 0px;border-left: 0px;padding-left: 0px;padding-right: 0px;border-top: 0px;border-right: 0px;padding-top: 0px" border="0" alt="clip_image005" src="http://blogs.itsynergy.co/blogs/abravor/files/2011/11/clip_image005_thumb.png" width="325" height="177" /></a></p>
<p align="justify">Para solucionar este inconveniente se debe crear la clase propuesta por Thomas F. Abraham <a href="http://www.tfabraham.com/blog/2010/07/fix-for-biztalk-esb-toolkit-2-0-error-115004-in-all-exceptions-send-port/">http://www.tfabraham.com/blog/2010/07/fix-for-biztalk-esb-toolkit-2-0-error-115004-in-all-exceptions-send-port/</a></p>
<p align="justify">A continuación un ejemplo del uso de la clase en una orquestación, que genera una excepción no serializable cuando un cliente se encuentra inactivo.</p>
<p align="justify">Para reproducir el error se creó una excepción personalizada (BusinessException), la cual no se puede serializar.</p>
<p align="justify"><a href="http://blogs.itsynergy.co/blogs/abravor/files/2011/11/clip_image006.png"><img style="border-bottom: 0px;border-left: 0px;padding-left: 0px;padding-right: 0px;border-top: 0px;border-right: 0px;padding-top: 0px" border="0" alt="clip_image006" src="http://blogs.itsynergy.co/blogs/abravor/files/2011/11/clip_image006_thumb.png" width="366" height="170" /></a></p>
<p align="justify">Luego se crea en la orquestación una excepción del tipo BusinessException</p>
<p align="justify"><a href="http://blogs.itsynergy.co/blogs/abravor/files/2011/11/clip_image008.jpg"><img style="border-bottom: 0px;border-left: 0px;padding-left: 0px;padding-right: 0px;border-top: 0px;border-right: 0px;padding-top: 0px" border="0" alt="clip_image008" src="http://blogs.itsynergy.co/blogs/abravor/files/2011/11/clip_image008_thumb.jpg" width="610" height="186" /></a></p>
<p align="justify">Posteriormente se realiza una validación en la orquestación con el fin de lanzar la excepción del tipo BusinessException</p>
<p align="justify"><a href="http://blogs.itsynergy.co/blogs/abravor/files/2011/11/clip_image009.png"><img style="border-bottom: 0px;border-left: 0px;padding-left: 0px;padding-right: 0px;border-top: 0px;border-right: 0px;padding-top: 0px" border="0" alt="clip_image009" src="http://blogs.itsynergy.co/blogs/abravor/files/2011/11/clip_image009_thumb.png" width="260" height="256" /></a></p>
<p align="justify">El contenido de Lanzar Excepción, es el siguiente:</p>
<p align="justify"><a href="http://blogs.itsynergy.co/blogs/abravor/files/2011/11/clip_image011.jpg"><img style="border-bottom: 0px;border-left: 0px;padding-left: 0px;padding-right: 0px;border-top: 0px;border-right: 0px;padding-top: 0px" border="0" alt="clip_image011" src="http://blogs.itsynergy.co/blogs/abravor/files/2011/11/clip_image011_thumb.jpg" width="443" height="99" /></a></p>
<p align="justify">Para realizar las pruebas de esta aplicación se copia un archivo con la información del cliente en un directorio, cuando el estado del cliente es diferente de 1 se genera una excepción de cliente invalido, la cual no se puede registrar en la base de datos de excepciones del esb, debido a que se produce el error 115004.</p>
<p align="justify"><a href="http://blogs.itsynergy.co/blogs/abravor/files/2011/11/clip_image013.jpg"><img style="border-bottom: 0px;border-left: 0px;padding-left: 0px;padding-right: 0px;border-top: 0px;border-right: 0px;padding-top: 0px" border="0" alt="clip_image013" src="http://blogs.itsynergy.co/blogs/abravor/files/2011/11/clip_image013_thumb.jpg" width="435" height="121" /></a></p>
<p align="justify">Finalmente para lograr que la excepción quede registrada en la base de datos de excepciones del ESB, se debe invocar el método FixNonSerializableExceptionInFaultMsg (propuesto por Thomas F. Abraham) en la construcción del mensaje de Falla en el bloque de excepciones de la orquestación</p>
<p align="justify"><a href="http://blogs.itsynergy.co/blogs/abravor/files/2011/11/clip_image014.png"><img style="border-bottom: 0px;border-left: 0px;padding-left: 0px;padding-right: 0px;border-top: 0px;border-right: 0px;padding-top: 0px" border="0" alt="clip_image014" src="http://blogs.itsynergy.co/blogs/abravor/files/2011/11/clip_image014_thumb.png" width="357" height="233" /></a></p>
<p align="justify"><a href="http://blogs.itsynergy.co/blogs/abravor/files/2011/11/clip_image016.jpg"><img style="border-bottom: 0px;border-left: 0px;padding-left: 0px;padding-right: 0px;border-top: 0px;border-right: 0px;padding-top: 0px" border="0" alt="clip_image016" src="http://blogs.itsynergy.co/blogs/abravor/files/2011/11/clip_image016_thumb.jpg" width="626" height="264" /></a></p>
<p align="justify">Y ahora si la excepción quedara registrada en la base de datos de excepciones del ESB y se podrá visualizar en el portal del ESB.</p>
<p align="justify"><a href="http://blogs.itsynergy.co/blogs/abravor/files/2011/11/clip_image018.jpg"><img style="border-bottom: 0px;border-left: 0px;padding-left: 0px;padding-right: 0px;border-top: 0px;border-right: 0px;padding-top: 0px" border="0" alt="clip_image018" src="http://blogs.itsynergy.co/blogs/abravor/files/2011/11/clip_image018_thumb.jpg" width="412" height="308" /></a></p>
<p align="justify">Descarga el código del ejemplo y cópialo en la carpeta C:\Projects</p>
<p align="justify">El código esta en BizTalk Server 2010</p>
<p align="justify"><a href="http://blogs.itsynergy.co/blogs/abravor/files/2011/11/iTSynergy.ESB_.SerializableException.zip">iTSynergy.ESB.SerializableException</a></p>
<p align="justify">1. Hacer doble clic en la solución iTSynergy.ESB.SerializableException.sln</p>
<p align="justify">2. Compilar el proyecto iTSynergy.ESB.SerializableException.Helper</p>
<p align="justify">3. Hacer deploy del proyecto iTSynergy.ESB.SerializableException</p>
<p align="justify">4. Ingresar a la consola de administración de BizTalk e importar el archivo de bindings (iTSynergy.ESB.SerializableExceptionBindings) en la aplicación iTSynergy.ESB.SerializableException</p>
<p align="justify">5. Para realizar las pruebas ingresar a la carpeta Process y copia el archivo ClienteInvalido.xml en la carpeta IN.</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.itsynergy.co/blogs/abravor/2011/11/08/biztalk-esb-error-115004-en-el-send-port-all-exceptions-de-la-aplicacin-biztalk-microsoft-practices-esb/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Tablas Pivote en Tiempo Real (BAM)</title>
		<link>http://blogs.itsynergy.co/blogs/abravor/2011/10/20/tablas-pivote-en-tiempo-real-bam/</link>
		<comments>http://blogs.itsynergy.co/blogs/abravor/2011/10/20/tablas-pivote-en-tiempo-real-bam/#comments</comments>
		<pubDate>Thu, 20 Oct 2011 15:48:18 +0000</pubDate>
		<dc:creator>Alexandra Bravo Restrepo</dc:creator>
				<category><![CDATA[BizTalk]]></category>
		<category><![CDATA[BAM]]></category>

		<guid isPermaLink="false">http://blogs.itsynergy.co/blogs/abravor/2011/10/20/tablas-pivote-en-tiempo-real-bam/</guid>
		<description><![CDATA[Cuando se crean vistas para las actividades de BAM, se debe tomar la decisión para determinar si la actualización de la vista se debe realizar o no en tiempo real. Cuando la actualización de la vista se realiza en tiempo real, siempre que se inserta un registro en la tabla creada para la actividad en &#8230; </p><p><a class="more-link block-button" href="http://blogs.itsynergy.co/blogs/abravor/2011/10/20/tablas-pivote-en-tiempo-real-bam/">Continue reading &#187;</a>]]></description>
			<content:encoded><![CDATA[<p align="justify">Cuando se crean vistas para las actividades de BAM, se debe tomar la decisión para determinar si la actualización de la vista se debe realizar o no en tiempo real.</p>
<p align="justify">Cuando la actualización de la vista se realiza en tiempo real, siempre que se inserta un registro en la tabla creada para la actividad en la base de datos BAMPrimaryImport, se dispara un trigger que calcula los nuevos valores de cada agregación. Esto puede afectar el performance cuando el volumen de los datos que se deben capturar es grande.</p>
<p align="justify">Cuando la actualización de la vista no es en tiempo real, al hacer Deploy de la actividad y la vista en BAM, se crean en la base de datos BAMAnalysis de Analysis Services, los cubos que contienen las agregaciones. Para reconstruir el cubo se debe programar un job para que cada cierto intervalo de tiempo se actualice. Esta alternativa se recomienda cuando el volumen de los datos que se deben capturar es grande.</p>
<p align="justify">Para activar la actualización en tiempo real en Excel 2010, Hacer clic en la tabla pivote y posteriormente en el botón (Mark the selected pivot table as Real Time Aggregation) indicado en la siguiente figura:<strong></strong></p>
<p><a href="http://blogs.itsynergy.co/blogs/abravor/files/2011/10/clip_image001.png"><img style="padding-left: 0px;padding-right: 0px;padding-top: 0px;border: 0px" src="http://blogs.itsynergy.co/blogs/abravor/files/2011/10/clip_image001_thumb.png" alt="clip_image001" width="377" height="246" border="0" /></a></p>
<p>&nbsp;</p>
<p>Para desactivar la actualización en tiempo real, se debe hacer clic nuevamente en el botón (Unmark the selected pivot table as Real Time Aggregation) indicado en la figura:</p>
<p>&nbsp;</p>
<p><a href="http://blogs.itsynergy.co/blogs/abravor/files/2011/10/clip_image003.jpg"><img style="padding-left: 0px;padding-right: 0px;padding-top: 0px;border: 0px" src="http://blogs.itsynergy.co/blogs/abravor/files/2011/10/clip_image003_thumb.jpg" alt="clip_image003" width="377" height="285" border="0" /></a><strong></strong></p>
<p>&nbsp;</p>
<p><strong>Referencias: Pro Business Activity Monitoring in BizTalk 2009 &#8211; </strong><strong>Jeff Sanders and Geoff Snowman</strong></p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.itsynergy.co/blogs/abravor/2011/10/20/tablas-pivote-en-tiempo-real-bam/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Habilitar el complemento de BAM en la barra de men&#250;s de Excel 2010</title>
		<link>http://blogs.itsynergy.co/blogs/abravor/2011/10/20/habilitar-el-complemento-de-bam-en-la-barra-de-mens-de-excel-2010/</link>
		<comments>http://blogs.itsynergy.co/blogs/abravor/2011/10/20/habilitar-el-complemento-de-bam-en-la-barra-de-mens-de-excel-2010/#comments</comments>
		<pubDate>Thu, 20 Oct 2011 15:41:35 +0000</pubDate>
		<dc:creator>Alexandra Bravo Restrepo</dc:creator>
				<category><![CDATA[BizTalk]]></category>
		<category><![CDATA[BAM]]></category>

		<guid isPermaLink="false">http://blogs.itsynergy.co/blogs/abravor/2011/10/20/habilitar-el-complemento-de-bam-en-la-barra-de-mens-de-excel-2010/</guid>
		<description><![CDATA[1. Ingresar a Microsoft Excel 2010 2. Hacer clic en el menú File y seleccionar Options 3. En el panel de la derecha hacer clic en la opción Add-Ins y luego en el botón Go… 4. Seleccionar la opción Business Activity Monitoring Si esta opción no se encuentra en la lista, hacer clic en el &#8230; </p><p><a class="more-link block-button" href="http://blogs.itsynergy.co/blogs/abravor/2011/10/20/habilitar-el-complemento-de-bam-en-la-barra-de-mens-de-excel-2010/">Continue reading &#187;</a>]]></description>
			<content:encoded><![CDATA[<p>1. Ingresar a Microsoft Excel 2010</p>
<p>2. Hacer clic en el menú File y seleccionar Options</p>
<p>3. En el panel de la derecha hacer clic en la opción Add-Ins y luego en el botón Go…</p>
<p><a href="http://blogs.itsynergy.co/blogs/abravor/files/2011/10/clip_image002.jpg"><img style="padding-left: 0px;padding-right: 0px;padding-top: 0px;border: 0px" src="http://blogs.itsynergy.co/blogs/abravor/files/2011/10/clip_image002_thumb.jpg" alt="clip_image002" width="444" height="362" border="0" /></a></p>
<p>4. Seleccionar la opción Business Activity Monitoring</p>
<p><a href="http://blogs.itsynergy.co/blogs/abravor/files/2011/10/clip_image004.jpg"><img style="padding-left: 0px;padding-right: 0px;padding-top: 0px;border: 0px" src="http://blogs.itsynergy.co/blogs/abravor/files/2011/10/clip_image004_thumb.jpg" alt="clip_image004" width="273" height="332" border="0" /></a></p>
<p>Si esta opción no se encuentra en la lista, hacer clic en el botón Browse&#8230; y buscar el archivo BAM.xla en cualquiera de las siguientes rutas:</p>
<p>C:\Program Files (x86)\Microsoft Office\Office14\Library</p>
<p>C:\Program Files (x86)\Microsoft BizTalk Server 2010\ExcelDir</p>
<p>5. Verificar que en la ventana de Excel se encuentre habilitado el menú Add-Ins</p>
<p><a href="http://blogs.itsynergy.co/blogs/abravor/files/2011/10/clip_image006.jpg"><img style="padding-left: 0px;padding-right: 0px;padding-top: 0px;border: 0px" src="http://blogs.itsynergy.co/blogs/abravor/files/2011/10/clip_image006_thumb.jpg" alt="clip_image006" width="443" height="165" border="0" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.itsynergy.co/blogs/abravor/2011/10/20/habilitar-el-complemento-de-bam-en-la-barra-de-mens-de-excel-2010/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Mapping the response from the Oracle database Adapter (weak REF CURSOR &#8211; GenRecordRow &#8211; GenRecordColumns)</title>
		<link>http://blogs.itsynergy.co/blogs/abravor/2011/03/02/mapping-the-response-from-the-oracle-database-adapter-weak-ref-cursor-genrecordrow-genrecordcolumns/</link>
		<comments>http://blogs.itsynergy.co/blogs/abravor/2011/03/02/mapping-the-response-from-the-oracle-database-adapter-weak-ref-cursor-genrecordrow-genrecordcolumns/#comments</comments>
		<pubDate>Wed, 02 Mar 2011 01:20:26 +0000</pubDate>
		<dc:creator>Alexandra Bravo Restrepo</dc:creator>
				<category><![CDATA[BizTalk]]></category>

		<guid isPermaLink="false">http://blogs.itsynergy.co/blogs/abravor/2011/03/02/mapping-the-response-from-the-oracle-database-adapter-weak-ref-cursor-genrecordrow-genrecordcolumns/</guid>
		<description><![CDATA[Al importar los esquemas de un procedimiento almacenado que retorna un weak ref cursor, el adaptador de Oracle genera un esquema &#8220;genrecordrow&#8221; y &#8220;genrecordcolumns, en lugar de un conjunto de resultados con tipo. Este tipo de mensajes son muy complejos de manejar, por lo cual se requiere realizar una transformación que permita identificar la información &#8230; </p><p><a class="more-link block-button" href="http://blogs.itsynergy.co/blogs/abravor/2011/03/02/mapping-the-response-from-the-oracle-database-adapter-weak-ref-cursor-genrecordrow-genrecordcolumns/">Continue reading &#187;</a>]]></description>
			<content:encoded><![CDATA[<p>Al importar los esquemas de un procedimiento almacenado que retorna un weak ref cursor, el adaptador de Oracle genera un esquema &#8220;genrecordrow&#8221; y &#8220;genrecordcolumns, en lugar de un conjunto de resultados con tipo. Este tipo de mensajes son muy complejos de manejar, por lo cual se requiere realizar una transformación que permita identificar la información retornada por el ref-cursor directamente.</p>
<p>Para realizar la transformación del mensaje existen diferentes opciones, a continuación un ejemplo donde se hace uso de los functoids Iteration, Record Count, Scripting y Less Than or Equal To.</p>
<p>En el ejemplo se utilizará el functoid Iteration para recorrer el conjunto de datos GenRecordRow, este conjunto se recorrerá hasta llegar a la posición del último registro, este valor se calculará con el functoid Record Count, posteriormente se utilizará el functoid Less Than or Equal To, para establecer la condición de las iteraciones, la cual debe ser menor o igual al total de filas o conjunto de datos GenRecordRow, finalmente se usará el functoid Scripting, para realizar la transformación de los datos a través de XSLT.</p>
<p>XML de entrada: Corresponde a la información retornada en el ref cursor</p>
<p><a href="http://blogs.itsynergy.co/blogs/abravor/files/2011/03/image.png"><img style="padding-left: 0px;padding-right: 0px;padding-top: 0px;border-width: 0px" src="http://blogs.itsynergy.co/blogs/abravor/files/2011/03/image_thumb.png" border="0" alt="image" width="600" height="478" /></a></p>
<p>1. Crear el esquema empleados:</p>
<p><a href="http://blogs.itsynergy.co/blogs/abravor/files/2011/03/clip_image003.png"><img style="padding-left: 0px;padding-right: 0px;padding-top: 0px;border-width: 0px" src="http://blogs.itsynergy.co/blogs/abravor/files/2011/03/clip_image003_thumb.png" border="0" alt="clip_image003" width="164" height="145" /></a></p>
<p>2. Crear el mapa para realizar la transformación de la estructura genérica al esquema de empleados:</p>
<p><a href="http://blogs.itsynergy.co/blogs/abravor/files/2011/03/clip_image004.png"><img style="padding-left: 0px;padding-right: 0px;padding-top: 0px;border-width: 0px" src="http://blogs.itsynergy.co/blogs/abravor/files/2011/03/clip_image004_thumb.png" border="0" alt="clip_image004" width="485" height="192" /></a></p>
<p>3. Adicionar al mapa los functoids Iteration y Record Count, para recorrer y contar las filas genrecordrow.</p>
<p><a href="http://blogs.itsynergy.co/blogs/abravor/files/2011/03/clip_image005.png"><img style="padding-left: 0px;padding-right: 0px;padding-top: 0px;border-width: 0px" src="http://blogs.itsynergy.co/blogs/abravor/files/2011/03/clip_image005_thumb.png" border="0" alt="clip_image005" width="485" height="156" /></a></p>
<p>4. Adicionar al mapa el functoid Less Than or Equal To, para establecer el limite o total de iteraciones. El functoid Iteration retorna el índice de la iteración y el functoid Record Count el total de registros GenRecordRow, donde estas dos salidas deben ser las entradas de la condición: Indice actual &lt;= total de registros.</p>
<p><a href="http://blogs.itsynergy.co/blogs/abravor/files/2011/03/clip_image006.png"><img style="padding-left: 0px;padding-right: 0px;padding-top: 0px;border-width: 0px" src="http://blogs.itsynergy.co/blogs/abravor/files/2011/03/clip_image006_thumb.png" border="0" alt="clip_image006" width="484" height="130" /></a></p>
<p>5. Adicionar al mapa el functoid Scripting, el cual debe recibir como parámetro el índice de la iteración, para consultar solamente las columnas correspondientes a la fila del índice recibido.</p>
<p><a href="http://blogs.itsynergy.co/blogs/abravor/files/2011/03/clip_image007.png"><img style="padding-left: 0px;padding-right: 0px;padding-top: 0px;border-width: 0px" src="http://blogs.itsynergy.co/blogs/abravor/files/2011/03/clip_image007_thumb.png" border="0" alt="clip_image007" width="484" height="134" /></a></p>
<p>6. Configurar el Scripting, utilizando el tipo de Script Inline XSLT Call Template, para realizar la transformación al esquema destino.</p>
<p><a href="http://blogs.itsynergy.co/blogs/abravor/files/2011/03/clip_image009.jpg"><img style="padding-left: 0px;padding-right: 0px;padding-top: 0px;border-width: 0px" src="http://blogs.itsynergy.co/blogs/abravor/files/2011/03/clip_image009_thumb.jpg" border="0" alt="clip_image009" width="600" height="388" /></a></p>
<p>7. Finalmente probar el mapa, y verificar que el XML de salida sea el correcto:</p>
<p><a href="http://blogs.itsynergy.co/blogs/abravor/files/2011/03/clip_image011.jpg"><img style="padding-left: 0px;padding-right: 0px;padding-top: 0px;border-width: 0px" src="http://blogs.itsynergy.co/blogs/abravor/files/2011/03/clip_image011_thumb.jpg" border="0" alt="clip_image011" width="421" height="324" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.itsynergy.co/blogs/abravor/2011/03/02/mapping-the-response-from-the-oracle-database-adapter-weak-ref-cursor-genrecordrow-genrecordcolumns/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Looping, Scripting and global Variables in Maps</title>
		<link>http://blogs.itsynergy.co/blogs/abravor/2011/01/27/looping-scripting-and-global-variables-in-maps/</link>
		<comments>http://blogs.itsynergy.co/blogs/abravor/2011/01/27/looping-scripting-and-global-variables-in-maps/#comments</comments>
		<pubDate>Thu, 27 Jan 2011 17:54:00 +0000</pubDate>
		<dc:creator>Alexandra Bravo Restrepo</dc:creator>
				<category><![CDATA[BizTalk]]></category>

		<guid isPermaLink="false">/blogs/abravor/post/2011/01/27/Looping-Scripting-and-global-Variables-in-Maps.aspx</guid>
		<description><![CDATA[El siguiente ejemplo muestra el uso de los controles looping y scripting, para transformar un archivo XML que contiene la información de los empleados de una empresa, ordenados por el departamento al que pertenecen, en un archivo XML que contenga la información de los departamentos de la empresa, con sus empleados. Archivo XML Origen: Archivo &#8230; </p><p><a class="more-link block-button" href="http://blogs.itsynergy.co/blogs/abravor/2011/01/27/looping-scripting-and-global-variables-in-maps/">Continue reading &#187;</a>]]></description>
			<content:encoded><![CDATA[<p>El siguiente ejemplo muestra el uso de los controles looping y scripting, para transformar un archivo XML que contiene la información de los empleados de una empresa, ordenados por el departamento al que pertenecen, en un archivo XML que contenga la información de los departamentos de la empresa, con sus empleados.</p>
<p><strong>Archivo XML Origen:</strong></p>
<p><a href="http://blogs.itsynergy.co/blogs/abravor/files/2011/02/clip_image002_thumb8_1.jpg"><img style="padding-left: 0px;padding-right: 0px;padding-top: 0px;margin: 0px;border: 0px initial initial" src="http://blogs.itsynergy.co/blogs/abravor/files/2011/02/clip_image002_thumb8_thumb_1.jpg" border="0" alt="clip_image002_thumb8" width="453" height="471" /></a></p>
<p><strong>Archivo XML Destino:</strong></p>
<p><a href="http://blogs.itsynergy.co/blogs/abravor/files/2011/02/clip_image004_thumb1_1.jpg"><img style="padding-left: 0px;padding-right: 0px;padding-top: 0px;margin: 0px;border: 0px initial initial" src="http://blogs.itsynergy.co/blogs/abravor/files/2011/02/clip_image004_thumb1_thumb_1.jpg" border="0" alt="clip_image004_thumb1" width="513" height="449" /></a></p>
<p>1. Crear los esquemas Empleados y Departamentos:</p>
<p>* Al crear los esquemas tener en cuenta que los nodos Departamento y Empleado deben tener las propiedades minOccurs en 1 y maxOccurs en unbounded o *, para que puedan tener como mínimo una repetición e infinitas repeticiones.</p>
<p><a href="http://blogs.itsynergy.co/blogs/abravor/files/2011/02/image_thumb3_1.png"><img style="padding-left: 0px;padding-right: 0px;padding-top: 0px;margin: 0px;border: 0px initial initial" src="http://blogs.itsynergy.co/blogs/abravor/files/2011/02/image_thumb3_thumb_1.png" border="0" alt="image_thumb3" width="600" height="309" /></a></p>
<p>2. Crear el mapa para realizar la transformación de empleados a departamentos (Empleados_To_Departamentos):</p>
<p><a href="http://blogs.itsynergy.co/blogs/abravor/files/2011/02/clip_image007_thumb3_1.png"><img style="padding-left: 0px;padding-right: 0px;padding-top: 0px;margin: 0px;border: 0px initial initial" src="http://blogs.itsynergy.co/blogs/abravor/files/2011/02/clip_image007_thumb3_thumb_1.png" border="0" alt="clip_image007_thumb3" width="600" height="220" /></a></p>
<p>3. Agregar al mapa Empleados_To_Departamentos, un control Scripting, para definir la variable global Código de Departamento, la cual se utilizará para identificar los departamentos de la empresa agregados al esquema destino (Departamentos).</p>
<p><a href="http://blogs.itsynergy.co/blogs/abravor/files/2011/02/clip_image008_thumb2_1.png"><img style="padding-left: 0px;padding-right: 0px;padding-top: 0px;margin: 0px;border: 0px initial initial" src="http://blogs.itsynergy.co/blogs/abravor/files/2011/02/clip_image008_thumb2_thumb_1.png" border="0" alt="clip_image008_thumb2" width="600" height="207" /></a></p>
<p>4. Hacer doble clic en el scripting adicionado en el paso anterior, para configurarlo:</p>
<p>* Definir un parámetro de entrada con un valor nulo por defecto (Solo se debe definir una entrada, porque solo se va a declarar una variable global).</p>
<p><a href="http://blogs.itsynergy.co/blogs/abravor/files/2011/02/clip_image009_thumb1_1.png"><img style="padding-left: 0px;padding-right: 0px;padding-top: 0px;margin: 0px;border: 0px initial initial" src="http://blogs.itsynergy.co/blogs/abravor/files/2011/02/clip_image009_thumb1_thumb_1.png" border="0" alt="clip_image009_thumb1" width="420" height="134" /></a></p>
<p>* Hacer clic en la ficha <strong>Script Functoid Configuration</strong>, para definir la variable global y las operaciones para Modificar y Consultar el valor de la variable global.</p>
<p><a href="http://blogs.itsynergy.co/blogs/abravor/files/2011/02/clip_image010_thumb2_1.png"><img style="padding-left: 0px;padding-right: 0px;padding-top: 0px;margin: 0px;border: 0px initial initial" src="http://blogs.itsynergy.co/blogs/abravor/files/2011/02/clip_image010_thumb2_thumb_1.png" border="0" alt="clip_image010_thumb2" width="453" height="347" /></a></p>
<p>5. Agregar al mapa Empleados_To_Departamentos, un control Looping, para recorrer los registros de los empleados del esquema origen.</p>
<p><a href="http://blogs.itsynergy.co/blogs/abravor/files/2011/02/clip_image011_thumb2_1.png"><img style="padding-left: 0px;padding-right: 0px;padding-top: 0px;margin: 0px;border: 0px initial initial" src="http://blogs.itsynergy.co/blogs/abravor/files/2011/02/clip_image011_thumb2_thumb_1.png" border="0" alt="clip_image011_thumb2" width="600" height="198" /></a></p>
<p>6. Agregar al mapa Empleados_To_Departamentos, un segundo control Scripting, para obtener el valor de la variable global _CodigoDepto. Este nuevo control se debe configurar de la siguiente manera:</p>
<p>* No debe tener parámetros de entrada</p>
<p>* Hacer clic en la ficha <strong>Script Functoid Configuration</strong>, para escribir el código que permite obtener el valor asignado a la variable global _CodigoDepto</p>
<p><a href="http://blogs.itsynergy.co/blogs/abravor/files/2011/02/clip_image012_thumb3_1.png"><img style="padding-left: 0px;padding-right: 0px;padding-top: 0px;margin: 0px;border: 0px initial initial" src="http://blogs.itsynergy.co/blogs/abravor/files/2011/02/clip_image012_thumb3_thumb_1.png" border="0" alt="clip_image012_thumb3" width="517" height="294" /></a></p>
<p>7. Agregar al mapa Empleados_To_Departamentos, el control lógico Not Equal, el cual debe tener como entradas la salida del segundo scripting (Valor de la variable global _CodigoDepto) y el código del departamento, con el fin de validar que estos valores sean diferentes, para poder incluir el departamento en el esquema destino.</p>
<p><a href="http://blogs.itsynergy.co/blogs/abravor/files/2011/02/clip_image013_thumb3_1.png"><img style="padding-left: 0px;padding-right: 0px;padding-top: 0px;margin: 0px;border: 0px initial initial" src="http://blogs.itsynergy.co/blogs/abravor/files/2011/02/clip_image013_thumb3_thumb_1.png" border="0" alt="clip_image013_thumb3" /></a></p>
<p>8. Agregar el control Value Mapping, el cual debe tener como entradas, la salida del control lógico y el código del departamento, para que solo cuando la condición se cumpla se agregue la información del departamento al esquema destino.</p>
<p><a href="http://blogs.itsynergy.co/blogs/abravor/files/2011/02/clip_image015_thumb2_1.jpg"><img style="padding-left: 0px;padding-right: 0px;padding-top: 0px;margin: 0px;border: 0px initial initial" src="http://blogs.itsynergy.co/blogs/abravor/files/2011/02/clip_image015_thumb2_thumb_1.jpg" border="0" alt="clip_image015_thumb2" width="599" height="210" /></a></p>
<p>9. Hacer un enlace entre el Departamento del esquema origen y el Nombre del esquema destino.</p>
<p><a href="http://blogs.itsynergy.co/blogs/abravor/files/2011/02/clip_image016_thumb2_1.png"><img style="padding-left: 0px;padding-right: 0px;padding-top: 0px;margin: 0px;border: 0px initial initial" src="http://blogs.itsynergy.co/blogs/abravor/files/2011/02/clip_image016_thumb2_thumb_1.png" border="0" alt="clip_image016_thumb2" width="600" height="201" /></a></p>
<p>10. Agregar un tercer control scripting para actualizar el valor de la variable global _CodigoDepto por el valor del código del departamento que se encuentra en el ciclo.</p>
<p><a href="http://blogs.itsynergy.co/blogs/abravor/files/2011/02/clip_image017_thumb1_1.png"><img style="padding-left: 0px;padding-right: 0px;padding-top: 0px;margin: 0px;border: 0px initial initial" src="http://blogs.itsynergy.co/blogs/abravor/files/2011/02/clip_image017_thumb1_thumb_1.png" border="0" alt="clip_image017_thumb1" width="600" height="228" /></a></p>
<p>11. Configurar el tercer scripting, para que reciba como parámetro de entrada el código del departamento, cuando la condición lógica se haya cumplido.</p>
<p><a href="http://blogs.itsynergy.co/blogs/abravor/files/2011/02/clip_image018_thumb2_1.png"><img style="padding-left: 0px;padding-right: 0px;padding-top: 0px;margin: 0px;border: 0px initial initial" src="http://blogs.itsynergy.co/blogs/abravor/files/2011/02/clip_image018_thumb2_thumb_1.png" border="0" alt="clip_image018_thumb2" width="600" height="223" /></a></p>
<p>* Hacer clic en la ficha <strong>Script Functoid Configuration </strong>del tercer scripting, para escribir el código que permita actualizar el valor de la variable global _CodigoDepto.</p>
<p><a href="http://blogs.itsynergy.co/blogs/abravor/files/2011/02/clip_image019_thumb2_1.png"><img style="padding-left: 0px;padding-right: 0px;padding-top: 0px;margin: 0px;border: 0px initial initial" src="http://blogs.itsynergy.co/blogs/abravor/files/2011/02/clip_image019_thumb2_thumb_1.png" border="0" alt="clip_image019_thumb2" width="469" height="269" /></a></p>
<p>12. Agregar un cuarto control scripting, para escribir el ciclo que permitirá obtener la información de los empleados correspondientes a un departamento y ubicarlos en el esquema destino. Este scripting debe recibir como parámetro el código del departamento que se encuentra en el ciclo y retornar la información de los empleados del departamento.</p>
<p><a href="http://blogs.itsynergy.co/blogs/abravor/files/2011/02/clip_image021_thumb2_1.jpg"><img style="padding-left: 0px;padding-right: 0px;padding-top: 0px;margin: 0px;border: 0px initial initial" src="http://blogs.itsynergy.co/blogs/abravor/files/2011/02/clip_image021_thumb2_thumb_1.jpg" border="0" alt="clip_image021_thumb2" width="599" height="205" /></a></p>
<p>* Hacer clic en la ficha <strong>Script Functoid Configuration </strong>del cuarto scripting, para escribir el código que permita obtener los empleados de un departamento.</p>
<p><a href="http://blogs.itsynergy.co/blogs/abravor/files/2011/02/clip_image022_thumb2_1.png"><img style="padding-left: 0px;padding-right: 0px;padding-top: 0px;border: 0px initial initial" src="http://blogs.itsynergy.co/blogs/abravor/files/2011/02/clip_image022_thumb2_thumb_1.png" border="0" alt="clip_image022_thumb2" width="448" height="374" /></a></p>
<p>Finalmente el mapa esta listo para las pruebas.</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.itsynergy.co/blogs/abravor/2011/01/27/looping-scripting-and-global-variables-in-maps/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Welcome to iT Synergy Blog</title>
		<link>http://blogs.itsynergy.co/blogs/abravor/2010/12/26/welcome-to-it-synergy-blog/</link>
		<comments>http://blogs.itsynergy.co/blogs/abravor/2010/12/26/welcome-to-it-synergy-blog/#comments</comments>
		<pubDate>Sun, 26 Dec 2010 21:14:00 +0000</pubDate>
		<dc:creator>Alexandra Bravo Restrepo</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">/blogs/abravor/post/2010/12/26/Welcome-to-iT-Synergy-Blog.aspx</guid>
		<description><![CDATA[]]></description>
			<content:encoded><![CDATA[<p><img style="margin-left: auto; margin-right: auto;" src="/blogs/abravor/files/2011/02/Logo_itsy_pag.jpg" alt="" /></p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.itsynergy.co/blogs/abravor/2010/12/26/welcome-to-it-synergy-blog/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

