PipelineTesting Acknowledgements

PipelineTesting Acknowledgements

This morning I announced the release of PipelineTesting v1.2.0.0.

Now I need to mention that for this release, I need to give a huge %u00a1Thank You! to
the people who contributed to it by reporting bugs and potential problems, providing
some great feature suggestions and even some code!

These are:

  1. Bram Veldhoen
  2. Fr%u00e9d%u00e9ric Hautecoeur
  3. Mark Coleman
  4. GokulRaja Dhamodaran
  5. Gregory Van de Wiele, as always :-)

Bram has also been working on some really cool stuff to integrate PipelineTesting
features with BizUnit!

A huge thanks to each and everyone of you. And please keep the suggestions and bug
reports coming :-)

EDI Logger Emailing functionality and Subject Line Macros

Requests have come in to allow the ability to email directly from the logging mechanism. I have added the new properties to the pipeline component.

You can send this out to multiple individuals with a semicolon (;) separating the addresses in the ToAddress field.

The NotificationFlag is set to true to activate the email mechanism. If the NotifyOnlyOnError is set to true, if the message is in error it will generate an email, if it is set to false, it will generate an email for every transaction.

To give the ability to customize the subject line in the new email component of the EDI logger, you can use following macros:

Macro
%Received Filename%
%Adapter Receive Complete Time%
%Port Name%
%Inbound Transport Location%
%Message Type%
%GS02%
%GS03%
%GS07%
%GS08%
%GS01%
%ISA05%
%ISA06%
%ISA07%
%ISA08%
%ISA15%
%ISA Segment%
%GS Segment%
%Party Name%
%Transmission Id%
%Control Number%
%Error Flag%
%ST02%
%Count 1%
%Count 2%
%Count 3%

Which will create an email that looks like this:

How To Create a Portable Office (Computing)

Laptop

What makes a great laptop for a mobile office?  Well I can give some guidelines, and assume I’m talking to a group of developers, but in the end that is up to you.  Some things you need to remember:

  • Extensibility – Does your laptop have an expansion bay which can be used to swap in new hard disks, optical disks and/or batteries?
  • USB Ports – I’ve yet to meet a laptop with “too many” USB ports.  Mine has 4, and I run out quite regularly.
  • Big screen – This is a desktop replacement machine, don’t go for light, go for powerful and comfortable to type on and while you’re at it, get a good resolution screen because you’ve got the real estate to do it with.
  • Express Card – Express card slots are where are new plug-in peripherals that aren’t USB are being developed for.  Make sure you’ve got one of these.
  • PCMCIA – If you can still have a PCMCIA port, great because there are a ton of legacy laptop gizmos which can use this port.
  • Firewire – While not as big in the Windows world, a lot of the video cameras in this world only talk Firewire.  Usually labeled IEEE 1394, you want to make sure you’ve got one of these.
  • Multi-Core – Non negotiable it must be at least 2 cores, preferably 4 core once Intel gets their mobile quad core CPUs available.
  • Memory – Max out your memory, there is just no reason not to.
  • Video – If you’re getting it yourself, max out the video card.  You likely will not win this argument with corporate IT though unless you happen to have a job that has intensive graphics like a designer.

Now that is not the end all be all of laptop features.  Remember things that are important to your job, my father works with devices that require a parallel port to communicate with on a regular basis and that is becoming increasingly rare these days, so that is a feature he has to shop for specifically.  Get the pointing device that least drives you crazy, whatever that is.  Personally I love the “nib” style pointer, but I recognize that doesn’t work for everyone.  The Dell Latitude D-820 which Sogeti provides me is an excellent device, and happens to have both nib and touch pad.  The only thing I’d change about my unit is that I’d prefer if it had a Bluetooth transceiver built into it.

Mouse

Everyone has opinions about pointing devices, but I love the Microsoft Wireless Presenter Mouse 8000.  This is a gorgeous Bluetooth mouse with built in presenter controls, media controls, laser pointer, etc.  None of this gets in the way of the operation of the four buttons or tilting scroll wheel (so you can scroll horizontally).  It runs on 2 AAA batteries, but will last months on those even with daily use.  I’ve had one for nearly 2 years, love the protective case it comes with, and have just bought my second one so I can have a backup in case the current one dies. (The media controls, and presenter controls, are on the bottom of the mouse, it flips over and disables the top buttons when in presenter mode).

Sometimes though I’m an idiot, I grab my laptop and run to a meeting only to discover my presenter mouse is back on my desk.  Rather than suffer with even a nib, which is still inferior to a mouse, I now get to reach for my PCMCIA port and pull out the MoGo Mouse that was part of the MVP Award gift pack for 2009.  One photo won’t do this ingenious little gizmo justice, so go check out MoGoMouse.com and check it out.

Storage

There is no such thing as enough storage. Period. Full Stop.  I carry over a terrabyte of storage in my backpack, and have occasionally still wanted for more (for short periods) when I’ve been bad and not rolled off temporary data that I should have.  My portable storage plan takes two parts, the first is a hard drive expansion slot for my Dell’s MediaBay slot.  This is proprietary, but there are third party trays you can get which will slide in and let you put in your own hard disk.  I use this disk for all my virtual machines.  Worthy of note, you can also boot to this disk, so if you’ve got a Dell from work with lots of OS/Domain restrictions, you could install another OS on the other drive so you could re-purpose the hardware when you’re not at work or if you need to run another Operating System for work reasons.

For everything else I use Western Digital Passport drives.  These units can be acquired in large capacities, mine are 250gb, and I carry a pair of them.  They store my ISO library of software, my baseline VPC images (the Dell HD has the working copies), a home music library backup when I want more than I keep on my hard disk, etc.

Cables & Hubs

There are other things you’ll need besides this, the first of which is cables.  Almost nothing I carry has its default cables with them unless those cables are proprietary (which is a mark against a device).  I carry a large number of ZipLinq cables though.  These wonderful self-retracting cables allow me to avoid the backpack becoming a jumble of cables, and yet connect to all sorts of things.  I carry multiple USB-to-USBmini cables, USBa-to-USBb, headphone extender, 1/8″-to-1/8″, Firewire,  and generic USB extender cables.  All inside just one of my bags, with my hard drives and of course… a USB hub.

Screencast: Running workflows in your .NET applications

Screencast: Running workflows in your .NET applications

My latest screencast is up on the Endpoint.tv show on Channel 9.  In this screencast I cover the basic steps to host workflows in your applications.  I cover the basic hosting steps in a console application, then jump in and run a workflow in an ASP.NET application. 

Screencasts: Running Workflows in your NET Applications

 

RunningWFInNetApps

 

Previous screencasts:

 

RSS feed of all screencasts in the series

Screencasts – Running Workflows in your .NET App

These last two weeks represent a shift in Endpoint WF/WCF Developer Screencast series. The first four screencasts in the series concentrated on Windows Communication Foundation (WCF) development; we will now focus on Windows Workflow Foundation (WF) for four screencasts. We will then alternate back and forth every four screencasts.

This week, CSD Matt Milner from PluralSight guides you through how to run a WF workflow in your .NET application and how to manage it. The screencast picks up with an existing state machine workflow (created in last week’s screencast), hosting it within a .NET program. Matt of course starts off using a simple command-line program (every first WF demo loves using command line programs) and into then a basic ASP.net webpage (hats off to Matt for diving into an ASPX page).

To host for the workflow, Matt sets up a workflow runtime and creates an instance of the workflow. We then move on from simple ‘create and run one workflow instance model’, and use a class to abstract the details of the runtime and mediate access to the runtime object (to start/create a new workflow instance, access a currently existing instance, and to stop/shutdown an existing instance). Along the way, Matt explains the basic concepts around workflow runtime events and introduces workflow instances.

 

As mentioned above, the WF screencasts are a weekly series of Channel9 videos done in conjunction with the folks at PluralSight to help developers new to WF/WCF see how the technology is used. It’s worth noting that Aaron and the PluralSight folks are now offering online training courses (in a format similar to these screencasts) as a compliment to their catalog of instructor-led training courses covering Microsoft connected systems technologies. Their training topics range from .NET v3.5 (including an excellent WF/WCF Double Feature course) to WSS to BizTalk server.

PipelineTesting v1.2.0.0 Released

I’m happy to announce a new release of my PipelineTesting library!

PipelineTesting is used alongside your favorite Unit Testing tool to make it easier
to create and test custom pipeline components, pipelines and schemas for BizTalk Server
2006 using Test-Driven Development, or simply to have a set of regression tests to
detect bugs arising from code changes.

These are the most important new features introduced in this version:

  1. Per-Instance
    Pipeline Configuration
    : You can now load an XML file with modified settings into
    a pipeline instance. This relies on the same XML format used by the BizTalk 2006 Administration
    Console.

  2. Accessible
    Components
    : A new GetComponent() method gives you access to the individual
    components within the pipeline. This makes it easy to load an existing compiled pipeline
    and then manually tweak the component options through code before executing it.

  3. Loading
    Saved Messages
    : Allows you to recreate an entire IBaseMessage object
    from the set of files exported by the BizTalk Admin Console or HAT by calling MessageHelper.LoadMessage() and
    providing the path to the exported <msg>_context.xml file.

The best news, however, is that I’ve been working on putting together existing PipelineTesting
documentation I had previously written in different blog posts, along with documentation
on this new features into a single, consolidated location. I give you the PipelineTesting
Wiki
!

This should make it easier for people to get started using the library.

Yu will find a snapshot of the code and a pre-built binary in the usual
location, and always current source code in the GitHub
repo
.

Software in the cloud: The Relay Service

I’m now back from a trip to Seattle a few weeks back where I attended a huge week-long Microsoft internal technical training event.  I presented three times during the week, two of the presentations were “Software in the cloud” sessions which received fantastic feedback.


The premise of these sessions was to paint a view of how software solutions may look in the future if they were to leverage cloud based services such as SQL Server Data Services (SSDS) and BizTalk Services (Cloud Workflow, Identity and Connectivity).


I presented a fictional but realistic architecture using today’s technologies and discussed the challenges, I then presented a forward view on how you might approach the same problem using cloud based technologies and how this solves a number of challenges today and opens up completely new opportunities which for the most part aren’t possible today.


I’m going to present this scenario and the resulting solution in a series of blog posts, this being the first.


Before we get started I want to introduce the BizTalk Services Relay which by itself is incredibly powerful but often overlooked.  There is an SDK to download and play with via http://www.biztalk.net


So, if I have a Service offering today, say Credit Scoring functionality, it’s hard to enable business partners to invoke this service, especially if your organisation doesn’t host things out on the internet regularly. 


You’ve got any number of options generally involving any combination of leased lines, VPNs, proxy configuration, etc.  The key point here is that you must put in infrastructure and/or specific configuration for each business partner that wishes to leverage your service, and of course vice versa, each business partner will have to do the same to enable messages to pass out of their corporate boundary.


So, imagine a technology that enabled you to avoid all of this infrastructure/configuration whilst still maintaining security and integrity of messages passing between the organisations?


This is where the Relay comes into play; the first step is for your WCF service to register it’s endpoint with the cloud based relay service, a valid BizTalk Services account will be required to register an endpoint under the users namespace.  This step is shown below as step number 1.


The endpoint address will use a specific “service bus” prefix, e.g: sb://connect.biztalk.net/services/darrenj/OrderService/



Once an endpoint has been registered with the relay service it must be kept alive otherwise the socket could of course timeout.  This is done through a series of “ping” messages automatically passed under the covers between the relay service and the endpoint.


Once an endpoint is registered a client can then invoke the service, within Visual Studio you can simply type in the sb:// prefixed address via the usual Add Service Reference dialog and the proxy will be automatically created and configured – neat!


The proxy can then use the contract as usual, once invoked the message will be passed to the endpoint registered in the cloud (shown as number 3 in the diagram above) which will in-turn pass the message on to the service (shown as number 4 in the diagram above), the reverse then happens with the response (shown as number 4 in the diagram above).


In essence this is a straight forward message relay pattern with all messages passing via the relay, enabling two parties to exchange messages where they otherwise wouldn’t have been able to.


This works fine, but it would be nicer (and probably quicker) if we could enable both parties to communicate directly but the firewalls won’t allow this.  However the relay service knows quite a bit about the two parties.


When the service registered itself with the relay, the relay can see which dynamic port number the hosting organisation’s firewall is using for this communication session.  When a client communicates with the relay, the relay can again see the dynamic port number being used.


By sharing the port numbers with each party the relay can effectively step out of the way and enable both parties to communicate with each other after this initial port handshaking, this is depicted below and is explained in better detail in this great article



This process is called NAT traversal and is used by many things today including MSN Messenger, Groove, Skype, etc.  Some firewalls may not allow NAT traversal at which point the relay will fall back to the original relay pattern.   As long as both parties can see the internet and therefore the relay service then we’re in business!


This is a big step forward from today where you have to provision and configure network infrastructure such as Proxies, Firewalls, Private Network Links, VPNs, etc. whenever you wish to expose invoke services between organisations.


With this relay service you can break down your corporate barriers to communicate across organisations and through the relay you can also utilise non-durable publish/subscribe messaging effectively publishing business “events” which others can subscribe to.


So how about security?  Firewalls are there for a reason and you typically aren’t allowed to punch holes through them.  Access to any services exposed through the relay is restricted through the BizTalk Services provided implementation of a Security Token Service (STS) and messages can be secured as you require using encryption of the payload and digital signatures.


So, it must be hard to host a service through the relay?  Well not really, it’s just a bit of WCF configuration on your service an example of which is shown below:


<system.serviceModel>


 


  <bindings>   


    <relayBinding>


      <binding name=default allowBrowsing=true sendTimeout=01:00:00 


               connectionMode=RelayedDuplexSession>


      </binding>


    </relayBinding>


  </bindings>


 


  <!– Service endpoint using the BizTalk Services relay –>


  <endpoint


    address=“”


    binding=relayBinding


    contract=PaymentService.IPayment


    behaviorConfiguration=relayBehavior


    bindingConfiguration=default/>


  <behaviors>


    <endpointBehaviors>


      <behavior name=relayBehavior>


        <transportClientEndpointBehavior credentialType=UserNamePassword>


          <clientCredentials>


            <userNamePassword userName=USERNAME password=PASSWORD/>


          </clientCredentials>


        </transportClientEndpointBehavior>


      </behavior>


    </endpointBehaviors>


  </behaviors>


</system.serviceModel>


You don’t need to include the custom endpointBehavior in all cases, if you don’t then CardSpace will pop up to authenticate you and validate that you have permission to register a service at the specified endpoint – not ideal for non-interactive services J


Hopefully that’s given you a good flavour of what the relay service can do, it’s a fantastic piece of technology and opens up the opportunity to break down the enterprise SOA barriers whereby your services can only be consumed or exposed within your corporate boundaries.


To my mind, this opens up some great new opportunities for solutions moving forward, as we’ll see in my next few blog posts J

Brian’s Travel Blog: Jordan

OK, keeping with the recent theme, here’s another entry in my travel blog 🙂 Very soon I will get back to technical posts, I have some pent-up ones waiting to be written, some about BizTalk and some about Oslo, so stay tuned!

We recently completed the design/planning stage for the Jordanian government ESB project. It has been an honor to work with such a talented team, and as part of the planning process we did a non-trivial amount of development, solving some very tough problems along the way. I made several trips to Amman over the past year, and took full advantage of being there by seeing as much as I could of the country in the time I had. I have been saying that I have seen more of Jordan than most Jordanians have. A Jordanian challenged me on that, and I started listing off some of the things I’d done, and…. well…. it sounded like a blog post, particularly when he agreed that he had not seen many of these places 🙂 It’s was quite difficult for me to pick “high points”, as I thoroughly enjoyed the opportunity to see the country and region. However, I did it, and here is my list (photos below) of “do this if you go” for Jordan:

Petra Voted in last year as one of the new seven wonders of the world, the “rose red city carved out of the mountains”. I went there twice, once alone and once with my wife. Truly an amazing place, and well deserving of the title. However, with the new recognition comes more tourists, there were definitely more people there this year than last year.
Wadi Mujib preserve I did something like this in Utah a few years back, and it was called canyoneering. Basically, an all-day hike through the desert, much of it in a river (sometimes deep) the high point of which was rappelling down a 75 foot (25 meter) waterfall. An incredible experience.
Aqaba, and how I got there Aqaba is at the south end of Jordan, and is a major economic zone/shipping port on the Red Sea. I heard there was a locals bus that went down there, so I did the 5 hour trip that way. I was the only North American (and non-Arab) on the bus, it was a unique experience, one that I suspect would have made many North Americans feel uncomfortable, but as I enjoy “going local” and being outside my comfort zone, and this experience certainly did both.

The reason I went to Aqaba was to see it, and to also do my first scuba diving in the Red Sea.

Irbid, Um Quais and Jerrash This was a tour of northern Jordan, and some amazing Roman ruins (Jerrash was a major/important Roman city, and is one of the largest and most well preserved sites of Roman architecture in the world outside Italy)
Dead Sea I actually got there three times, once to see it, another time it was my “base camp” for the Wadi Mujib hike, and then I stopped there with my wife so she could experience floating ON the water. If you go, be really careful not to swallow any of the water or get it in your eyes. It’s about as pleasant as swallowing an acid.

On my first trip, I did a side trip to see the Christ baptism site, with is about a half-hour away from the hotel area. While there, I could have literally jumped across the Jordan river and been in Israel, but the proliferation of guys with machine guns made me think that could be a Bad Idea.

Wadi Rum This is the desert where Lawrence of Arabia was filmed. I hired a private guide and we 4-wheeled throughout the desert, rode a camel, spent the night in a Bedouin encampment, etc. I learned a lot about their lifestyles and history, and, being a desert person, felt right at home.
Amman Citadel More impressive ruins, and a great antiquities museum. I spent a ton of time in the museum, as they had some impressive artifacts/explanations.

I was there the day before Barack Obama came, and it actually went into security lockdown while I was there. People inside could stay, but nobody else was allowed in. Security (army I think) was posted every 30 feet.

The Jordanian people themselves were awesome. I had heard before going there that most Jordanians speak English, and those that don’t will still invite you into their homes for tea. I found them to be very kind, generous and helpful. The only possible exception to this is the taxi drivers who always seem ready to play “shaft the tourist”, however, once I got the hang of how to deal and they saw I was a pseudo-local who knew how to play the game, they got more pleasant. Also, as I just recently found out, the Jordanian taxi drivers are really laid back and friendly compared to what I saw in Egypt!

I have a bazillion pictures of everything I did, here are some of the highpoints:

From Wadi Rum:

From the Amman Citadel

From Jerrash:

From Umm Qays, the middle photo shows the Golan Heights behind me, with Syria just to my left:

I had to work on my TechEd presentation one weekend, which sucked, but hey, if you HAVE to work a weekend, then why not do it at a really nice hotel on the Dead Sea? The first picture is that weekend, the others are from another visit to the area.

Pictures from Petra:

From Wadi Mujib:

Lastly, in case you were wondering about American cultural exports, you can find things like the Colbert Report, the Daily Show and Family Guy in Jordan. Here’s Jon Stewart, with Arabic subtitles:

Technorati Tags: Travel,Jordan,Middle East

Screencast: Your first state machine workflow

Screencast: Your first state machine workflow

In the latest screencast in the ongoing series, I cover the basics of creating a state machine workflow. I show you the various activities to use, how to transition between states and handle events including time based events. 

Screencast: Creating Your First State Machine Workflow

 

First state machine workflow

 

Previous screencasts in the series:

 

RSS feed for all screencast posts