Some Oslo Goodness – System.Identity Implements the Party Model!
There does exist some controversy right now in the blogosphere around Oslo. As I indicated previously, I’ve done a 180 on Oslo and I am now highly interested in the technology – a subject I plan to blog about soon.
However, what I find interesting is that there hasn’t been a lot of writing in the blogosphere about something that is very cool inside of Oslo – the System.Identity model.
Before I talk about this further, some context might be in order.
It turns out that a very, very common problem in software is handling the complexity of being able to handle the myriad of relationships that can develop between people, companies, parts of companies, and teams of people- especially when any given participant may have a rich network of relationships with any number of other participants. This problem crops up all over the place – in CRM systems, in LDAP directories, in social networking applications, in Accounting software – you name it.
As you might imagine with any software design problem this common, a pattern that addresses the problem has been developed – the Party Model. I first learned of the Party Model years ago reading a seriously valuable book about Archetype Patterns. I later learned that the Party Model has been around quite a while, having been described by both Silverston and Fowler as well.
While the Party Model isn’t necessarily super-intuitive on the first go around, it is an exceptionally powerful pattern to leverage in software. The reason for this power, I would argue, is due to the fact that the Party Model embodies a high level of compliance with Commonality-Variability Analysis (CVA) – but this will be the subject of an upcoming post. Despite the power of the Party Model, I’m still constantly amazed at how relatively unknown it is in the industry at large – although I think that’s about to change.
In my work here at The Big Show I’m seeing the Party Model crop up in a number of places. I think it is a confirmation of the power, not to mention the universality, of the model that a number of areas inside Microsoft have gotten to their own Party Model implementations through parallel, but independent efforts.
Being such a fan of the Party Model, you can imagine my delight when I started to look at the System.Identity model that is installed as part of the Oslo SDK and I realized that it is an implementation of the Party Model!
I can’t overstate how cool I think it is that Microsoft is including a Party Model implementation out of the box with our next-gen Software Language/DSL technology platform - hopefully this post can be a catalyst for folks to take a look at the models included out of the box with Oslo, especially System.Identity.
In order to assist folks in taking a closer look at System.Identity, I thought I would publish some UML diagrams that I created from the MSchema for System.Identity. As cool as MSchema is, I just find MSchema lacking the bandwidth for me to easily get my head around a model with lots of entities and relationships. The diagrams I created are depicted below. Additionally, there is a link at the bottom of this post for people to get HTML copies of the UML diagrams from my SkyDrive.
The diagram below is core to the System.Identity model as it deals with Parties and closely related entities:
The next diagram illustrates Roles in System.Identity, another fundamental aspect of a Party Model implementation:
Next we have diagrams for Resources and Policies:
For the HTML version, just download the .ZIP and look at the README.txt file: