Screencast: Using the Replicator activity

Screencast: Using the Replicator activity

My latest screencast in the Windows WF developer screencast series has been loaded up.  In this session, I go into detail about how to use one of the more powerful control flow activities in the framework.  I show how to use data to drive control flow with the replicator, how to control the execution style and how to use rules to control when execution should complete.   In addition, I show how to use code to initialize child activities before they are executed. 

Pluralsight Screencast – Using the Replicator activity in Windows WF

 

wf-replicator

 

Previous screencasts in this series can be found on the screencast section of the Pluralsight website. You will also find short screen casts on other technologies both current (e.g. WCF) and future ("Oslo") on this page.

Screencast: Working with Tracking Profiles in Windows WF

Screencast: Working with Tracking Profiles in Windows WF

My latest screencast in the Windows WF developer screencast series has been loaded up.  In this session, I follow up on my previous screencast where I covered using SQL Tracking Services and dive into how Tracking Profiles work and how you can create them in code. I also showcase a couple of sample applications from the Windows SDK that allow you to visually create tracking profiles and then monitor a workflow using tracking data and the visual designer.   

Pluralsight Screencast – Working with Tracking Profiles in Windows WF

 

wf-tracking-profiles 

 

Previous screencasts in this series can be found on the screencast section of the Pluralsight website. You will also find short screen casts on other technologies both current (e.g. WCF) and future ("Oslo") on this page.

Speaking at VSLive! San Francisco on Feb 25-26

Speaking at VSLive! San Francisco on Feb 25-26

I will be speaking at VSLive! San Francisco at the end of February, specifically on the 25th and 26th. I'm presenting the following sessions:

VSLLogo_SFDates (2)

Blog readers may utilize a unique promo code (NS9F08) to receive $500 off of the standard pricing for the VSLive! PLUS package.  There is no deadline for his offer.  Simply browse to http://vslive.com/2009/sf to get started. Hope to see you there.

You can follow the VSLive! SF action on Twitter at http://twitter.com/VSLiveSF as well as on Facebook.

BizTalk 2006 R2 Exam available – 70-241

BizTalk 2006 R2 Exam available – 70-241

Certification for BizTalk Server 2006 R2 is available, at http://www.microsoft.com/learning/en/us/Exams/70-241.aspx

Apparently it came out last October…..anyone done it? let’s go there!

I’ll post back shortly and let you know how I went…. 🙂

Exam details…

Overview


This exam is intended for candidates developing business solutions using Microsoft
BizTalk Server 2006 R2.

Audience Profile

A candidate for this exam will have experience developing, deploying, and testing
Microsoft BizTalk Server 2006 solutions across multiple real-world projects. 
The candidate should have a solid understanding of fundamental BizTalk concepts and
familiarity with extended R2 capabilities.

The candidate should also have experience using the Microsoft .NET Framework, XML,
Microsoft Visual Studio, Microsoft SQL Server, Web Services, and Windows Communication
Foundation (WCF) while developing BizTalk integration solutions.

When you pass Exam 70-241: TS: Developing Business Process and Integration Solutions
by Using Microsoft BizTalk Server 2006 R2, you complete the requirements for the following
certification(s):MCTS: BizTalk Server 2006 R2
Exam 70-241: TS: Developing Business Process and Integration Solutions by Using Microsoft
BizTalk Server 2006 R2: counts as credit toward the following certification(s):

Note This preparation guide is subject to change at any time without prior
notice and at the sole discretion of Microsoft. Microsoft exams might include adaptive
testing technology and simulation items. Microsoft does not identify the format in
which exams are presented. Please use this preparation guide to prepare for the exam,
regardless of its format.

Skills Being MeasuredThis exam measures your ability to accomplish the technical tasks
listed below.The percentages indicate the relative weight of each major topic area
on the exam.

Configuring a Messaging Architecture

  • Set up and manage ports.

    This objective may include but is not limited to: add a map, ordered delivery, send
    ports, send port groups, starting vs. enlisting, receive ports, receive locations,
    subscriptions

  • Plan for and implement secure messaging.

    This objective may include but is not limited to: certificates, signing, encryption,
    port authentication, encoding

  • Configure core adapters.

    This objective may include but is not limited to: HTTP, SQL, POP3, SMTP, FTP, File

  • Configure content-based routing.

    This objective may include but is not limited to: set a filter that uses a   
    promoted property

  • Implement messaging patterns.

    This objective may include but is not limited to: normalizing/canonical messages,
    splitter, large messages

Developing BizTalk Artifacts

  • Create schemas.

    This objective may include but is not limited to: create a flat-file schema, create
    a property schema, enveloping, promoted/distinguished properties, MessageType, schema
    re-use (import/include)

  • Create maps.

    This objective may include but is not limited to: functoid scripting, XSLT, pass a
    parameter to a map, multiple schemas, looping

  • Create pipelines.

    This objective may include but is not limited to: disassembling, create a custom pipeline,
    create a pipeline component, XML validation

  • Develop orchestrations.

    This objective may include but is not limited to: work with transactions and persistence,
    integrate with Microsoft .NET assemblies, parameters, shapes

  • Configure orchestration bindings.

    This objective may include but is not limited to: direct, dynamic, self correlating

  • Configure correlation.

    This objective may include but is not limited to: listener shape, parallel shape,
    correlation sets

  • Construct messages.

    This objective may include but is not limited to: multi-part, untyped, construct messages
    in .NET, construct messages in orchestrations, context properties

  • Implement orchestration patterns.

    This objective may include but is not limited to: convoys, aggregator, splitter

Debugging and Exception Handling

  • Handle exceptions in orchestrations.

    This objective may include but is not limited to: compensation, scope shapes, throw
    exceptions, long-running transactions

  • Route errors.

    This objective may include but is not limited to: port configuration, recoverable
    interchange

  • Debug orchestrations

  • Validate and test artifacts.

    This objective may include but is not limited to: schemas, maps, pipelines

Integrating Web Services and Windows Communication Foundation (WCF) Services

  • Configure a WCF adapter.

    This objective may include but is not limited to: WS*, custom bindings

  • Expose orchestrations by using publishing wizards.

  • Consume services.

    This objective may include but is not limited to: Web port type, add a Web/Service
    reference, consuming from orchestrations or pure messaging

  • Handle Web exceptions.

    This objective may include but is not limited to: delivery notifications, catching
    SOAP exceptions

Implementing Extended Capabilities

  • Create and deploy Business Rules Engine (BRE) components.

    This objective may include but is not limited to: work with the Business Rules Composer,
    deploy Business Rules policies, call from an orchestration, develop vocabularies

  • Develop EDI solutions.

    This objective may include but is not limited to: trading partner setup, batching,
    acknowledgments, importing schemas

  • Configure AS2.

    This objective may include but is not limited to: party configurations, pipelines,
    ports, certificates

  • Implement an RFID solution.

    This objective may include but is not limited to: handle events, configure RFID devices,
    manage and configure event sink endpoints

  • Plan and implement Business Activity Monitoring (BAM).

    This objective may include but is not limited to: BAM alerts, tracking profile editor,
    BAM workbook, activities, views, deployment

Deploying, Tracking, and Supporting a BizTalk Solution

  • Install and configure a multi-server BizTalk environment.

    This objective may include but is not limited to: trusted vs. untrusted environments,
    Active Directory groups

  • Deploy BizTalk applications.

    This objective may include but is not limited to: MSI deployment, versioning, resources,
    multiple staging environments such as development, test, and production

  • Partition a BizTalk solution.

    This objective may include but is not limited to: hosts, host instances, handlers,
    groups, multiple message boxes

  • Export and import binding files

  • Configure tracking.

    This objective may include but is not limited to: orchestrations, schemas, ports,
    pipelines, policies

  • Manage BizTalk solutions by using the Administration Console.

    This objective may include but is not limited to: query for instances, terminate,
    resume

  • Audit BizTalk solutions by using Health and Activity Tracking (HAT).

    This objective may include but is not limited to: querying, saving messages, creating
    custom fields, policy execution

Essential SharePoint Developer Tool: SPDisposeCheck

Essential SharePoint Developer Tool: SPDisposeCheck

[Via Paul Andrew] Now here is a must have tool for every SharePoint developer that wants to make sure that his code isn’t causing any nasty memory leaks due to forgotten Dispose calls (typically on the SPSite and SPWeb instances)! The SPDisposeCheck utility can actually review a compiled assembly and tell you if there are any forgotten Dispose calls, so you can even check third party assemblies. But remember, it’s a tool: nothing beats a full code review, but it certainly speeds up the process.

Get the detail’s on Paul’s blog: SPDisposeCheck is a tool to help SharePoint Developers follow memory management best practices when using the SharePoint API with IDisposable objects including SPSite and SPWeb. This tool is not supported by Microsoft and is recommended to be used on Developer workstations and not on production SharePoint Server installations.

Download from http://code.msdn.microsoft.com/SPDisposeCheck.

BizTalk 2006 R2 X12 EDI Batching

BizTalk 2006 R2 X12 EDI Batching

I had a requirement to extract several thousand rows of X12 data from a back end database and package them up once a month into X12 EDI with a max of 5000 rows per Transaction Set and maximum 4 Transaction Sets per file. I found that there was no out of the box way to loop around each of the 5000 rows and have them batched. Additionally, if I had 3 of the 4 final transaction sets in the last batch, it wouldn’t release. Since the process only runs 1 time per month, I needed the batch to package up the final 3 transactions sets and drop them off as soon as the orchestration finishes.

Here’s what I did:

ST01 and ST02 needed to be populated, in my case I set ST01 to 837 and ST02 to 0001.

image

You’ll notice that the Microsoft.BizTalk.Edi.BatchingOrchestration.BatchingService subscribes to the following promoted properties.

image

Since my send shape was within a loop, I couldn’t simple create a correlation set and promote the properties that way. Instead I created a separate orchestration whose only function was to promote the EDI properties the Microsoft.BizTalk.Edi.BatchingOrchestration.BatchingService orchestration was looking for. The orchestration contained an input message parameter of the X12 EDI document I was sending out, with a correlation set initialized on the send shape. Here is the orchestration I named orch_PromoteEDIBatchingProperties.odx

image

My ct_EDIPropertiesToBePromoted properties:

image

My main orchestration simply called this orchestration and the messages were successfully being picked up by the Microsoft.BizTalk.Edi.BatchingOrchestration.BatchingService orchestration. Now I needed some way to release the final batch upon orchestration completion.

If you look at the properties of the BatchControlMessageRecvLoc Receive Location, you’ll notice that it executes a simple stored procedure that returns a message to release the batch. It executes the Stored Procedure edi_GetControlMessage that looks at the PAM_Control Table found in the BizTalkMgmtDb.

image

All I needed to do was to populate the PAM_Control table with a row that the stored procedure would pick up saying it needed to terminate the batch. I simply inserted the DestinationPartyID, EdiMessageType, ActionType, ActionDateTime, and UsedOnce values needed into the table and it releases the batch as soon as the sproc is executed, in this case every 30 seconds. I created a schema for a table insert and in my case inserted 15, 0, EdiBatchOverride, System.DateTime.Now, and 0 for the PAM_Control Table values. As soon as the Stored Procedure ran it flags the row as having been UsedOnce.

image

The important parts of my orchestration are shown below

image

The MessageAssignment shape has the following code.

//Instantiate your XmlDocument
xml_Temp = new System.Xml.XmlDocument();
//Load the XmlDocument with the information needed for the PAM_Control Table
xml_Temp.LoadXml(“<ns0:Request xmlns:ns0=\”PAM_Control\”><ns0:sync><ns0:after><ns0:PAM_Control DestinationParty=\”15\” EdiMessageType=\”0\” ActionType=\”EdiBatchOverride\” ActionDateTime=\””+System.DateTime.Now.ToString()+”\” UsedOnce=\”0\” /></ns0:after></ns0:sync></ns0:Request>”);
//Assign your XmlDocument to your msg_BatchControlRequest
msg_BatchControlRequest = xml_Temp;

I am planning on creating two parameterized orchestrations that will be able to be used as called orchestrations for my other projects instead of this approach that is coded within my main orchestration.

Microsoft’s Annual SOA and BP conference – SOA meets Cloud

Microsoft’s Annual SOA and BP conference – SOA meets Cloud

Today we wrapped up the 6th annual SOA and BP conference here in Redmond.  This was the 14th stop on the tour which continues around the world thru April.  Yesterday, I had the privilege of delivering the keynote to kick off the conference and took that opportunity to talk about both the last few weeks and the road ahead.


As we talk to customers around the world, it’s clear that the message on SOA being a “how” rather than a “what” is really sinking in.  Now we spend more of our time talking about extending Service Orientation than we do defining it.  I took a very non-Microsoft approach – instead of blathering on about technology, I instead spent time debunking the myths (which still pervade the space) and connecting customers with their peers to share what they have learned and best practices.


One thing that was clear from talking to customers this week is that the SOA landscape continues to evolve.  As I wrote months ago – the convergence of key technologies like Virtualization, Cloud, Modeling, SOA and SaaS continues at a rapid pace. It’s clear that cloud computing will have a significant impact on SOA moving forward.  So much so that one might argue that sooner rather than latter, the app pattern which is Service Orientation will be a given – much the same way that no one refers to Object Orientation as a “feature” of an app anymore.  Service Orientation will be the flour of the composite app cake.


While many have taken time to question Microsoft’s strategy with Service Orientation, what we have always said still rings true – it’s about web services, starting small and being pragmatic. We are taking Service Orientation (and as much Architecture as is needed to solve the problem) to the masses by making key components available directly in the .NET Framework.  Our investments in cloud computing will only help as developers will have additional options for instantiating services in a geo-scalable way. 


Thanks to all who attended and watched it live all over the world!  As always, tell us what you think

Upcoming WCF/WF training in London

Upcoming WCF/WF training in London

I'm teaching one of Pluralsight's signature Double Feature events in London the week of February 16th.  Double Features are basically two four day courses jammed into a single 5-day week (extended hours). The topics this time are WCF + WF. 

Most of the course will focus on .NET 3.x technologies but I plan to provide several "extras" during the week on .NET 4.0, .NET Services (specifically the .NET Service Bus and the .NET Workflow Service), and we'll discuss the Azure Services Platform. It won't be a dull week.

You can find the complete course outline and registration details here.

All attendees receive a year-long Pluralsight On-Demand! subscription to the online WCF/WF courses. Hope to see you there!