Webcast – BAML – A DSL for BAM

I never really “got” the idea of the need to build a textual DSL when I was first introduced to MGrammar. The light really switched on when I looked into developing a DSL that would make it easier for developers to create BAM activities.
The BAML language only took a couple of hours to develop. I had experimented with simple text based DSLs before, so this was my first “real” language.
I have recorded a 20 minute webcast showing how the language works, and how it can be used. If you want to experiment with it yourself, the language is here.
module BloggersGuides
{
language BAML
{
syntax Main = Activity;
syntax Activity =
ActivityToken
n:NameToken
‘{‘
p:List(PKI)
‘}’
=> { activity { n,{ p }} };
syntax PKI = Milestone | Integer | Decimal | Text;
syntax Milestone = t:MilestoneToken n:NameToken ‘;’
=> { t, { n } };
syntax Integer = t:IntegerTokenn:NameToken ‘;’
=> { t, { n } };
syntax Decimal = t:DecimalTokenn:NameToken ‘;’
=> { t, { n } };
syntax Text = t:TextTokenn:NameToken ‘;’
=> { t, { n } };
syntax List (Element) =
e:Element => { e } |
list:List(Element) e:Element => { valuesof(list), e };
token NameToken = (‘A’..’Z’ | ‘a’..’z’)+;
@{ Classification [“Keyword”] }
token ActivityToken = “activity”;
@{ Classification [“Keyword”] }
token MilestoneToken = “milestone”;
@{ Classification [“Keyword”] }
token IntegerToken = “integer”;
@{ Classification [“Keyword”] }
token DecimalToken = “dec”;
@{ Classification [“Keyword”] }
token TextToken = “text”;
interleave Whitespace = ‘ ‘ | ‘\r’ | ‘\n’ | ‘\t’;
}
}
This is the sample input file I used on the webcast.
activity ConferenceBooking
{
milestone BookingDate;
text ConferenceName;
text AttendeeCity;
text HotelName;
dec Price;
integer Days;
}
You will need the command line compiler to get the BAM activity created, if you contact me I can email it to you.
Regards,
Alan

WebSphere Loves WindowsWho Knew?

For years I’ve heard people say that Microsoft technology is great for mid range solutions.  I can’t tell you how many CIOs have told me things like “we use WinTel for department level applications but the big iron apps run on Unix.”  There’s a general belief in the industry that the further you get into the datacenter, the less Microsoft technology you tend to find.  While license numbers, data from IDC and other major third parties paint a different story, we decided it was time to put ourselves to the test against one of the biggest players in the space – AIX running on optimized IBM Power6 with WebSphere. 


About a year ago, I blogged about some .NET / Windows Server benchmark testing results produced by Greg Leake. After taking some well deserved time off, Greg went back to the lab, expanded his testing and agreed to help get to the bottom of the “back office” debate. For the first time, the results include IBM hardware (POWER6) which allows us to evaluate price / performance using typical customer configurations. In an era of cost cutting and the need to squeeze as much optimization out of systems as possible, we think customers will find this information very interesting.  


Let’s start with costs Greg’s findings demonstrate that customers save up to 81% in total system costs by running applications on Microsoft .NET and Windows Server 2008 vs. IBM WebSphere 7 on POWER6/AIX. The study also showed that customers who run their IBM WebSphere 7 applications on Windows Server 2008 and Hewlett Packard/Intel 64-bit blade servers can save up to 66% in total system costs when compared to running the same applications on IBM WebSphere 7 on an IBM Power6/AIX platform.  These results illuminate significant savings for businesses of all sizes, and particularly speak to the value of the Windows Server platform.  Our hope is that people are able to make use of these findings to get more for their money, either by making new investments or by maximizing assets they are already using.  Who knew WebSphere and Windows Server were such a match?  


Most folks tend to buy into the potential for cost savings but speculate that they give up performance to get it.  The study also found that for the hardware configurations tested the Microsoft .NET Framework on Windows Server 2008 handles 57% more load than WebSphere 7 running on IBM Power6/AIX.  We also found that Windows Server 2008 running WebSphere 7 handles 37% more load than IBM WebSphere 7 running on POWER6.


So, what do these findings really mean and why am I sharing them with you today? A few important things to know:


1) Windows Server and the .NET Framework continue to be a powerful, leading combination for application development, deployment and management.


2) Customers who have made a bet on WebSphere can improve performance and reduce costs by running WebSphere on Windows.


Please visit www.websphereloveswindows.com to read more about these results and check out the .NET StockTrader downloads. We think the .NET StockTrader is a GREAT example of how small bits of innovation can have BIG impact.   Don’t take our word for it – these sample applications and guidelines are available to anyone. Instructions on how to replicate the testing we conducted are also available here, and I strongly encourage customers, and all third parties, to conduct tests for themselves.  Let us know what you think


 

Verify the schema is deployed properly

There was a failure executing the receive pipeline: “Microsoft.BizTalk.DefaultPipelines.XMLReceive, Microsoft.BizTalk.DefaultPipelines, Version=3.0.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35” Source: “XML disassembler” Receive Port: “EDI837P_ReceivePort1” URI: “\\SERVER\folder\*.xml” Reason: Finding the document specification by message type “EDIMsg” failed. Verify the schema deployed properly.

Make sure that you don’t have the same schema deployed twice!

Dimension Data’s SQL Consolidation Techspresso (Australia)

Dimension Data has been doing some great work for us around SQL Consolidation. They are holding an updated Techspresso session covering the topic. See below:

https://techspresso.didata.com.au/Techspresso/Melbourne/MLB_2009_05_27.htm

Lower Your Database Costs with SQL Server Database Consolidation

Discover how your organisation can do more with less at Dimension Data’s SQL Server 2008 Consolidation Seminars.

This morning Tech’spresso session, hosted by our Principal SQL Server Consultant, Rolf Tesmer, will reveal how server consolidation with SQL Server 2008 provides greater flexibility, centralised management, superior performance, increased scalability and reduced TCO.

Rolf will cover a range of topics, including discovery options, practical approaches and a real-life case study. The session is ideally suited for SQL technicians, CIOs, CTOs and any IT staff dealing with SQL Server environments. It’s a great chance to meet and exchange information with your peers and best of all, breakfast and coffee is on us.

Date: Wednesday, 27 May 2009

Presenters

Rolf Tesmer – SQL Principal Consultant Dimension Data

Ron Dunn SQL Specialist Microsoft

Time

8:00 AM – 10:00 AM

The Venue

Dimension Data Ground Floor 11-17 Dorcas Street South Melbourne VIC 3205

Two flavors of cloud computing – Public and Private

Six years ago we announced a multi-year, multi-product vision for the Enterprise which we called Dynamic IT.  The principles were simple – virtualization, model driven, services oriented and user centric.  Shortly thereafter, we began to conceptualize a services-based offering in the cloud which culminated in our Azure Services Platform announcement last October.  These two initiatives might seem distinct, but they are in fact highly related. Simply put, this is the continued evolution from physical to logical to virtual.


 


In addition to the interest in cloud computing, there is even more interest in the application of cloud computing principles in the enterprise data center.  As I have mentioned previously, at some point in the future, the Azure Services Platform and an enterprise data center will be, technically speaking, largely indistinguishable. Both will:


%u00b7         Be highly virtualized and elastic


%u00b7         Be managed in a consistent manner within and across the firewall


%u00b7         Hide the complexities of hardware infrastructure from the applications they serve 


We are learning a lot from the investments that we are making in Azure and will use these learnings to drive additional benefits for customers not just in the cloud but also with our premises technologies.  One of our primary objectives is to deliver the technology that empowers Enterprises to build private clouds within their existing datacenters.


 


While there are a lot of vendors talking about private clouds, let’s think this through a bit.  Would you buy beef from a vegetarian? I digress here’s the point – the knowledge that we gain from running a public cloud will yield better technology for the private ones that we help customers deliver.


How does Microsoft deliver this today?


%u00b7         Hardware Abstraction: Delivered in Windows Server 2008 with Hyper-V 


%u00b7         Logical Pooling of Compute: Delivered through management tools like VMM, you can connect the compute power from your servers into a single, logical resource


%u00b7         Automated Provisioning of Resources: Delivered this with tools like Intelligent Placement in VMM allowing you to expand and contract workloads across your fabric 


 


With Windows Server 2008 R2 our fabric capabilities become even stronger.  In this release, we deliver enhancements to the native virtualization capabilities:


%u00b7         Live Migration


%u00b7         Larger VM Support: 32 and 64-bit VMs, with up to 64GB memory per VM


%u00b7         Boot from VHD & Clustered Shared Volumes (core enhancements from Windows Azure)


 


To net this out, we’re bringing the lessons learned from our public cloud to the places where they will likely deliver the most benefit in the near term – right in your data center. As we evolve the technology that drives Azure, you can count on continued innovation and evolution of our premises technology that will make private cloud computing a reality.


MS BRE: Clearing Working Memory

My colleague, the ’Arch Hacker’, forwarded an email to me this evening from Kenton Price. Kenton had noticed some peculiar behaviour using the Microsoft Business Rules Engine. Here are the pertinent extracts from Kenton’s report:
“It appears that if you assert a fact in a rule, it hangs around for subsequent instantiations of the rule engine, behaving like a long-term fact…. I solved it by retracting each asserted fact on every exit path (I had a jump-out-early that halts and stops all other rules, so I had to retract the asserted facts here too)….Facts provided in the object[] passed to the BRE call are all retracted automatically. It appears that any others you assert within the rules must be manually retracted.”

Kenton is quite correct.The issue is actually to do with the Policy class, and there are good reasons why the engine behaves this way. Read more at http://geekswithblogs.net/cyoung/archive/2009/04/28/131548.aspx.

Exception type: SendFailedException

Recently I got the following error while trying to write out a flat file. The way I resolved it was to remove the .dll from the GAC and resinstall the .msi.

Event Type: Error
Event Source: XLANG/s
Event Category: None
Event ID: 10025
Date: 4/28/2009
Time: 12:01:17 PM
User: N/A
Computer: YOURCOMPUTER

Description:
Uncaught exception (see the ‘inner exception’ below) has suspended an instance of service YOURPROCESSNAME’.
The service instance will remain suspended until administratively resumed or terminated.
If resumed the instance will continue from its last persisted state and may re-throw the same unexpected exception.
InstanceId: 3f85458e-35c0-4f56-bce9-c4dc7a054f5f
Shape name: Send msg_FlatFile
ShapeId: 65a1739e-9b12-41c2-abb1-1aa2776d2657
Exception thrown from: segment 1, progress 22
Inner exception: Failed while attempting to send message ‘msg_FlatFile’.
Exception type: SendFailedException
Source: Microsoft.XLANGs.BizTalk.Engine
Target Site: Void WriteMessageState(Microsoft.BizTalk.Interop.IBTPEPInfoLookup, System.Guid, Microsoft.XLANGs.BaseTypes.XLANGMessage, Microsoft.XLANGs.Core.Segment, System.String, System.String, System.Collections.IList, Boolean, System.Collections.IList)
The following is a stack trace that identifies the location where the exception occured

at Microsoft.BizTalk.XLANGs.BTXEngine.BTXXlangStore.WriteMessageState(IBTPEPInfoLookup pepLookup, Guid portId, XLANGMessage msg, Segment seg, String opname, String url, IList promoteProps, Boolean track, IList toPromote)
at Microsoft.BizTalk.XLANGs.BTXEngine.BTXLogicalPortBinding.SendMessage(XLANGMessage msg, XlangStore store, Segment seg, OperationInfo op, IList additionalProps, IList toPromote, Boolean ignoreRoutingFailure)
at Microsoft.BizTalk.XLANGs.BTXEngine.BTXPortBase.SendMessage(Int32 iOperation, XLANGMessage msg, Correlation[] initCorrelations, Correlation[] followCorrelations, Context cxt, Segment seg, ActivityFlags flags)
at YOURORCH.segment1(StopConditions stopOn)
at Microsoft.XLANGs.Core.SegmentScheduler.RunASegment(Segment s, StopConditions stopCond, Exception& exp)
Additional error information:

Exception from HRESULT: 0xC0C01672
Exception type: COMException
Source: Microsoft.XLANGs.BizTalk.Engine
Target Site: Void PostToSendPort(System.Guid ByRef, Microsoft.BizTalk.Agent.Interop.IBTMessageBatch, Microsoft.BizTalk.Agent.Interop.IBTMessage, System.String, System.String, Microsoft.BizTalk.Interop.IBTMMessageList ByRef)
The following is a stack trace that identifies the location where the exception occured

at Microsoft.BizTalk.Interop.IBTPEPInfoLookup.PostToSendPort(Guid& sendPortID, IBTMessageBatch batch, IBTMessage msg, String operationName, String url, IBTMMessageList& dlMsgList)
at Microsoft.BizTalk.XLANGs.BTXEngine.BTXXlangStore.WriteMessageState(IBTPEPInfoLookup pepLookup, Guid portId, XLANGMessage msg, Segment seg, String opname, String url, IList promoteProps, Boolean track, IList toPromote)

For more information, see Help and Support Center at http://go.microsoft.com/fwlink/events.asp.

Free ASP.NET MVC “NerdDinner” Tutorial Now in HTML

Free ASP.NET MVC “NerdDinner” Tutorial Now in HTML

Last month I blogged about a free end-to-end ASP.NET MVC tutorial called “NerdDinner” that I wrote for the Professional ASP.NET MVC 1.0 book from Wrox Press.  The book is now released and shipping on Amazon

The NerdDinner tutorial walks through how to build a small, but complete, application using ASP.NET MVC, and introduces some of the core concepts behind it.  You can download a PDF version of the tutorial here.

NerdDinner Tutorial Now Also Available in HTML

A few minutes ago I finished publishing an HTML version of the NerdDinner tutorial as well.  You can read it online for free here.

I split the tutorial up across 12 segments to make it more manageable to read.  I also increased the sizes of the screenshots, and used a really nifty syntax highlighter that Scott Hanselman helped set me up with.  I actually find the end result a lot easier to read than the PDF version.

Below are links to the different NerdDinner tutorial segments:

Hope this helps,

Scott