Allocation via swimlanes in definition allocation mode - DOs and DON'Ts

This content has been marked as discussing an ADVANCED topic!
It is assumed here that you have already understood the basic Activity to Block (definition level) and CallBehaviorAction to part Property (usage level) allocations AND that you have read all of the previous slide page about usage allocation mode.

We now look at what happens if one tries to combine (misuse) CallBehaviorActions in swimlanes in Activity Diagrams with definition allocation mode, including some "pathological" cases that have been provoked:

Click on the image to view it full size
The case on the left (the 1st swimlane column) has a CallBehaviorAction myActivityIsAllocatedToBlock2 - typed by an Activity AllocateToBlock2 - in a swimlane that represents a Block AllocateActivityToMe2. The underlying Activity AllocateToBlock2 is allocated fine, but the action is left hanging without an allocation, consistent with the tool's definition allocation mode feature, but breaking this constraint:

If you run the tool's validation engine with the 'SysML ValSuite' it gives an info level message for the swimlane:

'The represented element of the activity partition which are applied with «AllocateActivityPartition» stereotype, should be the Property'
And for the CallBehaviorAction it gives something like that above constraint as an 'info' level message.

Similarly for 2nd swimlane column with the CallBehaviorAction actionAllocatedToBlock typed by an Activity AllocateUsageToBlock2. No sneaky "manual" allocation to the Block AllocateActionToMe2 represented by the swimlane has inappropriately been attempted here, it's just showing what the tool (sensibly enough) does. Once again, that constraint above is broken (and the validation engine reports it at info level).

But from the point of view of the BDD, everything is all "happy campers" again. And if you use Display > Display All Paths on the «activity» symbols the tool will nicely draw the «allocate» relationships for you that were generated behind the scenes in the Activity Diagram using ActivityAllocatePartition swimlanes.

What the tool is doing is perfectly consistent for the 2 modes it offers - usage allocation mode and definition allocation mode - it just does not support "mixed" modes, which is probably a good idea:

The conclusion drawn here once again is:

But if you follow this reommendation you'll be just fine:

And it's also worth remembering this tip in case you do get your allocations in a twist:

Up next
Snippets (quotes/extracts)
Visit also
Visit also (backlinks)
Related slides (includes other tutorials)
Related slides (backlinks, includes other tutorials)