by community-syndication | Feb 4, 2009 | BizTalk Community Blogs via Syndication
The latest CTP version of the Oslo SDK was released a few days ago. I spent some time yesterday installing it and having a look. From a functionality perspective, there is not very much difference to the October 2008 CTP released after last year’s PDC. However, if you open up the main assemblies in Reflector, it quickly becomes apparent that the code has undergone significant refactoring and improvement. The code looks much tidier and closer to production quality. For example, the October 2008 CTP contained generated parser/lexer code for MGrammar. In the latest version, this has been removed, and it appears that the parser code is now dynamically generated at runtime (the ‘preferred’ Oslo approach). There has been lots of tidying up done in terms of type and method names. Additional functionality has been added to manage various issues, and the entire code base looks tighter and better constructed.
In terms of new functionality, this has been discussed elsewhere. See, for example, http://www.alexthissen.nl/blogs/main/archive/2009/01/31/improvements-and-changes-to-oslo-sdk-and-repository-in-january-ctp.aspx. Most attention has been given to the ability to include actions on the RHS of token productions. In the work we have undertaken to date, we have come across at least one situation which requires this new feature, and which we could not properly address in the October 2008 CTP.
Perhaps the most intriguing aspect of the January 2009 CTP is the way this new feature is described in the Release Notes. I suspect that Microsoft has inadvertently let slip a feature that they didn’t mean to go public on. The Release Notes published on the web site state that:
“Any production in a token can now have a code action or a graph action (formerly known as term construction)! You can now specify a return type for a token definition in the case of code actions, similar to a syntax definition.”
In the October 2008 CTP, actions are limited only to MGraph expressions. An action is an optional implication of a production that controls the output of the MGraph abstract syntax tree created by the parser. As far as I can tell, this is still the case in the new CTP. Unlike many similar technologies, the CTP version of MGrammar does not support the inclusion of code statements as semantic actions. This was discussed by Clemens Szyperski (an Oslo architect) in a comment to the blog article at http://weblogs.asp.net/fbouma/archive/2008/11/05/designing-a-language-is-hard-and-m-won-t-change-that.aspx, and the suggestion appears to be that this is a deliberate strategy in order to ensure that MGrammar remains (relatively) simple to write and focussed only on composable DSL creation.
The Release Notes statement suggests that Microsoft is looking at including code actions in MGrammar. As I say, it would appear that this feature is not actually supported in the January 2009 CTP. If it is, there is certainly no documentation explaining how to use this feature. Interestingly, this may be the explanation for a feature within the October 2008 CTP which seems to have disappeared from the current version. In the previous CTP, the MGrammar assembly included code for parsing C# statements. The parser didn’t appear to be designed as a full-blown C# parser, but looked like it was designed to parse code statements and expressions. This code appears to be missing from the January 2009 CTP.
It is generally a fool’s errand to speculate on what is happening behind the scenes, and I certainly have no special insight or knowledge about Microsoft’s intentions. However, I can’t help wondering if Microsoft has accidently let us see that they are considering supporting code actions in MGrammar when it is released, and have built code to support this feature which they do not wish to make public at the current time. If this is the case, there is no guarantee that this feature will make it into the final release. For my part, I have been thinking about this issue for a few months now, and am undecided, myself, as to the desirability of supporting full-blown semantic actions in this fashion. The issue, I think, is about how useful this feature will really be in mainstream DSL creation. Does the reduced problem domain of a domain-specific language imply language simplicity that generally avoids the need to handle complex semantics at the parser level? Clearly, there is no fundamental reason why a DSL should not exhibit such complexity, but if the vast majority of DSLs are inherently simple, maybe it would be wiser to stick to the current labelled graph-only model employed by MGrammar parsers, and work around this restriction. As I say, I am undecided. It may be that the Oslo team are currently also uncertain of the best strategy. It would be interesting to hear views from the wider modelling community.
In a related issue, am I the only person to spot an uncanny philosophical resemblance between MGrammar and Labelled BNF (LBNF)? Did LBNF have any bearing on the Oslo team’s thinking? The mechanics of the Oslo approach are different, and IMHO generally superior, to LBNF, but some of the underlying thinking is similar, including the emphasis on creation and shaping of labelled graph ASTs.
by community-syndication | Feb 3, 2009 | BizTalk Community Blogs via Syndication
Hi all
So, a colleague of mine is integrating with AS/400 and this system seems to be sending
all strings as all-uppercase. So a company name might look like this: “JANS SUPERCOMPANY
A/S”. This really isn’t what he wants output in the end, so I have built a functoid
and added it to my downloadable collection, which converts the “JANS SUPERCOMPANY
A/S” into “Jans Supercompany A/S”. It has an optional set of strings that are not
to be messed with 🙂
Examples of output from the functoid. The second parameter is optional.
|
First input |
Second input |
Output |
|
jan eliasen |
|
Jan Eliasen |
|
jan eliasen A/S |
JAn |
JAn Eliasen A/s |
|
JAN ELIASEN A/S |
Jan,A/S |
Jan Eliasen A/S |
|
This is a test string for the functoid |
tHIS,A,fOr,silly |
tHIS Is A Test String fOr the functoid |
As always, you can download the functoid at http://www.eliasen.eu/DownloadSoftware.aspx –
where you can also download the documentation.
—
eliasen
by community-syndication | Feb 3, 2009 | BizTalk Community Blogs via Syndication
For all those still running BizTalk Server 2004, they should be aware that the Microsoft Mainstream support will end this year (http://support.microsoft.com/lifecycle/search/default.aspx?sort=PN&alpha=2004&Filter=FilterNO).
One other point to remember about with the release later this year of BizTalk Server 2009 and according to all the existing documentation there is not a direct upgrade path from BizTalk Server 2004 to BizTalk Server 2009, you must first upgrade to either 2006 or 2006 R2.
Also for those still on BizTalk Server 2000 or BizTalk Server 2002 the migration to BizTalk Server 2009 is not supported, so you will also need to migrate to 2004, 2006 or 2006 R2 and then upgrade to 2009.
by community-syndication | Feb 3, 2009 | BizTalk Community Blogs via Syndication
It’s funny how we take things for granted. As Biztalk developers, we get used to the idea of being able to right click on a schema and generate an instance . In non Biztalk projects however, this couldnt be done. Till now.
I was playing around with writing some XML Instance Generation for MockingBird to finish […]
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 […]