h1. Specifying Workflows

{toc:style=disc|minLevel=2|maxLevel=3}

%{color:red}WARNING:% This feature is **experimental** in Sirius 6.0.x. Adopters are encouraged to test it and give "feedback":https://bugs.eclipse.org/bugs/enter_bug.cgi?product=Sirius, but this sould not be deployed in production. In particular, workflows defined using Sirius 6.0.x may not work at all in Sirius 6.1 and later.

h2(#introduction). Introduction

The _Workflow_ section is a new tab included in the aird editor (to open it, double click on the file with _aird_ extension).

!images/aird_editor.png!

The new workflow tab displays both fixed information and information that can be defined in the VSM. The fixed information are the following:
* The name of the project and its description.
* A list of all semantic resources known by the Sirius session
* A list of all representations (diagrams, tables and trees) in the Sirius session
* A workflow tile, empty by default, that can be customized by the specifier in the "_VSM_":../../Glossary.html#VSM to display actions that should be available more directly to users.

!images/workflow_page.png!

h2(#specification). Customizing the workflow tile

The workflow tile customization can be done by describing its content directly in the VSM.

Workflows are defined around four main concepts: _Workflow_, _Page_, _Section_ and _Activity_.
Once defined in the VSM, the result will be visible in the workflow tile of the aird editor.

h3(#workflow). Workflow

The _Workflow Description_ element can be created under the root element of the odesign from the specific menu item.

!{width:60%}images/new_workflow.png!

This action creates a blank new _workflow_ element. Like many elements inside a "_VSM_":../../Glossary.html#VSM, _Workflow Description_ has a mandatory _Identifier_ property (which should be unique), and an optional _Name_ property that has the same value as the _Identifer_ if the user doesn't customize it.

Inside a _Workflow Description_ element, you can create _Page_ elements.

h3(#page). Page

For each _page_ element, a tab will be created in the workflow tile of the aird editor. The following screenshot shows an example where three pages have been defined: _Capture_, _Review_, and _Help_.

!images/pages.png!

The _Page Description_ element can be created under the _Workflow Description_ element from the specific menu item.
This action creates a blank new _page_ element. Like the _Workflow Description_, the _Page Description_ element has an _Identifier_ and a _Name_ property. It also has a _Title Expression_ element, which will be used to get the label that will be displayed to the user. This field is an "_Interpreted Expression_":../general/Specifying_Viewpoints.html#interpreted_expressions.

%{color:red}WARNING:% in the current Sirius version, the _Title Expression_ is not interpreted correctly so you will only be able to use a string directly. This string will be used as the title.

Inside a _Page Description_ element, you can create _Section_ elements.

h3(#section). Section

A _section_ element will create a new subpart in the _page_. The following screenshot shows two sections _Hierarchy_ and _Diagram_ in the _Capture_ page.

!images/sections.png!

The _Section Description_ element can be created under the _Page Description_ element from the specific menu item.
The action creates a blank new _section_ element. The _section_ element is similar to the _page_ element: it has an _Identifier_, a _Name_ and a _Title Expression_ properties, which all behave like the _page_ ones. 

%{color:red}WARNING:% in the current Sirius version, the _Title Expression_ is not interpreted correctly so you will only be able to use a string directly. This string will be used as the title.

Inside a _Section Description_ element, you can create _Activity_ elements.

h3(#activity). Activity

_Activity_ elements allow specifiers to describe actions. It contains the same properties as _section_ and _page_ elements (i.e. _Identifier_, _Name_ and _Label Expression_).

%{color:red}WARNING:% in the current Sirius version, the _Title Expression_ is not interpreted correctly so you will only be able to use a string directly. This string will be used as the title.

An _activity_ contains a _begin_ element that allows user to specify a "_Model Operation_":../general/Model_Operations.html#introduction.

Once created, the _activities_ will appear in the workflow tile and the user will be able to click on these, and trigger the associated _Model Operation_.

h3(#context). Interpreted Expressions context

When writing an "_Interpreted Expression_":../general/Specifying_Viewpoints.html#interpreted_expressions, the user must think of the context on which the expression will be applied. For workflows related element (for instance in the Title Expressions of Pages, Sections and Activities), only one context is available, _self_. In this case, _self_ will be the @DAnalysis@ of the Sirius session, which is a representation of the odesign file.

h2(#usage). Usage

_Workflow_ elements are associated automatically with the _viewpoints_ defined in the same odesign file. It means that to display the defined workflows in the correct section of the aird editor, the user will have to activate at least one of the viewpoints defined in the VSM.

If several _workflows_ are activated and shown in the workflow tile, they are all merged in the same workflow tile.