March 5, 2021
Hot Topics:

Building Microsoft Oslo Models

  • By Jeffrey Juday
  • Send Email »
  • More Articles »

Model Conventions

There are some conventions in the Oslo SDK documentation and in the sample models. As with relational database table development, Types usually have an identity primary key. For security and versioning, models are stored in Folders. Rather than adding common fields to each Type, the sample models extend a common Type. All models in the Sample.Model Module extend the Item Type. The Item Type is below.

type Item
   // Surrogate primary key.
   Id : Integer64 = AutoNumber();

   // The folder that contains this stuff.
   Folder : Integer32 = 500;

} where identity Id;

Also, all Types in Sample.Model are part of an Application. So, all Extents have a foreign key constraint with the MyApplications Extent. MyApplications is based on the MyApplication Type. The MyApplication Type appears below.

type MyApplication : Item
   ApplicationName : Text;

Now, look at each Type by the Role it supports.

The Analyst Role

The Requirement Type appears below.

type Requirement : Item
   Description : Text?;
   ApplicationId : Integer64;

As I said earlier, Analysts collect requirements. Requirement Type is simple; it's just some text describing the requirement and the Application related to the requirement. As I'll explain shortly, requirements are linked to other models.

The Developer Role

ApplicationUI stores the markup for the application. As I stated earlier, a Runtime is needed to leverage the model. I envisioned a Runtime reading and executing the UImarkup. ApplicationUI appears below.

type ApplicationUI : Item
   RelatedRequirement : Integer64;
   UIMarkup : Text;

Normally, an application has a lot more moving parts than just the markup. Perusing the models shipping with the Oslo SDK reveals that models can be quite detailed. For example, if you've ever worked with Windows Workflow, the System.Workflow Module appears to be capable of storing a complete Workflow.

The Operations role is next.

Operations Role

ServerConfiguration, the Operations Role Type, appears below.

type ServerConfiguration : Item
   Server : Text;
   ApplicationId : Integer64;

Like the developer roles, this type is related to an Application. I envisioned a deployment runtime using this model to deploy and monitor the application. Aside from deployment and monitoring, querying for Server dependencies is a useful way to use this information.

For Future Usage

As you can see, there is still a lot to be done to fully utilize the model. I can't overstress the need for a model-aware Runtime to utilize models in the Repository. The Repository and M are just the first steps. As I mentioned earlier, initiatives are underway to leverage Olso. In particular: Dublin, Microsoft's WCF/WF future hosting service; Operations Manager; and Visual Studio.


Oslo is the platform for Microsoft's modeling future. Becoming a part of the modeling future starts with studying the foundation. In particular, you need to become familiar with M, the Oslo modeling language. Eventually, new runtimes and tool versions will leverage Oslo, bringing a consistent platform for Developers as well as Analysts and IT Professionals.


Download the Code

You can download the code that accompanies this article here.

About the Author

Jeffrey Juday is a software developer specializing in enterprise integration solutions utilizing BizTalk, SharePoint, WCF, WF, and SQL Server. Jeff has been developing software with Microsoft tools for more than 15 years in a variety of industries including: military, manufacturing, financial services, management consulting, and computer security. Jeff is a Microsoft BizTalk MVP. Jeff spends his spare time with his wife Sherrill and daughter Alexandra. You can reach Jeff at me@jeffjuday.com.

Page 2 of 2

This article was originally published on December 18, 2008

Enterprise Development Update

Don't miss an article. Subscribe to our newsletter below.

Thanks for your registration, follow us on our social networks to keep up-to-date