Posts Tagged ‘ BizTalk ’

BizTalk And SVN

I have always struggled with using Biztalk and SVN.  These couple of blogs helped me bit.

http://www.modhul.com/2008/02/22/configuring-subversion-to-correctly-handle-biztalk-files/

Setting Auto Properties – Keep in mind with windows 7 You would be going to %USERPROFILE%/AppData/Roaming/Subversion for the config file suggested in the blog below.

http://www.modhul.com/2008/02/27/subversion-biztalk-setting-committer-auto-properties/

Advertisements

Using Scheduled Task Adapter with BizTalk Server 2010

There is absolutely no documentation or may be very little associated with the Scheduled Task adapter on codeplex.  I will try to provide some tips and gotchas when using this adapter.  This is a very powerful adapter and I have used it in couple of my applications and used it to put raw xml in message box.

To use this adapter you will obviously have to install the adapter.  Unfortunately, it does not GAC a couple of assemblies even when you choose “everyone” on the install page.  To solve that problem I have created a MSI for installing the required assemblies into GAC.  You can download the installer from here.  Once the adapter is installed and the assemblies are GAC’d, you will have to follow general instructions on adding “ScheduledTask” as an adapter.  

Once the adapter is added, there are a couple of Gotcha to get the adapter working

1) After you have created the port, select the adapter, and click configure.  Provide a name.  This will be displayed as part of the URI on the port configuration page. 

2) Set the schedule

3) On the Task Tab, click Find Task.  #1) This page, if you are using the adapter for the first time, will be blank.  Click Browse and locate the directory where the adapter was installed (usually :<system drive:>\Program Files (x86) \ Biztalk ScheduledTask Adapter) and choose “ScheduledTaskAdapter.TaskComponents.dll” and click open.  Double click on the required stream provider (should populate the “Assembly Qualified Type Name” textbox and hit Ok.

4) This should populate the Class Text Box and would have “Task Properties” Populated with various properties.  Specify your text (in my case it was XML Stream and I put in raw XML) and hit ok.

5) You would think you are done. but no – #2) You will also have to add the “Biztalk.Adapter.ScheduledTaskProperties.dll” as a resource to your application and select the Gac’ing options.

6) Occasionally you might see an exception in the event long

The adapter “Schedule” raised an error message. Details “Exception has been thrown by the target of an invocation.”

This indicates that the the assemblies are not gac’d or they are not picked up. If you have already run the MSI and have added the dll as a resource, you need to restart the Host Instance.  Another reason why you might see this error is because your host instance might be running in 64 bit mode.  Ensure that the host instance is running as 32 bit.

 

 

 

 

UDP Broadcast using BizTalk Server 2010

Recently we had talked about developing an adapter to broadcast data over UDP.  The idea was to develop such an adapter that can be used in private equity firms to receive price data over multicast.

Yesterday I had a chance to try out Dot Net 4.5 (currently in beta) which natively supports UDPBindings.  I never realized broadcasting data over UDP would be such a simple task that I could implemented a send port in a matter of minutes with 0 coding. Well 0 coding to set the port up but may be a few lines of code for the UDP receiver.

Setting up a UDP Send port

In your BizTalk application, create a send port of WCF-Custom Type.  In the General tab, set the End Point Address URI to be

soap.udp://<multicast_address>:<port>

Image

On the Binding Tab, Select the Binding Type to be “udpBinding”.  Leave the defaults as is

Image

Set the other required files and maps on your port and that’s it.  You can now broadcast messages over UDP.

Client Code

Here is the client code that I used to test my UDP Transmission.

            const int GROUP_PORT = 15000;
            //const string IP_ADDRESS = "192.168.56.1";
            const string IP_ADDRESS = "192.168.0.110";
            Socket listener = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
            IPEndPoint localEndPoint = new IPEndPoint(IPAddress.Parse(IP_ADDRESS), GROUP_PORT);
            listener.Bind(localEndPoint);
            EndPoint ep = (EndPoint)localEndPoint;
            Console.WriteLine("Ready to receive…");
            byte[] data = new byte[1024];
            int recv = listener.ReceiveFrom(data, ref ep);
            string stringData = Encoding.ASCII.GetString(data, 0, recv);
            Console.WriteLine("received: {0} from: {1}", stringData, ep.ToString());
            Console.ReadLine();
            listener.Close();

Its a pure socket based connection and works like a charm.

In my BizTalk application, my UDP Broadcast port was subscribing to a file receive port.  For both ports the pipeline was simple pass through.  I dropped in a simple xml file with data:

<?xml version="1.0" encoding="utf-8"?>
<data>WORKING PARTY</data>

And this is what I received on my client console application:

<s:Envelope xmlns:s="http://www.w3.org/2003/05/soap-envelope" xmlns:a="http://www.w3.org/2005/08/addressing"><s:Header><a:MessageID>urn:uuid:9552802b-0168-431f-b694-eff5fed86a47</a:MessageID><a:To s:mustUnderstand="1">soap.udp://192.168.0.110:15000/</a:To></s:Header><s:Body><data>WORKING PARTY</data></s:Body></s:Envelope>