TFS Branching Guidance II - A peek at the latest "look and feel"

Together with Bill Heys and Ian Ceicys, the latter being responsible for the scenarios in the Branching Guidance II project, we have refined the branching diagram look and feel as follows:

image

Note that the numbers match up with the numbering in the relevant scenario documentation, i.e. the documented steps. We hope that this new, clear and less cluttered view, with references to the actual documentation, will add value to the new branching guidance document.

Your views?

Posted by willy with no comments
Filed under:

Enabling service oriented architectures (SOA) and solutions

I have just received the green light to publish one of the white papers I wrote for a SOA conference in the Middle East back in May . The document is slightly dated, but I believe that the content, the views and the guidelines are still relevant today.

Blue Man Holding a Stool and Whip While Taming a Bear, Bear Market Clipart Illustration

Please throw an eye ball at the white paper and give me some feedback on the views of SOA adoption.

You can find the white paper here, whereby the filename is BBD Enabling SOA ad Solutions.

BBD Enabling SOA and Solutions

Posted by willy with no comments
Filed under:

BizTalk - Predefined Macros that are useful when working with files

For some time I have been ploughing through documentation in search for a simple list of all predefined BizTalk macros ... have not found the consolidated list as yet, but the following post by Linglom summarises predefined macros that are very useful when defining output filenames on FILE send handlers: http://www.linglom.com/2008/06/08/biztalk-macros-on-file-send-adapter/

Clipart Illustration of a Blue Man Using All Of His Strength To Hold Up And Write With A Giant Yellow Number Two Pencil

The post defines the following macros:

  • %datetime%
  • %datetime_bts2000%
  • %datetime.tz%
  • %DestinationParty%
  • %DestinationPartyQualifier%
  • %MessageID%
  • %SourceFileName%
  • %SourceParty%
  • %SourcePartyQualifier%
  • %time%
  • %time.tz%
Posted by willy with no comments
Filed under: ,

An introduction to BizTalk 2006 by the ATC Collective ... Day 6b of many BizTalk Fridays (Automating Processes)

Continued from this morning at http://dotnet.org.za/willy/archive/2008/08/29/an-introduction-to-biztalk-2006-by-the-atc-collective-day-6a-of-many-biztalk-fridays-orchestrations.aspx.

Automating ... or should that be controlling ... Business Processes
Proud Blue Construction Worker Man in a Hardhat, Holding a Wrench Clipart Illustration

Orchestrations need to be managed, controlled and synchronised. BizTalk packs a few pieces of tools in this regard, in terms of scope, group, flow control, expression and exception shapes. Let us explore all of these 'quickly':

Scope   Organises shapes for transactional execution and exception handling, as well as maintaining variable scope. Scopes can be nested and defined as synchronized or not synchronized ... at this point we will assume you understand the difference.
Group   Used to arrange actions in an intuitive way, using it as a placeholder for future functionality or collapse a junk of stuff to remove clutter and noise from the designer views.
Flow Control If...Else... if (condition) {...} else {...}
  Delay Pause for a period or until a specific time or date.
  Listen Listen Wait for events to occur.
  Loop Repeated actions.
  Parallel Actions Parallel activities, all of which must complete before orchestration continues.
  Suspend Suspend operations, whereby administrative intervention is needed to resume.
  Terminate Eject, eject, eject ... terminate immediately.
Expression   Define an expression, such as initializations and manipulation of orchestration variables.
Throw Exception   Throw and exception and in a friendly way as the runtime engine to pass the exception to the nearest exception handler for the exception type.

Nesting Orchestrations
Clipart Illustration of Four Different Blue Men Wearing Headsets And Having A Discussion During A Phone Meeting

  • An orchestration can call another orchestration asynchronously by using the Start orchestration shape or synchronously by using the Call orchestration shape.
  • In both cases parameters can be passed, including messages, variables, port references, role links or correlation sets.

Distinguished Fields
Blue George Washington Character Clipart Illustration

Creating Expressions
Blue Man Dancing and Walking on a Piano Keyboard Clipart Illustration

  • Expressions can operate on orchestration variables, assign values to messages and message parts, assign values to dynamic ports and event call .NET assemblies.
  • Use the Expression Editor to create an expression.
  • Filter Expression example:
    clip_image006

Correlation
Blue Man Doing Different Exercises and Stretches in a Fitness Gym Clipart Illustration

  • Correlation matches an incoming message to an appropriate instance of an orchestration, for example an orchestration may receive three messages which must be processed in a specific order.

So what's next? ACID ... Transactions ... and it seems a lot more interesting stuff.

Posted by willy with no comments
Filed under: ,

An introduction to BizTalk 2006 by the ATC Collective ... Day 6a of many BizTalk Fridays (Orchestrations)

Continued from http://dotnet.org.za/willy/archive/2008/08/22/an-introduction-to-biztalk-2006-by-the-atc-collective-day-5b-of-many-biztalk-fridays-pipelines.aspx ... another BizTalk Friday begins.

Orchestrations
CLIPART_OF_12415_SM_thumb[2]

Orchestration Services and Designer make up an environment within BizTalk that allows us to model, define and save a business process, made up of multiple components, logic and rules, for compilation and use.

Some notes:

  • The Orchestration designer gives us an integrated, visual editor.

  • The BizTalk Run-Time engine executes orchestrations, creating individual instances of the business process, maintaining state, performing optimizations of running orchestrations and providing a reliable shutdown-and-recovery system.

  • Dehydration ... a term for the process of saving orchestration instance state. Idle orchestration instances are dehydrated, to make space for other orchestrations.

  • Rehydration ... a term for the process of restoring orchestration instance state.

  • BPEL ... Business Process Execution Language is an industry standard. An orchestration can be exported to BPEL, or alternatively a BPEL business process can be imported into an orchestration.
Development:
Blue Doctor Man Sitting at a Computer and Viewing an Xray of a Head Clipart Illustration

  1. Define schemas
    clip_image002

  2. Model the orchestration by adding shapes

    • Receive Shapes

      • Used to receive a message from a port, defining message and port type

      • Filter expression optional

    • Send Shapes

      • Used to send a message to a port, defining message and port type

    • Construct Message Shapes

      • Used to construct new message instance, using transform or message assignment.

    • Message Assignment Shapes
      clip_image004
      clip_image006

      • Used to assign one message to another.

    • Transform Shapes
      clip_image008
      clip_image010

      • Used to move data between two messages, using a map.
  3. Assign and/or transform data

    • Remember that messages are immutable, the same applies to messages received by orchestrations. If changes are needed, these must be done on a copy.

  4. Define send and receive ports
    clip_image012
  5. Define orchestration variables and types

  6. Bind send and receive shapes to ports

    • Orchestrations use logical send and receive ports, which can be bound to other orchestration logical ports or physical ports.

    • Logical ports can be bound with the following options:

      • Specify now

      • Specify later

      • Direct ... to another orchestration logical port ... kind of a point to point, side-stepping the MessageBox.

      • Dynamic ... defined based on a decision made in an orchestration

  7. Build, deploy and configure the orchestration
    clip_image014

  8. Test and fix

    • Group Hub is used to monitor orchestrations

    • Health and Activity Tracking (HAT) is used to debug orchestrations
Example
Blue Surgeon Man in Green Scrubs, Holding a Pen and Clipboard Clipart Illustration


clip_image016

  1. The orchestration above receives a sales order message, performs a parallel action, one a transform of sales order message to restock message and the other a message assignment from sales order message to sales order complete message. The message is received on the logical SalesOrder port and send to the logical sales order complete and restock send ports.

  2. Note that is is important to specify one of the receive shapes as the active receive shape, in this case the Sales Order receive shape. Alternatively we can invoke this orchestration by another schedule.

     

The next adventure will be automating business processes ...

 

 

Posted by willy with 1 comment(s)
Filed under: ,

ISO and IEC members give go ahead on ISO/IEC DIS 29500

Have a peek at http://www.iso.org/iso/pressrelease.htm?refid=Ref1151, which confirms that the two ISO and IEC technical boards have given the go-ahead to publish ISO/IEC DIS 29500, Information technology – Office Open XML formats, as an ISO/IEC International Standard . The appeals from Brazil, India, South-Africa and Venezuela did not find support and it seems, I hope, that the road is now clear of obstacles to publish the standard and get on with life.

Blue Man Jumping For Joy While Breaking Away From a Ball and Chain, Getting a Divorce Clipart Illustration

I must emphasise that I am not in favour of any of the standards, i.e. ODE or Office Open XML, but believe that the only way we can get maximum value from any of the formats and subsequent integration into business solutions is to have the formats published as standards. Not making them a formal standard, or delaying the publication of the standard any further, simply gives the vendors further opportunity to break the shackles and make further changes as they see fit.

Bring the vendors to the table, standardise the formats and thereby ensure that the formats are supported and more importantly maintained in the best interest of the consumer.

Happy Blue Man Partying With a Party Hat, Confetti and a Bottle of Liquor Clipart Illustration

I, for one, am happy with the decision.

Posted by willy with no comments
Filed under:

TFS 2008 Service Pack 1 - Caution with database backups!

My colleague Zayd has posted an interesting journal of a few scary hours we had when upgrading our production TFS 2008 server to service pack 1. All went well, expect that the incremental backups on TfsVersionControl database failed after the upgrade ... we made jokes like who needs the source ... at least we have the work items going forward, but within we were sweating blood. Read Zayd's journal here!

Blue Man Holding a Stool and Whip While Taming a Bull, Bull Market Clipart Illustration What is important to remember with TFS is that direct access to databases is not encouraged, as the schema is changing as per design. The only access to TFS must be via the TFS SDK and the published services. This obviously does not go down well with the support and maintenance experts who are responsible for backing up the data.

Perhaps a recommendation, that originates from an email I got from Martin Woodward (the father of Brian the Bunny) is to perform a full database backup before applying a service pack or hot fix, followed by the maintenance incremental backups. We did not perform a full database backup, as we simply copied the virtual machine files for safety, then upgraded ... if problem, roll-back to previous virtual machine files ... sounded simple and correct ... resulting in a few years of aging as we investigated the problem we experienced.

We live and learn ...

Posted by willy with 2 comment(s)
Filed under:

A quick look at TeamReview

We have briefly reviewed the TeamReview product, version 2008_1_0_6, which you can find here. The product promises the following and we quote from the TeamReview CodePlex site: "Using Work Items to facilitate the code review process creates a completely in-IDE code review experience, the ability to project-manage the code review tasks, and the opportunity to get new value from the code review process through code review forensics." end quote.

This is the journal of the evaluation.

Download and Installation

Next step is to use the product ...

Using the product

Featuring the usersLime Green Man Standing With His Hands on His Hips Clipart IllustrationHenk and         CLIPART_OF_12921_SM  Wall-E.

  1. The developer, Henk, completes a specific piece of code and creates a new task assigning it to Wall-E who in this hypothetical example is the technical lead and code reviewer.
    imageLime Green Man Standing With His Hands on His Hips Clipart Illustration
  2. Wall-E would now typically open the solution and then review the code. When finding something worth reporting, the reviewer selects the code, right clicks and selects "New Code Review Response".
    CLIPART_OF_12921_SMimage
    NOTE-1 from creators: TeamReview uses the Source Control bindings to identify the TFS project in use; which is supplied by the active solution in Visual Studio. If you simply open up a file without being within a Solution context bound to Team System source control there is no way of knowing how to connect to the proper Team System server and project in order to record new Code Review Responses or query for them using the Replay functionallity of TeamReview.
  3. Wall-E completes the Create Code Re view Response, associating it with the original work item #544 and assigning it to Henk. Note that the reviewer can add a suggested resolution and the code snippet is included as reference.
    CLIPART_OF_12921_SMimage 
    NOTE-2 from creators: The Assign to drop down should be populated with all the users in the TFS project's Project Administrators and Contributors roles. It was limited to those roles for performance reasons, because "walking the tree" when a deep or wide AD group was added to TFS permission groups would cause Visual Studio to become unresponsive during the wait period which we didn't want. To limit that unresponsive period TeamReview attempts to only show people in the roles that would, or should, be responsible for committing code.
  4. Wall-E notices a coding guideline infringement and repeats steps 2 and 3. This time the "query from", "associate with" and "assign to" are pre-populated.
    CLIPART_OF_12921_SMimage
  5. Looking at the original Task 544, we will notice two linked WI items, which are a result of the repeated steps 2-3 above. Whether the original WI 544 is reassigned to Henk, or left with Wall-E until the linked items are resolved, is dependent on your process.
    image
  6. Henk would now start working on his two new work items, WI 545 and WI 546 in the following list:
    Lime Green Man Standing With His Hands on His Hips Clipart Illustrationimage
  7. Henk right clicks anywhere in the relevant code, select Team Review and Replay Code Review.
    Lime Green Man Standing With His Hands on His Hips Clipart Illustrationimage
  8. The Code Review Replay window opens and Henk is able to select the relevant WI's associated with the code review.
    Lime Green Man Standing With His Hands on His Hips Clipart Illustrationimage
  9. Henk, fixes the code and updates the relevant work items. Note the Code Details tab, which contains code heuristic details, including project, namespace, class, path and line number details. Really cool!
    Lime Green Man Standing With His Hands on His Hips Clipart Illustrationimage

Issues we picked up ... this is an early product release, so issue is probably a 'harsh' term to use

  1. Template store path is invalid: Unexpected path ... when opening Visual Studio on a system that has TeamReview loaded. We noticed that the error does not occur for users who had opened Visual Studio prior to TeamReview being installed, whereas users logging on for the first time, starting up Visual Studio frequently see the error dialog.This issue has been reported to and is under investigation by TeamReview.
    clip_image002
     
  2. According to Note 2 above, under point 3, both Project Administrators and Contributors should show in the "Assign To" field. We have found that only contributors are listed, which for us is an issue as our team leads, who are typically code reviewers as well, are Project Administrators, not Contributors.

Conclusion

In general TeamReview promises to become another one of the CodePlex nuggets and will deliver value-add in most development environments around code review. The seamless integration into VSTS and TFS is another example of the powerful integration and interoperability support of TFS and makes TeamReview an integrated feature in the VSTS IDE.

If you have a need for code review, then please throw an eyeball at this product!

Posted by willy with 1 comment(s)
Filed under:

TeamReview ... take a look at this product!

http://www.codeplex.com/TeamReview is another gem on CodePlex. The product, which we are busy reviewing and will be blogging about shortly, promises the following features and I quote from the CodePlex site ... begin quote:"
Blue And White Robot Looking Upwards in Curiousity Clipart Illustration

New Business Value From Code Review

TeamReview exploits the advantages of Team System and the Vs.net extensibility model to reduce transition waste and surface new value from the code review process. Using Work Items to facilitate the code review process creates a completely in-IDE code review experience, the ability to project-manage the code review tasks, and the opportunity to get new value from the code review process through code review forensics.
For more on the business value of TeamReview view: http://jb-brown.blogspot.com/2008/06/teamreview-new-business-value-from-code.html

TeamReview Advantages

  • No/less code review meetings necessary
  • Same place/Same time obstacles are overcome
  • Makes code review analytics/forensics possible
  • Easier to split up code reviews both over time and to many people
  • Accountability - can easily determine if any review feedback was submitted and if that feedback was implemented
  • Ability to create predefined in-IDE code walk-throughs by any developer on your project without requiring your attendance

... end quote.

Posted by willy with 1 comment(s)
Filed under:

Windows Presentation Foundation (WPF) ... something new ... at least for me q;-)

So what is WPF according to our GUI/WPF/Silverlight Monk?
Blue Men at a Bench at a Bus Stop Clipart Illustration

  • The next generation presentation system.

  • Takes advantage of modern graphics hardware.

  • Allows developers and designers to build visually stunning user experiences.

  • Introduces an architecture where development and design can be truly de-coupled.

  • Based on Extensible Application Markup Language (XAML), which in turn is based on XML.

My 1.8 cents worth overview on WPF, based on the bootcamp

Today we attended a gruelling ... for our monk Herman at least q;-) ... WPF bootcamp and these are my views on WPF at this stage. I must state, that I I have never been in love with GUI development, in particular Web UI development.

  • For those that do not really love XML, me included, XAML can be daunting ... but, it packs immense power, especially for code generators.

  • Layout Techniques
    Blue Man Claiming Territory or Capturing the Flag Clipart Illustration
    • Layout techniques, including DockPanel, StackPanel, Grid and Canvas are interesting.

      • DockPanel ... panels can be nested, elements are allowed to specify positions and never overlap.

      • StackPanel ... arranges controls in a row or column, used for small-scale layouts. Used for toolbars, menu controls, etc.

      • Grid ... multiple rows and columns, whereby column and row characteristics can be set individually.

      • Canvas ... simplest panel. Location specified.
    • Example:
         1: <Window x:Class="WPF_Exercise2.Window1"
         2:     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
         3:     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
         4:     Title="Window1" Height="500" Width="300">
         5:     <Grid>
         6:         <Grid.RowDefinitions>
         7:             <RowDefinition></RowDefinition>
         8:             <RowDefinition></RowDefinition>
         9:             <RowDefinition></RowDefinition>
        10:             <RowDefinition></RowDefinition>
        11:             <RowDefinition></RowDefinition>
        12:         </Grid.RowDefinitions>
        13:         <Grid.ColumnDefinitions>
        14:             <ColumnDefinition></ColumnDefinition>
        15:         </Grid.ColumnDefinitions>
        16:         <DockPanel Grid.Row="0" Grid.Column="0" LastChildFill="True">
        17:             <Button DockPanel.Dock="Top">Top</Button>
        18:             <Button DockPanel.Dock="Bottom">Bottom</Button>
        19:             <Button DockPanel.Dock="Left">Left</Button>
        20:             <Button DockPanel.Dock="Right">Right</Button>
        21:             <Button>Fill</Button>
        22:         </DockPanel>
        23:         <StackPanel Grid.Row="2" Grid.Column="0">
        24:             <TextBlock Text="A Label:"></TextBlock>
        25:             <TextBox></TextBox>
        26:             <Button>A Button</Button>
        27:             <CheckBox>Check Number 1</CheckBox>
        28:             <CheckBox>Check Number 2</CheckBox>
        29:         </StackPanel>
        30:         <Canvas Grid.Row="4" Grid.Column="0">
        31:             <Button Canvas.Left="10" Canvas.Top="20">Left 10 Top 20</Button>
        32:             <Button Canvas.Right="10" Canvas.Bottom="20">Right 10 Bottom 20</Button>
        33:         </Canvas>
        34:     </Grid>
        35: </Window>
        36:  
       clip_image002

  • Data Binding
    Group of Blue Businessmen Piling up to Form a Pyramid Clipart Illustration

    • Databinding is another small area of possible confusion, but one that packs enough dynamite to please even the most critical developer. Keep MSDN close to you when venturing into this world...

      • Data binding is the connection between the user interface and the business logic, allowing for automatic data exchange to and from controls.

      • Types of data exchange:

        • One way ... read-only data, i.e. source can update property, but NOT visa versa.

        • One way to source ... property target can update source, but NOT visa versa.

        • Two way ... source can update property AND visa versa.

    • Example:

      • See lines 24 - 27, which shows the .NET 3.0 recommended way of defining data binding.

      • See line 33, which shows the .NET 3.5 way of defining the same thing.

      • Thanks Robert for highlighting these XAML ways of doing things q;-)
      •    1: <Window x:Class="WPF_Exercise3.Window1"
           2:     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
           3:     xmlns:x="http://schemas.micros