David Chappell presented this session and, after yesterdays two post-keynote and frankly less engaging presentations, explained the upcoming new features of oslo, dublin and workflow foundation 4.0 very clearly.
Applications can be distilled down to 3 major abstractions - they consist of workflow, services and models. The three new features supporting these abstractions are;
Dublin - extensions to windows server for hosting services.
Oslo - modelling technology to describe applications and other models.
WF 4.0 - technology for coordinating work within software.
What is workflow?
In simple terms, workflow is a bunch of activities executed as a process.
For what do we need workflow?
Scalable applications that must pause and start (long running applications) and applications that must co-ordinate parallel work can all benefit from using WF without having to build the pause/restart/persist/un-persist mechanisms etc from scratch..
What's new in WF 4.0?
WF 4 brings improvements to performance, new visual designers and more activities. It also introduces a new workflow type beyond the sequential and state machine workflows called flowchart. This new type is more powerful than the basic sequential workflow whilst is easier to work with than the even more powerful state machine. It provides the missing middle ground.
Earlier versions of WF have been difficult to work with as the facilities for hosting workflow isn't provided out of the box. Microsoft are addressing this issue in WF 4.0 through Dublin.
What does Dublin provide?
- A scalable host for WCF and WF services and applications
- Built in persistence for service state
- Management tools
- Auto start and heartbeat services - failed services restart etc.
- Message forwarding - content based routing
- Tracking and logging what's going on within your services
- Dublin will be "Free" (included in windows, but initially offered as a separate download)
What about Oslo?
Oslo completes the picture by offering the ability to model against different schemas. But what is a model?
A model is an abstract description of something - for example, a city map is an abstract description of the city. Models omit detail - the city map doesn't include terrain or information about all of the buildings, what colour they are and so on - it's an abstraction of the city for a given purpose - in this case navigation.
Many different things can be described with models - WF workflows, services, applications and business processes for example. Models are able to be purely descriptive and informative or may even be executable eg: in the case of a WF workflow. Models can also be linked to other models.
Oslo itself is a general purpose modelling platform with 3 key components;
- A repository - storage for both schema (kinds of models) and instances of schemas (individual models)
- "M" - a modelling language used to define schemas. This divides into two other components MSchema and MGrammar discussed later.
- "Quadrant" - a visual modelling tool used against
The repository is where all the information about schemas and models are stored. Initially it's envisaged that Oslo will ship with schemas for processes, applications, workflow, activities, services and environments, but using "M", you will be able to define any schema you can imagine.
It's worth noting that the repository itself is just a simple SQL database - you can query it directly to interrogate models or schemas, and you don't even have to use "M" to define your schemas. If you can understand the database structure for a schema, you can create your own tools.
"M", the modelling language is used to define schemas. It splits into two areas: "MSchema", which is a C# type language used to define the structure of models and "MGrammar" which is used to define textual domain specific languages (DSLs).
MSchema defines structure of the model, the relationships between the structural elements and ultimately is used to generate T-SQL to define storage of model instances.
MGrammar is used to define the syntax for new DSLs and provides tools for creating parsers of these DSLs. Examples of DSLs include SQL, regular expressions and also MSchema - Interestingly, and perhaps obviously, MSchema is a DSL created with MGrammar.
The quadrant toolset is a graphical tool that consumes schemas to provide a modelling surface with appropriate views. Schemas can be defined to have different viewers and control what tools appear in the designer for manipulation on these design surfaces.