Thanks for the responses, qwerty and KP.
Two aspects of this: compartment visibility and Classifier Behavior; let me comment on both -
Compartment visibility - KP, that's a great point. However, I'd say that SysML defines a finite set
https://sparxsystems.com/enterprise_architect_user_guide/15.2/model_domains/block_element_compartments.html which can then be extended by the user. Why not simply display all 32 of the SysML-defined compartments in the Compartment Visibility dialog? In the example above, it is allowing me to select among 22. If 10 more were shown, without dynamic filtering, then this would alleviate cases where a compartment is not selectable when it should be, and allow the modeler to select as desired, even if that creates an empty compartment. Additionally, this would create a dialog where those 32 compartments are always available, in the same order, making the compartment visibility dialog more static (and useable). I think this would be a reasonable user profile configuration choice by the user. Any user-defined compartments can be managed in whatever way they currently are.
Classifier Behavior - after experimentation, your suggestion of reloading the model does seem to resolve this in some cases, but not others. What I have learned is:
- Only Owned Behaviors can be shown in the "classifier behavior" compartment
- Non-owned behaviors can be selected as the Classifier Behavior, but will never show in the classifier behavior compartment, or at least, I can't force the classifier behavior compartment to be displayed because of the Compartment Visibility dialog filtering, described in this thread.
- Using <<allocate>> to allocate an activity to a block doesn't solve this... the Classifier Behavior must be "owned" for the Compartment Visibility dialog to allow me to select the classifier behavior compartment.
- If I have only one Owned Behavior, and that Owned Behavior is selected as the Classifier Behavior, then I cannot select the owned behaviors compartment in the Compartment Visibility dialog.
- If there are many Owned Behaviors and the Classifier Behavior is also an Owned Behavior, then it will not be displayed in the owned behaviors compartment, even if the classifier behavior compartment is suppressed.
So, I suppose this is a SysML question; one I'm not qualified to answer, but hoping you are... Does SysML require that a Classifier Behavior must be an Owned Behavior or is this just an assumption by EA? Personally, I'd find that odd in light of the ability to allocate non-owned behaviors to blocks. But, I'm just not smart enough on the SysML definition to know if that is or isn't the case. Hoping someone smarter than me can provide an answer on that ;-).
Thanks,
Miguel