The Graph is the main component of Together Workflow Editor. It displays the graph representing the selected process or activity set. It offers the possibility to insert new elements into the graph and to visually define the flow / logic of the workflow process you are modelling.
The Graph has its own toolbars with action Shortcuts to customize the view of the process, inserting new process elements or modify existing process elements.
The toolbar on top of the graph component consists of the following actions:
![]() | This action saves the graphical view of the current graph into a JPG format file. |
![]() | This action saves the graphical view of the current graph into a SVG format file. |
![]() | This action saves the graphical view of the current graph and process information into a PDF format file. |
![]() | This action zooms into the graph. |
![]() | This action displays graph in its actual size. |
![]() | This action zooms out of the graph. |
![]() | This action moves the selected participant up or left depending on the current participant orientation of the graph. |
![]() | This action moves the selected participant down or right depending on the current participant orientation of the graph. |
![]() | This action displays the part of the graph shown before the current part. |
![]() | This action displays the part of the graph shown after the current part. |
![]() | This action inserts the missing start and end events into the graph. |
![]() | This action removes all the start and end events from the graph. |
![]() | This action makes text describing transition condition to be shown in the graph. |
![]() | This action makes text describing transition condition to be hidden in the graph. |
![]() | This action shows artifacts (and associations) in the graph. |
![]() | This action hides artifacts (and associations) from the graph. |
![]() | This action changes the graph's swimlane orientation from left/right to top/bottom and vice versa. |
![]() | This action performs an automatic layout of the graph. |
![]() | This action inserts a new activity set. |
![]() | This action inserts a lane representing an existing participant into the graph. |
![]() | This action selects an existing activity set. |
The toolbar below the one described above consists of the following actions:
![]() | This action switches the mouse cursor to the selection mode. |
![]() | This action creates a new participant (on the package level) and inserts a new lane representing this participant into the graph. |
![]() | This action inserts a new "free text expression" lane into the graph. |
![]() | This action inserts a "common expression lane" into the graph. |
![]() | This action inserts a data object artifact. |
![]() | This action inserts a text annotation artifact. |
![]() | This action inserts a start event activity. |
![]() | This action inserts an end event activity. |
![]() | This action inserts an activity without implementation (manual activity performed by a human) into the graph. |
![]() | This action inserts a task-application activity into the graph |
![]() | This action inserts a subflow activity into the graph. |
![]() | This action inserts a block activity into the graph. |
![]() | This action inserts a exclusive gateway - route activity into the graph. |
![]() | This action inserts a parallel gateway - route activity into the graph. |
![]() | This action inserts a conditional transition into the graph. |
![]() | This action inserts an unconditional transition into the graph. |
![]() | This action inserts an otherwise transition into the graph. |
![]() | This action inserts an exception transition into the graph. |
![]() | This action inserts a default exception transition into the graph. |
![]() | This action inserts a directional association into the graph. |
![]() | This action inserts non-directional association into the graph. |
![]() | This action inserts bi-directional association into the graph. |
The Graph provides all functions to handle lanes (representing participants), activities and transitions. All standard editor functions like insert, delete, move and select are supported.
When new Workflow Process is created, TWE automatically creates a Pool for that process, and generates a new Graph representing this workflow process. This graph contains only a swimlane representing Pool. The first thing that need to be added/drawn are the lanes (a swimlanes representing the participant). When at least one (swim)lane is visible you can add activities, artifacts, transitions and associations into the graph.
New elements are inserted into the graph in two steps. First select the button of choice in the graph toolbar to change the mouse cursor into the appropriate insert mode. Then click into the graph to insert the selected element. The mouse cursor will remain in the current insert mode until you click the right mouse button, press the ESC key on your keyboard or switch to another mode by selecting a different button in the graph toolbar.
Inserting transitions and associations into the graph is somewhat different: Transitions' begin and end points must be activities, and associations' begin/end points must be activity and artifact. Clicking on the empty background of the graph while inserting a transition/assocation will insert a graphical break/routepoint. If insertion of a transition/association is started and the right mouse button or the ESC key is pressed, the current insert operation is cancelled and the mouse cursor stays in transition/association insert mode.
Elements in the graph are selected by simply clicking on them with the left mouse button. You can select a group of elements by clicking the left mouse button on the empty background of the graph and dragging a rectangle around some elements or by using the SHIFT or CTRL key during left mouse clicks on the individual elements.
To move elements to a new location just drag them with the left mouse button whereever you like.
Double clicking on a graph element opens the property dialog for the element (except for block and subflow activities for which the appropriate graph will be opened).
A right mouse click on an element in the graph will open the context popup menu of the element. The content of the context popup menu depends on which element was clicked on:
The empty background represents the process itself and only the Paste action can be performed to copy elements from the internal clipboard to the selected location.
Activities and Artifacts will show the standard edit functions. You can cut, copy, delete or edit properties of the selected activity/artifact, select related transitions/associations, or set color and size of the graphical object.
Transitions and Associations will also allow cut/copy/paste actions but conditionally (if connecting activities/artifacts are selected). You can also add a new break point, remove an existing one, delete it, edit transition/association properties, change the transition/association style, execute action to select related activities/artifacts, or set color of graphical object
Lanes can be removed, deleted, edited or repositioned in the graph. The color of the lane can be changed as well.
Common expression lane (shown as special swimlane in the graph) can be associated with a new performer expression.
Be aware that there is a fundamental difference between removing a lane and deleting it:
When lane is removed, it is removed from the selected process/activity set graph but it is still present in the XPDL model/package. However all the activities contained in the lane will be removed from the current graph.
When lane is deleted, it is being deleted from the entire XPDL model/package but the activities contained in a lane won't be deleted from the model. They will be placed into the Graph's special lane called Free text expression lane.
As mentioned, when the graph is empty (e.g. when a new process is created, and only Pool for this process is displayed) the first thing to be added/drawn is a lane representing the participant. When at least one lane is visible activities, artifacts, transitions and associations can be inserted into the graph.
The available types of lanes are:
Lane representing participant
Free text expression lane
Common expression lane
The available types of activities are:
Start event activity (explicitly specifies
process start)
End event activity (explicitly specifies
process end)
Normal activity (manual activity without
implementation)
Task-application activity
Sub-flow activity
Block activity
Exclusive gateway route activity
Parallel gateway route activity
The available types of transitions are:
Conditional transition
Unconditional (uncontrolled flow)
transition
Otherwise (default flow) transition
Exception transition
Default exception transition
There are three association types available:
directional association
non-directional association
bi-directional association
When inserting new lane into the graph using the toolbar buttons, the new participant on the package level is created, and its type is "Role". To change the participant type double click on the swimlane title to get its property panel.
The lanes for already existing participant can be inserted by
using the choice button from the top of the graph component. The lane
will be inserted at the bottom of the Pool (or at the bottom of the
already selected lane - this will be nested lane in that case).
Free text expression lane and Common expression lane are not representing participants but it is a special visualization of performer expressions for activities.
The Graph represents activity performers as swimlanes. When an activity is inserted or moved into a particular swimlane, it's performer will be updated to the participant represented by the swimlane. In the case of Common expression and Free text expression participants the activity's performer will be set to the expression defined as a property of the graph's common expression participant swimlane object. When the activity is inserted or moved into the free text expression participant any expression can be set for the activity performer field but by default performer expression won't be defined.
Together Workflow Editor allows you to nest lanes thus making possible to visually
represent organizational structure. To nest one lane into another,
select the parent lane and then create new lane either by selecting the
participant it will represent using the lane choice button
, or by selecting one of the lanes buttons
(
,
,
) and pressing on the wanted parent lane. Here is
a sample of the process with a Pool that contains nested lanes:
Normal activity enables you to insert an activity that will be performed by a human (so called manual activity) - it will appear in the user's worklist.
Task-Applicationl activity enables the definition of applications that are required for the enactment engine to run in order to perform the activity.
Subflow activity is a type of activity whose implementation is another workflow process definition.
Block activity executes an ActivitySet (set of self-contained activities/transition maps). It is something like an embedded subflow process.
Route activity, in the forms of Exclusive and Parallel gateways, does not implement any action. It is used for synchronization and conditional branching only.
A transition binds two activities
but it can also be a circular transition from a certain activity to
itself. A straight line with an arrow pointing to the target object
represents the transition in the Graph. Depending on the transition
type, it will have a different color or additional graphical
descriptions according to BPMN specification. The toolbar offers several
kinds of transitions: the one describing uncontrolled flow
, the one describing conditional flow
(a circle on the left will be drawn according to
BPMN spec only in the case the source of the transition is not a
gateway), the one describing default flow
(otherwise transition) and two kinds of exception
transitions
and
(default exception). The type of a transition can
be changed through its property panel.
There are two types of artifacts
that can be inserted into the graph, data object artifact
and text annotation
. Artifacts describe e.g. document flow through
the process, or make some comment that should be visible in the graph.
The artifacts has to be connected to the activities using associations.
Associations are connecting an
artifact with an activity. There are three types of associations offered
by the TWE, directional , non-directional
and bi-directional
. The type of association can be changed through
its property panel.
The Graph configuration is done through the togwegraphcontroller.properties file.
The following parameters can be set:
Graph.FontSizedemo
This property will set font size used in graph (for activity name, etc.). Values: integer
NOTE: The graph font size can be set independently of the font size for the rest of the editor.
Graph.GridSize
The distance between position grid dots. Values: integer
Graph.ShadowWidth
The width of the shadow when displaying activities in the graph. Values: integer
Graph.NameWrapping
Defines if the text representing the names of activities and participants displayed in the graph will be wrapped if they are too long. Values: true/false
Graph.ShowGrid
Defines if the graph position grid will be shown. Values: true/false
Graph.ShowIcon
Defines if the graph elements should display their icons. Values: true/false
Graph.ShowShadow
Defines if activity shadows should be shown. Values: true/false
Graph.ShowTransitionCondition
Defines if transition conditions should be displayed in the graph. Values: true/false
Graph.ShowTransitionNameForCondition
Defines if the name of the transition should be shown instead of the condition of the transition. This setting only has effect if the Graph.ShowTransitionCondition parameter is set to true. Values: true/false
Graph.DefaultTransitionStyle
Defines the default transition style when inserting new transitions in the graph. Possible values: NO_ROUTING_ORTHOGONAL, NO_ROUTING_SPLINE, NO_ROUTING_BEZIER, SIMPLE_ROUTING_ORTHOGONAL, SIMPLE_ROUTING_SPLINE and SIMPLE_ROUTING_BEZIER
Graph.WrappingStyleWordStatus
Defines if text wrapping should be based on whole words (if possible). This setting only has effect if the Graph.NameWrapping parameter is set to true. Values: true/false
Graph.HistorySize
Defines the size of the previous/next panel history. If the parameter is set to a value less than zero, the history is unlimited. Values: integer
Graph.ActivityHeight
The Graph's activity object height in pixels. Values: integer
Graph.ActivityWidth
The Graph's activity object width in pixels. Values: integer
Graph.GatewayHeight
The Graph's gateway activity (route activities) object height in pixels. Values: integer
Graph.GatewayWidth
The Graph's gateway activity (route activities) object width in pixels. Values: integer
Graph.EventRadius
The Graph's start/end event activity object radius in pixels. Values: integer
Graph.DataObjectHeight
The Graph's "dataobject" artifact object height in pixels. Values: integer
Graph.DataObjectWidth
The Graph's "dataobject" artifact object width in pixels. Values: integer
Graph.LaneMinHeight
The lane's graph object minimum height in pixels. Values: integer
Graph.LaneMinWidth
The lane's graph object minimum width in pixels. Values: integer
Graph.LaneNameWidth
Defines how much space (in pixels) of the swimlane should be reserved to display name. Values: integer
Graph.ActivitySelectedColor
The color for selected activities. Values: R=?,G=?,B=? (where ? represents an integer from 0 to 255).
Graph.BackgroundColor
The Graph background color. Values: R=?,G=?,B=? (where ? represents an integer from 0 to 255).
Graph.HandleColor
The Color of break/routepoints of transitions (they are only visible when a transition is selected). Values: R=?,G=?,B=? (where ? represents an integer from 0 to 255).
Graph.GridColor
The color for position grid dots. Values: R=?,G=?,B=? (where ? represents an integer from 0 to 255).
Graph.MarqueeColor
The color for marquee rectangles. Values: R=?,G=?,B=? (where ? represents an integer from 0 to 255).
Graph.ParticipantBorderColor
The color for participant's swimlane borders. Values: R=?,G=?,B=? (where ? represents an integer from 0 to 255).
Graph.LaneCommonExpressionColor
The color for the common expression lane. Values: R=?,G=?,B=? (where ? represents an integer from 0 to 255).
Graph.LaneFreeTextExpressionColor
The color for the free text expression lane. Values: R=?,G=?,B=? (where ? represents an integer from 0 to 255).
Graph.TextColor
The color of the Graph text. Values: R=?,G=?,B=? (where ? represents an integer from 0 to 255).
Graph.StartEventColor
Start event activities color. Values: R=?,G=?,B=? (where ? represents an integer from 0 to 255).
Graph.EndEventColor
End event activities color. Values: R=?,G=?,B=? (where ? represents an integer from 0 to 255).
As with all other components, you are also able to change the content of the toolbar and the order of toolbar buttons.