Proposal for improving the BPMN modeling in Microsoft Oslo
Look in C:\Program Files\Microsoft Oslo SDK 1.0\Models\Business\BPMN after installation of MS Oslo.
Take for example
Activity.m
type Activity : DerivedItem
{
IsLoop : Logical = false;
.... elided for brevity ....
}
The type Activity inherits from DerivedItem, which is nothing else than an artificial type which has nothing to do with the BPMN inheritance hierarchy.
Instead in BPMN Activity is a subclass of a FlowObject. So what has been done?
Activities : Activity* where
item.Id in FlowObjects.Id;
We have two extents, one for Activities, one for FlowObjects. The have hooked them up by id. Manually!!!!!
Is that a good idea? It makes all impressions of a workaround. Why aren’t they hokked up generically, if Olso had inheritance on the extent level – which is done anyway all over the model files.
It is no solution to merge every attribute of Activity into the extent Activities. There is no use of scattering the FlowObject Aspect (i.e. the fields, that belong to each and every FlowObject) across different extents. That would destroy polymorphy – i.e. getting all FlowObjects with one select.
So the solution ImhO chosen is somewhat smart. The only thing I complain about why there is the need to manually hook up the tables. This should be a built-in feature and there should exist a built-in member collection “super” for this kind of construction. Also there should be a built-in view to get all of an Activity (including the FlowObject aspect) at one select (if needed). (By the way today it is not even possible to construct a join view manually – I did not get it managed. So all the logic has to be in the client coding, which ImhO is bad design.)
I can’t think of a reason why this should not work. But for this M has to learn a little bit more. May be a solution is to better integrate the Entity Framework (EF) with Oslo.
[ad]
