Does anyone use variants in anger?
Am interested in your experience, how you mange change control and the complexity of mulitple "related" models. Or did you go another route?
Thanks
I would suggest to apply the same rules as in EPC: Never reuse any objects as occurrence copies, that are on your control flow (events, tasks, gateways). Those should be strictly variant copies only. Your process models should be interpretable on definition level, even if you deleted all diagrams. If you do occurrence copies of control flow objects between multiple models you immediately get ambiguities on definition level.
Candidates to be used as occurrence copies would be data objects, role lanes (since you probably want to reuse the same role definition in multiple places), AST lanes (if you use them at all), messages (if their format is identical), black-box pools (unless you communicate with a variant of the other process in your variant process). Black-box pools should always be assigned the collaboration diagram where the pool occurs as white-box pool. So if you communicate with a non-variant process in your variant process, the occurrence copy is fine, otherwise you have to replace it with the pool definition from the other variant process.
I reckon it's a good idea as well to have text annotations as variant copies as well (if you find text annotations a good idea at all). Your white-box pool should be a variant copy as well, because that should correspond 1:1 to the master-variant relationship between the two models.
Suppose you have a collaboration between two pools A and B. Now you create a variant B' of B. In the collaboration model of A you now have to depict both communications to black-box pools B an B'. In both models B and B' you need to have a collaboration with the black-box pool A.