So you’ve probably heard of this thing called Oslo and the components of it. In this post I’ll try to address Oslo from the point of view of the BizTalk Developer.
You could argue that BizTalk has a pretty model driven approach to development, although you’d be hard pressed if you went as far as calling it model first, or even schema first. The concepts of developing and deploying an Oslo model does however closely resemble the order of the steps performed to develop and deploy a schema in BizTalk.
First of you develop a schema, a xsd, or in Oslo terms a model. You do this in the tool called IntelliPad, using the language called M. Another way to put this is that M lets you define a textual DSL.
Second you compile, or validate, this schema. In Oslo terms you convert it into an image. You (currently) do this using the Oslo command line tools, the Oslo compiler.
Third you import this schema into the repository, like you would a BizTalk schema into the MgmtDb. In Oslo this step converts the model into SQL code. Oslo is very tightly coupled to SQL, and the repository is really just a database. A quote I caught is that “M is to T-SQL as C is to assembly”.
You can then build a xml document that conforms to that schema. You would to this in what would equivalently be an infoset. In Oslo this is again done using the IntelliPad tool and still using the M language. Now you can compile this document, which performs schema validation, after which you can put this data into the repository – that is (for the sake of the BizTalk comparison) you can receive an xml document resembling the desired schema and disassemble it into the internal format, in this case a SQL table.
Now if you want to enter data in a format other then xml, perhaps a flatfile, you can do this. In this case you would then disassemble that format (although there is no real equivalent in Oslo for this step) and then use a map (xslt) to transform this document into the correct xml format according to the specified schema. In Oslo terms this is what is called a grammar. A grammar converts an arbitrary unicode character string into a structural format, ie xml. A grammar again is a DSL, but for a different domain, in this case a domain where you enter things in plaintext.
Now if you want to view this data in SQL in a format other then it’s raw tables, then you can use the Quadrant tool to view this data using any of a generic set of views. These views are Visual DSLs over the same data. There is really no good comparison to this for BizTalk.
You can get Oslo now if you wan’t to play around and see how this looks.