<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://biztalkia.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>IvanJo's Blog</title><link>http://biztalkia.com/blogs/ivanjo/default.aspx</link><description /><dc:language>en</dc:language><generator>CommunityServer 2008.5 SP1 (Build: 31106.3070)</generator><item><title>Speed up! Where we loose ticks...</title><link>http://biztalkia.com/blogs/ivanjo/archive/2008/09/27/speed-up-where-we-loose-ticks.aspx</link><pubDate>Sat, 27 Sep 2008 06:28:02 GMT</pubDate><guid isPermaLink="false">12110070-b189-4eb1-8756-e62da1a856d3:446</guid><dc:creator>Ivan</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://biztalkia.com/blogs/ivanjo/rsscomments.aspx?PostID=446</wfw:commentRss><comments>http://biztalkia.com/blogs/ivanjo/archive/2008/09/27/speed-up-where-we-loose-ticks.aspx#comments</comments><description>&lt;p&gt;Bizzy (that&amp;#39;s how I call it) can be very fast you can bet on it, and it can be as slow as a snail. It&amp;#39;s You, yes YOU are the one that make it fly or make it crawl. &lt;img alt="Confused" src="http://messenger.msn.com/MMM2006-04-19_17.00/Resource/emoticons/confused_smile.gif" /&gt;&lt;br /&gt;&lt;/p&gt; &lt;p align="center"&gt;&lt;a href="http://biztalkia.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ivanjo/image_5F00_2.png"&gt;&lt;img style="border-top-width:0px;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" height="370" alt="image" src="http://biztalkia.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ivanjo/image_5F00_thumb.png" width="591" border="0" /&gt;&lt;/a&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;As you can see, numbers are very close one to another down to the &amp;quot;Start&amp;quot; of another orchestration. How come? What&amp;#39;s going one within the engine so from &lt;strong&gt;140 &lt;/strong&gt;orchs/sec we drop to &lt;strong&gt;90&lt;/strong&gt;! &lt;strong&gt;Persistence point&lt;/strong&gt; is the answer! What this means is that the engine persists it&amp;#39;s state (state of a running orchestration instance - messages, variables etc.) to database. You can read more on &lt;em&gt;MSDN&lt;/em&gt; by &lt;a href="http://msdn.microsoft.com/en-us/library/aa547090.aspx"&gt;clicking here&lt;/a&gt;. &lt;/p&gt; &lt;p&gt;Let us proceed. Using a .NET serviced component within an atomic scope shape, BizTalk infrastructure forces using of &lt;em&gt;MS DTC&lt;/em&gt; which adds fuel on the fire so we have another dramatic drop in executions from 90 to &lt;strong&gt;54&lt;/strong&gt; ONLY! &lt;/p&gt; &lt;p&gt;To conclude, velocity of our system depends not only on project architectural design but also on shapes used within orchestrations. One thing is important to note: before you use any of shapes out there, try to find out how can those have an impact on our overall architecture and system in terms of performance, stability, (im)possibility to scale etc.&lt;br /&gt;I understand that it&amp;#39;s not that easy nor it&amp;#39;s fast making all of those questions before putting some shape on orchestration designer but, believe on my word, after some experience gained you&amp;#39;ll be solving orchestration puzzles quickly and with guaranteed success!&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://biztalkia.com/aggbug.aspx?PostID=446" width="1" height="1"&gt;</description><category domain="http://biztalkia.com/blogs/ivanjo/archive/tags/persistence+point/default.aspx">persistence point</category></item><item><title>Come salvare un messaggio XML su SQL?</title><link>http://biztalkia.com/blogs/ivanjo/archive/2008/09/07/come-salvare-un-messaggio-xml-su-sql.aspx</link><pubDate>Sun, 07 Sep 2008 14:39:24 GMT</pubDate><guid isPermaLink="false">12110070-b189-4eb1-8756-e62da1a856d3:392</guid><dc:creator>Ivan</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://biztalkia.com/blogs/ivanjo/rsscomments.aspx?PostID=392</wfw:commentRss><comments>http://biztalkia.com/blogs/ivanjo/archive/2008/09/07/come-salvare-un-messaggio-xml-su-sql.aspx#comments</comments><description>&lt;p&gt;Pensavo si trattasse di una cosa naturale e semplice da fare quando cliente me lo ha chiesto di implementare. Progetto che sto seguendo scrive i record su SAP. Nel caso i record sono già presenti, SAP restituisce una tabella dei record scartati. Cliente mi chiese: Senti, ma perché non scriviamo questo messaggio ritornato da SAP &lt;strong&gt;as-is&lt;/strong&gt; su una tabella SQL per eventualmente esaminarli. A che io, con sorriso sulle labbra pensando tra me e me &amp;quot;bello non devo fare nulla con la risposta se non semplicemente salvarla, gli risposi: ma certamente che problema c&amp;#39;è ?!&lt;/p&gt; &lt;p&gt;Non avevo intuito che questa roba mi potesse prendere quasi 4 ore della mia vita &lt;img alt="Open-mouthed" src="http://messenger.msn.com/MMM2006-04-19_17.00/Resource/emoticons/teeth_smile.gif" /&gt;&lt;/p&gt; &lt;p&gt;Ho cominciato a creare mio schema SQL come un &lt;em&gt;Updategram&lt;/em&gt;. Scegliendo la tabella dove volevo scrivere mi sono beccato questa popup:&lt;br /&gt;&amp;nbsp;&lt;a href="http://biztalkia.com/blogs/ivanjo/WindowsLiveWriter/ComesalvareunmessaggioinXMLsuSQL_CD35/tmp1%5B13%5D.png"&gt;&lt;img style="border-top-width:0px;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" height="201" alt="Check if table contains column of type XML" src="http://biztalkia.com/blogs/ivanjo/WindowsLiveWriter/ComesalvareunmessaggioinXMLsuSQL_CD35/tmp1%5B13%5D_thumb.png" width="557" border="0" /&gt;&lt;/a&gt;&amp;nbsp; &lt;/p&gt; &lt;p&gt;Cioè!! Ho detto.. Non posso scrivere in una tabella se questa ha una colonna di tipo &lt;strong&gt;&lt;em&gt;XML&lt;/em&gt;&lt;/strong&gt;. Pensa te! Mi sono calmato e pensato: vabbé mi faccio una &lt;em&gt;stored procedure&lt;/em&gt; e risolvo così la faccenda. &lt;/p&gt; &lt;p&gt;Quando ho creato mio schema mi sono accorto che tutte le variabili che inviavo a SQL adapter sono, in realtà, gli attributi e non elementi a che ho cominciato a sudare freddo! Capite che non posso passare un XML per intero in un attributo! Per fortuna non ci ho messo molto a capire come risolvere questo problema.&lt;/p&gt; &lt;p&gt;Il problema lo ho approcciato creando una classe &lt;em&gt;helper&lt;/em&gt; che, passandogli un XML document mi ritornava base64 encoded string che, a sua volta, finiva come il valore dell&amp;#39;attributo nel messaggio che chiamava la stored procedure (codice completo si vede sotto)&lt;/p&gt; &lt;div style="border-right:gray 1px solid;padding-right:4px;border-top:gray 1px solid;padding-left:4px;font-size:8pt;padding-bottom:4px;margin:20px 0px 10px;overflow:auto;border-left:gray 1px solid;width:97.5%;cursor:text;max-height:200px;line-height:12pt;padding-top:4px;border-bottom:gray 1px solid;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;background-color:#f4f4f4;"&gt; &lt;div style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:white;border-bottom-style:none;"&gt;&lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;static&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;class&lt;/span&gt; LogXMLHelper&lt;/pre&gt;&lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;    {&lt;/pre&gt;&lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:white;border-bottom-style:none;"&gt;        &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;static&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;string&lt;/span&gt; EncodeXMLForAttribute(XmlDocument docToEscape)&lt;/pre&gt;&lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;        {&lt;/pre&gt;&lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:white;border-bottom-style:none;"&gt;            &lt;span style="color:#0000ff;"&gt;return&lt;/span&gt; base64Encode(docToEscape.OuterXml);&lt;/pre&gt;&lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;        }&lt;/pre&gt;&lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:white;border-bottom-style:none;"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;        &lt;span style="color:#0000ff;"&gt;private&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;static&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;string&lt;/span&gt; base64Encode(&lt;span style="color:#0000ff;"&gt;string&lt;/span&gt; data)&lt;/pre&gt;&lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:white;border-bottom-style:none;"&gt;        {&lt;/pre&gt;&lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;            &lt;span style="color:#0000ff;"&gt;try&lt;/span&gt;&lt;/pre&gt;&lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:white;border-bottom-style:none;"&gt;            {&lt;/pre&gt;&lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;                &lt;span style="color:#0000ff;"&gt;byte&lt;/span&gt;[] encData_byte = &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;byte&lt;/span&gt;[data.Length];&lt;/pre&gt;&lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:white;border-bottom-style:none;"&gt;                encData_byte = System.Text.Encoding.UTF8.GetBytes(data);&lt;/pre&gt;&lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;                &lt;span style="color:#0000ff;"&gt;return&lt;/span&gt; Convert.ToBase64String(encData_byte);&lt;/pre&gt;&lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:white;border-bottom-style:none;"&gt;            }&lt;/pre&gt;&lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;            &lt;span style="color:#0000ff;"&gt;catch&lt;/span&gt; (Exception e)&lt;/pre&gt;&lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:white;border-bottom-style:none;"&gt;            {&lt;/pre&gt;&lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;                &lt;span style="color:#0000ff;"&gt;throw&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; Exception(&lt;span style="color:#006080;"&gt;&amp;quot;Error in base64Encode&amp;quot;&lt;/span&gt; + e.Message);&lt;/pre&gt;&lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:white;border-bottom-style:none;"&gt;            }&lt;/pre&gt;&lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;        }&lt;/pre&gt;&lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:white;border-bottom-style:none;"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;    }&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;A questo punto mia orchestrazione inviava correttamente a SQL quanto serviva ...&lt;/p&gt;
&lt;p&gt;L&amp;#39;ultimo problema da risolvere rimasto era come faccio lato T-SQL tradurre questa stringa base64 encodata in XML di partenza?? Alla fine la soluzione riportata sotto ha risolto anche quest&amp;#39;ultimo pezzo della puzzle..&lt;/p&gt;
&lt;div style="border-right:gray 1px solid;padding-right:4px;border-top:gray 1px solid;padding-left:4px;font-size:8pt;padding-bottom:4px;margin:20px 0px 10px;overflow:auto;border-left:gray 1px solid;width:97.5%;cursor:text;max-height:200px;line-height:12pt;padding-top:4px;border-bottom:gray 1px solid;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;background-color:#f4f4f4;"&gt;
&lt;div style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:white;border-bottom-style:none;"&gt;&lt;span style="color:#0000ff;"&gt;CREATE&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;PROCEDURE&lt;/span&gt; [dbo].[LogXMLDocument] @SAPResponse &lt;span style="color:#0000ff;"&gt;as&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;varchar&lt;/span&gt;(&lt;span style="color:#0000ff;"&gt;MAX&lt;/span&gt;)&lt;/pre&gt;&lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#0000ff;"&gt;AS&lt;/span&gt;&lt;/pre&gt;&lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:white;border-bottom-style:none;"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#0000ff;"&gt;DECLARE&lt;/span&gt; @BinDecoded varbinary(&lt;span style="color:#0000ff;"&gt;max&lt;/span&gt;); &lt;/pre&gt;&lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:white;border-bottom-style:none;"&gt;&lt;span style="color:#0000ff;"&gt;DECLARE&lt;/span&gt; @SAPResponseDecoded xml; &lt;/pre&gt;&lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#0000ff;"&gt;DECLARE&lt;/span&gt; @x xml; &lt;/pre&gt;&lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:white;border-bottom-style:none;"&gt;&lt;span style="color:#0000ff;"&gt;set&lt;/span&gt; @x = &lt;span style="color:#0000ff;"&gt;Cast&lt;/span&gt;(&lt;span style="color:#006080;"&gt;&amp;#39;&amp;lt;row q=&amp;quot;&amp;#39;&lt;/span&gt; + @SAPResponse + &lt;span style="color:#006080;"&gt;&amp;#39;&amp;quot; /&amp;gt;&amp;#39;&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;as&lt;/span&gt; xml) &lt;/pre&gt;&lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#0000ff;"&gt;SET&lt;/span&gt; @BinDecoded = (&lt;span style="color:#0000ff;"&gt;SELECT&lt;/span&gt; @x.&lt;span style="color:#0000ff;"&gt;value&lt;/span&gt;(&lt;span style="color:#006080;"&gt;&amp;#39;(/row/@q)[1]&amp;#39;&lt;/span&gt;,&lt;span style="color:#006080;"&gt;&amp;#39;varbinary(max)&amp;#39;&lt;/span&gt;)) &lt;/pre&gt;&lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:white;border-bottom-style:none;"&gt;&lt;span style="color:#0000ff;"&gt;SET&lt;/span&gt; @SAPResponseDecoded = &lt;span style="color:#0000ff;"&gt;Convert&lt;/span&gt;(xml, @BinDecoded) &lt;/pre&gt;&lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:white;border-bottom-style:none;"&gt;insert &lt;span style="color:#0000ff;"&gt;into&lt;/span&gt; LogTable (SAPResponse,LogTime) &lt;/pre&gt;&lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;        &lt;span style="color:#0000ff;"&gt;values&lt;/span&gt; (@SAPResponseDecoded,getdate())&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Chi lo avrebbe detto....&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://biztalkia.com/aggbug.aspx?PostID=392" width="1" height="1"&gt;</description></item><item><title>[OT] Finalmente arrivati VSEWss 1.2</title><link>http://biztalkia.com/blogs/ivanjo/archive/2008/07/05/ot-finalmente-arrivati-vsewss-1-2.aspx</link><pubDate>Sat, 05 Jul 2008 15:54:59 GMT</pubDate><guid isPermaLink="false">12110070-b189-4eb1-8756-e62da1a856d3:391</guid><dc:creator>Ivan</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://biztalkia.com/blogs/ivanjo/rsscomments.aspx?PostID=391</wfw:commentRss><comments>http://biztalkia.com/blogs/ivanjo/archive/2008/07/05/ot-finalmente-arrivati-vsewss-1-2.aspx#comments</comments><description>&lt;p&gt;Finalmente Microsoft ha rilasciato la versione 1.2 di Visual Studio 2008 Extensions x Windows SharePoint Services 3.0. Potete scaricarlo da qui: &lt;a title="http://www.microsoft.com/downloads/details.aspx?FamilyID=7BF65B28-06E2-4E87-9BAD-086E32185E68&amp;amp;displaylang=en" href="http://www.microsoft.com/downloads/details.aspx?FamilyID=7BF65B28-06E2-4E87-9BAD-086E32185E68&amp;amp;displaylang=en"&gt;http://www.microsoft.com/downloads/details.aspx?FamilyID=7BF65B28-06E2-4E87-9BAD-086E32185E68&amp;amp;displaylang=en&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://biztalkia.com/aggbug.aspx?PostID=391" width="1" height="1"&gt;</description></item><item><title>WCF net.tcp e compressione dei dati sul canale</title><link>http://biztalkia.com/blogs/ivanjo/archive/2008/06/27/wcf-net-tcp-e-compressione-dei-dati-sul-canale.aspx</link><pubDate>Fri, 27 Jun 2008 12:43:28 GMT</pubDate><guid isPermaLink="false">12110070-b189-4eb1-8756-e62da1a856d3:382</guid><dc:creator>Ivan</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://biztalkia.com/blogs/ivanjo/rsscomments.aspx?PostID=382</wfw:commentRss><comments>http://biztalkia.com/blogs/ivanjo/archive/2008/06/27/wcf-net-tcp-e-compressione-dei-dati-sul-canale.aspx#comments</comments><description>&lt;p&gt;Mica roba da ridere...Speravo molto più facile..&lt;/p&gt; &lt;p&gt;Il problema di un cliente è stata questo: tramite un link satellitare bisogna scambiare i dati fra 15 point diversi dove un punto gioca ruolo del server e altri 14 sono i client. I client non comunicano tra loro, ma soltanto con server. Peccato che questo link va e viene a piacere, e potrebbe non esserci per delle giornate intere. Oltre a questo si tratta della banda paragonabile ai vecchi modem a 56KBps. Ve li ricordate ancora?&lt;/p&gt; &lt;p&gt;Quindi si è pensato un sistema di chunking dei messaggi da inviare (non in WCF) spezzettandoli nei piccoli frammenti. Si tratta di XML e nel caso dei chunk più grossi di 1K contenuto veniva &lt;strong&gt;GZip&lt;/strong&gt;pato ed encodato in &lt;strong&gt;base64&lt;/strong&gt; per essere fruibile dal &lt;a href="http://msdn.microsoft.com/en-us/library/bb226419.aspx" target="_blank"&gt;WCF-NetTcp BizTalk Adapter&lt;/a&gt;. &lt;/p&gt; &lt;p&gt;Se a questo punto avete pensato: mi faccio un componente zip per la pipeline e la uso direttamente.. - non si può !! Questa non funziona perché adapter WCF si aspetta un messaggio XML per poterlo trasformare in SOAP ed inviarlo a destinatario. Una bella fregatura direi..&lt;/p&gt; &lt;p&gt;Dopo un po&amp;#39; di ricerche ho trovato degli articoli ed i post interessanti sul tema:&lt;/p&gt; &lt;ol&gt; &lt;li&gt;Microsoft lo farebbe &lt;a href="http://msdn.microsoft.com/en-us/library/cc138373.aspx" target="_blank"&gt;così&lt;/a&gt;. Come l&amp;#39;idea è valida, ma non compila o &lt;a href="http://msdn.microsoft.com/en-us/library/ms751458.aspx" target="_blank"&gt;così&lt;/a&gt; (ma non lo ho ancora provato - se qualcuno lo ha già provato e funziona bene fatemelo sapere!)  &lt;li&gt;Un certo Pablo Cibraro usa WS-Compression per WCF per farlo, ma pare che abbia dei problemi. &lt;a href="http://weblogs.asp.net/cibrax/archive/2006/03/29/441398.aspx" target="_blank"&gt;Vedete qui&lt;/a&gt;.  &lt;li&gt;Progetto su CodeProject nominato &lt;a href="http://www.codeproject.com/KB/WCF/CompactMessageEncoder.aspx" target="_blank"&gt;CompactMessageEncoder&lt;/a&gt; cerca di risolvere questo problema.&lt;/li&gt;&lt;/ol&gt; &lt;p&gt;Quindi, ho fatto un po&amp;#39; di prove qua e là e ho deciso di approcciare mio problema usando &lt;strong&gt;CompactMessageEncoder&lt;/strong&gt;. Mediante un &lt;em&gt;binding element extension&lt;/em&gt; si sceglie di aggiungere la compressione del canale.&lt;/p&gt; &lt;p&gt;Per come è stato strutturato il progetto, prevede la Send Port dinamica ed, ovviamente, la Receive Location definita da &lt;em&gt;BizTalk Administration Console&lt;/em&gt;. Questa &lt;em&gt;receive location&lt;/em&gt; viene configurata come &lt;strong&gt;WCF-Custom&lt;/strong&gt; e nel tab &lt;strong&gt;Binding&lt;/strong&gt; scegliere binding type &lt;strong&gt;customBinding&lt;/strong&gt; e poi aggiungere &lt;strong&gt;compactMessageEncoding &lt;/strong&gt;e &lt;strong&gt;tcpTransport&lt;/strong&gt; (come da foto).&lt;br /&gt;&lt;img style="border-top-width:0px;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" height="343" alt="scelta dei binding" src="http://biztalkia.com/blogs/ivanjo/WindowsLiveWriter/WCFnet.tcpecompressionedelcanale_B1E1/tmp3_3.png" width="410" border="0" /&gt; &lt;/p&gt; &lt;p&gt;Per poterlo vedere, &lt;strong&gt;compactMessageEncoding&lt;/strong&gt;, bisogna prima registrarlo nel &lt;em&gt;machine.config &lt;/em&gt;(vedi &lt;a href="http://msdn.microsoft.com/en-us/library/bb743310.aspx" target="_blank"&gt;questo link&lt;/a&gt;). Una volta configurato tutto la location è pronta.&lt;/p&gt; &lt;p&gt;La send port, se ricordate, era dinamica. Per farla funzionare ho usato questo &lt;a href="http://msdn.microsoft.com/en-us/library/bb727706.aspx" target="_blank"&gt;link&lt;/a&gt; da Microsoft (parte specifica a WCF-Custom). Per quanto riguarda le impostazioni per &lt;strong&gt;&lt;em&gt;WCF.BindingConfiguration&lt;/em&gt;&lt;/strong&gt; ho usato quelli dai .config file trovato nello zip di CompactMessageEncoder.&lt;/p&gt; &lt;p&gt;Magicamente ha funzionato tutto...&lt;/p&gt; &lt;p&gt;&lt;em&gt;NB. CompactMessageEncoder non funziona bene con WCF Configuration tool, quindi lo ho dovuto modificare un attimino...&lt;/em&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://biztalkia.com/aggbug.aspx?PostID=382" width="1" height="1"&gt;</description></item><item><title>Come eseguire procedure SQL 2005 che non hanno dbo?</title><link>http://biztalkia.com/blogs/ivanjo/archive/2008/06/17/come-eseguire-procedure-sql-2005-che-non-hanno-dbo.aspx</link><pubDate>Tue, 17 Jun 2008 07:41:51 GMT</pubDate><guid isPermaLink="false">12110070-b189-4eb1-8756-e62da1a856d3:376</guid><dc:creator>Ivan</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://biztalkia.com/blogs/ivanjo/rsscomments.aspx?PostID=376</wfw:commentRss><comments>http://biztalkia.com/blogs/ivanjo/archive/2008/06/17/come-eseguire-procedure-sql-2005-che-non-hanno-dbo.aspx#comments</comments><description>&lt;p&gt;Ad un mio cliente piace tanto organizzare le tabelle, procedure le viste usando gli schima diversi da dbo (sto parlando dei schima usati da SQL - non BizTalk). Non è malvagio quest&amp;#39;approccio perché si va a finire un bel organizzato progetto su SQL. Peccato che a BizTalk non piace tanto questa cosa...&lt;/p&gt; &lt;p&gt;Ho avuto problema a generare i schema su BizTalk usando SQL Adapter wizard. Regolarmente non trovava la procedura stored che volevo eseguire. Il bello è che nella lista comparivano tutte le procedure definite (come vedete dallo screenshot)&lt;br /&gt;&lt;img style="border-top-width:0px;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" height="389" alt="tmp2" src="http://biztalkia.com/blogs/ivanjo/WindowsLiveWriter/ComeeseguireprocedureSQL2005chenonhannod_9825/tmp2_3.png" width="507" border="0" /&gt;&amp;nbsp;&lt;br /&gt;Peccato che quando spingevo bottone &amp;quot;Generate&amp;quot; nello script non mi veniva fuori anche nome dello schema dove la procedura si trova, quindi sarebbe dovuto esserci: &lt;strong&gt;exec [spSync].[SetChunkedMessage] &lt;/strong&gt;...&lt;/p&gt; &lt;p&gt;Questo problema si potrebbe ovviare creando una procedura identica a quella che si vuole eseguire, ma sotto lo schema &lt;em&gt;&lt;strong&gt;dbo&lt;/strong&gt; &lt;/em&gt;e poi richiamarla ds VS2005. Una volta creato lo schema bisogna cambiare l&amp;#39;attributo &lt;strong&gt;&lt;em&gt;value &lt;/em&gt;&lt;/strong&gt;del nodo &lt;em&gt;&lt;strong&gt;msbtssql:sqlScript&lt;/strong&gt;&lt;/em&gt;, aprendo lo schema in XML puro, in da exec [SetChunkedMessage] a &lt;strong&gt;exec [spSync].[SetChunkedMessage] &lt;/strong&gt;(come si vede sulla foto sotto)&lt;br /&gt;&lt;img style="border-top-width:0px;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" height="118" alt="tmp3" src="http://biztalkia.com/blogs/ivanjo/WindowsLiveWriter/ComeeseguireprocedureSQL2005chenonhannod_9825/tmp3_3.png" width="542" border="0" /&gt; &lt;/p&gt; &lt;p&gt;Preparatevi per la doccia fredda: per la &lt;strong&gt;Send Port&lt;/strong&gt; questo &amp;quot;trucco&amp;quot; non funziona &lt;img alt="Confused" src="http://messenger.msn.com/MMM2006-04-19_17.00/Resource/emoticons/confused_smile.gif" /&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://biztalkia.com/aggbug.aspx?PostID=376" width="1" height="1"&gt;</description><category domain="http://biztalkia.com/blogs/ivanjo/archive/tags/eseguire+procedure/default.aspx">eseguire procedure</category><category domain="http://biztalkia.com/blogs/ivanjo/archive/tags/dbo/default.aspx">dbo</category><category domain="http://biztalkia.com/blogs/ivanjo/archive/tags/sql+2005/default.aspx">sql 2005</category><category domain="http://biztalkia.com/blogs/ivanjo/archive/tags/adapter/default.aspx">adapter</category></item><item><title>Custom adapters &amp; proprietà promosse</title><link>http://biztalkia.com/blogs/ivanjo/archive/2008/06/09/custom-adapters-amp-propriet-224-promosse.aspx</link><pubDate>Tue, 10 Jun 2008 04:57:33 GMT</pubDate><guid isPermaLink="false">12110070-b189-4eb1-8756-e62da1a856d3:374</guid><dc:creator>Ivan</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://biztalkia.com/blogs/ivanjo/rsscomments.aspx?PostID=374</wfw:commentRss><comments>http://biztalkia.com/blogs/ivanjo/archive/2008/06/09/custom-adapters-amp-propriet-224-promosse.aspx#comments</comments><description>&lt;p&gt;Toccato profondamente da uno dei ultimi post di, mio carissimo amico, Nino Crudele &amp;quot;&lt;a href="http://blogs.ugidotnet.org/Biztalk/archive/2008/05/27/92824.aspx" target="_blank"&gt;File a ZERO byte in BizTalk e Creare un CUSTOM ADAPTER&lt;/a&gt;&amp;quot; dal fatto che a FILE adapter mancano le proprietà come &lt;em&gt;LastWriteTime&lt;/em&gt; o &lt;em&gt;FileCreationTime&lt;/em&gt; mi sono messo a pensare come aggiungerli facilmente. In realtà non è niente di trascendentale, ma un po&amp;#39; di lavoro c&amp;#39;è ne.&lt;/p&gt; &lt;p&gt;Da dove si parte? Bhe, partiamo dalla bozza di adapter che troverete nel suo post sopra cittato. In particolare pezzo di codice che bisogna aggiungere è subito dopo la chiamata alla funzione &lt;em&gt;CreateMessage&lt;/em&gt;.&lt;/p&gt; &lt;div style="border-right:gray 1px solid;padding-right:4px;border-top:gray 1px solid;padding-left:4px;font-size:8pt;padding-bottom:4px;margin:20px 0px 10px;overflow:auto;border-left:gray 1px solid;width:97.5%;cursor:text;max-height:200px;line-height:12pt;padding-top:4px;border-bottom:gray 1px solid;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;background-color:#f4f4f4;"&gt; &lt;div style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:white;border-bottom-style:none;"&gt;&lt;span style="color:#0000ff;"&gt;private&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;const&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;string&lt;/span&gt; DOT_NET_FILE_PROP_REMOTEFILENAME = &lt;span style="color:#006080;"&gt;&amp;quot;FileName&amp;quot;&lt;/span&gt;;&lt;/pre&gt;&lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#0000ff;"&gt;private&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;const&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;string&lt;/span&gt; DOT_NET_FILE_PROP_CREATIONTIME = &lt;span style="color:#006080;"&gt;&amp;quot;CreationTime&amp;quot;&lt;/span&gt;;&lt;/pre&gt;&lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:white;border-bottom-style:none;"&gt;&lt;span style="color:#0000ff;"&gt;private&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;const&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;string&lt;/span&gt; DOT_NET_FILE_PROP_LASTWRITETIME = &lt;span style="color:#006080;"&gt;&amp;quot;LastWriteTime&amp;quot;&lt;/span&gt;;&lt;/pre&gt;&lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#0000ff;"&gt;private&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;const&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;string&lt;/span&gt; PROPERTYNAMESPACE = &lt;span style="color:#006080;"&gt;&amp;quot;http://schemas.microsoft.com/BizTalk/2003/dotnetfile-properties&amp;quot;&lt;/span&gt;;&lt;/pre&gt;&lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:white;border-bottom-style:none;"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;part.Data = fs;&lt;/pre&gt;&lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:white;border-bottom-style:none;"&gt;IBaseMessage message = &lt;span style="color:#0000ff;"&gt;this&lt;/span&gt;.messageFactory.CreateMessage();&lt;/pre&gt;&lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;message.AddPart(MESSAGE_BODY, part, &lt;span style="color:#0000ff;"&gt;true&lt;/span&gt;);&lt;/pre&gt;&lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:white;border-bottom-style:none;"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;message.Context.Promote(DOT_NET_FILE_PROP_REMOTEFILENAME, PROPERTYNAMESPACE, (&lt;span style="color:#0000ff;"&gt;object&lt;/span&gt;)srcFilePath);&lt;/pre&gt;&lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:white;border-bottom-style:none;"&gt;message.Context.Promote(DOT_NET_FILE_PROP_CREATIONTIME, PROPERTYNAMESPACE, (&lt;span style="color:#0000ff;"&gt;object&lt;/span&gt;)fileCreationDate);&lt;/pre&gt;&lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;message.Context.Promote(DOT_NET_FILE_PROP_LASTWRITETIME, PROPERTYNAMESPACE, (&lt;span style="color:#0000ff;"&gt;object&lt;/span&gt;)fileModificationDate);&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;&lt;br /&gt;Una volta che file è uscito dal adapter in BizTalk avrete messaggio (e le proprietà) come questi:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://biztalkia.com/blogs/ivanjo/WindowsLiveWriter/Customadaptersproprietpromosse_B19D/adptprop_2.png"&gt;&lt;img style="border-top-width:0px;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" height="213" alt="Custom adapter properties" src="http://biztalkia.com/blogs/ivanjo/WindowsLiveWriter/Customadaptersproprietpromosse_B19D/adptprop_thumb.png" width="660" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;Quindi, siamo riusciti a valorizzare contesto del messaggio con delle proprietà nostre. Per arrivare a punto di leggerle dalla nostra orchestrazione dobbiamo fare altre 2-3 cosette.&lt;br /&gt;Questo è facile: dobbiamo creare una &amp;quot;property schema&amp;quot; che contiene le nostre proprietà promosse. Dopo aver creato lo schema dovete cambiare la proprietà &lt;strong&gt;&lt;em&gt;Target Namespace&lt;/em&gt; &lt;/strong&gt;in &amp;quot;&lt;a title="" href="http://schemas.microsoft.com/BizTalk/2003/dotnetfile-properties"&gt;&lt;/a&gt;http://schemas.microsoft.com/BizTalk/2003/dotnetfile-properties&amp;quot; che è il valore della costante &lt;strong&gt;PROPERTYNAMESPACE&lt;/strong&gt; nel codice sopra. Dopo questo aggiungete le proprietà che abbiamo deciso di promuovere: &lt;em&gt;FileName&lt;/em&gt;, &lt;em&gt;CreationTime&lt;/em&gt; e &lt;em&gt;LastWriteTime&lt;/em&gt;. Alla fine avrete uno schema come seguente:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://biztalkia.com/blogs/ivanjo/WindowsLiveWriter/Customadaptersproprietpromosse_B19D/adptpropschema_2.png"&gt;&lt;img style="border-top-width:0px;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" height="462" alt="adptpropschema" src="http://biztalkia.com/blogs/ivanjo/WindowsLiveWriter/Customadaptersproprietpromosse_B19D/adptpropschema_thumb.png" width="660" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;Siamo arrivati alla fase conclusiva: leggere le proprietà promosse tramite un &amp;quot;expression shape&amp;quot; dall&amp;#39;orchestrazione. Si fa così, ma questo probabilmente lo avrete già capito da soli:&lt;/p&gt;&lt;pre class="csharpcode"&gt;filename=msg_input(MyProject.Schemas.Adapters.FileName);
createDate=msg_input(MyProject.Schemas.Adapters.CreationTime);&lt;/pre&gt;
.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, &amp;quot;Courier New&amp;quot;, 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;p&gt;Questo è tutto.&lt;/p&gt;
.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, &amp;quot;Courier New&amp;quot;, 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;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://biztalkia.com/aggbug.aspx?PostID=374" width="1" height="1"&gt;</description><category domain="http://biztalkia.com/blogs/ivanjo/archive/tags/promoted+properties/default.aspx">promoted properties</category><category domain="http://biztalkia.com/blogs/ivanjo/archive/tags/custom+adapter/default.aspx">custom adapter</category><category domain="http://biztalkia.com/blogs/ivanjo/archive/tags/propriet_E000_+promosse/default.aspx">proprietà promosse</category></item><item><title>Parallel shape (blocco) - demistificato</title><link>http://biztalkia.com/blogs/ivanjo/archive/2008/06/08/parallel-shape-blocco-demistificato.aspx</link><pubDate>Mon, 09 Jun 2008 01:03:00 GMT</pubDate><guid isPermaLink="false">12110070-b189-4eb1-8756-e62da1a856d3:373</guid><dc:creator>Ivan</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://biztalkia.com/blogs/ivanjo/rsscomments.aspx?PostID=373</wfw:commentRss><comments>http://biztalkia.com/blogs/ivanjo/archive/2008/06/08/parallel-shape-blocco-demistificato.aspx#comments</comments><description>&lt;p&gt;Tutti sbagliano! Anch&amp;#39;io ho sbagliato diverse volte.&lt;/p&gt;
&lt;p&gt;Ma, ho deciso di porre fine a questo! Non se ne po più ad usare blocco parallelo pensando che BizTalk tiri su 2 &lt;em&gt;thread&lt;/em&gt; e faccia lavoro su 2 processori o addirittura 2 macchine diverse. Questa non la vedrete ragazzi - almeno non nelle versioni di BizTalk che vi sono sul mercato.&lt;/p&gt;
&lt;p&gt;Guardate queste due immagini...&lt;/p&gt;
&lt;p&gt;&lt;a href="http://biztalkia.com/blogs/ivanjo/WindowsLiveWriter/Parallelshapebloccodemistificato_90E5/parallel1_2.png"&gt;&lt;img style="BORDER-TOP-WIDTH:0px;BORDER-LEFT-WIDTH:0px;BORDER-BOTTOM-WIDTH:0px;BORDER-RIGHT-WIDTH:0px;" height="222" alt="parallel1" src="http://biztalkia.com/blogs/ivanjo/WindowsLiveWriter/Parallelshapebloccodemistificato_90E5/parallel1_thumb.png" width="439" border="0" /&gt;&lt;/a&gt;&amp;nbsp; &lt;a href="http://biztalkia.com/blogs/ivanjo/WindowsLiveWriter/Parallelshapebloccodemistificato_90E5/parallel2_2.png"&gt;&lt;img style="BORDER-TOP-WIDTH:0px;BORDER-LEFT-WIDTH:0px;BORDER-BOTTOM-WIDTH:0px;BORDER-RIGHT-WIDTH:0px;" height="222" alt="parallel2" src="http://biztalkia.com/blogs/ivanjo/WindowsLiveWriter/Parallelshapebloccodemistificato_90E5/parallel2_thumb.png" width="175" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;Ora vi spiego perche un bel&amp;#39; pezzo di &amp;quot;codice&amp;quot; come questo del immagine 1 è diverse volte più lento.&amp;nbsp; &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2&gt;Persistenza&lt;/h2&gt;
&lt;p&gt;A mio parere questa è una delle più importanti &amp;quot;feature&amp;quot; di BizTalk. Si tratta di un meccanismo interno di BizTalk, completamente trasparente a noi, che sui diversi punti nella orchestrazaione (ben definiti !!!) salva lo stato ti tutte le variabili, i messaggi ecc. Si tratta di una specie di &amp;quot;recovery point&amp;quot; da usare nel caso succedesse qualcosa di imprevisto; nostra orchestrazione ripartirebbe dal ultimo punto conosciuto.&lt;/p&gt;
&lt;p&gt;Nel caso di blocco &amp;quot;Parallel&amp;quot; questo avviene alla fine di ogni ramo. Nel caso sopraindicato si trattarebbe di 3 scritture su DB dello stato associato!&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Come l&amp;#39;ultima cosa, vorrei sottolineare il fatto che &lt;u&gt;i processi messi nei rami parallel non assolutamente creano diversi thread ma vengono eseguiti in seriale&lt;/u&gt;.&lt;/p&gt;
&lt;p&gt;A questo punto probabilmente vi chiedete: ma per che cosa servono allora &amp;#39;sti parallel shape??&lt;br /&gt;La risposta è che sono stati pensati solamente per i processi che, prima di procedere, devono essere tutti arrivati alla fine - quindi solo per assicurare il fatto che non si va avanti con l&amp;#39;orchestrazione se tutti i rami non sono stati eseguiti.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Spero che questo lo troverete utile - per me lo sarebbe stato di certo qualche anno fa.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://biztalkia.com/aggbug.aspx?PostID=373" width="1" height="1"&gt;</description><category domain="http://biztalkia.com/blogs/ivanjo/archive/tags/parallel+shape/default.aspx">parallel shape</category><category domain="http://biztalkia.com/blogs/ivanjo/archive/tags/parallelo/default.aspx">parallelo</category><category domain="http://biztalkia.com/blogs/ivanjo/archive/tags/persistenza/default.aspx">persistenza</category></item><item><title>Spaccare i record SQL in n messaggi - SQL debatching</title><link>http://biztalkia.com/blogs/ivanjo/archive/2008/06/03/spaccare-i-record-sql-in-n-messaggi-sql-debatching.aspx</link><pubDate>Tue, 03 Jun 2008 17:37:25 GMT</pubDate><guid isPermaLink="false">12110070-b189-4eb1-8756-e62da1a856d3:367</guid><dc:creator>Ivan</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://biztalkia.com/blogs/ivanjo/rsscomments.aspx?PostID=367</wfw:commentRss><comments>http://biztalkia.com/blogs/ivanjo/archive/2008/06/03/spaccare-i-record-sql-in-n-messaggi-sql-debatching.aspx#comments</comments><description>&lt;p&gt;Qualche giorno fa, per la n-esima volta mi sono trovato di fronte alla stessa domanda: &amp;quot;ma se io ho una &lt;em&gt;stored procedure&lt;/em&gt; e tiro su diverse righe mi piacerebbe elaborarle come i messaggi singoli. Come faccio?&amp;quot;&lt;/p&gt; &lt;p&gt;Stranamente, ma non è proprio una cosa &amp;quot;supportata by design&amp;quot; come lo è usando Flat File Schema Wizard. &lt;/p&gt; &lt;p&gt;Quindi, l&amp;#39;idea generale è questa: &lt;/p&gt; &lt;ol&gt; &lt;li&gt;creo la stored procedure per tirarmi i dati da SQL  &lt;li&gt;mi creo lo schema usando &amp;quot;Add Generated Items...&amp;quot; - SQL wizard&amp;nbsp; &lt;li&gt;imposto le proprietà usate da debatching engine (&lt;strong&gt;XMLReceive&lt;/strong&gt; pipeline)  &lt;li&gt;creo nuovo schema che come nodo root ha quello del singola pizza e includo XSD precedentemente creato  &lt;li&gt;imposto le proprietà che distinguono questo schima da quello già definito  &lt;li&gt;deploy-o e creo la porta di ricezzione SQL ed, eventualmente, la porta Send, di tipo &lt;em&gt;FILE&lt;/em&gt;, per salvare da qualche parte risultato di debatching&lt;/li&gt;&lt;/ol&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;Per questo post ho creato 3 tabelle nel DB &amp;#39;&lt;strong&gt;Pizze&lt;/strong&gt;&amp;#39;: &lt;em&gt;Pizze&lt;/em&gt;, &lt;em&gt;Ingredienti&lt;/em&gt; e &lt;em&gt;Pizze_Ingredienti&lt;/em&gt;. (&lt;em&gt;Nota: nel .ZIP che ho incluso si trova SQL script del DB)&lt;/em&gt;&lt;/p&gt; &lt;p&gt;Poi, ho creato una stored procedure &lt;strong&gt;&lt;em&gt;ps_Menu&lt;/em&gt;&lt;/strong&gt; come segue:&lt;/p&gt; &lt;p&gt;&lt;a href="http://biztalkia.com/blogs/ivanjo/WindowsLiveWriter/SpaccarerecordSQLinnmessaggiSQLdebatchin_B1A0/sql-Menu_2.png"&gt;&lt;img style="border-top-width:0px;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" height="174" alt="la procedura stored: ps_Menu" src="http://biztalkia.com/blogs/ivanjo/WindowsLiveWriter/SpaccarerecordSQLinnmessaggiSQLdebatchin_B1A0/sql-Menu_thumb.png" width="703" border="0" /&gt;&lt;/a&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;A questo punto siamo pronti per creare lo schema che rapresenta il nostro &amp;#39;menu del giorno&amp;#39;. (&lt;em&gt;Nota: ricordatevi, una volta creato lo schema, di togliere &lt;strong&gt;XMLDATA&lt;/strong&gt; dalla stored perché così ritornerà i dati a posto della struttura!)&lt;/em&gt;&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;Per creare lo schema, vado su progetto (in VisualStudio), clicco sul tastro destro e scelgo &lt;em&gt;Add Generated Items... &lt;/em&gt;Imposto SQL adapter configurando l&amp;#39;accesso al DB puntando quello delle pizze. La prossima schermata si presenta come quella sotto per definire un &lt;em&gt;&amp;quot;Namespace&amp;quot;&lt;/em&gt; da usare per questi messaggi ed imposto &lt;em&gt;Root element Name&lt;/em&gt;.&lt;/p&gt; &lt;p&gt;&lt;em&gt;&lt;a href="http://biztalkia.com/blogs/ivanjo/WindowsLiveWriter/SpaccarerecordSQLinnmessaggiSQLdebatchin_B1A0/msg-menu_2.png"&gt;&lt;img style="border-top-width:0px;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" height="389" alt="Generazione schema: MenuPizze.XSD" src="http://biztalkia.com/blogs/ivanjo/WindowsLiveWriter/SpaccarerecordSQLinnmessaggiSQLdebatchin_B1A0/msg-menu_thumb.png" width="509" border="0" /&gt;&lt;/a&gt; &lt;/em&gt;&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;Sulla prossima schermata scelgo la &amp;quot;Stored Procedure&amp;quot; ed arrivo su quella che mi permette di scegliere la procedura da eseguire. Da menu a tendina seleziono &amp;quot;&lt;strong&gt;ps_Menu&lt;/strong&gt;&amp;quot; e clicco bottone &amp;quot;&lt;em&gt;Generate&lt;/em&gt;&amp;quot;.&lt;/p&gt; &lt;p&gt;Oltre allo schema che vedete sotto viene anche generata una orchestrazione. Questa a noi non serve per cui la cancelliamo dal progetto.&lt;/p&gt; &lt;p&gt;Per puro piacere rinomino lo schema a: &lt;strong&gt;MenuPizze.xsd&lt;/strong&gt;&lt;/p&gt; &lt;p align="left"&gt;&lt;a href="http://biztalkia.com/blogs/ivanjo/WindowsLiveWriter/SpaccarerecordSQLinnmessaggiSQLdebatchin_B1A0/menupizzexsd_2.png"&gt;&lt;img style="border-top-width:0px;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" height="201" alt="Schema layout: MenuPizze.XSD" src="http://biztalkia.com/blogs/ivanjo/WindowsLiveWriter/SpaccarerecordSQLinnmessaggiSQLdebatchin_B1A0/menupizzexsd_thumb.png" width="232" border="0" /&gt;&lt;/a&gt;&amp;nbsp; &lt;/p&gt; &lt;p align="left"&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;Prima di proseguire, devo togliere tag &lt;strong&gt;XMLDATA&lt;/strong&gt; dalla stored procedure per poter ricevere i dati da SQL.&lt;/p&gt; &lt;p&gt;Il fatto di processare ogni record ritornato da SQL come un messaggio si chiama &lt;strong&gt;debatching&lt;/strong&gt; - quindi spaccare un unico messaggione in tanti messaggi piccoli. Per fare ciò BizTalk prevede l&amp;#39;utilizzo della pipeline &lt;strong&gt;&lt;em&gt;XMLReceive &lt;/em&gt;&lt;/strong&gt;(che imposteremo più tardi) e proclamando lo schema che abbiamo precedentemente creato di essere un &lt;strong&gt;&lt;em&gt;Envelope&lt;/em&gt;&lt;/strong&gt;. Quindi imposto la proprietà&amp;nbsp; &lt;strong&gt;Envelope&lt;/strong&gt; a &lt;strong&gt;&lt;em&gt;true&lt;/em&gt;&lt;/strong&gt; e &lt;strong&gt;Max Occurs&lt;/strong&gt; del nodo &lt;em&gt;Pizze&lt;/em&gt;&amp;nbsp; a &lt;strong&gt;&lt;em&gt;1&lt;/em&gt;&lt;/strong&gt; e &lt;strong&gt;Body XPath &lt;/strong&gt;del nodo&lt;strong&gt; &lt;/strong&gt;&lt;em&gt;MenuDelGiorno&lt;/em&gt; a &lt;em&gt;&lt;strong&gt;MenuDelGiorno&lt;/strong&gt;&lt;/em&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&lt;a href="http://biztalkia.com/blogs/ivanjo/WindowsLiveWriter/SpaccarerecordSQLinnmessaggiSQLdebatchin_B1A0/env-msg-pizze_2.png"&gt;&lt;img style="border-top-width:0px;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" height="144" alt="Impostazione propriet&amp;agrave;" src="http://biztalkia.com/blogs/ivanjo/WindowsLiveWriter/SpaccarerecordSQLinnmessaggiSQLdebatchin_B1A0/env-msg-pizze_thumb.png" width="244" border="0" /&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;Fin&amp;#39; qui è tutto regolare e lineare - come per fare debatching di qualuncue altro messaggio. Purtroppo, lo schema generata da SQL wizard include un tag di più di quanto noi ne abbiamo bisogno il &lt;strong&gt;MenuDelGiorno&lt;/strong&gt;. Per risolvere questo dobbiamo applicare un trucco: creare un nuovo messaggio che abbia la stessa struttura per quanto riguarda il nodo &lt;strong&gt;&lt;em&gt;Pizze&lt;/em&gt;&lt;/strong&gt; però al livello &lt;u&gt;root&lt;/u&gt;!&lt;br /&gt;La via più breve, ed anche più corretta, è usare &lt;strong&gt;XSD Include&lt;/strong&gt; dopo avere creato nuovo messaggio (come da immagine):&lt;/p&gt; &lt;p&gt;&lt;a href="http://biztalkia.com/blogs/ivanjo/WindowsLiveWriter/SpaccarerecordSQLinnmessaggiSQLdebatchin_B1A0/pizzamsg_2.png"&gt;&lt;img style="border-top-width:0px;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" height="198" alt="Nuovo schema: Pizza.XSD" src="http://biztalkia.com/blogs/ivanjo/WindowsLiveWriter/SpaccarerecordSQLinnmessaggiSQLdebatchin_B1A0/pizzamsg_thumb.png" width="364" border="0" /&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;In questo modo abbiamo tutta la struttura presente nello schema creata da SQL wizard sotto quella nostra. Ora non rimane da fare altro che:&lt;/p&gt; &lt;ol&gt; &lt;li&gt;Creo lo schema &lt;strong&gt;Pizza.XSD&lt;/strong&gt;  &lt;li&gt;Cambio la proprietà &lt;strong&gt;Target Namespace&lt;/strong&gt; a &lt;em&gt;&lt;strong&gt;http://solnuke/test/Pizze/SQLDebatching&lt;/strong&gt;&lt;/em&gt;  &lt;li&gt;Clicco la proprietà &lt;strong&gt;Imports&lt;/strong&gt;, scelgo &lt;strong&gt;XML Include &lt;/strong&gt;dalla tendina e punto lo schema creato da wizard  &lt;li&gt;Rinomino nodo &amp;#39;Root&amp;#39; a &lt;em&gt;&lt;strong&gt;Pizze&lt;/strong&gt; &lt;/em&gt;e cambio sua proprietà &lt;strong&gt;Data Structure Type&lt;/strong&gt; a &lt;strong&gt;&lt;em&gt;PizzeType&lt;/em&gt;&lt;/strong&gt;  &lt;li&gt;L&amp;#39;ultima cosa da fare e cambiare la proprietà &lt;strong&gt;Root Reference&lt;/strong&gt; a &lt;em&gt;&lt;strong&gt;Pizze&lt;/strong&gt;&lt;/em&gt; altrimenti avrete un messaggio nel event log come questo: &lt;/li&gt;&lt;/ol&gt; &lt;blockquote&gt; &lt;p&gt;&lt;em&gt;Error details: There was a failure executing the receive pipeline: .... Reason: &lt;strong&gt;Cannot locate document specification because multiple schemas matched the message type&lt;/strong&gt; http://solnuke/test/Pizze/SQLDebatching#MenuDelGiorno&lt;/em&gt;&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;Ci sarebbe da impostare anche la pipeline sulla porta di &lt;em&gt;Receive&lt;/em&gt; e configurarla come &lt;strong&gt;XMLReceive&lt;/strong&gt; (raffigurata dall&amp;#39;immagine sottostante) &lt;/p&gt; &lt;p&gt;&lt;a href="http://biztalkia.com/blogs/ivanjo/WindowsLiveWriter/SpaccarerecordSQLinnmessaggiSQLdebatchin_B1A0/pipeline_2.png"&gt;&lt;img style="border-top-width:0px;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" height="146" alt="pipeline" src="http://biztalkia.com/blogs/ivanjo/WindowsLiveWriter/SpaccarerecordSQLinnmessaggiSQLdebatchin_B1A0/pipeline_thumb.png" width="244" border="0" /&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;Ecco, questo è quanto. Vi allego anche un piccolo progetto per giocarci. Dentro lo ZIP troverete la cartella col progetto e un file .SQL per crearvi la struttura del database &lt;strong&gt;&lt;em&gt;Pizze&lt;/em&gt;&lt;/strong&gt;. Prima di testare aggiungete qualche pizza a menu :-)&lt;/p&gt; &lt;div class="wlWriterSmartContent" id="scid:fb3a1972-4489-4e52-abe7-25a00bb07fdf:7fb6c453-12a7-4c20-b54f-4d7797c98471" style="padding-right:0px;display:inline;padding-left:0px;float:none;padding-bottom:0px;margin:0px;padding-top:0px;"&gt;&lt;p&gt;Scarica qui: &lt;a href="http://biztalkia.com/blogs/ivanjo/WindowsLiveWriter/SpaccarerecordSQLinnmessaggiSQLdebatchin_B1A0/Pizza-SQLDebatching.zip" target="_blank"&gt;Pizza-SQLDebatching.zip&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://biztalkia.com/aggbug.aspx?PostID=367" width="1" height="1"&gt;</description><category domain="http://biztalkia.com/blogs/ivanjo/archive/tags/sql/default.aspx">sql</category><category domain="http://biztalkia.com/blogs/ivanjo/archive/tags/debatching/default.aspx">debatching</category></item><item><title>BizTalk add-in per Reflector</title><link>http://biztalkia.com/blogs/ivanjo/archive/2008/03/02/biztalk-add-in-per-reflector.aspx</link><pubDate>Sun, 02 Mar 2008 07:56:00 GMT</pubDate><guid isPermaLink="false">12110070-b189-4eb1-8756-e62da1a856d3:295</guid><dc:creator>Ivan</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://biztalkia.com/blogs/ivanjo/rsscomments.aspx?PostID=295</wfw:commentRss><comments>http://biztalkia.com/blogs/ivanjo/archive/2008/03/02/biztalk-add-in-per-reflector.aspx#comments</comments><description>&lt;p&gt;Reflector lo conoscete tutti ormai (se no mi raccomando &lt;a class="" title="Reflector" href="http://www.aisto.com/roeder/dotnet/"&gt;scaricatelo&lt;/a&gt;)&lt;/p&gt;
&lt;p&gt;Questo add-in vi permette di vedere tutti gli &amp;quot;artifact&amp;quot; presenti nella .dll aperta (screenshot sotto).&lt;/p&gt;
&lt;p&gt;&lt;img src="http://blogs.msdn.com/photos/gzunino/images/623950/original.aspx" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://biztalkia.com/aggbug.aspx?PostID=295" width="1" height="1"&gt;</description><category domain="http://biztalkia.com/blogs/ivanjo/archive/tags/reflector+biztalk+add-in+addon/default.aspx">reflector biztalk add-in addon</category></item><item><title>Primo</title><link>http://biztalkia.com/blogs/ivanjo/archive/2008/03/02/primo.aspx</link><pubDate>Sun, 02 Mar 2008 07:45:00 GMT</pubDate><guid isPermaLink="false">12110070-b189-4eb1-8756-e62da1a856d3:294</guid><dc:creator>Ivan</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://biztalkia.com/blogs/ivanjo/rsscomments.aspx?PostID=294</wfw:commentRss><comments>http://biztalkia.com/blogs/ivanjo/archive/2008/03/02/primo.aspx#comments</comments><description>&lt;p&gt;Ciao a tutti,&lt;br /&gt;Intanto vorrei presentarmi. Sono Ivan Jocic (pronunciato come ivan iozici), e se non riuscite a pronunciarlo bene, allora non scrivetemi :) Scherzo.&lt;/p&gt;
&lt;p&gt;Con BizTalk ci lavoro da quasi 4 anni. Ho iniziato con 2004 e ormai sono da un bel pezzo su 2006. Ho lavorato tanto sulla parte architetturale di alcuni progetti grossi e anche tanto come programmatore.&lt;br /&gt;In questi anni ho potuto scoprire diversi bugs di Biz2004 e assieme ai team di Microsoft (UK, Francia, USA) li abbiamo risolti ed inpachettati nei relativi HotFix. Quei momenti mi hanno portato un know-how piu&amp;#39; sistemistico direi a gli sono molto grato.&lt;/p&gt;
&lt;p&gt;Ovviamente io non sono soltanto un Biztalkiano; lavoro sul web e win32..&lt;/p&gt;
&lt;p&gt;Credo che basti per iniziare, e voi?&lt;/p&gt;
&lt;p&gt;ps. Scusatemi quando vedete le parole (specialmente le doppie) scritte male :) Nessuno e&amp;#39; perfetto...&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://biztalkia.com/aggbug.aspx?PostID=294" width="1" height="1"&gt;</description></item></channel></rss>