Modeling with Others

Collaborations

UML exists primarily to facilitate between people. We can look at the symbols and understand the meaning of a much more complex system. The ease with which others can interpret drawings is an essential goal. The UML also provides a powerful mechanism for describing these systems in technical terms, so that a complete semantic and syntactic picture is presented.

Naturally, an environment where people work closely together, regardless of physical location, is an ideal setting for UML to come into play. One question has always lingered - how do we work on the same project with knowledge of what others are doing and without stepping on toes?

Poseidon for UML Enterprise Edition introduces the idea of a collaboration, where teammates have a real-time view of the project and the means to control editing through locks.

The heart of this is found in the Collaboration Manager, where you can create and join collaborations, as well as save projects to the server so that others may have access to them.

In the Collaboration Management Window, you'll see the list of active collaborations and a list of projects that have been saved to the server. To create a new collaboration with a new project, click the "Create Collaboration" button, give the collaboration a name, and wait until the window closes. To re-open a saved project, select it in the bottom list, and click the "Load project"-button.

You can create diagrams and model elements just as if you were working in the standalone version of Poseidon.

New Collaboration

  1. Click the 'Create Collaboration' button from the toobar

  2. In the dialog, give the collaboration a name

  3. Wait for the window to close

  4. You are now the first member of a project that is hosted on the server. In your toolbar several enterprise-icons will appear, while several standalone-icons (like "create new project") will have been removed.

Join Collaboration

If another user has already started a collaboration, you may join that collaboration to work together on the same project. Connecting to the server, and you'll see that users collaboration in the upper part of the collaboration management window. Simply select it, and then click the "Join collaboration"-button. You will now get a copy of that project onto your computer.

  1. Open the 'Collaboration Management' window.

  2. Select the collaboration to join

  3. Click the 'Join Collaboration' button

  4. A copy of the project will now be available for you to edit

Leave Collaboration

If you decide to end your work, or to create a new project, or to load another project, you have to log off from the current collaboration. Open the Collaboration Management Frame (you can use the "E"-Button in the toolbar), and then select "Leave current collaboration". After that, all work you do is local again, and the buttons for saving and creating new projects locally are back in place. If no other user had joined your collaboration, it will be automatically saved to a file by the server, and removed from the list. To re-enter that project, load it from the list of stored projects.

Projects

Projects can be stored at the server level so that they are accessible to other team members.

Load and Start Project

To load and start a project that is stored on the server:

  1. Make sure that you are connected to the server and disconnected from any collaborations.

  2. Select a project from the lower list in the Collaboration Manager.

  3. Click 'Load and Start Selected Project'.

  4. The project will open and a new collaboration will be started.

Upload Project

To upload project and make it available to others:

  1. Make sure that you are connected to the server and disconnected from any collaborations.

  2. Click 'Upload Current Project' in the Collaboration Manager).

  3. The project will now be available to other team members connected to the Enterprise Server. (You may have to close and re-open the Collaboration Manager to see the changes.)

Model Locking and Conflict Checking

It is quite possible that you may require access to a large number of elements, and as only one person may edit an element at a time, you do not want to be concerned with fighting for access with another member of your team. Element locking allows you to guarantee access for yourself, while denying edit priviliges to other team members.

When, for example, a class is locked, no one else may change the class's name, add an association to it, remove an attribute, or delete a state in that class's state diagram. Other users are not even allowed to select a locked element - looking at it as it appears in the diagram must suffice. Additionally, no one else may lock an element that is inside your locked namespace, and likewise you can't lock a namespace that already contains locked elements.

By default, autolocking is activated for the elements you select. This means, when you select an element, it tries to aquire a a temporary lock (which behaves like a normal one). If this is not possible (because of elements locked inside that element) no warning is issued. When you deselect the element, the lock is removed automatically. Autolocking is used to prevent conflicts as early as possible - as mentioned before, a locked element can't even be selected by other users, let alone edited. Autolocking is very useful in most settings, but it can be a hard restriction too. For example, when you select a class, then other users will not even be able to align states that reside in that classes state-diagram. You can deactivate auto-locking in the settings dialog. Note that auto-locking does NOT apply for the model - you can select the model in the tree, and you can lock it by hand, but it will not be locked automatically. Locking is only possible if nothing else inside the namespace is locked (e.g. by another auto-lock), so it is very unlikely that you'd get the model-lock without consulting your co-workers first. And even if you got the models lock, your coworkers might get a bit upset when they notice that they cannot continue working - while you selected the model just to create a few stereotypes. Any element with an autolock will appear to the owner with a green lock and clock icon.

All others will see a red lock and clock. These locks are automatically released when you select a different element.

Namespaces may also be locked manually to reserve certain elements. These must be specifically set and unset while working on the model. To lock a namespace manually, first select the namespace and then press the 'lock' icon in the toolbar. From that point forward, the element will be marked for the lock owner by a green lock in the upper left corner of that element, while all other users will see a red lock.

Elements that are contained within a locked namespace are automatically locked too, so they also get marked. To make it possible to tell the locked and the implicitly locked elements apart, the inner elements get a transparent lock. If you don't want to see the lock-symbols, you can turn them off in the settings window.

Please remember that not all elements are namespaces. Comments are not namespaces, so it is not possible to lock them one by one at the moment.

Java-Import

The java-import will need access to most parts of the model. To prevent lots of conflicts with your coworkers during import (which would result in a complete rollback of the import), you have to lock the complete model for yourself before you can start importing. Tell your co-workers to unlock and deselect everything, acquire the lock on the model, perform the import, and remove the lock again.