<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.msdn.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>BizTalkLATAM's Blog : Base de Conocimiento BTS 2006</title><link>http://blogs.msdn.com/biztalklatam/archive/tags/Base+de+Conocimiento+BTS+2006/default.aspx</link><description>Tags: Base de Conocimiento BTS 2006</description><dc:language>es</dc:language><generator>CommunityServer 2.1 SP1 (Build: 61025.2)</generator><item><title>Usando el adaptador de WSS</title><link>http://blogs.msdn.com/biztalklatam/archive/2008/04/29/usando-el-adaptador-de-wss.aspx</link><pubDate>Wed, 30 Apr 2008 02:09:43 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8439961</guid><dc:creator>BizTalkLATAM</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/biztalklatam/comments/8439961.aspx</comments><wfw:commentRss>http://blogs.msdn.com/biztalklatam/commentrss.aspx?PostID=8439961</wfw:commentRss><description>&lt;p&gt;El &lt;a href="http://msdn.microsoft.com/en-us/library/aa558796.aspx"&gt;adaptador de WSS&lt;/a&gt; es utilizado para enviar informaci&amp;#243;n desde BizTalk hacia liberias de SharePoint. Una de las funcionalidades que soporta el adaptador, adem&amp;#225;s de enviar un mensaje como tal, es la posibilidad de asignar valores a columnas definidas en dicha libreria (ya sean nativas de Sharepoint o definidas por el usuario). &lt;/p&gt;  &lt;p&gt;Estas columnas pueden ser especificadas de 3 formas: &lt;/p&gt;  &lt;p&gt;La primera forma es especificando las columnas a las que se desea dar valores directamente en la &lt;a href="http://msdn.microsoft.com/en-us/library/aa560874.aspx"&gt;configuraci&amp;#243;n del puerto mismo&lt;/a&gt;, como muestra la siguiente figura: &lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/biztalklatam/WindowsLiveWriter/EnviandocolumnasaWSS_E49E/image_4.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="244" alt="image" src="http://blogs.msdn.com/blogfiles/biztalklatam/WindowsLiveWriter/EnviandocolumnasaWSS_E49E/image_thumb_1.png" width="220" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Una segunda forma es definiendo las columnas programaticamente en una orquestaci&amp;#243;n de BizTalk o un componente del Pipeline. Para esto, el adaptador de WSS soporta una propiedad del contexto del mensaje &lt;a href="http://msdn.microsoft.com/en-us/library/aa547920.aspx"&gt;WSS.ConfigPropertiesXml&lt;/a&gt;, la cual contiene un XML con la definici&amp;#243;n y valores de las columnas: &lt;/p&gt;  &lt;pre class="csharpcode"&gt;strConfig = &lt;span class="str"&gt;&amp;quot;&amp;lt;ConfigPropertiesXml&amp;gt;&amp;quot;&lt;/span&gt;;
strConfig = strConfig + &lt;span class="str"&gt;&amp;quot;&amp;lt;PropertyName1&amp;gt;Error Message&amp;lt;/PropertyName1&amp;gt;&amp;quot;&lt;/span&gt;;
strConfig = strConfig + &lt;span class="str"&gt;&amp;quot;&amp;lt;PropertySource1&amp;gt;&amp;quot;&lt;/span&gt; + sDescription + &lt;span class="str"&gt;&amp;quot;&amp;lt;/PropertySource1&amp;gt;&amp;quot;&lt;/span&gt;;
strConfig = strConfig + &lt;span class="str"&gt;&amp;quot;&amp;lt;PropertyName2&amp;gt;Batch Size&amp;lt;/PropertyName2&amp;gt;&amp;quot;&lt;/span&gt;;
strConfig = strConfig + &lt;span class="str"&gt;&amp;quot;&amp;lt;PropertySource2&amp;gt;&amp;quot;&lt;/span&gt; + sBatchSize + &lt;span class="str"&gt;&amp;quot;&amp;lt;/PropertySource2&amp;gt;&amp;quot;&lt;/span&gt;;
strConfig = strConfig + &lt;span class="str"&gt;&amp;quot;&amp;lt;PropertyName3&amp;gt;Invoice Number&amp;lt;/PropertyName3&amp;gt;&amp;quot;&lt;/span&gt;;
strConfig = strConfig + &lt;span class="str"&gt;&amp;quot;&amp;lt;PropertySource3&amp;gt;&amp;quot;&lt;/span&gt; + sInvoice + &lt;span class="str"&gt;&amp;quot;&amp;lt;/PropertySource3&amp;gt;&amp;quot;&lt;/span&gt;;
strConfig = strConfig + &lt;span class="str"&gt;&amp;quot;&amp;lt;/ConfigPropertiesXml&amp;gt;&amp;quot;&lt;/span&gt;;
Msg(WSS.ConfigPropertiesXml) = strConfig;&lt;/pre&gt;
&lt;style type="text/css"&gt;
.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;&lt;style type="text/css"&gt;
.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;p&gt;La tercera opci&amp;#243;n es utilizar una combinaci&amp;#243;n de ambos escenarios para definir las columnas: definir una parte de las columas en la configuraci&amp;#243;n del puerto y otra parte en la orquestaci&amp;#243;n.&amp;#160; Se debe tener cuidado de no especificar una misma columna en ambos lugares para evitar conflictos, en el siguiente ejemplo se adiciona una columna al puerto est&amp;#225;tico de env&amp;#237;o configurado en la primera opci&amp;#243;n.&lt;/p&gt;

&lt;pre class="csharpcode"&gt;strConfig = &lt;span class="str"&gt;&amp;quot;&amp;lt;ConfigPropertiesXml&amp;gt;&amp;quot;&lt;/span&gt;;
strConfig = strConfig + &lt;span class="str"&gt;&amp;quot;&amp;lt;PropertyName4&amp;gt;Source&amp;lt;/PropertyName4&amp;gt;&amp;quot;&lt;/span&gt;;
strConfig = strConfig + &lt;span class="str"&gt;&amp;quot;&amp;lt;PropertySource4&amp;gt;&amp;quot;&lt;/span&gt; + sSource + &lt;span class="str"&gt;&amp;quot;&amp;lt;/PropertySource4&amp;gt;&amp;quot;&lt;/span&gt;;
strConfig = strConfig + &lt;span class="str"&gt;&amp;quot;&amp;lt;/ConfigPropertiesXml&amp;gt;&amp;quot;&lt;/span&gt;;
Msg(WSS.ConfigPropertiesXml) = strConfig;&lt;/pre&gt;
&lt;style type="text/css"&gt;
.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;p&gt;Esta &amp;#250;ltima opci&amp;#243;n es muy util cuando una parte las columnas son relativamente est&amp;#225;ticas, mientras que otra parte son din&amp;#225;micas y bien sea las columnas mismas o sus valores solo pueden ser calculados en tiempo de ejecuci&amp;#243;n. &lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8439961" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/biztalklatam/archive/tags/Base+de+Conocimiento+BTS+2006/default.aspx">Base de Conocimiento BTS 2006</category></item><item><title>Posters de BizTalk 2006</title><link>http://blogs.msdn.com/biztalklatam/archive/2008/03/17/posters-de-biztalk-2006.aspx</link><pubDate>Tue, 18 Mar 2008 00:25:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8296056</guid><dc:creator>BizTalkLATAM</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/biztalklatam/comments/8296056.aspx</comments><wfw:commentRss>http://blogs.msdn.com/biztalklatam/commentrss.aspx?PostID=8296056</wfw:commentRss><description>&lt;p&gt;En la siguiente dirección pueden encontrar todos los posters que Microsoft ha generado para BizTalk 2006 R2 explicando todas sus características.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.microsoft.com/biztalk/techinfo/guides.mspx" mce_href="http://www.microsoft.com/biztalk/techinfo/guides.mspx"&gt;http://www.microsoft.com/biztalk/techinfo/guides.mspx&lt;/a&gt;&amp;nbsp;&lt;/p&gt;  &lt;p&gt;   &lt;br&gt;También existe un poster acerca de la arquitectura en BizTalk 2006 y puede ser descargado &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=65ab53ce-78c1-4cc4-96fd-a492dd7f3f4a&amp;amp;DisplayLang=en" mce_href="http://www.microsoft.com/downloads/details.aspx?FamilyID=65ab53ce-78c1-4cc4-96fd-a492dd7f3f4a&amp;amp;DisplayLang=en"&gt;aquí&lt;/a&gt;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8296056" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/biztalklatam/archive/tags/Base+de+Conocimiento+BTS+2006/default.aspx">Base de Conocimiento BTS 2006</category></item><item><title>Un escenario de mensajeria sin orquestaciones</title><link>http://blogs.msdn.com/biztalklatam/archive/2008/01/23/un-escenario-de-mensajeria-sin-orquestaciones.aspx</link><pubDate>Wed, 23 Jan 2008 18:19:44 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:7209464</guid><dc:creator>BizTalkLATAM</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/biztalklatam/comments/7209464.aspx</comments><wfw:commentRss>http://blogs.msdn.com/biztalklatam/commentrss.aspx?PostID=7209464</wfw:commentRss><description>&lt;p&gt;En ocasiones es necesario utilizar BizTalk Server para un escenario de mensajer&amp;#237;a el cual debe consultar informaci&amp;#243;n a una aplicaci&amp;#243;n externa y luego enviar &amp;#233;sta a otra aplicaci&amp;#243;n externa sin necesidad de aplicar alguna logica de negocio durante su proceso.&amp;#160; &lt;/p&gt;  &lt;p&gt;En ocasiones se utilizan orquestaciones en este tipo de escenarios lo cual algunas veces puede resultar innecesario.&amp;#160; Para ilustrar esta situaci&amp;#243;n se puede tomar el ejemplo &lt;a href="http://msdn2.microsoft.com/en-us/library/ms966378.aspx"&gt;HTTPSolicitResponse&lt;/a&gt; que viene en SDK de BizTalk Server 2004/2006/2006r2.&amp;#160; HTTPSolicitResponse muestra una forma de c&amp;#243;mo usar BizTalk Server para consultar un servicio HTTP y luego enviar la respuesta el FileSystem.&amp;#160; Los artefactos usados en esta soluci&amp;#243;n son:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Un Receive Port llamado &lt;em&gt;&lt;strong&gt;HTTPSolicitResponseReceivePort&lt;/strong&gt;&lt;/em&gt; que recibe la informaci&amp;#243;n desde el FileSystem&lt;/li&gt;    &lt;li&gt;Una orquestacion que procesa la informaci&amp;#243;n&lt;/li&gt;    &lt;li&gt;Un Send Port llamado &lt;em&gt;&lt;strong&gt;HTTPSolicitResponseTwoWayPort&lt;/strong&gt;&lt;/em&gt; que env&amp;#237;a hace la petici&amp;#243;n al servicio HTTP&lt;/li&gt;    &lt;li&gt;Un Send Port llamado &lt;strong&gt;&lt;em&gt;HTTPSolicitResponseSendPort&lt;/em&gt;&lt;/strong&gt; que env&amp;#237;a el resultado al FileSystem &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Sin embargo, en su ejecuci&amp;#243;n esta soluci&amp;#243;n utiliza m&amp;#225;s recursos de los estrictamente necesarios, debido aque se usa una orquestacion como enrutadora sin procesar ningun tipo de proceso de negocio real tal como puede observar en la siguiente figura.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/biztalklatam/WindowsLiveWriter/Unescenariodemensajeria_13B82/image_4.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="158" alt="image" src="http://blogs.msdn.com/blogfiles/biztalklatam/WindowsLiveWriter/Unescenariodemensajeria_13B82/image_thumb_1.png" width="244" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;De acuerdo a la arquitectura de BizTalk Server (ver figura) todos los mensajes deben pasar por el MessageBox para poder ser instanciados por las orquestaciones o puertos de envio.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/biztalklatam/WindowsLiveWriter/Unescenariodemensajeria_13B82/image_6.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="143" alt="image" src="http://blogs.msdn.com/blogfiles/biztalklatam/WindowsLiveWriter/Unescenariodemensajeria_13B82/image_thumb_2.png" width="244" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;u&gt;Mejorando la soluci&amp;#243;n&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Para mejorar el performance de la soluci&amp;#243;n podr&amp;#237;a eliminarse la orquestaci&amp;#243;n lo que permitir&amp;#237;a reducir su ejecuci&amp;#243;n a los siguientes pasos: &lt;/p&gt;  &lt;p&gt;1. &lt;strong&gt;&lt;em&gt;HTTPSolicitResponseReceivePort&lt;/em&gt;&lt;/strong&gt; env&amp;#237;a el mensaje a MessageBox&lt;/p&gt;  &lt;p&gt;2. &lt;strong&gt;&lt;em&gt;HTTPSolicitResponseTwoWayPort&lt;/em&gt;&lt;/strong&gt; recibe el mensaje desde MessageBox y env&amp;#237;a la solicitud HTTP, una vez recibe la respuesta vuelve a enviar el mensaje a MessageBox&lt;/p&gt;  &lt;p&gt;3. &lt;strong&gt;&lt;em&gt;HTTPSolicitResponseSendPort&lt;/em&gt;&lt;/strong&gt; recibe el mensaje desde la MessageBox y lo env&amp;#237;a al FileSystem&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;De igual forma, al eliminar la orquestaci&amp;#243;n el gr&amp;#225;fico de arquitectura tambi&amp;#233;n ser&amp;#237;a modificado as&amp;#237;.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/biztalklatam/WindowsLiveWriter/Unescenariodemensajeria_13B82/image_8.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="143" alt="image" src="http://blogs.msdn.com/blogfiles/biztalklatam/WindowsLiveWriter/Unescenariodemensajeria_13B82/image_thumb_3.png" width="244" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;El nuevo escenario presenta estas ventajas:&lt;/p&gt;  &lt;p&gt;1. Se evita una ejecuci&amp;#243;n innecesaria de la orquestaci&amp;#243;n&lt;/p&gt;  &lt;p&gt;2. Menor utilizacion del MessageBox, lo que significa menor consumo de recursos&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Para lograr este nuevo escenario se debe configurar los puertos de salida (Send Ports) para que sean instanciados una vez el mensaje el publicado en el MessageBox.&amp;#160; A continuaci&amp;#243;n se muestra la forma de como configurar la nueva soluci&amp;#243;n:&lt;/p&gt;  &lt;p&gt;1. Poner en estado Unenlist la orquestaci&amp;#243;n &lt;strong&gt;&lt;em&gt;MultiplyTwoIntegers&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;2. Editar las propiedades del Send Port llamado &lt;strong&gt;&lt;em&gt;HttpSolicitResponseTwoWayPort&lt;/em&gt;&lt;/strong&gt; y establecer este filtro:&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;BTS.ReceivePortName == HttpSolicitResponseReceivePort&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;3. Editar las propiedades del Send Port llamado &lt;strong&gt;&lt;em&gt;HttpSolicitResponseSendPort&lt;/em&gt;&lt;/strong&gt; y establecer este filtro:&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;BTS.SPName == HttpSolicitResponseTwoWayPort&lt;/strong&gt;&lt;/p&gt; &lt;style type="text/css"&gt;
.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;  &lt;p&gt;4. Probar el nuevo escenario copiando el archivo en la carpeta de recepci&amp;#243;n&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Tambi&amp;#233;n se puede hacer &lt;em&gt;undeploy&lt;/em&gt; del assembly &lt;em&gt;&lt;strong&gt;HttpSolicitResponse.dll&lt;/strong&gt;&lt;/em&gt; y probar nuevamente.&amp;#160; Sin embargo, al realizar este cambio tambi&amp;#233;n se debe cambiar los pipelines utilizados en los puertos de la siguiente forma:&lt;/p&gt;  &lt;p&gt;1.&amp;#160; Los pipelines &lt;strong&gt;&lt;em&gt;XmlReceive&lt;/em&gt;&lt;/strong&gt; por &lt;strong&gt;&lt;em&gt;PassThruReceive&lt;/em&gt;&lt;/strong&gt; en el Receive Location &lt;em&gt;HttpSolicitResponseReceiveLocation&lt;/em&gt; y en el Send Port &lt;em&gt;HttpSolicitResponseTwoWayPort&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;2. Los pipelines &lt;strong&gt;&lt;em&gt;XmlTransmit&lt;/em&gt;&lt;/strong&gt; por &lt;em&gt;&lt;strong&gt;PassThruTransmit&lt;/strong&gt; &lt;/em&gt;en los Send Ports &lt;em&gt;HttpSolicitResponseTwoWayPort&lt;/em&gt; y &lt;em&gt;HttpSolicitResponseSendPort&lt;/em&gt; &lt;/p&gt;  &lt;p&gt;El anterior cambio ser&amp;#237;a necesario ya que los pipelines Xml* generar&amp;#237;an un error al procesar los mensajes intentando obtener su MessageType desde la BizTalkMgmtDb.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;u&gt;Conclusi&amp;#243;n&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Lo anterior indica que NO se deberia utilizar orquestaciones que solo sirvan como reenrutadoras de la informacion y NO ejecuten alguna logica de negocio real en un escenario de mensajeria.&lt;/p&gt;  &lt;p&gt;De igual forma estos escenario de mensajeria se pueden utilizar para consultar informaci&amp;#243;n a SQL Server con el adaptador de SQL, consultar un Servicio Web usando el adaptador de SOAP (ver ejemplo &lt;a href="http://go.microsoft.com/fwlink/?LinkId=99745"&gt;Consumming Web Services with Messaging-Only Scenario&lt;/a&gt;), u otro escenario de estas caracter&amp;#237;sticas.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=7209464" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/biztalklatam/archive/tags/Base+de+Conocimiento+BTS+2004/default.aspx">Base de Conocimiento BTS 2004</category><category domain="http://blogs.msdn.com/biztalklatam/archive/tags/Base+de+Conocimiento+BTS+2006/default.aspx">Base de Conocimiento BTS 2006</category></item><item><title>Cuidado al construir multiples mensajes con XmlDocument</title><link>http://blogs.msdn.com/biztalklatam/archive/2008/01/14/cuidado-al-construir-multiples-mensajes-con-xmldocument.aspx</link><pubDate>Tue, 15 Jan 2008 01:32:18 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:7112391</guid><dc:creator>BizTalkLATAM</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/biztalklatam/comments/7112391.aspx</comments><wfw:commentRss>http://blogs.msdn.com/biztalklatam/commentrss.aspx?PostID=7112391</wfw:commentRss><description>&lt;p&gt;Una de las técnicas utilizadas para definir mensajes al desarrollar orquestaciones es usar objetos System.Xml.XmlDocument.&amp;nbsp; Sin embargo, es necesario tener cuidado al momento de utilizar el mismo objeto para definir mas de un mensaje usando un sólo "Construction Shape" ya que los mensajes pueden no almacenarse en la base de datos con la información esperada.&lt;/p&gt; &lt;p&gt;El siguiente escenario (ver figura) pretende explicar con más detalle lo comentado.&lt;/p&gt; &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/biztalklatam/WindowsLiveWriter/ConstruyendomensajesconXmlDocument_9EC9/image_4.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="244" alt="image" src="http://blogs.msdn.com/blogfiles/biztalklatam/WindowsLiveWriter/ConstruyendomensajesconXmlDocument_9EC9/image_thumb_1.png" width="115" border="0"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;En la figura se observa como la orquestación construye dos mensajes: Msg2 y Msg3, usando el mismo "Construction Shape" y para ambos mensajes usa el mismo objeto xmlDoc de tipo System.Xml.XmlDocument.&amp;nbsp; Asi, en el primer Message Assigment Shape el siguiente codigo define el Msg2: &lt;/p&gt;&lt;pre class="csharpcode"&gt;&lt;span class="rem"&gt;// carga xml y asigna el Msg2&lt;/span&gt;
xmlDoc.LoadXml(&lt;span class="str"&gt;"&amp;lt;Root&amp;gt;&amp;lt;Field&amp;gt;Field_2&amp;lt;/Field&amp;gt;&amp;lt;/Root&amp;gt;"&lt;/span&gt;);
Msg2 = xml;&lt;/pre&gt;
&lt;p&gt;Y en el segundo Message Assigment Shape este codigo define el Msg3:&lt;/p&gt;&lt;pre class="csharpcode"&gt;&lt;span class="rem"&gt;// carga xml y asigna el Msg3&lt;/span&gt;
xmlDoc.LoadXml(&lt;span class="str"&gt;"&amp;lt;Root&amp;gt;&amp;lt;Field&amp;gt;Field_3&amp;lt;/Field&amp;gt;&amp;lt;/Root&amp;gt;"&lt;/span&gt;);
Msg3 = xml;
&lt;/pre&gt;
&lt;style type="text/css"&gt;.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }
&lt;/style&gt;

&lt;p&gt;En teoria el resultado deberia ser dos archivos diferentes, sin embargo el resultado al ejecutarse la orquestación no es el esperado ya que ambos archivos contienen la misma informacion.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/biztalklatam/WindowsLiveWriter/ConstruyendomensajesconXmlDocument_9EC9/image_6.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="132" alt="image" src="http://blogs.msdn.com/blogfiles/biztalklatam/WindowsLiveWriter/ConstruyendomensajesconXmlDocument_9EC9/image_thumb_2.png" width="244" border="0"&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;Este inconveniente se debe a dos razones:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;El mensaje de BizTalk guarda una referencia al objeto XmlDocument asignado. 
&lt;li&gt;El objeto XmlDocument fue modificado en el mismo Construction Shape por lo que no fue posible hacer persistente el mensaje.&lt;/li&gt;&lt;/ol&gt;
&lt;p&gt;Por lo tanto, el objeto xml que se utilizo para definir el Msg2 fue modificado para construir el Msg3 antes de que el mensaje Msg2 se hiciese persistente.&amp;nbsp; Esto ocasiono que el contenido de ambos mensajes en la base de datos sea el mismo.&lt;/p&gt;
&lt;p&gt;Esta característica esta presente en las versiones de biztalk 2004/2006/2006r2.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=7112391" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/biztalklatam/archive/tags/Base+de+Conocimiento+BTS+2004/default.aspx">Base de Conocimiento BTS 2004</category><category domain="http://blogs.msdn.com/biztalklatam/archive/tags/Base+de+Conocimiento+BTS+2006/default.aspx">Base de Conocimiento BTS 2006</category></item><item><title>Desplegando soluciones de BTS usando Targets</title><link>http://blogs.msdn.com/biztalklatam/archive/2007/11/21/desplegando-soluciones-de-bts-usando-targets.aspx</link><pubDate>Wed, 21 Nov 2007 19:18:45 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:6458051</guid><dc:creator>BizTalkLATAM</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/biztalklatam/comments/6458051.aspx</comments><wfw:commentRss>http://blogs.msdn.com/biztalklatam/commentrss.aspx?PostID=6458051</wfw:commentRss><description>&lt;p&gt;Una de las principales características al crear archivos&amp;nbsp;.MSI para instalar aplicaciones de&amp;nbsp;BizTalk Server 2006&amp;nbsp;en otros ambientes, es poder adicionar archivos de configuración (&lt;strong&gt;&lt;em&gt;binding files&lt;/em&gt;&lt;/strong&gt;)&amp;nbsp;y especificar en&amp;nbsp;cual ambiente van a ser utilizados.&lt;/p&gt; &lt;p&gt;Esta funcionalidad&amp;nbsp;permite generar un solo instalador&amp;nbsp;que sirve para&amp;nbsp;los diferentes ambientes como desarrollo, precalidad, calidad, QA, y producccion,&amp;nbsp;entre otros (depende de las politicas de la empresa).&amp;nbsp; &lt;/p&gt; &lt;p&gt;Este proceso es sencillo,&amp;nbsp;basta con adicionar un archivo de configuración como recurso desde la consola administrativa&amp;nbsp;y especificar el ambiente (target)&amp;nbsp;en el cual se quiere ejecutar.&lt;/p&gt; &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/biztalklatam/WindowsLiveWriter/143161a384e3_915D/image_1.png" atomicselection="true"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="240" alt="image" src="http://blogs.msdn.com/blogfiles/biztalklatam/WindowsLiveWriter/143161a384e3_915D/image_thumb_1.png" width="215" border="0"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;De esta forma se pueden tener todos los archivos de configuración necesarios para los diferentes ambientes en un solo instalador.&lt;/p&gt; &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/biztalklatam/WindowsLiveWriter/143161a384e3_915D/image_2.png" atomicselection="true"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="60" alt="image" src="http://blogs.msdn.com/blogfiles/biztalklatam/WindowsLiveWriter/143161a384e3_915D/image_thumb_2.png" width="240" border="0"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;Por último, al momento de importar el archivo simplemente se debe seleccionar el ambiente correcto para aplicar la configuración deseada.&lt;/p&gt; &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/biztalklatam/WindowsLiveWriter/143161a384e3_915D/image_3.png" atomicselection="true"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="84" alt="image" src="http://blogs.msdn.com/blogfiles/biztalklatam/WindowsLiveWriter/143161a384e3_915D/image_thumb_3.png" width="240" border="0"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;Sin embargo, cuando se importa un archivo .MSI la configuración se&amp;nbsp;aplica de acuerdo al siguiente orden:&lt;/p&gt; &lt;ol&gt; &lt;li&gt;Se crea la configuración generada automáticamente cuando se exporto el archivo .MSI.&amp;nbsp; Esto si la aplicacion tenía puertos de envío, recepción, u otros.&lt;br&gt; &lt;li&gt;Aplica los archivos de configuración que se adicionaron como recursos pero a los cuales no se especificó un ambiente (target).&lt;br&gt; &lt;li&gt;Aplica los archivos de configuración&amp;nbsp;de acuerdo al ambiente seleccionado.&lt;/li&gt;&lt;/ol&gt; &lt;p&gt;Este orden de&amp;nbsp;ejecución puede causar algunos inconvenientes en la instalación de la aplicación ya que se puede crear configuración como puertos de envios u otros en ambientes no deseasdos, p. ej. un ambiente de producción.&amp;nbsp;&amp;nbsp;Por lo tanto se recomienda tener en cuenta:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;Cuando se exporte el archivo .MSI, asegurarse de no seleccionar la opcion &lt;strong&gt;&lt;em&gt;Binding&lt;/em&gt;&lt;/strong&gt; que se presenta en la ventana &lt;strong&gt;&lt;em&gt;Select Resources&lt;/em&gt;&lt;/strong&gt;.&amp;nbsp; Esta opción indica que no se genere&amp;nbsp;la configuración por defecto de la aplicación.&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/biztalklatam/WindowsLiveWriter/143161a384e3_915D/image.png" atomicselection="true"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="309" alt="image" src="http://blogs.msdn.com/blogfiles/biztalklatam/WindowsLiveWriter/143161a384e3_915D/image_thumb.png" width="376" border="0"&gt;&lt;/a&gt; &lt;/p&gt; &lt;ul&gt; &lt;li&gt;Especificar siempre un ambiente (target) a los archivos de configuración asociados como recursos, de esta forma&amp;nbsp;la configuración siempre sera aplicada de acuerdo al ambiente seleccionado.&amp;nbsp;&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;De esta forma no se tendran inconvenientes en el momento de la realizar&amp;nbsp;los despliegues de las aplicacion de BizTalk Server 2006.&lt;/p&gt;&lt;font color="#ff8000" size="1"&gt;&lt;strong&gt;Autor: Carlos Medina&lt;br&gt;&lt;/strong&gt;&lt;/font&gt;&lt;font color="#c0c0c0" size="1"&gt;&lt;strong&gt;Este mensaje se proporciona "como está" sin garantías de ninguna clase, y no otorga&amp;nbsp;ningun derecho&lt;/strong&gt;&lt;/font&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=6458051" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/biztalklatam/archive/tags/Base+de+Conocimiento+BTS+2006/default.aspx">Base de Conocimiento BTS 2006</category></item><item><title>Donde puedo almacenar las BR?</title><link>http://blogs.msdn.com/biztalklatam/archive/2007/07/17/donde-puedo-almacenar-las-br.aspx</link><pubDate>Wed, 18 Jul 2007 07:29:58 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:3931270</guid><dc:creator>BizTalkLATAM</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/biztalklatam/comments/3931270.aspx</comments><wfw:commentRss>http://blogs.msdn.com/biztalklatam/commentrss.aspx?PostID=3931270</wfw:commentRss><description>&lt;p&gt;BizTalk Server a través del Business Rule Engine (BRE) ofrece la posibilidad de almacenar las reglas de negocio (BR) implementadas en archivos xml o en bases de datos para&amp;nbsp;su posterior&amp;nbsp;invocación y ejecución.&amp;nbsp; Cada almacenamiento ofrece sus ventajas y desventajas, y adicional su invocación difiere en cada uno.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;&lt;u&gt;Archivos XML&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;Una BR se puede almacenar e invocar desde un archivo plano usando la clase &lt;a href="https://msdn2.microsoft.com/en-us/library/ms996758.aspx"&gt;FileRuleStore&lt;/a&gt;.&lt;/p&gt;&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;void&lt;/span&gt; SaveToFile()
{
    RuleStore ruleStore = &lt;span class="kwrd"&gt;new&lt;/span&gt; FileRuleStore(&lt;span class="str"&gt;"filename"&lt;/span&gt;);
    ruleStore.Save(&lt;span class="kwrd"&gt;new&lt;/span&gt; RuleSet(&lt;span class="str"&gt;"rulesetname"&lt;/span&gt;));
}

&lt;span class="kwrd"&gt;void&lt;/span&gt; LoadFromFile()
{
    RuleStore ruleStore = &lt;span class="kwrd"&gt;new&lt;/span&gt; FileRuleStore(&lt;span class="str"&gt;"filename"&lt;/span&gt;);
    RuleSetInfoCollection rsInfo = ruleStore.GetRuleSets(&lt;span class="str"&gt;"rulesetname"&lt;/span&gt;, RuleStore.Filter.Latest);
    RuleSet newRS = ruleStore.GetRuleSet(rsInfo[0]);
}&lt;/pre&gt;
&lt;style type="text/css"&gt;.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }
&lt;/style&gt;

&lt;p&gt;Este almacenamiento ofrece las siguientes ventajas:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;No es necesario tener una base de datos (como SQL Server) para su almacenamiento&amp;nbsp;y ejecución. 
&lt;li&gt;El instanciamiento&amp;nbsp;de la BR es mas rápida ya que evita el acceso a la base de datos. 
&lt;li&gt;La BR puede ser modificada con un editor como Bloc de Notas (notepad) y no es necesaria&amp;nbsp;su publicación (publish) y despliegue (deploy) posterior.&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;Las desventajas son:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Estas BR no pueden ser invocadas desde un orquestación con el &lt;a href="http://msdn2.microsoft.com/EN-US/library/aa561607.aspx"&gt;Call Rules Shape&lt;/a&gt;, sólo desde .net assemblies utilizando la clase FileRuleStore. 
&lt;li&gt;Si una BR va a ser accedida por varias aplicaciones se debe copiar el archivo en una ruta compartida o crear una copia en cada aplicación. 
&lt;li&gt;No se puede editar con el&amp;nbsp;Business Rule Composer.&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;&lt;u&gt;Base de datos&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Una BR puede ser almacenada e invocada desde una base de datos usando las clases &lt;a href="https://msdn2.microsoft.com/en-us/library/ms983548.aspx"&gt;SqlRuleStore&lt;/a&gt; o &lt;a href="http://msdn2.microsoft.com/en-us/library/microsoft.ruleengine.oledbrulestore.aspx"&gt;OleDbRuleStore&lt;/a&gt;&lt;/p&gt;&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; Microsoft.BizTalk.RuleEngineExtensions;

&lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; DeployRuleSet(RuleSet ruleset)
{
    RuleSetDeploymentDriver dd = &lt;span class="kwrd"&gt;new&lt;/span&gt; RuleSetDeploymentDriver();
    SqlRuleStore sqlrs;
    sqlrs = (SqlRuleStore) dd.GetRuleStore();

    sqlrs.Add(ruleset, &lt;span class="kwrd"&gt;true&lt;/span&gt;);
    dd.Deploy(&lt;span class="kwrd"&gt;new&lt;/span&gt; RuleSetInfo(ruleset.Name, 
            ruleset.CurrentVersion.MajorRevision, ruleset.CurrentVersion.MinorRevision));
}

&lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; GetRuleStore(&lt;span class="kwrd"&gt;string&lt;/span&gt; rulesetname)
{
    RuleSetDeploymentDriver dd = &lt;span class="kwrd"&gt;new&lt;/span&gt; RuleSetDeploymentDriver();
    SqlRuleStore sqlrs = (SqlRuleStore) dd.GetRuleStore();

    RuleSetInfoCollection rss = &lt;span class="kwrd"&gt;new&lt;/span&gt; RuleSetInfoCollection();
    rss = sqlrs.GetRuleSets(rulesetname, RuleStore.Filter.Latest);
}&lt;/pre&gt;
&lt;style type="text/css"&gt;.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }
&lt;/style&gt;

&lt;p&gt;Las ventajas de utilizar una base de datos se enumeran en:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Las BR quedan almacenadas en forma centralizada, por lo tanto las aplicaciones que la consuman tendran siempre un repositorio único 
&lt;li&gt;Se puede utilizar el Business Rule Composer para administrar las BR, publicarlas (publish) o desplegarlas (deploy). 
&lt;li&gt;La BR puede ser invocada desde un .net assembly utilizando las clases provitas por el framework de BRE. 
&lt;li&gt;Las BR pueden ser invocadas desde orquestaciones usando &lt;a href="http://msdn2.microsoft.com/EN-US/library/aa561607.aspx"&gt;Call Rules Shapes&lt;/a&gt;.&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;Las desventajas son:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;El instanciamiento inicial de la BR puede ser lenta dependiendo de la conexion a la base de datos 
&lt;li&gt;Se debe tener una base de datos para el almacenamiento de las BR 
&lt;li&gt;La administracion y modificaciones a las BR tienen que hacerse por medio de un editor de BR, ejemplo el &lt;a href="http://msdn2.microsoft.com/en-us/library/ms964126.aspx"&gt;Business Rule Composer&lt;/a&gt;.&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;En ambos casos se puede exportar facilmente una BR de un archivo xml a la base de datos y viceversa, para ello se puede utilizar&amp;nbsp;el framework de&amp;nbsp;BRE o el &lt;a href="http://msdn2.microsoft.com/en-us/library/aa547834.aspx"&gt;Business Rule Engine Deployment Wizard&lt;/a&gt; que provee BizTalk Server.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;font color="#ff8000" size="1"&gt;&lt;strong&gt;Autor: Carlos Medina&lt;br&gt;&lt;/strong&gt;&lt;/font&gt;&lt;font color="#c0c0c0" size="1"&gt;&lt;strong&gt;Este mensaje se proporciona "como está" sin garantías de ninguna clase, y no otorga&amp;nbsp;ningun derecho&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=3931270" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/biztalklatam/archive/tags/Base+de+Conocimiento+BTS+2004/default.aspx">Base de Conocimiento BTS 2004</category><category domain="http://blogs.msdn.com/biztalklatam/archive/tags/Base+de+Conocimiento+BTS+2006/default.aspx">Base de Conocimiento BTS 2006</category></item><item><title>Error: Compiler for file type '*.btm' failed</title><link>http://blogs.msdn.com/biztalklatam/archive/2007/05/07/error-quot-compiler-for-file-type-btm-failed-quot.aspx</link><pubDate>Tue, 08 May 2007 07:42:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:2474101</guid><dc:creator>BizTalkLATAM</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/biztalklatam/comments/2474101.aspx</comments><wfw:commentRss>http://blogs.msdn.com/biztalklatam/commentrss.aspx?PostID=2474101</wfw:commentRss><description>&lt;P&gt;&lt;STRONG&gt;&lt;U&gt;Sintoma&lt;/U&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Tu recibes el siguiente error al tratar de compilar proyectos de BizTalk Server 2006 que contienen mapas:&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#ff0000&gt;Error: Build failed. Compiler for file type '*.btm' failed. Unable to load wrapper:C:\Program Files\Microsoft BizTalk Server 2006\Developer Tools\Mapper Extensions\Microsoft.BizTalk.Security.SSPI.dll.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;U&gt;Solución&lt;/U&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;El assembly &lt;STRONG&gt;&lt;EM&gt;Microsoft.BizTalk.Security.SSPI.dll&lt;/EM&gt;&lt;/STRONG&gt; está por defecto registrado en el GAC y el compilador de BizTalk Server 2006 lo carga desde allí, por lo&amp;nbsp;tanto es necesario&amp;nbsp;eliminar la copia&amp;nbsp;de éste assembly&amp;nbsp;de la carpeta &lt;STRONG&gt;&lt;EM&gt;%install_bts%\Developer Tools\Mapper Extensions\&lt;/EM&gt;&lt;/STRONG&gt;.&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#ff8000 size=1&gt;&lt;STRONG&gt;Autor: Carlos Medina&lt;BR&gt;&lt;/STRONG&gt;&lt;/FONT&gt;&lt;FONT color=#c0c0c0 size=1&gt;&lt;STRONG&gt;Este mensaje se proporciona "como está" sin garantías de ninguna clase, y no otorga&amp;nbsp;ningun derecho&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=2474101" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/biztalklatam/archive/tags/Base+de+Conocimiento+BTS+2006/default.aspx">Base de Conocimiento BTS 2006</category></item><item><title>BizTalk Services CTP</title><link>http://blogs.msdn.com/biztalklatam/archive/2007/04/24/biztalk-services-ctp.aspx</link><pubDate>Tue, 24 Apr 2007 18:49:37 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:2261405</guid><dc:creator>BizTalkLATAM</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/biztalklatam/comments/2261405.aspx</comments><wfw:commentRss>http://blogs.msdn.com/biztalklatam/commentrss.aspx?PostID=2261405</wfw:commentRss><description>&lt;p&gt;Microsoft ha liberado BizTalk Services CTP al público,&amp;nbsp;BizTalk Services es una nueva propuesta de Microsoft ofreciendo integracion de servicios como &lt;a href="https://identity.biztalk.net/"&gt;Identity Services&lt;/a&gt; y&amp;nbsp;&lt;a href="http://connect.biztalk.net/"&gt;Connectivity Services&lt;/a&gt; con BizTalk Server inicialmente; otros servicios como &lt;u&gt;&lt;em&gt;ServiceBus Services&lt;/em&gt;&lt;/u&gt; y &lt;u&gt;&lt;em&gt;Workflow Services&lt;/em&gt;&lt;/u&gt; aún no estan disponibles.&amp;nbsp; &amp;nbsp; &lt;/p&gt; &lt;p&gt;Más información acerca de los servicios y el SDK para desarollo&amp;nbsp;puede ser descargado desde &lt;a href="http://labs.biztalk.net"&gt;http://labs.biztalk.net&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&lt;font color="#c0c0c0" size="1"&gt;&lt;strong&gt;Este mensaje se proporciona "como está" sin garantías de ninguna clase, y no otorga&amp;nbsp;ningun derecho&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=2261405" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/biztalklatam/archive/tags/Base+de+Conocimiento+BTS+2006/default.aspx">Base de Conocimiento BTS 2006</category></item><item><title>BizTalk Server R2 Beta 2</title><link>http://blogs.msdn.com/biztalklatam/archive/2007/04/03/biztalk-server-r2-beta-2.aspx</link><pubDate>Tue, 03 Apr 2007 16:53:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:2018261</guid><dc:creator>BizTalkLATAM</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/biztalklatam/comments/2018261.aspx</comments><wfw:commentRss>http://blogs.msdn.com/biztalklatam/commentrss.aspx?PostID=2018261</wfw:commentRss><description>&lt;P&gt;Microsoft ha liberado&amp;nbsp;BizTalk Server 2006 R2 Beta 2, este nuevo build corrige muchos de los problemas encontrados en las versiones anteriores y contiene todo el motor de ejecución de BizTalk Server, templates para Visual Studio, interceptor para BAM, soporte a RFID y EDI, BizTalk Accelerators para HL7, SWIFT y RosettaNet, LOB Adapters, y documentacion y ejemplos acerca del producto, entre otros.&lt;/P&gt;
&lt;P&gt;Adicionalmente,&amp;nbsp;una nueva versión del Net Lob Adapter ha sido liberado correspondiente a la versión Beta 2.&amp;nbsp; En esta nueva versión se podrán descargar los adaptadores para Siebel, SAP y Oracle, además de encontrar el SDK para el desarrollo de adaptadores WCF para BizTalk Server.&lt;/P&gt;
&lt;P&gt;Estas nuevas versiones&amp;nbsp;se pueden&amp;nbsp;descargar desde &lt;A href="http://connect.microsoft.com/" mce_href="http://connect.microsoft.com/"&gt;BizTalk Server 2006 R2 Program&lt;/A&gt;.&amp;nbsp;Anteriormente todas estas versiones solo podían se accedidas por usuarios registrados, pero ahora Microsoft ha puesto el programa de BTS R2 publico, y si aún no estas registrado puedes seguir los siguientes pasos para bajar BTS y comenzar a probarlo:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;
&lt;DIV mce_keep="true"&gt;Ve a la direccion&amp;nbsp;&lt;A href="http://connect.microsoft.com/"&gt;http://connect.microsoft.com/&lt;/A&gt;&lt;/DIV&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;DIV mce_keep="true"&gt;Ingresa utilizando tu cuenta passport&lt;/DIV&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;DIV mce_keep="true"&gt;Selecciona la opcion&amp;nbsp;&lt;STRONG&gt;Available Connections&lt;/STRONG&gt; en el menu &lt;STRONG&gt;Connect Home&lt;/STRONG&gt;&lt;/DIV&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;DIV mce_keep="true"&gt;Revisa la tabla de Programs que alli aparece&lt;/DIV&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;DIV mce_keep="true"&gt;Selecciona el programa &lt;STRONG&gt;BizTalk 2006 R2 Beta&lt;/STRONG&gt; &lt;/DIV&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;P mce_keep="true"&gt;De igual forma ya existen foros públicos acerca de BizTalk Server 2006 R2,&amp;nbsp;mas información&amp;nbsp;en &lt;A href="http://forums.microsoft.com/MSDN/default.aspx?ForumGroupID=398&amp;amp;SiteID=1"&gt;BizTalk Server 2006 R2 Forums&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#c0c0c0 size=1&gt;&lt;STRONG&gt;Este mensaje se proporciona "como está" sin garantías de ninguna clase, y no otorga&amp;nbsp;ningun derecho&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=2018261" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/biztalklatam/archive/tags/Base+de+Conocimiento+BTS+2006/default.aspx">Base de Conocimiento BTS 2006</category></item><item><title>BizTalk Server 2006 en PDF</title><link>http://blogs.msdn.com/biztalklatam/archive/2007/03/28/biztalk-server-2006-en-pdf.aspx</link><pubDate>Wed, 28 Mar 2007 15:38:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1975756</guid><dc:creator>BizTalkLATAM</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/biztalklatam/comments/1975756.aspx</comments><wfw:commentRss>http://blogs.msdn.com/biztalklatam/commentrss.aspx?PostID=1975756</wfw:commentRss><description>&lt;P&gt;Con un tamano de casi 120 mb y mas de 15 mil paginas, Microsoft ha publicado en formato PDF la documentacion de BizTalk Server 2006.&amp;nbsp; Esta nueva documentacion puede ser descargada desde &lt;A class="" href="http://download.microsoft.com/download/4/4/f/44f02c4d-ad11-4e49-b13d-78334243b5d8/BizTalk%20Server%202006%20Documentation.exe" mce_href="http://download.microsoft.com/download/4/4/f/44f02c4d-ad11-4e49-b13d-78334243b5d8/BizTalk%20Server%202006%20Documentation.exe"&gt;Microsoft BizTalk Server PDF&lt;/A&gt;.&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=1975756" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/biztalklatam/archive/tags/Base+de+Conocimiento+BTS+2006/default.aspx">Base de Conocimiento BTS 2006</category></item><item><title>BizTalk Server 2006 R2 y WCF</title><link>http://blogs.msdn.com/biztalklatam/archive/2007/02/28/biztalk-server-2006-r2-y-wcf.aspx</link><pubDate>Wed, 28 Feb 2007 21:15:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1775072</guid><dc:creator>BizTalkLATAM</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.msdn.com/biztalklatam/comments/1775072.aspx</comments><wfw:commentRss>http://blogs.msdn.com/biztalklatam/commentrss.aspx?PostID=1775072</wfw:commentRss><description>&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Con el lanzamiento de WCF&amp;nbsp;una nueva&amp;nbsp;generacion de como los desarrolladores implementan software&amp;nbsp;y luego es expuesto como servicio a otros aplicativos&amp;nbsp;(service-oriented applications) se ha ido desarrollando, por ello y como&amp;nbsp;estaba anunciado,&amp;nbsp;la proxima version de BizTalk Server 2006 (llamada BizTalk Server 2006 R2) tendra soporte&amp;nbsp;para WCF.&amp;nbsp;&amp;nbsp;En este soporte se incluyen nuevos adaptadores para el acceso a servicios WCF existentes, un framework para desarrollar adaptadores como WCF, y herramientas para los desarrolladores puedan referenciar servicios WCF desde y hacia BizTalk Server.&amp;nbsp; 
&lt;P&gt;A continuacion se hara un enumerado de las nuevas caracteristicas en BizTalk Server 2006 R2 referente a WCF: 
&lt;P&gt;&lt;U&gt;&lt;EM&gt;.Net 3.0 Adapter Framework &lt;/EM&gt;&lt;/U&gt;
&lt;P&gt;El .Net 3.0 Adapter Framework esta dirigido al desarrollo de adaptadores para sistemas LOB, este nuevo framework proveen un conjunto de clases que facilitan la implementacion de nuevos adaptadores que seran expuestos a terceros como canales de Windows Communication Foundation. 
&lt;P&gt;&lt;U&gt;&lt;EM&gt;.Net 3.0 Adapter Development Wizard &lt;/EM&gt;&lt;/U&gt;
&lt;P&gt;Es un asistente integrado a Visual Studio 2005 que permite a los desarrolladores generar facilmente la estructura inicial de nuevos adaptadores que seran expuestos como canales de WCF. 
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/biztalklatam/WindowsLiveWriter/BizTalkServer2006R2yWCF_866E/WCF_Adapter_Wizard%5B1%5D.jpg" mce_href="http://blogs.msdn.com/blogfiles/biztalklatam/WindowsLiveWriter/BizTalkServer2006R2yWCF_866E/WCF_Adapter_Wizard%5B1%5D.jpg" atomicselection="true"&gt;&lt;IMG style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" height=234 src="http://blogs.msdn.com/blogfiles/biztalklatam/WindowsLiveWriter/BizTalkServer2006R2yWCF_866E/WCF_Adapter_Wizard.jpg" width=240 border=0 mce_src="http://blogs.msdn.com/blogfiles/biztalklatam/WindowsLiveWriter/BizTalkServer2006R2yWCF_866E/WCF_Adapter_Wizard.jpg"&gt;&lt;/A&gt; 
&lt;P&gt;&lt;U&gt;&lt;EM&gt;Consume WCF service &lt;/EM&gt;&lt;/U&gt;
&lt;P&gt;BizTalk Server 2006 R2 adiciona una extension a los proyectos de BizTalk Server 2006 en Visual Studio 2005 para adicionar referencias a servicios de WCF, como actualmente sucede con Web Services.&amp;nbsp; Al adicionar la referencia automaticamente se generaran los esquemas que soportan los mensajes y archivos de binding necesarios&amp;nbsp;en la creacion de&amp;nbsp;los puertos. 
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/biztalklatam/WindowsLiveWriter/BizTalkServer2006R2yWCF_866E/WCF_Consume_Service%5B1%5D.jpg" mce_href="http://blogs.msdn.com/blogfiles/biztalklatam/WindowsLiveWriter/BizTalkServer2006R2yWCF_866E/WCF_Consume_Service%5B1%5D.jpg" atomicselection="true"&gt;&lt;IMG style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" height=182 src="http://blogs.msdn.com/blogfiles/biztalklatam/WindowsLiveWriter/BizTalkServer2006R2yWCF_866E/WCF_Consume_Service.jpg" width=240 border=0 mce_src="http://blogs.msdn.com/blogfiles/biztalklatam/WindowsLiveWriter/BizTalkServer2006R2yWCF_866E/WCF_Consume_Service.jpg"&gt;&lt;/A&gt; 
&lt;P&gt;&lt;U&gt;&lt;EM&gt;WCF Adapters &lt;/EM&gt;&lt;/U&gt;
&lt;P&gt;BizTalk Server 2006 R2 tiene 7 adaptadores por defecto que se instalan y configuran automaticamente, estos son: WCF-BasicHttp, WCF-Custom, WCF-CustomIsolated, WCF-NetMsmq, WCF-NetNamedPipe, WCF-NetTcp, WCF-WSHttp.&amp;nbsp; Estos adaptadores pueden acceder a servicios expuestos en WCF en los canales especificados por cada uno de ellos. 
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/biztalklatam/WindowsLiveWriter/BizTalkServer2006R2yWCF_866E/WCF_Adapters%5B1%5D.jpg" mce_href="http://blogs.msdn.com/blogfiles/biztalklatam/WindowsLiveWriter/BizTalkServer2006R2yWCF_866E/WCF_Adapters%5B1%5D.jpg" atomicselection="true"&gt;&lt;IMG style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" height=240 src="http://blogs.msdn.com/blogfiles/biztalklatam/WindowsLiveWriter/BizTalkServer2006R2yWCF_866E/WCF_Adapters.jpg" width=144 border=0 mce_src="http://blogs.msdn.com/blogfiles/biztalklatam/WindowsLiveWriter/BizTalkServer2006R2yWCF_866E/WCF_Adapters.jpg"&gt;&lt;/A&gt; 
&lt;P&gt;&lt;U&gt;&lt;EM&gt;BizTalk WCF Service Publishing Wizard &lt;/EM&gt;&lt;/U&gt;
&lt;P&gt;BizTalk Server 2006 R2 provee la posibilidad de exponer las orquestaciones como servicios de WCF, tal como se hace actualmente para exponer una orequestacion como Web Service. 
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/biztalklatam/WindowsLiveWriter/BizTalkServer2006R2yWCF_866E/WCF_Publishing%5B1%5D.jpg" mce_href="http://blogs.msdn.com/blogfiles/biztalklatam/WindowsLiveWriter/BizTalkServer2006R2yWCF_866E/WCF_Publishing%5B1%5D.jpg" atomicselection="true"&gt;&lt;IMG style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" height=181 src="http://blogs.msdn.com/blogfiles/biztalklatam/WindowsLiveWriter/BizTalkServer2006R2yWCF_866E/WCF_Publishing.jpg" width=240 border=0 mce_src="http://blogs.msdn.com/blogfiles/biztalklatam/WindowsLiveWriter/BizTalkServer2006R2yWCF_866E/WCF_Publishing.jpg"&gt;&lt;/A&gt; 
&lt;P&gt;&lt;U&gt;&lt;EM&gt;Add Adapter Reference... &lt;/EM&gt;&lt;/U&gt;
&lt;P&gt;Permite&amp;nbsp;adicionar referencias&amp;nbsp;de adaptadores&amp;nbsp;expuestos como canales de WCF (desarrollados con el .Net 3.0 Adapter Framework)&amp;nbsp;a proyectos de&amp;nbsp;Windows desarrollados con C#&amp;nbsp;o&amp;nbsp;Visual Basic .Net. 
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/biztalklatam/WindowsLiveWriter/BizTalkServer2006R2yWCF_866E/WCF_Add_Adapter%5B1%5D.jpg" mce_href="http://blogs.msdn.com/blogfiles/biztalklatam/WindowsLiveWriter/BizTalkServer2006R2yWCF_866E/WCF_Add_Adapter%5B1%5D.jpg" atomicselection="true"&gt;&lt;IMG style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" height=215 src="http://blogs.msdn.com/blogfiles/biztalklatam/WindowsLiveWriter/BizTalkServer2006R2yWCF_866E/WCF_Add_Adapter.jpg" width=240 border=0 mce_src="http://blogs.msdn.com/blogfiles/biztalklatam/WindowsLiveWriter/BizTalkServer2006R2yWCF_866E/WCF_Add_Adapter.jpg"&gt;&lt;/A&gt; 
&lt;P&gt;Este es un pequeno listado de lo nuevo en&amp;nbsp;BizTalk Server 2006 R2&amp;nbsp; y WCF, en publicaciones posteriores se daran mas detalles de como utilizar cada uno de estas caracteristicas. 
&lt;P&gt;&lt;FONT color=#a9a9a9&gt;&lt;FONT face=Arial size=2&gt;&lt;STRONG&gt;&lt;FONT color=#ff8000 size=1&gt;Autor: Carlos Medina&lt;BR&gt;&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color=#a9a9a9&gt;&lt;FONT face=Arial size=2&gt;Este mensaje se proporciona "como está" sin garantías de ninguna clase, y no otorga&amp;nbsp;ningun derecho&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=1775072" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/biztalklatam/archive/tags/Base+de+Conocimiento+BTS+2006/default.aspx">Base de Conocimiento BTS 2006</category></item><item><title>Procesando diferentes tipos de archivos en el mismo receive location</title><link>http://blogs.msdn.com/biztalklatam/archive/2007/02/23/procesando-diferentes-tipos-de-archivos-en-el-mismo-receive-location.aspx</link><pubDate>Fri, 23 Feb 2007 15:31:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1746783</guid><dc:creator>BizTalkLATAM</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/biztalklatam/comments/1746783.aspx</comments><wfw:commentRss>http://blogs.msdn.com/biztalklatam/commentrss.aspx?PostID=1746783</wfw:commentRss><description>&lt;P&gt;Cuando se usa el adaptador FILE (u otros adaptadores)&amp;nbsp;en BizTalk Server no es posible procesar diferentes tipos de archivos texto (flat-file) nombrados de igual forma en la misma ruta.&amp;nbsp; Esta&amp;nbsp;restriccion&amp;nbsp;se da&amp;nbsp;porque no se pueden configurar&amp;nbsp;varios &lt;EM&gt;receive locations&lt;/EM&gt; con el adaptador FILE que lean de la misma ruta los archivos, ya que&amp;nbsp;al procesarlos el adaptador bloquea los archivos prohibiendo que otros procesos (incluidos otros &lt;EM&gt;receive locations&lt;/EM&gt;)&amp;nbsp;accedan al contenido del archivo.&lt;/P&gt;
&lt;P&gt;Actualmente en BizTalk Server 2006 se puede resolver este inconveniente,&amp;nbsp;basta&amp;nbsp;con enviar todos los mensajes a una misma orquestacion (&lt;EM&gt;orchestration&lt;/EM&gt;) y&amp;nbsp;usando el metodo &lt;EM&gt;XLANGPipelineManager.ExecuteReceivePipeline&lt;/EM&gt; evaluar el mensaje con diferentes tipos de documentos previamente configurados en &lt;EM&gt;Custom Pipelines&lt;/EM&gt;.&lt;/P&gt;
&lt;P&gt;Pero esta solucion no es posible en &lt;EM&gt;BizTalk Server 2004&lt;/EM&gt; ya que el metodo &lt;EM&gt;XLANGPipelineManager.ExecuteReceivePipeline&lt;/EM&gt; no existe.&amp;nbsp; Sin embargo, si&amp;nbsp;es posible&amp;nbsp;desarrollar un &lt;EM&gt;Custom&amp;nbsp;Pipeline Component&lt;/EM&gt; que valide un mismo archivo de texto recibido contra una coleccion de esquemas de archivos de texto (&lt;EM&gt;flat-file schemas&lt;/EM&gt;) y generar un mensaje valido para redireccionarlo a la plataforma de integracion.&lt;/P&gt;
&lt;P&gt;El nuevo componente debe implementar los metodos &lt;EM&gt;IProbeMessage.Probe&lt;/EM&gt;, &lt;EM&gt;IDisassemblerComponent.Disassemble&lt;/EM&gt;, y &lt;EM&gt;IDisassemblerComponent.GetNext&lt;/EM&gt; que corresponden a las interfaces &lt;EM&gt;IProbeMessage&lt;/EM&gt; y &lt;EM&gt;IDisassemblerComponents&lt;/EM&gt; (necesarias para el desarrollo del componente) sobreescribiendo de esta forma la ejecucion del &lt;EM&gt;Custom Pipeline Component&lt;/EM&gt;.&amp;nbsp; Para mas informacion acerca de como desarrollar un &lt;EM&gt;Custom Pipeline Component&lt;/EM&gt; visitar &lt;A href="http://msdn2.microsoft.com/en-us/library/aa548050.aspx" target=_blank mce_href="http://msdn2.microsoft.com/en-us/library/aa548050.aspx"&gt;aqui&lt;/A&gt;,&amp;nbsp;a continuacion se hara una breve descripcion del codigo utilizado.&amp;nbsp; A continuacion&amp;nbsp;se daran mas detalles&amp;nbsp;del&amp;nbsp;desarrolla de&amp;nbsp;este componente.&lt;/P&gt;
&lt;P&gt;&lt;U&gt;&lt;EM&gt;Design Time Properties&lt;/EM&gt;&lt;/U&gt;&lt;/P&gt;
&lt;P&gt;Esta region&amp;nbsp;implementa la propiedad publica por medio de la cual el usuario selecciona los tipos de documentos (&lt;EM&gt;flat-file schemas&lt;/EM&gt;)&amp;nbsp;a validar en tiempo de diseno.&amp;nbsp; Los documentos se almacenan en la variable &lt;EM&gt;schemaList&lt;/EM&gt;.&lt;/P&gt;
&lt;P&gt;Pueden encontrar mas informacion de esta implementa &lt;A href="http://www.microsoft.com/downloads/details.aspx?familyid=8c2572a2-fb61-4016-a7a7-1c37518b39ff&amp;amp;displaylang=en" target=_blank mce_href="http://www.microsoft.com/downloads/details.aspx?familyid=8c2572a2-fb61-4016-a7a7-1c37518b39ff&amp;amp;displaylang=en"&gt;aqui&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Arial color=#ff0000 size=1&gt;#region Design Time Properties&lt;BR&gt;private SchemaList schemaList = new SchemaList();&lt;BR&gt;public SchemaList DocumentSchemaList&lt;BR&gt;{&lt;BR&gt;&amp;nbsp; get&amp;nbsp;&amp;nbsp;{&amp;nbsp; return this.schemaList;&amp;nbsp;}&lt;BR&gt;&amp;nbsp; set&amp;nbsp;&amp;nbsp;{&amp;nbsp; this.schemaList = value;&amp;nbsp; }&lt;BR&gt;}&lt;BR&gt;#endregion Design Time Properties&lt;/FONT&gt; 
&lt;P&gt;&lt;U&gt;&lt;EM&gt;IProbeMessage and Private Members&lt;/EM&gt;&lt;/U&gt;&lt;/P&gt;
&lt;P&gt;El metodo &lt;EM&gt;IProbeMessage.Probe&lt;/EM&gt; implementa la logica&amp;nbsp;que recorre cada uno de los tipos de documentos previamente configurados en la variable &lt;EM&gt;schemaList&lt;/EM&gt;.&amp;nbsp; Por cada tipo de documento se invoca el metodo &lt;EM&gt;FFDisassembler&lt;/EM&gt;&amp;nbsp;quien valida&amp;nbsp;el tipo de documento contra el contenido del archivo, y en caso de ser exitosa la validacion se almacenaran los mensajes de&amp;nbsp;BizTalk resultantes en una nueva coleccion llamada &lt;EM&gt;baseMessages&lt;/EM&gt;.&lt;/P&gt;
&lt;P&gt;El codigo a continuacion presenta las varialbes privadas utilizadas y los metodos &lt;EM&gt;Probe&lt;/EM&gt; y &lt;EM&gt;FFDisassembler&lt;/EM&gt;.&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Arial color=#ff0000 size=1&gt;#region IProbeMessage and Private Members&lt;BR&gt;public bool Probe ( IPipelineContext pContext, IBaseMessage pInMsg )&lt;BR&gt;{&lt;BR&gt;&amp;nbsp; bool isValid = false;&lt;BR&gt;&lt;/FONT&gt;&lt;FONT face=Arial color=#ff0000 size=1&gt;&lt;BR&gt;&amp;nbsp; // probe the disassembler for-each messageType&lt;BR&gt;&amp;nbsp; foreach(Schema schema in schemaList)&lt;BR&gt;&amp;nbsp; {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; try&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; FFDisassembler(pContext, pInMsg, schema);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; goto EndProbe;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; catch(Exception e)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.Diagnostics.Trace.WriteLine(e.ToString());&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // create a NACK message&lt;/FONT&gt;&lt;FONT face=Arial color=#ff0000 size=1&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;&amp;nbsp; }&lt;BR&gt;&amp;nbsp; // eval the isValid variable&lt;BR&gt;&amp;nbsp; if (!isValid)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; throw new ApplicationException("The message doesn't have a valid flat-file format"); &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Arial color=#ff0000 size=1&gt;&amp;nbsp; EndProbe:&lt;BR&gt;&amp;nbsp; return true;&lt;BR&gt;}&lt;BR&gt;&lt;/FONT&gt;
&lt;P&gt;&lt;FONT face=Arial color=#ff0000 size=1&gt;private object disassembler = null;&lt;BR&gt;private&amp;nbsp;ArrayList baseMessages = new ArrayList();&lt;BR&gt;private int idxBaseMessages = 0;&lt;BR&gt;private string XmlNormNamespaceURI = "&lt;/FONT&gt;&lt;A href="http://schemas.microsoft.com/BizTalk/2003/xmlnorm-properties%22;" mce_href='http://schemas.microsoft.com/BizTalk/2003/xmlnorm-properties";'&gt;&lt;FONT face=Arial color=#ff0000 size=1&gt;http://schemas.microsoft.com/BizTalk/2003/xmlnorm-properties"&lt;/FONT&gt;&lt;/A&gt;&lt;BR&gt;&lt;FONT face=Arial color=#ff0000 size=1&gt;private string DocumentSpecNamePropertyName = "DocumentSpecName"&lt;BR&gt;private void FFDisassembler(IPipelineContext pContext, IBaseMessage pInMsg, Schema schema)&lt;BR&gt;{&lt;BR&gt;&amp;nbsp; disassembler = new FFDasmComp(); &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Arial color=#ff0000 size=1&gt;&amp;nbsp; string messageType = string.Format("{0}#{1}", schema.TargetNamespace, schema.RootName);&lt;BR&gt;&amp;nbsp; IFFDocumentSpec docDefinition = (IFFDocumentSpec) pContext.GetDocumentSpecByType(messageType);&lt;BR&gt;&amp;nbsp; string docSpecStrongName = docDefinition.DocSpecStrongName;&lt;BR&gt;&amp;nbsp; pInMsg.Context.Write(DocumentSpecNamePropertyName, XmlNormNamespaceURI, docSpecStrongName);&lt;BR&gt;&amp;nbsp; pInMsg.BodyPart.GetOriginalDataStream().Seek(0, SeekOrigin.Begin); &lt;/FONT&gt;
&lt;P&gt;&lt;FONT face=Arial color=#ff0000 size=1&gt;&amp;nbsp; ((FFDasmComp) disassembler).DocumentSpecName = new SchemaWithNone(docSpecStrongName);&lt;BR&gt;&amp;nbsp; ((FFDasmComp) disassembler).Disassemble(pContext, pInMsg); &lt;/FONT&gt;
&lt;P&gt;&lt;FONT face=Arial color=#ff0000 size=1&gt;&amp;nbsp; IBaseMessage baseMessage = null;&lt;BR&gt;&amp;nbsp; while ((baseMessage = ((FFDasmComp)disassembler).GetNext(pContext)) != null)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; baseMessages.Add(baseMessage);&lt;BR&gt;}&lt;BR&gt;#endregion IProbeMessage and Private Members&lt;/FONT&gt; 
&lt;P&gt;&lt;EM&gt;&lt;U&gt;IDisassemblerComponent&lt;/U&gt;&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;El metodo &lt;EM&gt;Disassemble&lt;/EM&gt; no debe implementar ninguna logica, esto se debe a que previamente ya se habia hecho el desensamble del mensaje. &lt;/P&gt;
&lt;P&gt;A continuacion, en el metodo &lt;EM&gt;GetNext&lt;/EM&gt; se implementa la logica necesaria para retornar uno a uno los mensajes de la coleccion &lt;EM&gt;baseMessages&lt;/EM&gt; y enviarlo automaticamente a la MessageBox para que continue su proceso. &lt;/P&gt;
&lt;P&gt;&lt;FONT face=Arial color=#ff0000 size=1&gt;#region IDisassemblerComponent&lt;BR&gt;public IBaseMessage GetNext ( IPipelineContext pContext )&lt;BR&gt;{&lt;BR&gt;&amp;nbsp; if (idxBaseMessages &amp;lt; baseMessages.Count)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return baseMessages[idxBaseMessages++] as IBaseMessage;&lt;BR&gt;&amp;nbsp; return null;&lt;BR&gt;} &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Arial color=#ff0000 size=1&gt;public void Disassemble ( IPipelineContext pContext, IBaseMessage pInMsg ) { }&lt;BR&gt;#endregion IDisassemblerComponent&lt;/FONT&gt; 
&lt;P&gt;Este nuevo&amp;nbsp;&lt;EM&gt;Custom Pipeline Component&lt;/EM&gt;, puede ser utilizado&amp;nbsp;en &lt;EM&gt;Custom Pipelines&lt;/EM&gt; para las versiones BizTalk Server 2004 y 2006.&amp;nbsp; Si desea el codigo fuente puede&amp;nbsp;enviar un email &lt;A href="http://blogs.msdn.com/biztalklatam/contact.aspx" mce_href="http://blogs.msdn.com/biztalklatam/contact.aspx"&gt;aqui&lt;/A&gt;.&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P mce_keep="true"&gt;&lt;STRONG&gt;&lt;FONT color=#ff8000 size=1&gt;Autor: Carlos Medina&lt;BR&gt;&lt;/FONT&gt;&lt;/STRONG&gt;&lt;FONT color=#a9a9a9&gt;&lt;FONT face=Arial size=2&gt;Este mensaje se proporciona "como está" sin garantías de ninguna clase, y no otorga&amp;nbsp;ningun derecho&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=1746783" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/biztalklatam/archive/tags/Base+de+Conocimiento+BTS+2004/default.aspx">Base de Conocimiento BTS 2004</category><category domain="http://blogs.msdn.com/biztalklatam/archive/tags/Base+de+Conocimiento+BTS+2006/default.aspx">Base de Conocimiento BTS 2006</category></item><item><title>Acerca de Pipelines en MSDN</title><link>http://blogs.msdn.com/biztalklatam/archive/2007/02/14/acerca-de-pipelines-en-msdn.aspx</link><pubDate>Wed, 14 Feb 2007 09:56:48 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1674167</guid><dc:creator>BizTalkLATAM</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/biztalklatam/comments/1674167.aspx</comments><wfw:commentRss>http://blogs.msdn.com/biztalklatam/commentrss.aspx?PostID=1674167</wfw:commentRss><description>&lt;p&gt;En &lt;a href="http://msdn.microsoft.com/biztalk"&gt;http://msdn.microsoft.com/biztalk&lt;/a&gt; se han publicado dos articulos acerca de la creacion y el diseno de Custom Component Pipelines &lt;/p&gt; &lt;p&gt;&lt;u&gt;Understanding BTS Custom Pipeline Design-Time Properties&lt;/u&gt;&lt;/p&gt; &lt;p&gt;Escrito por &lt;a href="http://www.digitaldeposit.net/blog/" target="_blank"&gt;Saravana Kumar&lt;/a&gt;, este articulo explica como utilizar tipos complejos (&lt;em&gt;complex types&lt;/em&gt;), interfaces definidas por el usuario (&lt;em&gt;custom user interfaces&lt;/em&gt;) y tecnicas de serializacion (&lt;em&gt;serialization techniques&lt;/em&gt;) en propiedades de tiempo de diseno (&lt;em&gt;design-time properties&lt;/em&gt;)&amp;nbsp;al configurar&amp;nbsp;Custom Pipeline Components en Custom Pipelines cuando estos son creados (&lt;em&gt;Visual Studio&lt;/em&gt;)&amp;nbsp;o una vez desplegados&amp;nbsp;(&lt;em&gt;Consola Administrativa&lt;/em&gt;).&amp;nbsp; De igual forma, Saravana provee tips y procedimientos para diagnosticar errores al trabajar con propiedades en&amp;nbsp;Custom Pipeline Components.&amp;nbsp; Se puede bajar mas informacion &lt;a href="http://www.microsoft.com/downloads/details.aspx?familyid=8c2572a2-fb61-4016-a7a7-1c37518b39ff&amp;amp;displaylang=en"&gt;aqui&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;&lt;u&gt;Removing Empty Elements with a Custom Pipeline&lt;/u&gt;&lt;/p&gt; &lt;p&gt;Este articulo&amp;nbsp;trata el desarrollo de un Custom Component Pipeline que permita modificar el&amp;nbsp;mensaje XML removiendo&amp;nbsp;todos los&amp;nbsp;nodos vacios que no esten excluidos (esta exclusion se da en la definicion misma del nodo), el articulo&amp;nbsp;provee el codigo&amp;nbsp;fuente escrito en Visual Basic.Net.&amp;nbsp; Puedes bajar el contenido desde &lt;a href="http://download.microsoft.com/download/b/1/d/b1d9ddf9-88c6-4d4e-abea-4787fdc85bec/removingemptyelementsusingacustompipeline.exe"&gt;aqui&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&lt;font color="#a9a9a9"&gt;&lt;font face="Arial" size="2"&gt;Este mensaje se proporciona "como está" sin garantías de ninguna clase, y no otorga&amp;nbsp;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=1674167" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/biztalklatam/archive/tags/Base+de+Conocimiento+BTS+2006/default.aspx">Base de Conocimiento BTS 2006</category></item><item><title>Extendiendo las Consolas de BizTalk Server 2006</title><link>http://blogs.msdn.com/biztalklatam/archive/2007/02/12/extendiendo-las-consolas-de-biztalk-server-2006.aspx</link><pubDate>Tue, 13 Feb 2007 07:36:35 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1666112</guid><dc:creator>BizTalkLATAM</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/biztalklatam/comments/1666112.aspx</comments><wfw:commentRss>http://blogs.msdn.com/biztalklatam/commentrss.aspx?PostID=1666112</wfw:commentRss><description>&lt;p&gt;Un nuevo articulo acerca de como extender las consolas adminitrativas&amp;nbsp;que provee&amp;nbsp;BizTalk Server 2006 (BizTalk Console Adminitrator y Enterprise Single Sign-On&amp;nbsp;Console)&amp;nbsp;ha sido publicado en &lt;a href="http://www.microsoft.com/latam/technet/" target="_blank"&gt;technet&lt;/a&gt;.&amp;nbsp; &lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;&lt;font size="1"&gt;&lt;em&gt;"Al utilizar la consola administrativa en BizTalk Server 2004 (BTS2004) es común encontrar esta pregunta ¿no tiene más funcionalidad, no puedo agregar más funciones?, la respuesta es NO. La Consola Administrativa en BTS2004 expone pocas opciones de administración a los procesos de BizTalk Server (BTS), además de no permite extender su funcionalidad. &lt;/em&gt;&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font size="1"&gt;&lt;em&gt;Por su parte, BizTalk Server 2006 (BTS2006) provee nuevas consolas administrativas que ofrecen más opciones de administración que sus antecesoras en BTS2004, las cuales pueden ser extendidas para agregar nueva funcionalidad. Este artículo explicará los requisitos para extender estas consolas."&lt;/em&gt;&lt;/font&gt;&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;En el articulo se exponen las tecnologias de desarrollo que se pueden utilizar de acuerdo a la consola a extender, asi como las claves necesarias para extender cada una.&amp;nbsp;&lt;/p&gt; &lt;p&gt;El articulo original&amp;nbsp;puede ser leido desde&amp;nbsp;&lt;a href="http://www.microsoft.com/latam/technet/articulos/tn/2007/ene-14.mspx" target="_blank"&gt;Extendiendo la Consola Administrativa en BizTalk Server 2006&lt;/a&gt;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=1666112" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/biztalklatam/archive/tags/Base+de+Conocimiento+BTS+2006/default.aspx">Base de Conocimiento BTS 2006</category></item><item><title>BizTalk 2006 Context Accessor functoid</title><link>http://blogs.msdn.com/biztalklatam/archive/2007/02/12/biztalk-2006-context-accessor-functoid.aspx</link><pubDate>Tue, 13 Feb 2007 07:29:49 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1666078</guid><dc:creator>BizTalkLATAM</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/biztalklatam/comments/1666078.aspx</comments><wfw:commentRss>http://blogs.msdn.com/biztalklatam/commentrss.aspx?PostID=1666078</wfw:commentRss><description>&lt;p&gt;&lt;a href="http://www.marv-in.net/blog/" target="_blank"&gt;Marvin Smit&lt;/a&gt;, instructor&amp;nbsp;de DevelopMentor, ha desarrollado&amp;nbsp;un nuevo componente para BizTalk Server que permite acceder a propiedades del contexto de un mensaje desde un mapa.&amp;nbsp; A diferencia del ya existente&amp;nbsp;functoid&amp;nbsp; "&lt;a href="http://www.gotdotnet.com/workspaces/workspace.aspx?id=42f4a3df-f9a5-4122-a6a2-b04b941b40fe" target="_blank"&gt;GetContextProperty Functoid Workspace&lt;/a&gt;" (que tambien provee la misma funcionalidad),&amp;nbsp;este nuevo componente&amp;nbsp;es utilizado en&amp;nbsp;mapas que se ejecutaran en la recepcion de mensajes desde los puertos de entrada (&lt;em&gt;reveice ports&lt;/em&gt;).&lt;/p&gt; &lt;p&gt;El Context Accessor provee dos Custom Components que deben ser utilizados para acceder a las propiedades:&lt;/p&gt; &lt;p&gt;&lt;u&gt;Custom Pipeline Component&lt;/u&gt;&lt;/p&gt; &lt;p&gt;Por medio de&amp;nbsp;este Custom Pipeline Component configurado previamente en un Custom Pipeline, el functoid podra accesar al contexto de ejecucion del puerto de recepcion.&lt;/p&gt; &lt;p&gt;&lt;u&gt;Custom Functoid &lt;/u&gt;&lt;/p&gt; &lt;p&gt;Este componente representa el functoid que debera ser utilizado desde el mapa para obtener el valor de la propiedad de&amp;nbsp;contexto.&amp;nbsp; Este functoid recibe dos parametros referentes al &lt;em&gt;namespace&lt;/em&gt; y &lt;em&gt;nombre&lt;/em&gt; de la propiedad.&lt;/p&gt; &lt;p&gt;Para mas informacion acerca del&amp;nbsp;codigo fuente y ejemplos de utilizacion&amp;nbsp;desde "&lt;a href="http://www.marv-in.net/blog/PermaLink,guid,20dc5fb9-d580-4244-aba0-149c1f0348dd.aspx" target="_blank"&gt;Accessing Context Properties from within a map in BizTalk&lt;/a&gt;".&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=1666078" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/biztalklatam/archive/tags/Base+de+Conocimiento+BTS+2006/default.aspx">Base de Conocimiento BTS 2006</category></item></channel></rss>