What is a Sequence Diagram? Sequence diagrams describe interactions among classes in terms of an exchange of messages over time. They're also called event diagrams. A sequence diagram is a good way to visualize and validate various runtime scenarios. Sequence Diagram. The sequence diagram is not only featured for the design model but also characterized for depicting the business processes because of its certain features. As its name defines, interaction and messages can properly be sequenced by the use of a sequence diagram. Actors and objects are essential in this diagram. 10+ Self Call Sequence Diagram. Sequence diagrams are good at showing which objects communicate with which other objects; You can change the kind of message by setting messagesort property in property editor: A sequence diagram is a type of interaction diagram because it describes how—and in what order—a group of objects works together. Make a Phone Call Sequence Diagram Template Make a Phone Call Visual Paradigm Online (VP Online) is an online drawing software that supports Sequence Diagram and a wide range of diagrams that covers UML, ERD, Organization Chart and more. It features a simple yet powerful editor that allows you to create Sequence Diagram quickly and easily.
SequenceDiagram.org is an online tool / software for creating UML sequence diagrams. Founded in 2014 with the purpose to improve the efficiency when creating and working with sequence diagrams by combining text notation scripting and drawing by clicking and dragging in the same model.
All parsing, processing, and drawing is done client side. The benefit of this is that SequenceDiagram.org is fast and convenient to work with; it also doesn't transfer your diagram data over the Internet like many other sequence diagram tools on the market. This also means that it is possible to work with the tool offline.
The tool is developed, maintained, and used by people who create a lot of sequence diagrams in their daily work. If you have any question / comments / suggestions / bugs please contact info@sequencediagram.org. The more feedback we get the better we can prioritize.
Privacy and data protection information
The tool itself does not collect data, however services it relies on such as Content Delivery Network, hosting, and cloud storage does. See privacy policy for details.
Are diagrams/scripts created using SequenceDiagram.org subject to any license?
No license is imposed by SequenceDiagram.org on the generated output. However, like with all images containing text, the fonts used might. The default font used in diagrams is the default sans-serif font selected by your browser. You can specify a different font using the fontfamily keyword, see help for more information. See LICENSE for details.
How do I generate a PDF of my sequence diagram?
Zoom to a chosen level in the editor and Print to PDF from your browser. The print css makes sure to only show the diagram on the page.
Are there any example sequence diagrams?
Yes, clicking the help menu and selecting 'Instructions' will show examples of all possible diagram elements. A copy icon is available for copying the text notation.
Is the codebase of SequenceDiagram.org open source?
No, the codebase is currently not available under any open source license
Can I run the SequenceDiagram.org tool in my company's private network (on-prem)?
Yes, by donating 400$ you are licensed to run the SequenceDiagram.org tool and its REST-like API inside your company's network (enterprise license). You are also eligible to receive any new published versions of the software for the duration of 1 year from the donation date by request. Your donation is highly appreciated and allows us to keep SequenceDiagram.org online and free for everyone to use. Please contact info@sequencediagram.org for any questions.
The software is delivered in three formats:
- A Node JS application with the Sequencediagram.org tool and a REST-like API for integration with other services, see README.txt for details
- A war file with the Sequencediagram.org tool for deployment in a Java Servlet Container such as Tomcat, Jboss, Wildfly, Jetty, etc
- A zip file with the Sequencediagram.org tool for static web page hosting inside the DocumentRoot of a web server such as Apache, IIS, etc, or static on any cloud provider
Call Flow Sequence Diagram Generator
What libraries are used by SequenceDiagram.org?
Simple Sequence Diagram
- lz-string is used to create URLs for sharing sequence diagrams. LICENSE
- Canvas2Svg is used to export the diagram into SVG file format. LICENSE
- CodeMirror is used as the text editor. LICENSE
- Font Awesome is used to provide icons for the icon participants. LICENSE
- Material Design Icons from the Community is used to provide icons for the icon participants. LICENSE
- Material Design icons by Google (included in materialdesignicons.com collection) is used to provide icons for the icon participants. LICENSE
- Font Awesome 5 Free is used to provide icons for the icon participants. LICENSE
- RBush is used for collision detection calculations for onmousemove events. LICENSE
- MSAL.js from Microsoft is used for authentication towards Microsoft services.
- OneDrive.js from Microsoft is used for file picker for OneDrive and SharePoint.
- platform.js from Google is used for authentication towards Google services and file picker for Google Drive and Team Drives.
All parsing, processing, and drawing is done client side. The benefit of this is that SequenceDiagram.org is fast and convenient to work with; it also doesn't transfer your diagram data over the Internet like many other sequence diagram tools on the market. This also means that it is possible to work with the tool offline.
The tool is developed, maintained, and used by people who create a lot of sequence diagrams in their daily work. If you have any question / comments / suggestions / bugs please contact info@sequencediagram.org. The more feedback we get the better we can prioritize.
Privacy and data protection information
The tool itself does not collect data, however services it relies on such as Content Delivery Network, hosting, and cloud storage does. See privacy policy for details.
Are diagrams/scripts created using SequenceDiagram.org subject to any license?
No license is imposed by SequenceDiagram.org on the generated output. However, like with all images containing text, the fonts used might. The default font used in diagrams is the default sans-serif font selected by your browser. You can specify a different font using the fontfamily keyword, see help for more information. See LICENSE for details.
How do I generate a PDF of my sequence diagram?
Zoom to a chosen level in the editor and Print to PDF from your browser. The print css makes sure to only show the diagram on the page.
Are there any example sequence diagrams?
Yes, clicking the help menu and selecting 'Instructions' will show examples of all possible diagram elements. A copy icon is available for copying the text notation.
Is the codebase of SequenceDiagram.org open source?
No, the codebase is currently not available under any open source license
Can I run the SequenceDiagram.org tool in my company's private network (on-prem)?
Yes, by donating 400$ you are licensed to run the SequenceDiagram.org tool and its REST-like API inside your company's network (enterprise license). You are also eligible to receive any new published versions of the software for the duration of 1 year from the donation date by request. Your donation is highly appreciated and allows us to keep SequenceDiagram.org online and free for everyone to use. Please contact info@sequencediagram.org for any questions.
The software is delivered in three formats:
- A Node JS application with the Sequencediagram.org tool and a REST-like API for integration with other services, see README.txt for details
- A war file with the Sequencediagram.org tool for deployment in a Java Servlet Container such as Tomcat, Jboss, Wildfly, Jetty, etc
- A zip file with the Sequencediagram.org tool for static web page hosting inside the DocumentRoot of a web server such as Apache, IIS, etc, or static on any cloud provider
Call Flow Sequence Diagram Generator
What libraries are used by SequenceDiagram.org?
Simple Sequence Diagram
- lz-string is used to create URLs for sharing sequence diagrams. LICENSE
- Canvas2Svg is used to export the diagram into SVG file format. LICENSE
- CodeMirror is used as the text editor. LICENSE
- Font Awesome is used to provide icons for the icon participants. LICENSE
- Material Design Icons from the Community is used to provide icons for the icon participants. LICENSE
- Material Design icons by Google (included in materialdesignicons.com collection) is used to provide icons for the icon participants. LICENSE
- Font Awesome 5 Free is used to provide icons for the icon participants. LICENSE
- RBush is used for collision detection calculations for onmousemove events. LICENSE
- MSAL.js from Microsoft is used for authentication towards Microsoft services.
- OneDrive.js from Microsoft is used for file picker for OneDrive and SharePoint.
- platform.js from Google is used for authentication towards Google services and file picker for Google Drive and Team Drives.
Notation | Description |
---|---|
Lifeline | |
Lifeline with name 'data' of class Stock. | A Lifeline is shown using a symbol that consists of a rectangle forming its 'head' followed by a vertical line (which may be dashed) that represents the lifetime of the participant. |
Anonymous lifeline of class User. | Anonymous lifeline has no name - arbitrary representative of class. |
Lifeline 'x' of class X is selected with selector [k]. | Selector could be used to specify some lifeline from collection. |
Execution | |
Execution specification shown as grey rectangle on the Service lifeline. | Execution (full name - execution specification, informally called activation) is interaction fragment which represents a period in the participant's lifetime when it is
The duration of an execution is represented by two execution occurrences - the start occurrence and the finish occurrence. Execution is represented as a thin grey or white rectangle on the lifeline. |
Execution represented as wider rectangle labeled as action. | Execution can be represented by a wider labeled rectangle, where the label usually identifies the action that was executed. |
Overlapping execution specifications on the same lifeline - message to self. | Overlapping executions on the same lifeline are represented by overlapping rectangles. |
Overlapping execution specifications on the same lifeline - callback message. | |
Message | |
Message is a named element that defines one specific kind of communication between lifelines of an interaction. The message specifies not only the kind of communication, but also the sender and the receiver. Sender and receiver are normally two occurrence specifications (points at the ends of messages). A message is shown as a line from the sender message end to the receiver message end. The line must be such that every line fragment is either horizontal or downwards when traversed from send event to receive event. The send and receive events may both be on the same lifeline. The form of the line or arrowhead reflects properties of the message. | |
Messages by Action Type | |
Depending on the type of action that was used to generate the message, message could be one of: | |
Synchronous Call | |
Web Client searches Online Bookshop and waits for results. | Synchronous call typically represents operation call - send message and suspend execution while waiting for response. Synchronous Messages are shown with filled arrow head. |
Asynchronous Call | |
Service starts Task and proceeds in parallel without waiting. | Asynchronous call - send message and proceed immediately without waiting for return value. Asynchronous Messages have an open arrow head. |
Asynchronous Signal | |
Asynchronous signal message corresponds to asynchronous send signal action. | |
Create Message | |
Online Bookshop creates Account. | Create message is sent to lifeline to create itself. Note, that it is weird but common practice in OOAD to send create message to a nonexisting object to create itself. In real life, create message is sent to some runtime environment. Create message is shown as a dashed line with open arrowhead (same as reply), and pointing to created lifeline's head. |
Delete Message | |
Online Bookshop terminates Account. | Delete message (called stop in previous versions of UML) is sent to terminate another lifeline. The lifeline usually ends with a cross in the form of an X at the bottom denoting destruction occurrence. UML 2.3 specification provides neither specific notation for delete message nor a stereotype. Until they provide some notation, we can use custom «destroy» stereotype. An infinite series of free software instruments, made by musicians and sampling experts in London, for anyone, anywhere. Presented in our own plug-in, they are easy to use, and compatible with any DAW. And in case you missed it — they're all free. Analog Lab V - FL Studio Integration FL20 now allows our KeyLab and MiniLab users to control Analog Lab in the DAW. In order to do so, you need to manually select the script and set Analog Lab MIDI Port to 10 for it to work though. Analog Lab gives you streamlined access to thousands of the hottest preset synth and keyboard sounds from our award-winning V Collection. Whether you're a music producer, a live performer, a sound designer, or just a fan or vintage synths and keyboards, Analog Lab will blow you away. I have analog lab 4(VST) and use FL studio, should work fine if you follow instructions. I will say it's heavy on CPU and I have a decent laptop and it still crashes it sometimes. But arturia I believe in general works a lot better with ableton, someone can correct me. You record MIDI notes into FL Studio that trigger the sounds in your VST, that is, Analog Lab. That means you aren't recording anything and your MIDI is empty in the Analog Lab channel. |
Reply Message | |
Web Client searches Online Bookshop and waits for results to be returned. | Reply message to an operation call is shown as a dashed line with open arrow head. |
Messages by Presence of Events | |
Depending on whether message send event and receive events are present, message could be one of:
| |
Lost Message | |
Web Client sent search message which was lost. | Lost Message is a message where the sending event is known, but there is no receiving event. It is interpreted as if the message never reached its destination. Lost messages are denoted with as a small black circle at the arrow end of the message. |
Found Message | |
Online Bookshop gets search message of unknown origin. | Found Message is a message where the receiving event is known, but there is no (known) sending event. It is interpreted as if the origin of the message is outside the scope of the description. This may for example be noise or other activity that we do not want to describe in detail. Found messages are denoted with a small black circle at the starting end of the message. |
Destruction Occurrence | |
Account lifeline is terminated | Destruction occurrence is a message occurrence which represents the destruction of the instance described by the lifeline. It may result in the subsequent destruction of other objects that this object owns by composition. No other occurrence may appear below the destruction on a given lifeline. Complete UML name of the occurrence is destruction occurrence specification. Until UML 2.4 it was called destruction event, and earlier - stop. The destruction of instance is depicted by a cross in the form of an X at the bottom of a lifeline. |
State Invariant | |
Attribute t of Task should be equal to complete. | A state invariant is an interaction fragment which represents a runtime constraint on the participants of the interaction. It may be used to specify different kinds of constraints, such as values of attributes or variables, internal or external states, etc. State invariant is usually shown as a constraint in curly braces on the lifeline. |
Task should be in Finished state. | It could also be shown as a state symbol representing the equivalent of a constraint that checks the state of the object represented by the lifeline. This could be either the internal state of the classifier behavior of the corresponding classifier or some external state based on a 'black-box' view of the lifeline. |
Combined Fragment | |
Interaction operator could be one of:
| |
Alternatives | |
Call accept() if balance > 0, call reject() otherwise. | The interaction operator alt means that the combined fragment represents a choice or alternatives of behavior. At most one of the operands will be chosen. The chosen operand must have an explicit or implicit guard expression that evaluates to true at this point in the interaction. |
Option | |
Post comments if there were no errors. | The interaction operator opt means that the combined fragment represents a choice of behavior where either the (sole) operand happens or nothing happens. An option is semantically equivalent to an alternative combined fragment where there is one operand with non-empty content and the second operand is empty. |
Loop | |
Potentially infinite loop. | If loop has no bounds specified, it means potentially infinite loop with zero as lower bound and infinite upper bound. |
Loop to execute exactly 10 times. | If only min-int is specified, it means that upper bound is equal to the lower bound, and loop will be executed exactly the specified number of times. |
We may guess that as per UML 2.3, the loop is expected to execute minimum 5 times and no more than 10 times. If guard condition [size<0] becomes false loop terminates regardless of the minimum number of iterations specified. (Then why do we need that min number specified?!) | If both bounds are specified, loop will iterate minimum the min-int number of times and at most the max-int number of times. Besides iteration bounds loop could also have an interaction constraint - a Boolean expression in square brackets. To add to the other confusions, UML 2.3 also calls both of them guards. UML tries to shuffle the simplest form of for loop and while loop which causes weird UML 2.3 loop semantics on p.488: 'after the minimum number of iterations have executed and the Boolean expression is false the loop will terminate'. This is clarified - with opposite meaning - on the next page as 'the loop will only continue if that specification evaluates to true during execution regardless of the minimum number of iterations specified in the loop.' |
Break | |
Break enclosing loop if y>0. | The interaction operator break represents a breaking or exceptional scenario that is performed instead of the remainder of the enclosing interaction fragment. Note, UML allows only one level - directly enclosing interaction fragment - to be abandoned. This could become really annoying if double loop or loop with other combined fragments should be broken. |
Parallel | |
Search Google, Bing and Ask in any order, possibly parallel. | The interaction operator par defines potentially parallel execution of behaviors of the operands of the combined fragment. Different operands can be interleaved in any way as long as the ordering imposed by each operand is preserved. |
Coregion - search Google, Bing and Ask in any order, possibly parallel. | Parallel combined fragment has a notational shorthand for the common situations where the order of events on one lifeline is insignificant. In a coregion area of a lifeline restricted by horizontal square brackets all directly contained fragments are considered as separate operands of a parallel combined fragment. |
Strict Sequencing | |
Search Google, Bing and Yahoo in the strict sequential order. | The interaction operator strict requires a strict sequencing (order) of the operands on the first level within the combined fragment. |
Weak Sequencing | |
Search Google possibly parallel with Bing and Yahoo, but search Bing before Yahoo. | Weak sequencing seq is defined by the set of traces with these properties:
Thus weak sequencing seq reduces to a parallel merge when the operands are on disjunct sets of participants. Weak sequencing reduces to strict sequencing when the operands work on only one participant. |
Critical Region | |
Add() or remove() could be called in parallel, but each one should run as a critical region. | The interaction operator critical defines that the combined fragment represents a critical region. A critical region is a region with traces that cannot be interleaved by other occurrence specifications (on the lifelines covered by the region). This means that the region is treated atomically by the enclosing fragment and can't be interleaved, e.g. by parallel operator. |
Ignore | |
Ignore get and set messages, if any. | Interaction operator ignore means that there are some messages that are not shown within this combined fragment. These message types can be considered insignificant and are implicitly ignored if they appear in a corresponding execution. The list of ignored messages follows the operand enclosed in a pair of curly braces '{' and '}'. Ignore operation is typically combined with other operations such as 'assert ignore {m, s}.' |
Consider | |
Consider only add() or remove() messages, ignore any other. | The interaction operator consider defines which messages should be considered within this combined fragment, meaning that any other message will be ignored. The list of considered messages follows the operand enclosed in a pair of curly braces '{' and '}'. Consider operation is typically combined with other operations such as 'assert consider {m, s}.' |
Assert | |
Commit() message should occur at this point, following with evaluation of state invariant. | The interaction operator assert means that the combined fragment represents the assertion that the sequences of the assert operand are the only valid continuations (must be satisfied by a correct design of the system). All other continuations result in an invalid trace. |
Negative | |
Should we receive back timeout message, it means the system has failed. | The interaction operator neg describes combined fragment of traces that are defined to be negative (invalid). Negative traces are the traces which occur when the system has failed. All interaction fragments that are different from the negative are considered positive, meaning that they describe traces that are valid and should be possible. |
Interaction Use | |
Web customer and Bookshop use (reference) interaction Checkout. Show ip addresses on network. | Interaction use is interaction fragment which allows to use (or call) another interaction. Large and complex sequence diagrams could be simplified with interaction uses. It is also common reusing some interaction between several other interactions. The interaction use is shown as a combined fragment with operator ref. |
Use Login interaction to authenticate user and assign result back to the user attribute of Site Controller. | The syntax of the interaction use of the ref operator is: interaction-use ::= [ attribute-name '=' ] [ collaboration-use '.' ] interaction-name [ io-arguments ] [ ':' return-value ] |