Sequence diagrams are used to model use case scenarios (and other types of interactions).
Unfortunately, Visio doesn't support the UML 2.0 standard for sequence diagrams which includes fragments.
Let's create a sequence diagram modeling the main scenario of the enter use case for our access control system.
Unfortunately, we can't create a sequence diagram under the enter use case, so we will have to add it to create a special sub-package called "entry scenarios".
Drag three objects into the drawing. Using their property sheets set the class of each one:
Make sure the objects are top aligned (see the Shape menu) and that the lifelines are stretched out a little bit (drag the green diamond). Here's the diagram so far:
Next, connect an x point on the Person lifeline with an x point at the same height on the enter lifeline using a message arrow.
Use the property sheet to name the message "request access":
Unfortunately, this automatically creates an uneditable operation by the same name. To get around this I create a new operation. This gives me an opportunity to create parameters in the new operation property sheet:
Back in the message property sheet we can specify arguments for those parameters:
Add an activation bar to the enter lifeline to show the period of activation.
Here's the diagram so far:
Tip: I gave up on the activation boxes because they made it impossible to draw straight arrows.
Add another message from the enter lifeline to the dbase lifeline.
Add the sequence prefix "result :=" to indicate a return value:
As an alternative to specifying the return value on the forward arrow, a backward dashed arrow can indicate a return.
For variety I used this to indicate that the person "returns" is thumb print in response to the request from the system.
Another use of the sequence expression for a message is to indicate a guard expression or an iteration. A guard expression is a Boolean-valued expression in braces [CONDITION] and expresses a conditional message. In other words, the message is sent if the guard condition is true.
An iteration is like a guard expression except that it is followed by an asterisks: [CONDITION]*. This indicates that the message is sent repeatedly until the guard condition becomes false.
Unfortunately, there is no way to show two-way conditionals in UML 1.0.
Here's the completed diagram: