Things hard and not so hard.... RSS 2.0
# Thursday, October 25, 2012

Great news – Jurgen Willis and his team have worked hard to bring Microsoft’s first V1.0 WF Workflow Hosting Manager.

It  runs both as part of Windows Server and within Azure VMs also. It also is used by the SharePoint team in 2013, so learn it once and you’ll get great mileage out of it.
(I’m yet to put it through serious paces)

Some links to help you out…

What is it?

WF Mgr 1.0 – Code Samples

 

The following main areas for WF improvements in .NET 4.5: (great MSDN magazine article)

  1. Workflow Designer enhancements
  2. C# expressions
  3. Contract-first authoring of WCF Workflow Services
  4. Workflow versioning
  5. Dynamic update
  6. Partial trust
  7. Performance enhancements

Specifically for WorkflowManager there’s integration with:

1. Windows Azure Service Bus.

So all in all a major improvement and we’ve now got somewhere serious to host our WF Services. If you’ve ever gone through the process of creating your own WF host, you’ll appreciate it’s not a trivial task especially if you want some deeper functionality such as restartability and fault tolerance.

but…. if you want to kick off a quick WF to be part of an install script, evaluate an Excel spreadsheet and set results, then hosting within the app, spreadsheet is fine.

Let’s go through installation:

Download from here

image

Workflow_Manager_BPA.msi = Best Practices Analyser.

WorfklowClient = Client APIs, install on machines that want to communicate to WF Manager.

WorkflowManager = the Server/Service Component.

WorkflowTools = VS2012 plugin tools – project types etc.

And we’ll grab the 4 or you can you the Web Platform Installer

image

 

The Workflow Client should install fine on it’s own (mine didn’t as I had to remove some of the beta bits that were previously installed).

Installing the Workflow Manager – create a farm, I went for a Custom Setting install below, just to show you the options.

image

image

As you scroll down on this page, you’ll notice a HTTP Port – check the check box to enable HTTP communications to the Workflow Manager.
This just makes it easier if we need to debug anything across the wire.

Select NEXT or the cool little Arrow->

On Prem Service Bus is rolled into this install now – accepting defaults.

image

Plugin your Service Accounts and passphrase (for Farm membership and an encryption seed).

Click Next –> to reveal….

image

As with the latest set of MS Products a cool cool feature is the ‘Get PowerShell Commands’ so you can see the script behind your UI choices (VMM manager, SCCM 2012 has all this right through). BTW – passwords don’t get exported in the script, you’ll need to add.

Script Sample:

# To be run in Workflow Manager PowerShell console that has both Workflow Manager and Service Bus installed.

# Create new SB Farm
$SBCertificateAutoGenerationKey = ConvertTo-SecureString -AsPlainText  -Force  -String '***** Replace with Service Bus Certificate Auto-generation key ******' -Verbose;


New-SBFarm -SBFarmDBConnectionString 'Data Source=BTS2012DEV;Initial Catalog=SbManagementDB;Integrated Security=True;Encrypt=False' -InternalPortRangeStart 9000 -TcpPort 9354 -MessageBrokerPort 9356 -RunAsAccount 'administrator' -AdminGroup 'BUILTIN\Administrators' -GatewayDBConnectionString 'Data Source=BTS2012DEV;Initial Catalog=SbGatewayDatabase;Integrated Security=True;Encrypt=False' -CertificateAutoGenerationKey $SBCertificateAutoGenerationKey -MessageContainerDBConnectionString 'Data Source=BTS2012DEV;Initial Catalog=SBMessageContainer01;Integrated Security=True;Encrypt=False' -Verbose;

# To be run in Workflow Manager PowerShell console that has both Workflow Manager and Service Bus installed.

# Create new WF Farm
$WFCertAutoGenerationKey = ConvertTo-SecureString -AsPlainText  -Force  -String '***** Replace with Workflow Manager Certificate Auto-generation key ******' -Verbose;


New-WFFarm -WFFarmDBConnectionString 'Data Source=BTS2012DEV;Initial Catalog=BreezeWFManagementDB;Integrated Security=True;Encrypt=False' -RunAsAccount 'administrator' -AdminGroup 'BUILTIN\Administrators' -HttpsPort 12290 -HttpPort 12291 -InstanceDBConnectionString 'Data Source=BTS2012DEV;Initial Catalog=WFInstanceManagementDB;Integrated Security=True;Encrypt=False' -ResourceDBConnectionString 'Data Source=BTS2012DEV;Initial Catalog=WFResourceManagementDB;Integrated Security=True;Encrypt=False' -CertificateAutoGenerationKey $WFCertAutoGenerationKey -Verbose;

# Add SB Host
$SBRunAsPassword = ConvertTo-SecureString -AsPlainText  -Force  -String '***** Replace with RunAs Password for Service Bus ******' -Verbose;


Add-SBHost -SBFarmDBConnectionString 'Data Source=BTS2012DEV;Initial Catalog=SbManagementDB;Integrated Security=True;Encrypt=False' -RunAsPassword $SBRunAsPassword -EnableFirewallRules $true -CertificateAutoGenerationKey $SBCertificateAutoGenerationKey -Verbose;

Try
{
    # Create new SB Namespace
    New-SBNamespace -Name 'WorkflowDefaultNamespace' -AddressingScheme 'Path' -ManageUsers 'administrator','mickb' -Verbose;

    Start-Sleep -s 90
}
Catch [system.InvalidOperationException]
{
}

# Get SB Client Configuration
$SBClientConfiguration = Get-SBClientConfiguration -Namespaces 'WorkflowDefaultNamespace' -Verbose;

# Add WF Host
$WFRunAsPassword = ConvertTo-SecureString -AsPlainText  -Force  -String '***** Replace with RunAs Password for Workflow Manager ******' -Verbose;


Add-WFHost -WFFarmDBConnectionString 'Data Source=BTS2012DEV;Initial Catalog=BreezeWFManagementDB;Integrated Security=True;Encrypt=False' -RunAsPassword $WFRunAsPassword -EnableFirewallRules $true -SBClientConfiguration $SBClientConfiguration -EnableHttpPort  -CertificateAutoGenerationKey $WFCertAutoGenerationKey -Verbose;

 

Upon completion you should see a new IIS Site…. with the ‘management ports’ of in my case HTTPS

image

 

Let’s Play Smile

Go and grab the samples and have a play – make sure you run the samples as the user you’ve nominated as ‘Admin’ during the setup – for now.

Thursday, October 25, 2012 3:06:11 PM (AUS Eastern Standard Time, UTC+10:00)  #    Comments [0] -
Async | Azure | Integration | ServiceBus | BizTalk | 2010 | 2010 R2 | Dev
# Thursday, October 11, 2012

Hi folks,

What a great time we're in at the moment. Cloud(s) are knocking a the door, local devices, windows 8 etc.

No complaints from me that this world is getting more and more connected.

To maintain those connections and handle new ones - Microsoft BizTalk Server serves as your on-premise middleware platform.

We're running a course shortly on Design, Build and Manage your solutions within BizTalk Server.

We have a wealth of knowledge around Integration and Cloud technologies. As you and I know, integration is all about the systems you're integrating with.

Here's the details - and hope to see you there. Mick (you're new Azure Integration MVP)

Come along to our office for a week of BizTalk 2010 Bootcamp Training!

Agenda

We will take care of you with delicious catering, friendly staff and provide our state of the art BizTalk trainer. There are a limited amount of seats, so book now!

Click here to register

Start: Monday, November 12, 2012

End: Friday, November 16 2012

 

What is BizTalk?

For your business, BizTalk provides the "glue" to giving you a very good integration foundation for both internal applications as well as the outside world and giving you consistency across those interfaces as well.

BizTalk is a platform that is durable, reliable and fault tolerant right across your services, from email, FTP services, web services, database calls and much more, you will have something that retries all of those for you.

 

Why BizTalk?

BizTalk provides a level of maturity to customer operations as well as consistency. It is harder for customers to build themselves, the capabilities that BizTalk can offer out of the box. Our experience is that customers often start out building smaller applications here and there with eventually having over 100 applications talking to each other in a very specific way, all in a very ad-hoc approach and all very speciailised. Over time to maintain those systems becomes a big challenge for the client with increased complexity along the way.

Whereas by introducing a uniform, a best practice way of doing something, "business rules" such as within BizTalk, it eases that integration with the company to make it a lot simpler and easier to manage and everyone gets visibility in to the activity of those calls within the applications.

 

What our customers are doing with BizTalk today

BizTalk being a middleware product is being used in many different scenarios, from simple file transfers right across to complex business process automation.

Customers in one instance are getting real time notifications around FTP, where certain files appear, then systems have to react or respond immediately instead of within a polling interval that may occur at any time during the day. So being able to build out that infrastructure and apply or update databases, all of that happens right across the BizTalk layer, then exposed out via web services.

In-short BizTalk forms another tool in the client toolkit, using the MS integration stack, so on top of not only BizTalk and all of its' capabilities and adapters, we have WCF (Windows Communication Foundation), messaging, MSMQ and many others in the integration stack, not to mention Azure and cloud hybrid solutions we can deploy and employ today. So with clients it's not just about providing BizTalk to solve a problem, it's about using the tools in the toolkit to meet their requirements, whatever the tools may be, to solve their immediate challenge.

Thursday, October 11, 2012 3:29:10 PM (AUS Eastern Standard Time, UTC+10:00)  #    Comments [0] -
Azure | Integration | ServiceBus | 2010 | 2010 R2 | Events | Training
# Thursday, October 04, 2012

In the wee early hours of the morning I recently got an email saying I had been awarded a MVP for another year.

This time I got awarded as an Azure MVP coming from BizTalk MVP. My love has been BizTalk for the last 12 years (and even Site Server before that for those that remember back that far…no they didn’t have punch cards Smile).

As always I don’t feel this is personally my award, but more of an award to you, the community with your hunger and thirst for knowledge to make a difference in your day to day.

And of course thank you to Microsoft for your belief in the MVP program and individuals such as myself.

……

The formal bits out of the way….I’m back for 2012/13!!! Should be a great year…great tour…and huge developments. Stay tuned.

My focus will be How to Integration and how-to integrate to/from Windows Azure.

 

mvp

     image

Thursday, October 04, 2012 9:49:47 AM (AUS Eastern Standard Time, UTC+10:00)  #    Comments [0] -
Azure | Integration | BizTalk | 2010 R2 | BizTalk Adapter Pack
# Tuesday, August 07, 2012

Now that the dust is settling after WPC 2012, I’m able to catch up on all the emails still coming from the event.

I had a picture taken with John (against a green screen) and is it’s amazing what they can do with modern technology now. Smile

WPC Award

From my research a couple of points:

  • Over the last 4 years, approx 200 Worldwide Partner awards have been given – 6 of them Australian Partners! We’re one of 6.
  • This is the first time EVER an Australian Partner has been an Application Integration Winner
  • This is the first time EVER an Australian Partner has been a Cloud Partner Finalist

See more here

Talk to you soon.

Mick.

Tuesday, August 07, 2012 3:10:02 PM (AUS Eastern Standard Time, UTC+10:00)  #    Comments [0] -
BizTalk | 2010 R2 | Breeze | Events | 2012
# Monday, August 06, 2012

Hi folks, BizTalk has some great new features on the horizon and this CTP is jam packed of new and improved features. I believe the CTP is non-public atm, with MVPs etc. able to get access (or if you’re on the TAP program)

I’ve got a VM up and running with the setup and config working a treat – I’m not sure how much I can say, but I’d like to say I’m very pleased with what I’m seeing!

The official feature set blurb goes something like this…

Enjoy.

Details…

Improved productivity with new Microsoft Platform support

Customers can now leverage the latest and greatest platforms, such as Windows Server 2012 RC, SQL Server 2012, Visual Studio 2012 RC. All new BizTalk projects will target .Net Framework 4.5 RC by default. The CTP also provides support for latest LOB versions enabling customers to use BizTalk for integrating their applications with the latest versions of SAP, Oracle and SQL Server. The new adapters provide a seamless experience to enable hybrid connectivity, all done via configuration. The CTP provides native support for ACS authentication and is extensible for other authentication mechanisms.

·         Platform support

o   Windows Server 2012 RC, Windows Server 2008 R2

o   SQL Server 2012, SQL Server 2008 R2

o   Visual Studio 2012 RC

o   Office 2010

o   Support for latest LOB versions

§  Support for SQL Server 2012

§  Support for SAP 7.2

§  Support for Oracle DB 11.2

§  Support for Oracle EBS 12.1 …

·         Adapters

o   WCF-WebHttp adapter, to consume REST service or expose REST service

o   SB-Messaging, for sending/pulling data from Service Bus Queues/Topics

o   WCF-NetTCPRelay, for hosting relays or sending data to NetTCPRelay end points

o   WCF-BasicHttpRelay, for hosting relays or sending data to BasicHttpRelay end points

 

Better B2B with schema updates

EDI standards evolve and one of the key investments made in this new BizTalk CTP is to ensure that we support the latest B2B standards natively. This enables you to transact messages based on the latest versions of EDI protocol.

·         B2B enhancements to support latest standards natively

o   Support for X12 5040, 5050, 6020, 6030

o   Support for EDIFACT D06A, D06B, D07A, D07B, D08A, D08B, D09A, D09B, D10A, D10B

o   HL7 2.5.1

We are working on further schema updates such as HL7 2.6, these will be enabled in the BizTalk 2010 R2 Beta.

 

Improved Performance

The CTP provides performance improvement for certain key scenarios. In case of two way MLLP adapter scenarios where ordered delivery is set, the tests have revealed up-to 5X performance improvement so far in our environments. We have also made enhancements in our engine to improve the performance in ordered send port scenarios.

 

Building hybrid applications

Today, there is an increase in the adoption of hybrid application scenarios where some components of an application run in the cloud and some other components/LOB applications remain on-premise. It then becomes important to integrate between these components and leverage the richness of both worlds. In this CTP release, we enable hybrid connectivity by providing first class support for integrating with Azure Service Bus Queues/Topics/Relays. We are introducing the following adapters

·         SB-Messaging, for sending/pulling data from Service Bus Queues/Topics

·         WCF-NetTCPRelay, for hosting relays or sending data to NetTCPRelay end points

·         WCF-BasicHttpRelay, for hosting relays or sending data to BasicHttpRelay end points

 

Integrating with Azure Service Bus entities is now just a few configurations away!

 

Integration with RESTful services

One of the other prevalent trends in the market today is the proliferation of RESTful services. Almost all new services, as well a lot of services created previously, have a REST interface exposed. For example, all services in Windows Azure, data market place, Salesforce, etc. have support for REST services. With this CTP release, we are making it really easy for you to integrate RESTful services with BizTalk Server using the new WCF-WebHttp adapter. All the REST operations like GET, PUT, POST and DELETE are now supported natively. It gets better. We received community feedback during and post TechEd conference that there should be a way to expose REST services as well from BizTalk. We listened to your feedback. Along with consuming REST services we are also really excited to announce that you now have an early preview to exposing REST services from BizTalk Server as well in this CTP.

 

BizTalk Server in Azure Virtual Machine role

All the above enhancements are available right away for you to preview with BizTalk Server in Azure Virtual Machine role. Setting up a new BizTalk Server environment usually involves long lead time to procure hardware, get the dependencies in place, set up the server, etc. This means long lead times before you can get started with your new BizTalk Server environment. We are now leveraging the power of the cloud and the richness of Windows Azure to provide an experience where you can get up and running with your BizTalk Server environment in matter of minutes and move your existing applications to the cloud without making any changes. Furthermore, the CTP provide improvements to the BizTalk multi machine configuration and now you can do this using some basic configuration settings with the click of a button in a single machine, without having to go and configure BizTalk Server Group in each of the individual nodes.

Monday, August 06, 2012 12:49:28 PM (AUS Eastern Standard Time, UTC+10:00)  #    Comments [0] -
Azure | Integration | ServiceBus | BizTalk | 2010 R2
# Tuesday, May 22, 2012
Hi folks, recently I've been asked by several students on how to create Parties, Agreements, Profiles etc. via code in BizTalk 2010.

I played with this along time ago while at Redmond as BizTalk 2010 was in the process of being released.

So I've just rolled up my sleeves and provided a quick demo for you - the demo shows:
  1. How to enumerate and get at each of your TPM Partners.
  2. How to create Partners + Profiles within BizTalk 2010.
Note: I've only tried this on BizTalk 2010 (& needless to say I'm claiming 'works on my machine' :))

What we're talking about in BizTalk
This section here....




Show me the code....
Well the magic is found in this DLL -
C:\Program Files (x86)\Microsoft BizTalk Server 2010\Developer Tools\Microsoft.BizTalk.B2B.PartnerManagement.dll

- create a VS.NET 2010 app (for this demo I created a console app)
- we make a reference to the above DLL (we also need to reference system.data.entity)
- set a connectionstring to our BizTalk Management DB, mine is BizTalkDB (as I rolled all the BizTalk DBs into one - for dev)
- start enumerating.

C# Looks like this-

static void Main(string[] args)
       {
           //enumerate all the TPM Profiles in BizTalk
           var builder = 
               new SqlConnectionStringBuilder("DATA SOURCE=localhost;Initial Catalog=BizTalkDB;"
           + "Integrated Security=SSPI;MultipleActiveResultSets=True");
           var tmpCtx = TpmContext.Create(builder);

           Console.WriteLine("Connected to BizTalk Global Parties");
           var partners = tmpCtx.Partners;
           Console.WriteLine("Number of Parters:{0}", partners.Count());
           Console.WriteLine("------------");

           foreach (var ptr in partners)
           {
               var profiles = ptr.GetBusinessProfiles();
               Console.WriteLine("{0} Business Profiles:{1}", ptr.Name, profiles.Count);
               foreach (var profile in profiles)
               {
                   Console.WriteLine("\tProfile:{0}", profile.Name);
               }
           }
           tmpCtx.Dispose();
           if (bCreateProfile)
           {
               createProfile("Breeze Partner #");
           }
           Console.WriteLine("Finished");
           Console.ReadLine();
       }

Point to Note: in the connection string I set 'MARS=true' just so we can enumerate several collections at once through the one context. When updating or saving new, partners and/or profiles I get errors and can't save through a MARs enabled connection. (love to hear if you have different luck)

Creating a Partner + Profile
// need to do this through a single threaded connection - no MARS
        private static void createProfile(string partnerName)
        {
            partnerName += DateTime.Now.ToString("yyyyMMdd-hhmmss") + (new Random().Next(0, 65535));
            Console.WriteLine("Writing a new Profile for {0}", partnerName);

            var builder = new SqlConnectionStringBuilder("DATA SOURCE=localhost;Initial Catalog=BizTalkDB;Integrated Security=SSPI");
            var tmpCtx = TpmContext.Create(builder);
            var ptr = tmpCtx.CreatePartner(partnerName);
            var pname = "Breeze Profile-#" + DateTime.Now.ToString("yyyyMMdd-hhmmss") + (new Random().Next(0, 65535));
            var bp = ptr.CreateBusinessProfile(pname);
            bp.Description = "Created from Code";
            var pcol = new AS2ProtocolSettings("BreezeProtocolSettings");
            bp.AddProtocolSettings(pcol);
            tmpCtx.SaveChanges();
            tmpCtx.Dispose();
            
        }
And that's pretty much all there is to it folks, have a play around with the APIs for yourself - all undocumented of course.

Here's the Console App Solution I use (built for very demo purposes)

TPM API Demo.zip (32 KB)

Enjoy Mick!
Tuesday, May 22, 2012 2:45:23 PM (AUS Eastern Standard Time, UTC+10:00)  #    Comments [0] -
.NET Developer | BizTalk | 2010 | 2010 R2 | Insights | Tips
# Thursday, February 23, 2012

While currently setting up a BizTalk 2010 developer machine, I’ve got to do a couple of others to do also for the team.

I figured ‘we surely can copy/clone this’ – here’s a handy link for SysPrep and we use files from the BizTalk SDK to work the magic.

http://msdn.microsoft.com/en-us/library/ee358636.aspx

Looking forward to it.

Enjoy.

Thursday, February 23, 2012 8:09:47 AM (AUS Eastern Daylight Time, UTC+11:00)  #    Comments [3] -
BizTalk | 2010 | 2010 R2 | Insights
# Thursday, January 26, 2012

Recently there’s been an update to the ‘on-premise’ AppFabric for Windows Server.

Grab the update here - http://www.microsoft.com/download/en/details.aspx?id=27115 (runs on win7, 2008, 2008R2)

What’s new

I’m in the process of updating my components, but the majority of updates seems to be around caching and performance.

http://msdn.microsoft.com/en-us/library/hh351389.aspx

 

Read-Through/Write-Behind

This allows a backend provider to be used on the cache servers to assist with retrieving and storing data to a backend, such as a database. Read-through enables the cache to "read-through" to a backend in the context of a Get request. Write-behind enables updates to cached data to be saved asynchronously to the backend. For more information, see Creating a Read-Through / Write-Behind Provider (AppFabric 1.1 Caching).

Graceful Shutdown

This is useful for moving data from a single cache hosts to rest of the servers in the cache cluster before shutting down the cache host for maintenance. This helps to prevent unexpected loss of cached data in a running cache cluster. This can be accomplished with the Graceful parameter of the Stop-CacheHost Windows PowerShell command.

Domain Accounts

In addition to running the AppFabric Caching Service with the NETWORK SERVICE account, you can now run the service as a domain account. For more information, see Change the Caching Service Account (AppFabric 1.1 Caching).

New ASP.NET Session State and Output Caching Provider

New ASP.NET session state and output caching providers are available. The new session state provider has support for the lazy-loading of individual session state items using AppFabric Caching as a backing store. This makes sites that have a mix of small and large session state data more efficient, because pages that don't need large session state items won't incur the cost of sending this data over the network. For more information, see Using the ASP.NET 4 Caching Providers for AppFabric 1.1.

Compression

You can now enable compression for cache clients. For more information, see Application Configuration Settings (AppFabric 1.1 Caching).

Multiple Cache Client Application Configuration Sections

A new dataCacheClients section is available that allows you to specify multiple named dataCacheClient sections in an application configuration file. You can then programmatically specify which group of cache client settings to use at runtime. For more information, see Application Configuration Settings (AppFabric 1.1 Caching).

Thursday, January 26, 2012 10:14:06 AM (AUS Eastern Daylight Time, UTC+11:00)  #    Comments [0] -
.NET Developer | AppFabricServer | Azure | Integration | 2010 | 2010 R2 | Dev
# Monday, January 23, 2012

Hi folks, welcome to Monday…so I thought.

Here I was registering a message inspector which should take 5 mins tops.

Find the right config, make sure the .NET full assembly name is cool and away we go.

I wanted to use this guy from my custom WCF Adapter within BizTalk – so I needed my new message inspector to be seen by BizTalk.

So I used:

<add name="wcfMsgPropPromoter" type="Breeze.WCF.Extensions.BreezeMessagePromoteBehaviour,Breeze.WCF.Extensions,Version=1.0.0.0,Culture=neutral,PublicKeyToken=c2c8c7e827e9dd6a"/>

and added this guy to the <behaviorExtensions> element in the Machine.Config for .NET 4.0 x64/.NET 4.0 (& .NET 2.0 for good measure)

As if a scene from SpongeBob,… 3 hours later….

I had triple check GACs, caches, full assembly names etc…Scotty popped his head around and said “Oh yeah I had this one ages ago you need to use this…”

<add name="wcfMsgPropPromoter" type="Breeze.WCF.Extensions.BreezeMessagePromoteBehaviour, Breeze.WCF.Extensions, Version=1.0.0.0, Culture=neutral, PublicKeyToken=c2c8c7e827e9dd6a"/>

Can you spot the difference?

SPACES!!!!

Interestingly enough – this work is part of a .NET plugin I wrote for IIS 7.5 and to register the plugin you use “Breeze.WCF.Extensions.BreezeMessagePromoteBehaviour,Breeze.WCF.Extensions,Version=1.0.0.0,Culture=neutral,PublicKeyToken=c2c8c7e827e9dd6a"

NO SPACES!

My head hurts for a Monday…

Hopefully you reclaim the hours I’ve lost here.

Mick.

Monday, January 23, 2012 4:52:20 PM (AUS Eastern Daylight Time, UTC+11:00)  #    Comments [0] -
.NET Developer | 2010 | 2010 R2 | Dev | .NET Framework 4.5
# Tuesday, January 17, 2012

Just came across this one – Microsoft of recently released the Storage Client source code.

Could come in handy!

https://github.com/WindowsAzure/azure-sdk-for-net

Cheers,

Mick.

Tuesday, January 17, 2012 3:45:19 PM (AUS Eastern Daylight Time, UTC+11:00)  #    Comments [0] -
Azure | Integration | BizTalk | 2010 | 2010 R2
# Saturday, December 17, 2011

Well folks – the appfabric labs have come out with a real gem recently.

In CTP we have:

  • EDI + EAI processing
  • AS2 http/s endpoints
  • ‘Bridges’
  • Transforms

and of course the latest version of

  • ServcieBus, Queues and Topics.

To get the real benefit from this ‘sneak peek’ there’s a bit of setup required. To those familiar with BizTalk there’s a few EDI screens declaring parties/partners and agreements you’ll have seen before.

To get cracking:

  1. Update your local bits with the latest and greatest - Installing the Windows Azure Service Bus EAI and EDI Labs - December 2011
    Part of this install is to install the Service Bus Connect component, which installs the BizTalk 2010 LOB Adapter pack.
    image

    So this is really quite interesting. As the WCF LOB Adapter SDK provides a framework for developers to build out ‘adapters’ to connect systems/endpoints through a sync/async messaging pattern.

    The BizTalk Adapter Pack 2010 is the BizTalk Team set of adapters built on top of the WCF Adapter Framework. The BizTalk Adapter pack includes:
    - SQL Server Adapter. Hi performance sql work, notifications, async reads, writes etc.
    - SAP Adapter – uses the SAP Client APIs (under the hood) to talk directly to SAP. Very powerful
    - SIEBEL Adapter
    - Oracle DB Adapter
    - Oracle ES Adapter

    These adapters are exposed as ‘WCF Bindings’ with BizTalk or a small amount of code, allows you to expose these adapters as callable WCF Services.

    What does this mean in our case here?
    If you think about your on-premise Oracle system, we now have a local means of accessing Oracle and we can then push the message processing (e.g. a new order arrived) into our ‘cloud’ bridge where we have the immediate benefit of HA + Scale. Do some work there, and spit the result out any which way you want. Maybe back down to on-premise, or in a Queue or to Azure Storage.

  2. Sign up to AppFabricLabs – http://portal.appfabriclabs.com and provision your ‘servicebus’ service.
    This provides your EDI/EAI relay endpoints and also provides a way for you to listen/send requests to/from the cloud.
  3. Here I have used mickservices as my ServiceBus namespace.
    image
    (I created a Queue and a couple of Topics for later use – not really needed here)
    Note: grab your HIDDEN KEY details from here – owner + <key#>
  4. From within the Portal Create a Queue called samples/gettingstarted/queueorders

    image
  5. Register at the EDI Portalhttp://edi.appfabriclabs.com
    Even though this says ‘EDI’ think of it as your sandpit. It’s where all your ‘widgets’ live that are to run in Azure Integration Services.

    The registration form had me stumped for a little bit. Here’s the details that work.

    image

    Notice my servicebus namespace – just the first word. I previously had the whole thing, then variations of it.
    Issuer Name: owner
    Issuer secret: <the hidden key from above>

    Click save/register and you should be good here.
  6. Once this is done – click on Settings –> AS2 and Enable AS2 message processing (which is EDI/HTTP – you might be lucky enough to get the msgs as XML, but most times no). This will create some endpoints for you b2bgateway… style endpoints.

    image
  7. At this stage, have a look under Resources and you’ll notice that it’s empty. But…they have Schemas, Transforms and Certificates. We’ll come back to that later.
  8. Let’s head to Visual Studio 2010 with the updates installed and open up the Sample Order Processing project.

    I installed my samples under c:\samples
    image

    If all opens well you should see:
    image

    Note: there’s a couple of new items here: (expand out artifacts)
    *.bcs – Bridge. There’s a MSDN Article describing these – I was like ‘what???’. Basically these are a ‘processing pipe’ of which various operations can be performed on a message in stages. These stages are ‘atomic’ and they also have ‘conditions’ as to whether they *need* to be applied to the said message. So a bridge could take a message, convert it to XML and broadcast the message out to a Topic.

    Opening up the designer – it gets pretty cool I must say!!!

    image
    Note the ‘operations’ on the LHS. I must have a play with these guys Smile 
    Another thought – how extensible is this? I’d bet we could write our own widgets to throw on the design surface as well.

    By double clicking on the BridgeOrders component, you can see the designer surface come up with the ‘stage processing’.

    image

    Here you can see the ‘bridge’ (I wonder if that term will last till the release) will accept only 2 types of message schemas – PO1 + PO2. Maps them out to a more generic PO format.
    The map – XMLTransform from my initial testing only applies one map, the first one that matches the source schema (this is the same as BizTalk).

    Close the bridge view down and leave the BridgeConfiguration open.
  9. Click anywhere on the white surface of the BridgeConfiguration and set your Service Namespace property from the Properties window (this guy was hard to find!!)
    Put <your service namespace> you created originally.
    image
  10. Save and click Deploy and a Deployment window comes up – put your details in from above.
    image

    After deployment completes, keep an eye on the Output window as this has all the URLs you’ll need for the next step. In particular the BridgeOrders.

    Feel free to go back to your Azure Portal –> Resources and see your deployed bits in there, Schemas, Transforms etc.

  11. Running what you’ve built – sending a message to the ‘bridge’ (here I’ve borrowed info from the ‘Readme.html’ in the sample project folder)
    We don’t need to setup the whole EDI Trading partner piece. – just send messages to a restful endpoint – aka the bridge.
    1. From the samples folder locate the Tools\MessageSender project. (you may have to build it in VS.NET first)
    2. from a command prompt run messagesender.exe
      image

      In my case it looks like this:

      image

      Took me a little to get this originally, make sure all your VS.NET stuff is deployed properly.

      So effectively we have sent PO1.xml to our ‘Bridge’ and it’s been accepted, validated and transformed into ‘something else’ and popped onto a Queue called Samples/gettingstarted/QueueOrders.

      We will now get the message Reader to Read it.
  12. From under the Samples\Tools folder locate the MessageReceiver project and build if required.
  13. From a command prompt at that location, run the following to Listen to the queue

    image






Wrapping up -

Here is obviously a quick walk through of what’s possible, performance, scale and throughput are other measures that we haven’t got here – given it’s CTP/Labs we’re not quite ready for that conversation.

BizTalk adapter pack will expose out for e.g. your SAP system to a wider audience and imagine having restful WCF services to call that provide you customer data in the format you want…or better still…deliver it straight to you!
(currently in BTS 2010, the adapter pack is licensed separately, it’s part of BTS standard or enterprise. BTS2009 it *was* licensed separately for RRP $5K. Maybe we’ll see this as a separate component again.)
Or you could do like the SharePoint team and write a brand new WCF Adapter (‘connector’ in their terms) – ‘Duet’ and spend 18 months doing so.

Some things I’d like to see here is a Rules Processor or Engine – being a long long BizTalk fan, the rules engine is a massive strength of any loosely coupled solution. The majority of BizTalk solutions I come across don’t employ any rules engines…or better still, Windows Workflow 2,3+ (but not 4 or 4.5) has a rules ‘executor’ which is very powerful in it’s own right. Who’s heard or used the Policy shape?

Given that this is a sneak peak at what is on the horizon, this is definitely a space not to miss.

Get those trial accounts going and enjoy!

In particular I’d like to call out Rick’s Article (well done Rick!) for a great read on this space also.

Mick.

Saturday, December 17, 2011 10:08:00 PM (AUS Eastern Daylight Time, UTC+11:00)  #    Comments [0] -
Async | BizTalk | 2010 R2 | BizTalk Adapter Pack | SAP
# Friday, December 09, 2011
Friday, December 09, 2011 10:57:40 AM (AUS Eastern Daylight Time, UTC+11:00)  #    Comments [0] -
BizTalk | 2010 | 2010 R2
Archive
<August 2014>
SunMonTueWedThuFriSat
272829303112
3456789
10111213141516
17181920212223
24252627282930
31123456
Blogroll
 AppFabric CAT
AppFabric Windows Server Customer Advisory Team - New Blog.
[Feed] BizTalk 2006 - Windows SharePoint Services adapter
BizTalk 2006 Sharepoint adapter!!
 Breeze SharePoint 2010 Bootcamp
Breeze SharePoint 2010 Bootcamp
[Feed] BTS 2006 R2/EDI
[Feed] Chris Vidotto (MS BTS Legend)
Needs no intro....
 Mark Daunt
BTS/SPS/.NET GURU!!!
About the author/Disclaimer

Disclaimer
The opinions expressed herein are my own personal opinions and do not represent my employer's view in any way.

© Copyright 2014
Breeze
Sign In
Statistics
Total Posts: 603
This Year: 7
This Month: 0
This Week: 0
Comments: 270
All Content © 2014, Breeze