by community-syndication | Feb 2, 2009 | BizTalk Community Blogs via Syndication
Oslonians, and you know who you are, the new Oslo SDK just went live and you can download it here.
It doesn’t sound like there’s any earth shattering newness here, more like a stabilization effort, although there are what sounds like some interesting additions on the MGrammar side. Chris and Kent blog about it here, and you can read the release notes here.
I expect (hope!) to be doing some interesting things with this new technology in a couple of months, so watch for that here.
Technorati Tags: Oslo
by community-syndication | Feb 2, 2009 | BizTalk Community Blogs via Syndication
Every six months, a large portion of Microsoft’s technical field converges on Seattle to discuss and learn technology. This week is one of those weeks. And WCF and WF 4.0 are a hot topic.
This weekend, Michele Leroux Bustamante and Zoiner Tejada came out and did a pre-con on WCF + WF + ‘Dublin’, and this week we have a variety of talks on different aspects of 4.0, most of which will probably be done in webcast form as we come into the VS2010 beta timeframe.
The preconference done by Michele and Zoiner was great – they’ll be representing it at TechEd 2009 in Orlando. For those attending TechEd North America this year, I would highly recommend attending their preconference session (PRC07 – A Day of WCF + WF + Dublin). Also at TechEd, we will be doing an updated Intro to WCF and WF 4.0 (that session was published last week), and (on a 3.5 note), we will be posting up a few new hands on labs at TechEd: a lab on using WCF and WF to connect BizTalk 2009 and MOSS 2007 (we’re presenting it as an instructor-led-lab (ILL) this week – after a few months of working and polishing this lab…it’s FINALLY going out to the world!), the test-driven development labs for WCF and WF, and a lab based on Matt Winkler’s advanced correlation management blog entries (and TechEd talk). Combined with some kick-butt sessions, it should be a good time for new content.
For those inquiring on the follow-up to my blog post from a couple weeks ago, I have it about 2/3 of the way written. The event this week (and TechEd) just grabbed a massive amount of my time, but I’m in the process of putting some polish on it. I hope to get it up this week, but it will probably slip to the beginning of next (we’ll see after we present the ILL on Weds – and I still have some elder coins to collect 😉 ).
by community-syndication | Feb 2, 2009 | BizTalk Community Blogs via Syndication
A frequent pattern in TFS/Team Build is to merge from one branch to
another using a label as the basis for the merge. (That is, you select
a label in the source branch that designates the point you want to
merge “from”.) Often, this label was applied by Team Build
automatically.
This might play out like: “I know this build of this feature branch is good; I’ll
use the corresponding label as the basis for a merge back to the trunk.” Etc.
If this sounds like you and your shop, be sure to enable the feature that Buck Hodges
discusses here to
make sure that your build label sticks around even when your retention policy indicates
the corresponding build should be deleted. Otherwise, if the merge process
takes awhile (due to conflict resolution, or lunch) you might find that upon completion
of your work, you get an error indicating the label you were using cannot be found.
If this scenario does play out poorly for you…you could attempt to deduce
the time at which your build label was applied and then apply your own label (with
the same name) to that point in time on the source branch. The merge process
will then complete…
(No, really, I didn’t get burned by this…)
by community-syndication | Feb 2, 2009 | BizTalk Community Blogs via Syndication
My company has an increasingly mature Operational Data Store (ODS) strategy where agreed-upon enterprise entities are added to shared repositories and accessible across the organization. These repositories are typically populated via batch loads from the source system. The ODS is used to keep systems which are dependent on the source system from bombarding the source […]
by community-syndication | Feb 2, 2009 | BizTalk Community Blogs via Syndication
I will be presenting at the Melbourne BizTalk User group this Thursday night (5th Feb 2009) on Windows Azure and a 1st Look at Dublin.
To attend please see the announcement on http://www.melbiz.org
by community-syndication | Feb 2, 2009 | BizTalk Community Blogs via Syndication
Originally posted by Nick Heppleston at: http://www.modhul.com/2009/02/02/permissions-to-add-assemblies-to-the-gac/
I received an interesting error today while setting up a new TeamCity build-server. When running the MSBuild Microsoft.Sdc.Tasks GAC uninstall task – GlobalAssemblyCache.GacHelper.Uninstall – I kept receiving the following error:
C:\Subversion\Trunk\BizTalk\Build\Common-Deployment\Common\Deployment-Cleanup.proj(59, 3): A task error has occured.Message = Failed to uninstall CandidateMarks.Canonical, PublicKeyToken=1b76b267b587386b from the GAC. AssemblyName […]
by community-syndication | Feb 1, 2009 | BizTalk Community Blogs via Syndication
After working on the product for a number of year (more than 8 to be exact) I certainly hope not! It is often one of the most misunderstood products in the Microsoft stable and has (unfairly) got quite a bad name out there in the market. Just the mention Read More……(read more)
by community-syndication | Feb 1, 2009 | BizTalk Community Blogs via Syndication
My last couple of projects have been very interesting, challenging and a lot of fun. My current project is no exception. I have the pleasure of working with a great group of people (I’ve got to give a shout out to C-Mappity (Casey), v-slice (Dan), Sniff Packy Packet (Rich) and 10 Bit (pronounced 2 bit) (Mike) – you know who you are). Anyways, this a great group and we are working on a fun project to create their services architecture which will be the framework for their ESB.
During our redesign and re-platform of some of their current services we have come up on some interesting scenarios. One that I think many people may run into is the need to take a source xml document that has a repeating list and map it to a destination that requires that repeating list to be formatted into a single delimited string.
The picture below shows what the Mapper looks like to get this working along with the structure of the source and destination schemas.
If we take a look at a sample source xml we will get a better understanding of the format of the repeated list.
<SearchByCodeList>
<FirstName>Jim</FirstName>
<LastName>Anderson</LastName>
<NetworkCodeList>
<NetworkCode>44</NetworkCode>
<NetworkCode>64</NetworkCode>
<NetworkCode>49</NetworkCode>
</NetworkCodeList>
</SearchByCodeList>
and lets take a look at the output before we get into the mapping functionality
<ProviderSearchCanonical>
<FirstName>Jim</FirstName>
<LastName>Anderson</LastName>
<NetworkCodeList>44|64|49</NetworkCodeList>
</ProviderSearchCanonical>
So, how do we do this in the Mapper?
We need to use the looping functoid and connect it to the NetworkCode node. If our source xml had each NetworkCode node surrounded by opening and closing NetworkCodeList nodes then the looping functoid would need to be connected to the NetworkCodeList node.
Since we are using the looping functoid we will get an output record for each of the NetworkCode elements. The first output would include the first value, the next loop would include the first value and the delimiter and the second value and so on. This is not what we want. We really want the last iteration of the loop to be output and none of the previous iterations. This is what the script functoid at the bottom of the map does.
The code returns a true when we want the output to be sent to the output message and false all other times. The value of this functoid is sent to the Value Mapping functoid as the first parameter (which is the logical true or false that is required). The code for the script functoid looks like:
public bool ShouldThereBeOutput( string inputIgnored, int totalRecords )
{
if(sbCount.Length == (totalRecords))
{
return true;
}
else
{
return false;
}
}
The totalRecs parameter is the value from the Record Count functoid (which is used in both Script functoids). The inputIgnored parameter is a little trick. We needed to make sure that the map processed the ShouldThereBeOutput method after the other Script functoid. By drawing a line from the first Script functoid to this one we can ensure that it will be called afterwards.
Now lets look at the functionality in the first Script functoid. The first thing that is in the code are two StringBuilder objects. They appear above the method declaration which will make them global in scope.
System.Text.StringBuilder NCLState = null;
System.Text.StringBuilder sbCount = new System.Text.StringBuilder();
The first is our state object which will hold the delimited string. The second is sbCount which holds the current iteration through the loop. There is an Iteration functoid but that only keeps track of the iterations on the destination side. We need the iteration that we are on based on the source.
The code below shows the method in the first Script functoid. The bottom else statement is run for our first time through the loop. It adds the value of the first node and appends a character to sbCount. You can add any single character to sbCount. The length property will tell us which loop we are currently in. The embedded else statement is fired for every subsequent loop iteration and will prepend the delimiter. Finally we check if the length of the sbCount object is equal to the value past in from the <<itermation>> functoid. If it is then we are all done looping and need to return the final delimited string. The code for this method looks like:
public string DetermineCodeList( string codeList, int totalRecords )
{
if(NCLState == null)
{
NCLState = new System.Text.StringBuilder();
}
if (sbCount.Length > 0)
if (sbCount.Length == totalRecords)
{return NCLState.ToString();}
else
{
NCLState.Append(“|” + codeList);
sbCount.Append(“x”);
return NCLState.ToString();
}
else
{
NCLState.Append(codeList);
sbCount.Append(“x”);
return NCLState.ToString();
}
}
Once the map is executed we will end up with our delimited list.
by community-syndication | Jan 30, 2009 | BizTalk Community Blogs via Syndication
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
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.
