1. Modeler Overview
The modeler dashboard can be accessed by authorized users through the dashboard menu and is used to create and deploy workflow models for use within edoras one.
Before we look at the details of the modeler dashboard it will help to understand how models are related to the work items in the user dashboard.
Models are created and edited in the modeler dashboard. When models are deployed, corresponding work object definitions are created. These definitions can be used in the user dashboard to create work objects of the new type (usually referred to as work items in the user context):
After a model has been deployed to create a definition it may still be edited, for example to add new functionality or to fix a problem, but the changes that have been made will only become active when the App is deployed again. You can easily see whether an App has outstanding changes by checking the App status (see Model state).
A number of different model types are available as described in the following sections.
1.1. App model
An edoras one App model is a container for the models that combine to define a specific workflow within edoras one.
To define a workflow, first an App model is created and then the different models can be added and linked together as required. When the models defining the workflow are ready, the App can be deployed to create the corresponding definitions which can then be accessed from the user dashboard to execute the workflow. Only a complete App can be deployed as the models in the App should all be consistent if the deployed workflow is to function as intended.
App models can be transferred between different edoras one installations using the Export
and Import
actions.
1.2. Case model
In the user dashboard, a case serves as a container for all work items related to a workflow, such as documents, process executions (with the resulting tasks), ad-hoc tasks etc. Variables in the case work item can also be used to store information that needs to be shared by different parts of the workflow.
The case model typically uses init and work forms to create and manipulate the shared workflow information, and also defines the workflow actions that can or must be performed.
A case model may either be an adaptive case model or a CMMN case model.
With an adaptive case model, processes, tasks or documents will either be added automatically to a new case when is created or can be added manually later.
With a CMMN case model, the case lifecycle is defined using a CMMN 1.0 model and can be much richer than for an adaptive case model, including automatic state changes, milestones, processes, tasks etc.
1.3. Task model
A task model is used to define a new type of user task, corresponding to an action that needs to be performed by a participant in the workflow. Examples are entering / updating data or confirming that an external action has been performed.
1.4. Document model
A document model is used to define a new type of document. A skeleton document can be defined which will be used as a template when a new document of the given type is created, and placeholder substitutions can also be defined to insert values from the current context into the skeleton document.
1.5. Form model
A form model defines a form that can be used by other workflow models to interact with the user. Each form contains a number of form fields arranged in a given layout. The fields in a form may contain predefined content, or may be bound to the current work object values at runtime, for example to allow the name and description of a document to be displayed and perhaps changed.
Typically two types of forms are used: init forms are used to initialize new work objects, and work forms are used to edit existing work objects.
1.6. Process model
A process model allows a full BPMN 2.0 process execution model to be defined, describing a sequence of tasks to be performed either by the system itself (system tasks) or by users (user tasks). Conditional paths in the process allow the workflow to contain different tasks depending on the specific case being processed.
1.7. Mail model
A mail model provides a template for emails that can be sent by a given workflow. The mail model contains the templates for mail subject and header, both of which can use edoras one backend expressions to fill in the template with dynamic information at the time that the mail is sent.
2. Working with models
2.1. Accessing the modeler dashboard
All users that are part of the modeler group will be able to access the modeler dashboard. Please refer to the edoras one Administrator Guide for details on configuring group membership.
2.2. edoras vis
edoras vis is the built-in graphical modeler used to model BPMN 2.0 process models, edoras one form models and CMMN 1.0 case models.
The graphical modeler GUI consists of the following main areas:
The model editor panel contains the graphical view of the model being edited. New elements can be added to the diagram either by dragging them from the palette panel or in some cases using the contextual elements that appear when a model element is selected. The attributes for the selected model element are shown and may be edited in the attributes panel. The toolbar contains a number of useful tools for editing models, for example to insert more space into the middle of a model or to compare different model revisions.
2.3. Importing App models
An App model can be imported into the system by creating a new App through the user interface, and then using the
Import
action within the app to upload and import a Zip file containing the models to be imported.
When models are imported, the model will be checked to see whether it is already present on the system. If it is not present, then it will be created in the current App. If it is already present within the current App then it will be updated from the import file. If it is already present but as part of a different App then an error will be shown.
If a new model is created from scratch it is assigned an unchangeable ID which is used to track the model across all systems where the model is installed, and it is this ID which is used to establish the relationship between the models on the system and the models in the import file.
If the Import as duplicate
option is selected when an App is imported the models in the imported App will not be
checked against the models already present. New models will be created that are unconnected with the originals.
This can be useful for creating a completely new App, using an existing App as a starting point.
2.4. Model state
Models have a state which changes as the models are edited and deployed. The available states are:
State | Applies to | Description |
---|---|---|
|
Models |
No pending changes. The model is currently deployed on the system. |
|
Models except App model |
No pending changes. The model has been deactivated on the system. |
|
Models |
The model contains changes that have not yet been deployed. |
|
Models except App model |
The model will be deactivated on the system when it it next deployed. |
The current state of a model is shown in the header bar for the model:
2.5. Deploying an App model
When an App model is deployed, the models within that App model will be checked for consistency. If a model has been deactivated but there are still references from other active models then it will not be possible to deploy the App model. If the models are consistent then they will be deployed and corresponding definitions will be created. The users of the system will then be able to access the new workflow in the user dashboard.
Note that work objects and processes may already exist that were created using older versions of the model. These will not automatically be updated to use the new definitions: they will continue to use the definitions that were valid when they were created and will therefore not behave any differently after the new deployment.
2.6. Moving models between App models
All of the basic model types can be moved to another App as long as there are no outstanding references within the App model that it is being moved from.
2.7. Duplicating App models
All basic model types can also be duplicated, making an exact copy with a new name. This can be very useful when several small variations of a complex model are required.
2.8. Sharing models
Models may also be shared with different groups. By default all new models are shared with the modeler group, but in some circumstances it may be required for particular users to work on a particular set of models.
2.9. The System App
The administrator will also be able to see the System app in the modeler dashboard in addition to the App models that can be seen by normal modeler users. This App model contains a number of models that are required by the edoras one application and should normally not be changed.
3. Actions
Certain models are used to create user work items (e.g. Case, Task, Document). When created, the work item action toolbar (on the right hand side) will contain the actions that can be performed on the work item.
Which actions are available to the user depends on a number of factors:
-
the actions allowed by the model itself
-
the state of the work item
-
the user’s permissions
Some constraints are defined by edoras one itself and cannot be changed, but the model plays a large role in defining the available actions, and this should be considered carefully when designing a workflow.
To change the allowed actions, select the Browse
view and add or remove actions as required in the
Allowed Actions
field:
Action | Case | Task | Document | Description |
---|---|---|---|---|
|
Yes |
Yes |
Yes |
Re-activate an archived work item |
|
Yes* |
No |
Yes |
Archived and active work item. |
|
Yes |
Yes |
Yes |
Change the work item’s owner / responsible |
|
Yes |
Yes |
Yes |
Allow new variables to be created in the work item admin view |
|
No |
No |
Yes |
Download the work item content |
|
No |
No |
Yes |
Download the document in pdf format |
|
No |
No |
Yes |
Edit the document |
|
No |
No |
Yes |
Move the work item to another case |
|
No |
Yes |
No |
Show a work item preview |
|
Yes |
Yes |
Yes |
Share the work item with specific groups |
|
Yes |
No |
No |
Start a new process instance |
|
No |
No |
Yes |
Upload a new document |
|
No |
No |
Yes |
Upload a new document |
*There are three possibilities to archive cases which are displayed in the following table:
Option Name | Description |
---|---|
|
If case contains active processes, tasks or documents archive action returns an error. |
|
If case contains active processes or tasks archive action returns an error. Active documents are archived automatically. |
|
Active processes and tasks are interrupted and it is not possible to activate them again. Active documents are archived. |
4. App model
An edoras one App model is a container for the specific models that combine to define a specific workflow within edoras one.
App models support the following settings:
- Name
-
The name of the App
- Primary language
-
The primary language to be used for the models in the App (i.e. the language used in base attribute values).
- Secondary languages
-
Secondary languages that will be supported by the models in this App. When secondary languages are specified additional localization functionality will be enabled.
- Description
-
Describes the purpose of the App. This is provided solely as information for modelers and does not have any runtime significance.
- Group / User / Work Item Mappings
-
When an App is installed, the models may require references to other work objects outside of the App to function correctly, for example a specific user may have to be assigned to a particular role. Such references are specific will vary depending on the environment specific system, so the App model allows this information to be defined in a single location and then reused by different models.
- Property Mappings
-
There may also be parameters that the modeler would like to be able to modify globally instead of hardwiring specific values into multiple models. This can be achieved using a property mapping. Properties defined in the App are accessible from all deployed definitions.
5. Case model
In the user dashboard, a case serves as a container for all work items related to a workflow, such as documents, process executions (with the resulting tasks), ad-hoc tasks etc. Variables in the case work item can also be used to store information that needs to be shared by different parts of the workflow.
All case models support the following settings:
- Name
-
The name of the model
- Description
-
Describes the purpose of the model. This is provided solely as information for modelers and does not have any runtime significance.
- Model type
-
Either
Adaptive Case Model
orCMMN Case Model
as required. - Init form
-
A reference to the initialization form model. This form is used to set the initial state of the case when a new case is created based on this model.
- Work form
-
A reference to the work form model. This form is used to view and / or update the state of the case after it has been created.
- Candidate Groups
-
The initial groups with which a newly created case will be shared.
- Allowed Actions
-
The actions that may be performed on the case after it has been created.
5.1. Adaptive case model
In addition to the shared case model settings, adaptive case models support the following settings:
- Autostart Processes
-
References the models for processes that will be started automatically in the context of a new case.
- Autostart Tasks
-
References models for tasks that will be added automatically in the context of a new case.
- Autostart Documents
-
References models for documents that will be added automatically in the context of a new case.
- Ad-hoc Processes
-
References the models for processes that can be started manually in the context of a new case. If no models are selected then all process types will be supported.
- Ad-hoc Tasks
-
References models for tasks that will be added manually in the context of a new case. If no models are selected then all task types will be supported.
- Ad-hoc Documents
-
References models for documents that will be added manually in the context of a new case. If no models are selected then all document types will be supported.
5.2. CMMN case model
No additional specific settings are provided by CMMN case models
The CMMN model can be designed in edoras vis by using the Design
action in the case model.
For information on creating CMMN case models please refer to the CMMN Documentation.
6. Task model
A task model is used to define a new type of user task, corresponding to an action that needs to be performed by a participant in the workflow. Examples are entering / updating data or confirming that an external action has been performed.
Task models support the following settings:
- Name
-
The name of the model
- Description
-
Describes the purpose of the model. This is provided solely as information for modelers and does not have any runtime significance.
- Init form
-
A reference to the initialization form model. This form is used to set the initial state when a new task is created based on this model.
- Work form
-
A reference to the work form model. This form is used to view and / or update the state of the task after it has been created.
- Candidate Groups
-
The initial groups with which a newly created task will be shared.
- Allowed Actions
-
The actions that may be performed on the task after it has been created.
7. Document model
A document model is used to define a new type of document and supports the following settings:
- Skeleton document
-
An optional skeleton document. The skeleton document will be copied into each new document work item as it is created, so each document instance will have its own separate copy. If placeholders are defined then these will also be substituted when the document is copied. Once a document model has been created, the skeleton can be managed using the
Upload skeleton
andDownload skeleton
actions. - Name
-
The name of the model
- Description
-
Describes the purpose of the model. This is provided solely as information for modelers and does not have any runtime significance.
- Init form
-
A reference to the initialization form model. This form is used to set the initial state when a new document is created based on this model.
- Work form
-
A reference to the work form model. This form is used to view and / or update the state of the document after it has been created.
- Candidate Groups
-
The initial groups with which a newly created document will be shared.
- Allowed Actions
-
The actions that may be performed on the document after it has been created.
- Placeholders
-
A placeholder has a key (which can be referenced from the skeleton document) and an expression which will be evaluated when a new document is created. The placeholders are evaluated and replaced in a copy of the skeleton document when a new document work item is created, allowing documents to be filled out automatically with dynamic text.
7.1. Placeholder expressions
Document models can define placeholder expressions that can be used to insert dynamic values into documents.
A placeholder definition consists of a key (which will be referenced from the document) and an expression that will be evaluated to give the corresponding value:
The expression will be applied at the time that the placeholders are updated, i.e. either when the document is first created from the document model or when the Update placeholders action is used subsequently.
7.2. Referencing placeholders from a Microsoft Word document
In a Microsoft word document, placeholders may be referenced by inserting a form field into the document with a Bookmark name that corresponds to the placeholder key:
7.3. Referencing placeholders from an Adobe PDF document
In a PDF document, placeholders may be referenced by inserting a form field into the document with a name that corresponds to the placeholder key:
A suitable PDF editing tool is required to create PDF documents with form fields. |
7.4. Microsoft Word Mailing support
Microsoft Word documents support mailings functionality. Mailings fields can be replaced in a similar way as placeholders with document variable values. The fields have to be encapsulated into TableStart/End tags (Mailings regions support). variableName tag is replaced by variable value on update placeholders action.
More information is available about merge mails from the following links: |
7.5. Microsoft Word Linq support
Microsoft Word documents support the Linq query language. The platform uses Aspose to provide the basic Linq functionality and we integrated our own data retrieval mechanism to support the already known backend expressions. Please read the mentioned links below to familiarize yourself with the Linq expressions and how they are interpreted.
The following snippet of a Word document show some examples of how to use Linq in combination with the work object structure and the backend expressions:
Single String value: <<[linq.value("#{name}")]>> Conditions: <<if [linq.booleanValue("#{priority > 10}")]>> Condition: <<[linq.value("#{priority}")]>> <</if>> Iterations: <<foreach [item in linq.foreach("#{itemsList}")]>> Item: <<[item]>> <</foreach>> Nested iterations: <<foreach [item in linq.foreach("#{listInList}")]>> Item: <<foreach [innerItem in linq.foreach(item)]>> Inner item: <<[ innerItem]>> <</foreach>> <</foreach>> Iterations with list of maps: <<foreach [item in linq.foreach("#{mapItems}")]>> Map Value 'a': <<[linq.value("#{a}", item)]>> Map Value 'b': <<[linq.value("#{b}", item)]>> Merged value: <<[linq.mergedValue("#{name.concat(' - ').concat(a)}", item)]>> <</foreach>>
In the above examples we use the linq
key word (or context) to get the values and iterate over lists which are retrieved by a backend expression.
This linq
context is used to get the data from the backend expressions to be processed by Linq. In the following list you see all available methods
on the linq
context and what their purposes are:
Method | Expression context | Return value | Default return value | Purpose |
---|---|---|---|---|
|
Document work object |
|
Empty |
Evaluates the expression and returns the resolved value. |
|
Specified |
|
Empty |
Evaluates the expression based on the |
|
Document work object and specified |
|
Empty |
Evaluates the expression based on the document work object merged with the |
|
Document work object |
|
Empty |
Evaluates the expression and returns the resolved value. |
|
Specified |
|
Empty |
Evaluates the expression based on the |
|
Document work object and specified |
|
Empty |
Evaluates the expression based on the document work object merged with the |
|
Document work object |
|
|
Evaluates the expression and returns the resolved value. |
|
Specified |
|
|
Evaluates the expression based on the |
|
Document work object and specified |
|
|
Evaluates the expression based on the document work object merged with the |
|
Document work object |
|
|
Evaluates the expression and returns the resolved value. |
|
Specified |
|
|
Evaluates the expression based on the |
|
Document work object and specified |
|
|
Evaluates the expression based on the document work object merged with the |
|
Document work object |
|
|
Evaluates the expression and returns the resolved value. |
|
Specified |
|
|
Evaluates the expression based on the |
|
Document work object and specified |
|
|
Evaluates the expression based on the document work object merged with the |
|
Document work object |
|
Empty list |
Evaluates the expression and returns the resolved list. |
|
No context |
|
No default value |
Checks if the specified |
In the merged*
methods the specified contextObject
is preferred over the document work object. This means that when the
document work object has a variable a
and the contextObject
map has an entry with key a
, then the value of the
contextObject
will be used and not the variable value of the document work object.
You can also check the com.edorasware.cloud.core.service.document.word.LinqContext
class to see the details of our implementation.
More information about Linq is available at the following links:
|
8. Form model
A form model defines a form that can be used by other workflow models to interact with the user.
Form models support the following settings:
- Name
-
The name of the model
- Description
-
Describes the purpose of the model. This is provided solely as information for modelers and does not have any runtime significance.
The form layout can be quickly checked in edoras one by hovering over the form model in the App’s model list,
previewed within the form model using the Preview
view or edited in the edoras vis modeler using
the Design
action. It is also possible to download the form definition using the Download
action.
The following sections describes the elements available in the form palette of edoras one. Each modelling element and its corresponding attributes are described in detail below.
8.1. Concepts
This section describes the form concepts in edoras one. It starts with a description of how the layout of forms and fields works in edoras one. Then it describes how a form and its fields are bound to the data model.
8.1.1. Form layout
A form is a graphical layout of fields that may be bound to a data model to allow this data model to be displayed to the user. The fields are arranged in rows.
Each row is made up of exactly twelve slots. All slots are equal in size, so the width of a slot is one twelfth the width of the whole form. A field can occupy exactly all slots or it can occupy only a part of the slots. With this it is possible to place more than one field in a row.
Not every slot needs to be occupied by a field. It is allowed that single slots of a row are empty. These empty slots can be at the beginning, in the middle, or at the end of a row.
8.1.2. Field layout
A field is made up of several parts (all but the widget part are optional):
- widget
-
The widget visualizes the data model. Most widgets are interactive and let the user change the data model, however some widgets are read-only. There are widgets to manipulate strings, numbers, dates, rich text, selections, and many others. The widget is located in the center of the field, all other parts are arranged around the widget. The field configuration defines the concrete positioning of the field parts.
- Label
-
The label tells the user to which part of the data model the widget is bound. The label is located on the left side or on top of the widget (depends on the field configuration).
- Required indicator
-
The required indicator is displayed for required fields. Required means that the widget cannot be empty. The required indicator is located on the right side of the widget.
- Description
-
The description gives additional information to the user. This can be formatting instructions or further description about how the App uses the entered value. The description is located on the bottom of the widget.
8.1.3. Field alignment
To enhance the readability of a form, the field parts of all fields are aligned among themselves: the labels are aligned, the widgets and descriptions are aligned, the required indicators are aligned.
The alignment is performed per slot. All fields that start in the same slot build a field group. Inside such a field group edoras one looks for the widest label which becomes the dominating label for that slot. All labels in the field group are then enlarged to the same width of the dominating label. This is done by adding empty space between the label and the widget. This ensures that all widgets and descriptions of a field group start in one line and all.
The only exception is with fields that have top label position. For these fields the label, the widget and the description all start at the beginning of the slot.
8.1.4. Binding
Binding is the process to connect the form fields to the data model. The binding in edoras one is always two-way. When the user changes the form fields then those changes are immediately propagated to the data model. On the other side changes in the data model are immediately propagated back to the form fields.
A binding expression defines to which part of the data model the form field is connected. The binding expression has to be a writable frontend expression, e.g. {{foo}}, {{case.bar}}.
There are some reserved expressions which cannot be used as they are used internally to save some work item information. The reserved frontend expressions are:
-
id
-
definitionId
-
definition
-
type
-
state
-
creationTime
-
updateTime
-
currentUser
Moreover the expressions referring to the hierarchy (e.g. root, parent) can be only be used in order to bind nested widgets like subforms.
8.2. Common attributes
There are several attributes that are available for all form widgets. These common attributes define the rendering and the layout of the form field, as well as the part of the data model to which the form field is bound.
Attribute name | Description |
---|---|
Label |
The label is a single word or term that describes the purpose of the form widget. When the form is rendered, the label is located either on the left side or on top of the widget (depends on the value of the Label position attribute). Typical labels are: First name, Last name, Sex, Address, ZIP code, City. Labels can be localized. See Localization to learn how to localize your Apps. |
Label position |
The label position relative to the widget, can be either Left or Top. |
Value |
The value connects the form field to the data model. As such the value decides which part of the data model the form field visualizes and which part of the data model is updated when the user interacts with the widget. See Binding to learn how binding in edoras one works. |
Default value |
The default value is the value that is applied when the data model is undefined, i.e. not yet initialized. The default value can be expressed as a static value or as a frontend expression. Typical default values are: Support (= string), false (= boolean), 42 (= number), Comment from {{role}} (= frontend expression). See Frontend expressions to learn the frontend expression syntax. |
Description |
The description is a whole sentence that describes the purpose of the form widget in more detail. When the form is rendered, the description is located below the widget. A typical description is: The ZIP file format is ##, e.g 4143. The ZIP is used to lookup the city. Descriptions can be localized. See Localization to learn how to localize your Apps. |
Documentation |
Intended for documenting details about specific widget to explain concepts of its use for future reference. |
Visible |
The visible flag decides if the form field is shown or hidden. If true, the form field is shown, if false the form field is hidden. The visible flag is a runtime value which means you can configure a frontend expression for it. A typical frontend expression for the visible flag is: {{case.showDeliveryAddress}} See Frontend expressions to learn the frontend expression syntax. |
Editable |
The editable flag decides if the form widget is editable or read-only. If true, the user can manipulate the form widget to change the data model, if false the user is not able to change the data model. The editable flag is a runtime value which means you can configure a frontend expression for it. A typical frontend expression for the editable flag is: {{case.step1Completed}} See Frontend expressions to learn the frontend expression syntax. |
Style class |
The style class allows to add additional CSS styles to the form field. |
8.3. Validation attributes
A validation method checks if a widget contains valid data, if not edoras one displays an error message that instructs the user how to fix his input. edoras one supports many different validation methods, not all are available for all form widgets.
Validation is only done if the user is able to fix a potential validation error. This is not the case for hidden and read-only form fields, so such fields are not validated. |
The following table lists the supported validation methods.
Attribute name | Description |
---|---|
Required |
The required flag defines if a form field can be empty or not. If true then the form field is not allowed to be empty, if false the form field might be empty. A typical sample where the required flag is set to true is a name field that is mandatory. The following form widgets support the required flag: text, text area, rich text area, password, number, date, checkbox, autocomplete, select, radio buttons. |
Minimum length |
The minimum length validation ensures that the text input is longer than a minimum length. A typical sample is a password that has to be at least 4 characters long. The following form widgets support the minimum length validation: text, text area, rich text area, password. The Minimum length error message attribute holds the error message that is displayed when the text input is less than the configured number of characters. |
Maximum length |
The maximum length validation ensures that the text input has a smaller than a maximum length. A typical sample is a password that has to be at most 8 characters long. The following form widgets support the minimum length validation: text, text area, rich text area, password. The Maximum length error message attribute holds the error message that is displayed when the text input is bigger than the configured number of characters. |
Regular expression |
The regular expression validation ensures that the text input matches a regular expression. See http://www.w3schools.com/jsref/jsref_obj_regexp.asp for more information on the supported regular expression syntax. Regular expression can be become quite complex and difficult to understand. http://www.regular-expressions.info/javascriptexample.html provides a good way to test your regular expressions. A typical sample is the number of a credit card which matches: ^4[0-9]{11,12}(?:[0-9]{3})?$. The following form widgets support the regular expression validation: text, text area, rich text area, password. The Regular expression error message attribute holds the error message that is displayed when the text input does not match the regular expression. |
Mask |
The mask validation ensures that the text input adhere to a certain pattern. The mask can contain the following special characters: * a - Represents an alpha character (A-Z,a-z) * 9 - Represents a numeric character (0-9) * * - Represents an alphanumeric character (A-Z,a-z,0-9) * all other characters are treated as fixed input A typical sample is the expiry date of a credit card which is the month followed by a dash followed by the year. The mask that adheres to this pattern is 99/9999. The text form widget supports mask validation. The Mask error message attribute holds the error message that is displayed when the text input does not match the mask. |
Minimum |
The minimum validation ensures that the number input is equals to or bigger than a minimum. A typical sample is an order quantity field which has to be equals to or bigger than 1. The number form widget supports the minimum validation. The Minimum error message attribute holds the error message that is displayed when the number input is less than the configured minimum. The minimum number supported is -9007199254740991. |
Maximum |
The maximum validation ensures that the number input is equals to or less than a maximum. A typical sample is an order quantity field which has to be equals to or lower than 100. The number form widget supports the minimum validation. The Maximum error message attribute holds the error message that is displayed when the number input is bigger than the configured maximum. The maximum number supported is 9007199254740991. |
Minimum date |
The minimum date validation ensures that the date input is equals to or after a minimum date. The minimum date can be a fixed date, today, or a day relative to today. A typical sample is an delivery date field which has to be equals to or after today. The date form widget supports the minimum date validation. The Minimum date error message attribute holds the error message that is displayed when the date input is before the configured minimum date. |
Maximum date |
The maximum date validation ensures that the date input is equals to or before a maximum date. The maximum date can be a fixed date, today, or a day relative to today. A typical sample is a birthday field which has to be equals to or before today. The date form widget supports the maximum date validation. The Maximum date error message attribute holds the error message that is displayed when the date input is after the configured maximum. |
Invalid selection error message |
This validation displays an error message when the selection input is not available anymore. The autocomplete and the select widgets support the invalid selection validation. Both form widgets look up if the selection is in the available options to check if the selection is valid or not. |
Minimum number of elements |
The minimum number of elements validation ensures that the input contains at least a certain number of elements. A typical sample is an order which has to contain at least one order position. The subform widget and the autocomplete widget with multi-selection supports the minimum number of elements validation. The Minimum number of elements error message attribute holds the error message that is displayed when the input contains less than the configured number of elements. |
Maximum number of elements |
The maximum number of elements validation ensures that the input contains at most a certain number of elements. A typical sample is a wish list which can hold at most ten wishes. The subform widget and the autocomplete widget with multi-selection supports the maximum number of elements validation. The Maximum number of elements error message attribute holds the error message that is displayed when the input contains more than the configured number of entries. |
Minimum number of attachments |
The minimum files validation ensures that not less than a certain number of files are attached. A typical sample is a support incident attachment field where at lease one screenshot has to be attached. The attachment form widget supports the minimum files validation. The Minimum number of attachments error message attribute holds the error message that is displayed when the attachment input has less files attached than the configured number. |
Maximum number of attachments |
The maximum files validation ensures that at not more than a certain number of files are attached. A typical sample is a favourite images attachment field where not more than ten images can be attached. The attachment widget supports the maximum files validation. The Maximum number of attachments error message attribute holds the error message that is displayed when the attachment input has more files attached than the configured number. |
Minimum number of rows |
The minimum number of rows validation ensures that not less than a certain number of rows are displayed. A typical sample is a list which has always the same name of rows even they are empty. The list form widget supports the minimum number of rows validation. |
Maximum number of rows |
The maximum number of rows validation ensures that at not more than a certain number of rows are displayed. A typical sample is a wish list which can hold at most ten wishes. The list form widget supports the maximum number of rows validation. |
8.4. Text form widgets
The text form widgets allow the user to input text. To support different text input requirements edoras one provides different text form widget variants. The following list explains the different text form widget variants:
Form widget | Description |
---|---|
Used to input a single line of regular text. |
|
Used to input multiple lines of regular text. |
|
Used to input multiple lines of rich text. In contrast to regular text, rich text can be formatted in various ways: regular, bold, italic, ordered list, unordered list, headings, and much more. |
|
Used to input a password. The password form widget is marked with a small key icon at the right border of the widget. To hide the typed text from curious people all typed characters are visualized as dots. |
|
Used to input an integral number. The integral number form widget is marked with a small hash icon at the right border of the widget. We should to be aware that Javascript number has a limited precision (64-bit binary format IEEE 754 value). It does not support a negative exponential notation like 1e-2 but can support positive exponential notation like 1e+2. |
|
Used to input a floating point number. The float number form widget is marked with a small hash icon at the right border of the widget. We should to be aware that Javascript number has a limited precision (64-bit binary format IEEE 754 value). So if, for example, we have a number with too many decimals, which cannot be represented, it will be rounded. |
|
Used to input a date. The date form widget is marked with a small calendar icon at the right border of the control. All non date input is treated as invalid. The user can enter a date in two ways. First he can enter the date as date string, e.g. 1970-11-25. Second he can use a date picker to select a date with the mouse. The date picker pops up as soon as the date control receives focus. |
|
Used to input work object comments. Do not change default variable name. Variable name create binding for the comment handling. Comments can be only added during create, complete and save work object events. |
8.4.1. Text attributes
Attribute | Description |
---|---|
Common |
See Common attributes to learn more about the common attributes. |
Validation |
The text form widget supports the required, the minimum length, the maximum length, the regular expression, and the mask validation. See Validation attributes to learn more about validation. |
8.4.2. Text area attributes
Attribute | Description |
---|---|
Common |
See Common attributes to learn more about the common attributes. |
Validation |
The text area form widget supports the required, the minimum length, and the maximum length validation. See Validation attributes to learn more about validation. |
8.4.3. Rich text area attributes
Attribute | Description |
---|---|
Common |
See Common attributes to learn more about the common attributes. The Default value attribute of a Rich text area form widget is rich text which supports the following formatting options (see toolbar buttons on top of the default value editor):
|
Validation |
The rich text area form widget supports the required, the minimum length, and the maximum length validation. See Validation attributes to learn more about validation. |
8.4.4. Password attributes
Attribute | Description |
---|---|
Common |
See Common attributes to learn more about the common attributes. |
Validation |
The password form widget supports the required, the minimum length, and the maximum length validation. See Validation attributes to learn more about validation. |
8.4.5. Integral number attributes
Attribute | Description |
---|---|
Common |
See Common attributes to learn more about the common attributes. *Default property: it only supports a frontend expression or an integral number without format. |
Validation |
The number form widget supports the required, the minimum, and the maximum validation. The maximum value for a number is 9007199254740991. The minimum value for a number is -9007199254740991. See Validation attributes to learn more about validation. |
Format |
Defines the format of the number with thousand and decimal separators. "No format" will not apply any format. Format "auto" will apply the format depending on the language of the current user. With Format "auto", if the language is English, it will apply "1,000,000" format. With Format "auto", if the language is Spanish, German or Italian it will apply "1.000.000" format. With Format "auto", if the language is French, it will apply "1 000 000" format. |
8.4.6. Float number attributes
Attribute | Description |
---|---|
Common |
See Common attributes to learn more about the common attributes. *Default property: it only supports a frontend expression or a number without format. |
Validation |
The float number form widget supports the required, the minimum, and the maximum validation. The maximum value for a number is 9007199254740991. The minimum value for a number is -9007199254740991. See Validation attributes to learn more about validation. |
Fraction size |
Defines the maximum number of decimal characters for float type. If fraction size is bigger than 0, exponential notation is not supported. If fraction size is 0, it will behave like integer number widget. |
Format |
Defines the format of the number with thousand and decimal separators. "No format" will not apply any format. Format "auto" will apply the format depending on the language of the current user. With Format "auto", if the language is English, it will apply "1,000,000.22" format. With Format "auto", if the language is Spanish, German or Italian it will apply "1.000.000,22" format. With Format "auto", if the language is French, it will apply "1 000 000,22" format. |
8.4.7. Date attributes
Attribute | Description |
---|---|
Common |
See Common attributes to learn more about the common attributes. The default value of a date field form field can be specified as absolute date, as relative date, or as frontend expression. |
Validation |
The date form widget supports the required, the minimum date, and the maximum date validation. See Validation attributes to learn more about validation. |
Format |
Used to define the format in which the date is visualized to the user. If empty then the date is presented in the ISO 8601 format, e.g. 1970-11-25. See Formatting dates in frontend expressions to learn more about the possible format strings. |
Number of visible years |
Used to define the range of years displayed in the year drop-down. |
8.5. Select form widgets
The select form widgets allow the user to select one or more options from a potential large set of options. The available options are presented in a list from which the user can select one or more options with help of the keyboard and the mouse.
Some select form widget support the filtering of the available options. When the user starts typing then only the options that match the typed text are presented as available options. This makes it easy to locate a specific option in a large set of options.
The select form widgets are very powerful form widgets. To support different selection requirements edoras one provides different variants of select form widgets. The following list explains these variants:
Form widget | Selection | Options | Description |
---|---|---|---|
Single |
Boolean true/false |
Used to select a simple yes/no option. When the checkbox is ticked then true is stored in the data model, otherwise false is stored in the data model. |
|
Single |
Static options |
Used to select a single option from a static list of options. At design time the modeler configures for each option a name and a value. The name is displayed to the user whereas the value is stored in the data model. In the radio button form widget all options are always visible. With this the user can always see all possible option, on the other side this uses a lot of form real estate and is therefore suited only it there are few options. |
|
Single |
Select options |
Used to select one option from a list of options. The list of options is built at runtime by querying edoras one (datasource = Query) or any other rest service (datasource = Rest) or defined at design time (datasource = Static). |
|
Multiple |
Select options |
Used to select one or more options from a list of options. The list of options is built at runtime by querying edoras one (datasource = Query) or any other rest service (datasource = Rest) or defined at design time (datasource = Static). |
The Radio button group is recommended when there are few options while the Single Select is recommended when there are more options or there is not much space available in the form. |
8.5.1. Checkbox attributes
Attribute name | Description |
---|---|
Common |
See Common attributes to learn more about the common attributes. |
Validation |
The checkbox form widget supports the required validation. See Validation attributes to learn more about validation. |
8.5.2. Radio button group attributes
Attribute name | Description |
---|---|
Common |
See Common attributes to learn more about the common attributes. |
Validation |
The radio button group form widget supports the required validation. See Validation attributes to learn more about validation. |
Options |
Defines the options from which the user can choose. Each option has a name and a value: the name is shown to the user whereas the value is stored in the data model. |
Orientation |
Defines if the single radio buttons in the group are Horizontal or Vertical aligned. |
8.5.3. Select attributes
Attribute name | Description | ||||
---|---|---|---|---|---|
Common |
See Common attributes to learn more about the common attributes.
|
||||
Validation |
The Select form widget supports the following validations:
See Validation attributes to learn more about validation. |
||||
Placeholder |
Used to set up the placeholder text. The component shows the placeholder text until the field is focused upon, then hides it. |
||||
Enable autocomplete |
When checked the user will be allowed to write text in the component, this text is then used to filter the options to those that match the text. |
||||
Input minlength |
The minimum number of characters the user needs to write inside the component before any option is shown. When it’s set to 0 the component dropdown appears immediately when the component gets the focus. |
||||
Storage |
When it’s set to Id only the attribute defined in Identity will be persisted in the data model. When it’s set to Full the whole object will be saved as it’s returned from the rest service. This attribute is not available when datasource is Static. |
||||
Datasource |
Used to set up the source of the options. Possible values are:
Each option requires a different set of attributes. |
8.5.4. Static Select specific attributes
Attribute name | Description |
---|---|
Options |
Defines the options from which the user can choose. Each option has a name and a value: the name is shown to the user whereas the value is stored in the data model. |
8.5.5. Rest Select specific attributes
Attribute name | Description | ||||||
---|---|---|---|---|---|---|---|
Query URL |
Used to load the available options that are presented to the user from a URL. The query URL attribute can be expressed as a static value or as a frontend expression. See Frontend expressions to learn the frontend expression syntax. The autocomplete form widget expects the options to be returned as list of JSON objects, e.g. [ { "id" : "GEAR-a65c4a12-20b4-45d8-bb09-2105be7f0d1f", "title" : "edoras one Modeler", "value" : "GEAR-a65c4a12-20b4-45d8-bb09-2105be7f0d1f" }, { "id" : "GEAR-c641f3bb-876e-45f4-9550-ef95ef5a2fac", "title" : "edoras one User", "value" : "GEAR-c641f3bb-876e-45f4-9550-ef95ef5a2fac" } ] The user typed text can be used in the expression as {{$searchTerm}}. If it’s not set in the Query URL it will be added as a URL parameter. https://one.edorasware.com/rest/one-groups?typedText=edoras Usually the REST endpoint uses the typed text to filter the available options. This way the user sees only the options that match the already typed text and can easily locate single options in a large set of options.
|
||||||
Lookup URL |
Used for two things:
The lookup URL can use expressions but the only available attribute from the selected option is {{$item.id}}. The id attribute of the selected option must be set in Identity (see next point). If {{$item.id}} is not set in the lookupUrl, the id is appended to the lookup URL, e.g. https://one.edorasware.com/rest/one-groups/GEAR-a65c4a12-20b4-45d8-bb09-2105be7f0d1f The option is serialized with help of the Identity. So the Lookup URL and the Identity attribute have to play together.
|
||||||
Identity |
Used to select the attribute in the JSON option that is stored in the data model. So if the JSON option looks like { "code" : "GEAR-c641f3bb-876e-45f4-9550-ef95ef5a2fac", "title" : "edoras one User", "value" : "GEAR-c641f3bb-876e-45f4-9550-ef95ef5a2fac" } and Identity = code then GEAR-c641f3bb-876e-45f4-9550-ef95ef5a2fac will be stored in the data model.
|
||||||
Format |
Used to compose a user friendly string from the JSON option. I allows frontend expressions. The selected option is available as $item. So if the JSON option looks like { "id" : "GEAR-c641f3bb-876e-45f4-9550-ef95ef5a2fac", "title" : "edoras one User", "value" : "GEAR-c641f3bb-876e-45f4-9550-ef95ef5a2fac", "type": "TSK" } then a format of Group: {{$item.type}} - {{$item.title}} results in Group: TSK - edoras one User being presented to the user for this JSON option. |
||||||
Navigation URL |
Used to set a link icon to the left of each option in the list and each selected option. The Navigation URL defines the URL to navigate to when the user clicks a link icon. The navigation URL attribute can be expressed as a static value or as a frontend expression. See Frontend expressions to learn the frontend expression syntax. The prefix to select an attribute from the JSON option is $item. So if the JSON option looks like { "id" : "GEAR-c641f3bb-876e-45f4-9550-ef95ef5a2fac", "title" : "edoras one User", "value" : "GEAR-c641f3bb-876e-45f4-9550-ef95ef5a2fac" } then a navigation URL of /GRP/{{$item.id}}/browse results in /GRP/GEAR-3456061f-4892-4ef4-b234-69217201cd09/browse being invoked when the user clicks the link icon. |
||||||
Target |
Used to define the tab where the linked option is loaded. Possible values are:
|
8.5.6. Query Select specific attributes
Attribute name | Description |
---|---|
Search query |
The edoras one query that is used to load the available work items that are presented to the user. The user typed text is added as additional filter to the configured query. Typical queries:
See section Searches in the User guide to learn more about the search syntax and about all possible search terms. |
Format |
Used to compose a user friendly string from the work item. The prefix to select an variable from the work item item. Literals have to be enclosed in quotes, attributes and literals can be concatenated with +. So if the format is Group: {{item.name}} then the work item is shown to the user as Group: edoras one User. |
Navigation view |
Used to set the target view for the link. Possible values are:
|
Target |
Used to define the tab where the linked work item is loaded. Possible values are:
|
8.6. Read only form widgets
The read only form widgets allow to present information, to add navigation functionality, and to split a form into section.
Form widget | Description |
---|---|
Used to show static rich text. The rich text can be formatted in various ways: regular, bold, italic, ordered list, unordered list, headings, and much more. |
|
Used to render html code. |
|
Used to show a list of options that are returned by a custom REST endpoint. The dynamic list of options is build at runtime by calling a custom REST endpoint that the modeler has configured. The rest list form widget can be used to enable simple navigation inside your App. For this the modeler can configure the links that are followed when the user clicks one of the options in the list. |
|
Used to show a list of work items that are returned by edoras one. The dynamic list of work items is build at runtime by calling calling edoras one with a query that the modeler has configured. The rest list form widget can be used to enable simple navigation inside your App. For this the modeler can configure the links that are followed when the user clicks one of the options in the list. |
|
Used to show an image. |
|
Used to show a generic link. |
|
A link which navigates to a specific initialization form for a new work item to be created based on a given model you can select in the work item model attribute |
|
Used to show a link that navigates to a list of work items returned by a search using a specified query. |
|
A link which renders a text including the numbers of elements returned by a count query you can specify. The link text can be configured to show the number of elements returned by the query. Clicking the link navigates to the result of the query. |
|
A link which renders a text including the numbers of elements returned by a REST endpoint. The link text can be configured to show the number of elements returned by the REST query. Clicking the link navigates to the result of the REST query. |
|
Used to show a button that points to a generic URL. |
|
A button with a link which navigates to a specific initialization form for a new work item to be created based on a given model you can select in the work item model attribute. |
|
A button which calls a REST endpoint to obtain dynamic navigation information. When pressed, the REST endpoint will be invoked and the response used to navigate to a specific work item view. |
|
A button which calls a REST endpoint and loads the resulting JSON object into the bound variable. |
|
A button which, providing the model id of a plan item which has manual activation or an user event listener, has the same functionality than an CMMN action. Note that the button is only displayed in a CMMN template and if the action is available. |
|
A container that can only contain button widgets and has properties which affect the group of buttons contained. |
|
Used to show a horizontal line. The Horizontal line form widget is useful to structure large forms by splitting the form into sections, e.g. basic information, detail information, address, … |
|
A view to display content from a given source through an iframe. |
|
Used to preview documents as pdf. It can preview formats like doc or txt in addition to pdf. |
the functionality of the REST list and the List form widgets is similar. The only difference is that the REST list form widget uses a custom REST endpoint to load the displayed items (which can be of any format) whereas the List form widget uses edoras one to load the displayed work items. |
the functionality of the REST query link and the Query link form widget is similar. The only difference is that the REST query link form widget uses a custom REST endpoint to load the number of found elements whereas the Query link form widget uses edoras one to load the number of found elements. |
the functionality of the Link and the Link button as well as the Query link and the Query link button is similar. The only difference is that the Link and the Query link form widgets are rendered as links whereas the Link button and the Query link button form widgets are rendered as buttons. |
8.6.1. Output text area attributes
Attribute name | Description |
---|---|
Common |
See Common attributes to learn more about the common attributes. The Output text area form widget does not support the Default value and the Editable attribute, as these do not make sense for read only widgets. The Value attribute of a Output text area form widget is rich text which supports the following formatting options (see toolbar buttons in the image below): bold, italic, and underline text style, font size, foreground and background color, left, center, and right text alignment, headline, sub-headline, and section headline style, ordered and unordered list, text indentation, horizontal line, links. |
8.6.2. HTML attributes
Attribute name | Description |
---|---|
Common |
See Common attributes to learn more about the common attributes. The HTML widget does not support the value, default value and the editable attributes, as these do not make sense for read only widgets. |
Content |
Defines the content of the html. The "Content" attribute of an HTML widget is a plain text for writing html code. It may include front-end expressions. |
Border |
Defines if it will show a wrapper border. |
8.6.3. REST list attributes
Attribute name | Description | ||||
---|---|---|---|---|---|
Common |
See Common attributes to learn more about the common attributes. The REST list form widget does not support the Value, the Default value and the Editable attribute, as these do not make sense for read only widgets. |
||||
Query URL |
Used to load the items that are presented to the user from a URL. The query URL attribute can be expressed as a static value or as a frontend expression. See Frontend expressions to learn the frontend expression syntax. The list form widget expects the items to be returned as list of JSON objects, e.g. ---- [ { "id" : "GEAR-a65c4a12-20b4-45d8-bb09-2105be7f0d1f", "title" : "edoras one Modeler", "value" : "GEAR-a65c4a12-20b4-45d8-bb09-2105be7f0d1f" }, { "id" : "GEAR-c641f3bb-876e-45f4-9550-ef95ef5a2fac", "title" : "edoras one User", "value" : "GEAR-c641f3bb-876e-45f4-9550-ef95ef5a2fac" } ] ----
|
||||
List title |
Used to define the title that is shown in the header of the list. The list title attribute can be expressed as a static value or as a frontend expression. See Frontend expressions to learn the frontend expression syntax. |
||||
Format |
Used to compose a user friendly string from the JSON item. The prefix to select an attribute from the JSON item is item. Literals have to be enclosed in quotes, attributes and literals can be concatenated with +. So if the JSON item looks like { "id" : "GEAR-c641f3bb-876e-45f4-9550-ef95ef5a2fac", "title" : "edoras one User", "value" : "GEAR-c641f3bb-876e-45f4-9550-ef95ef5a2fac" } then a format of Group: {{item.title}} results in Group: edoras one User being presented to the user for this JSON item. |
||||
Minimum number of visible items |
Used to define the minimum height of the list. The list height is forced to a height that can show at least a certain number of items. If the concrete list has less items then the missing space is filled with empty items. For example if there are 5 items to show and the minimum height is 10 then the list height is forced to a height that can show 10 items. |
||||
Maximum number of visible items |
Used to define the maximum height of the list. The list height is forced to a height that can show at most a certain number of items. If the concrete list has more items then the list shows a scroll with which the user can scroll in the list. For example if there are 15 items to show and the minimum height is 10 then the list height is forced to a height that can show 10 items. |
||||
Navigation URL |
Used to define the URL to navigate to when the user clicks an item in the list. The navigation URL attribute can be expressed as a static value or as a frontend expression. See Frontend expressions to learn the frontend expression syntax. The prefix to select an attribute from the JSON option is $item. So if the JSON item looks like { "id" : "GEAR-c641f3bb-876e-45f4-9550-ef95ef5a2fac", "title" : "edoras one User", "value" : "GEAR-c641f3bb-876e-45f4-9550-ef95ef5a2fac" } then a navigation URL of /GRP/{{$item.id}}/browse results in /GRP/GEAR-3456061f-4892-4ef4-b234-69217201cd09/browse being invoked when the user clicks the item in the list. |
||||
Target |
Used to define the tab where the linked item is loaded. Possible values are:
|
8.6.4. List attributes
Attribute name | Description |
---|---|
Common |
See Common attributes to learn more about the common attributes. The List form widget does not support the Value, the Default value and the Editable attribute, as these do not make sense for read only widgets. |
Query |
The edoras one query that is used to load the work items for the list. Typical queries:
See section Searches in the User guide to learn more about the search syntax and about all possible search terms. |
List title |
Used to define the title that is shown in the header of the list. The list title attribute can be expressed as a static value or as a frontend expression. See Frontend expressions to learn the frontend expression syntax. |
Format |
Used to compose a user friendly string from the work item. The prefix to select an variable from the work item item. Literals have to be enclosed in quotes, attributes and literals can be concatenated with +. So if the format is Group: {{item.name}} then the work item is shown to the user as Group: edoras one User. |
Minimum number of visible items |
Used to define the minimum height of the list. The list height is forced to a height that can show at least a certain number of items. If the concrete list has less items then the missing space is filled with empty items. For example if there are 5 items to show and the minimum height is 10 then the list height is forced to a height that can show 10 items. |
Maximum number of visible items |
Used to define the maximum height of the list. The list height is forced to a height that can show at most a certain number of items. If the concrete list has more items then the list shows a scroll with which the user can scroll in the list. For example if there are 15 items to show and the minimum height is 10 then the list height is forced to a height that can show 10 items. |
Navigation view |
Used to set the target view for the link. Possible values are:
|
Target |
Used to define the tab where the linked work item is loaded. Possible values are:
|
8.6.5. Image attributes
Attribute name | Description |
---|---|
Common |
See Common attributes to learn more about the common attributes. The Image form widget does not support the Value, Default value and the Editable attribute, as these do not make sense for read only widgets. |
Source URL |
Used to define the URL from which the image is loaded. The source URL attribute can be expressed as a static value or as a frontend expression. See Frontend expressions to learn the frontend expression syntax. This can be an absolute URL like http://www.activiti.org/images/edorasware_logo.png or a relative URL that points to the content of a document work item, for example rest/workobjects/GEAR-faded1c0-a147-4fb1-9875-e13b185b0abe/content. |
Maximum height |
Used to define the maximum height of the image. If set then the height of the Image form widget is forced to that height, which means the contained image is scaled down to that height. If not set then the height of the Image form widget is equals to the height of the contained image. |
Refresh time (seconds) |
Used to define a refresh internal in seconds. The image is reloaded every x seconds, where x is the defined refresh time. This is useful if the Source URL attribute point to a dynamic image that can change over time. |
Navigation URL |
Used to define the URL to navigate to when the user clicks the image. The navigation URL attribute can be expressed as a static value or as a frontend expression. See Frontend expressions to learn the frontend expression syntax. |
Target |
Used to define the tab where image is loaded. Possible values are:
|
8.6.6. Link attributes
Attribute name | Description | ||
---|---|---|---|
Common |
See Common attributes to learn more about the common attributes. The Link form widget does not support the Value, Default value and the Editable attribute, as these do not make sense for read only widgets. |
||
Link text |
The attribute is used to define the link text. |
||
Navigation URL |
Used to define the URL to navigate to when the user clicks the link. The navigation URL attribute can be expressed as a static value or as a frontend expression. See Frontend expressions to learn the frontend expression syntax.
|
||
Context variables |
Parameters that can be added to the URL linked. A dialog is opened where the name and the value of the parameters are specified. The value of the parameter can be a frontend-expression. See Frontend expressions to learn the frontend expression syntax. An special parameter is "forwardTo", which defines the url where we will be redirected after executing the submit action of the page where we navigate to. |
||
Tooltip |
Used to define the tooltip, that is, a text which will appear when the mouse enters in the widget. The tooltip attribute can be expressed as a static value or as a frontend expression. See Frontend expressions to learn the frontend expression syntax. |
||
Target |
Used to define the tab where the linked item is loaded. Possible values are:
|
8.6.7. Create Link attributes
Attribute name | Description |
---|---|
Common |
See Common attributes to learn more about the common attributes. The Create Link form widget does not support the Value, Default value and the Editable attribute, as these do not make sense for read only widgets. |
Link text |
The attribute is used to define the link text. |
Work item type |
Type of the work item you want to create. The items can be Case, Task, Document or Process. The attribute can be set by a frontend-expression.See Frontend expressions to learn the frontend expression syntax. |
Work item model |
Select the models available to create, depending on the Work item type selected. The attribute can be set by a frontend-expression. See Frontend expressions to learn the frontend expression syntax. |
Context variables |
Parameters that can be added to the URL linked. A dialog is opened where the name and the value of the parameters are specified. The value of the parameter can be a frontend-expression. See Frontend expressions to learn the frontend expression syntax. An special parameter is "forwardTo", which defines the url where we will be redirected after executing the submit action of the page where we navigate to. |
Hide selectors |
If its value is true, the template and parent selectors will be hidden. This only happens if the parameters (modelId and parentId) of the creation page where we are going to navigate are defined in the url. |
Tooltip |
Used to define the tooltip, that is, a text which will appear when the mouse enters in the widget. The tooltip attribute can be expressed as a static value or as a frontend expression. See Frontend expressions to learn the frontend expression syntax. |
Target |
Used to define the tab where the linked item is loaded. Possible values are:
|
8.6.8. Search Link attributes
Attribute name | Description |
---|---|
Common |
See Common attributes to learn more about the common attributes. The Search Link form widget does not support the Value, Default value and the Editable attribute, as these do not make sense for read only widgets. |
Link text |
The attribute is used to define the link text. |
Query |
The edoras one query that is used to load the work items for the list. Typical queries:
See section Searches in the User guide to learn more about the search syntax and about all possible search terms. |
Show as button |
If it’s wanted to show the link as a button |
Tooltip |
Used to define the tooltip, that is, a text which will appear when the mouse enters in the widget. The tooltip attribute can be expressed as a static value or as a frontend expression. See Frontend expressions to learn the frontend expression syntax. |
Target |
Used to define the tab where the linked item is loaded. Possible values are:
|
8.6.9. Search Count Link attributes
Attribute name | Description |
---|---|
Common |
See Common attributes to learn more about the common attributes. The Link form widget does not support the Value, Default value and the Editable attribute, as these do not make sense for read only widgets. |
Link text |
The attribute is used to define the link text. The Link text attribute attribute can be expressed as a static value or as a frontend expression. See [frontend-expressions] to learn the frontend expression syntax. The value attribute supports the special $count frontend expression which represents the result count of the query. The value attribute as well supports different texts for singular and plural depending on the result counts. The syntax for this is [singular text|plural text]. So a value of $count case [|s] results in 1 case or 21 cases depending on the result count. |
Query |
The edoras one query that is used to load the work items for the list. Typical queries:
See section Searches in the User guide to learn more about the search syntax and about all possible search terms. |
Tooltip |
Used to define the tooltip, that is, a text which will appear when the mouse enters in the widget. The tooltip attribute can be expressed as a static value or as a frontend expression. See Frontend expressions to learn the frontend expression syntax. |
Target |
Used to define the tab where the linked item is loaded. Possible values are:
|
8.6.10. REST search count link attributes
Attribute name | Description | ||||
---|---|---|---|---|---|
Common |
See Common attributes to learn more about the common attributes. The Link form widget does not support the Value, Default value and the Editable attribute, as these do not make sense for read only widgets. |
||||
Link text |
The attribute is used to define the link text. The Link text attribute attribute can be expressed as a static value or as a frontend expression. See [frontend-expressions] to learn the frontend expression syntax. The value attribute supports the special $count frontend expression which represents the result count of the REST query. The value attribute as well supports different texts for singular and plural depending on the result counts. The syntax for this is [singular text|plural text]. So a value of $count user [|s] results in 1 user or 21 users depending on the result count. |
||||
Count URL |
Defines the REST URL that returns the count result (as a numerical value). The count URL attribute can be expressed as a static value or as a frontend expression. See Frontend expressions to learn the frontend expression syntax.
|
||||
Navigation URL |
Used to define the URL to navigate to when the user clicks the link. The navigation URL attribute can be expressed as a static value or as a frontend expression. See Frontend expressions to learn the frontend expression syntax. |
||||
Tooltip |
Used to define the tooltip, that is, a text which will appear when the mouse enters in the widget. The tooltip attribute can be expressed as a static value or as a frontend expression. See Frontend expressions to learn the frontend expression syntax. |
||||
Target |
Used to define the tab where the linked item is loaded. Possible values are:
|
8.6.11. Button attributes
Attribute name | Description |
---|---|
Common |
See Common attributes to learn more about the common attributes. The Button form widget does not support the Value, Default value and the Editable attribute, as these do not make sense for read only widgets. |
Button text |
The attribute is used to define the button text. The Button text can be expressed as a static value or as a frontend expression. See [frontend-expressions] to learn the frontend expression syntax. |
Navigation URL |
Used to define the URL to navigate to when the user clicks the button. The navigation URL attribute can be expressed as a static value or as a frontend expression. See Frontend expressions to learn the frontend expression syntax. |
Context variables |
Parameters that can be added to the URL linked. A dialog is opened where the name and the value of the parameters are specified. The value of the parameter can be a frontend-expression. See Frontend expressions to learn the frontend expression syntax. An special parameter is "forwardTo", which defines the url where we will be redirected after executing the submit action of the page where we navigate to. |
Tooltip |
Used to define the tooltip, that is, a text which will appear when the mouse enters in the widget. The tooltip attribute can be expressed as a static value or as a frontend expression. See Frontend expressions to learn the frontend expression syntax. |
Target |
Used to define the tab where the linked item is loaded. Possible values are:
|
Button alignment |
The alignment of the button can be Left or Right. |
Icon url |
The url of an image, which will be displayed inside the button as an icon. |
Icon alignment |
The alignment of the icon inside the button. Can be Left or Right. |
8.6.12. Create Button attributes
Attribute name | Description |
---|---|
Common |
See Common attributes to learn more about the common attributes. The Create button form widget does not support the Value, Default value and the Editable attribute, as these do not make sense for read only widgets. |
Button text |
The attribute is used to define the button text. The Button text can be expressed as a static value or as a frontend expression. See [frontend-expressions] to learn the frontend expression syntax. |
Work item type |
Type of the work item you want to create. The items can be Case, Task, Document or Process. The attribute can be set by a frontend-expression.See Frontend expressions to learn the frontend expression syntax. |
Work item model |
Select the models available to create, depending on the Work item type selected. The attribute can be set by a frontend-expression. See Frontend expressions to learn the frontend expression syntax. |
Context variables |
Parameters that can be added to the URL linked. A dialog is opened where the name and the value of the parameters are specified. The value of the parameter can be a frontend-expression. See Frontend expressions to learn the frontend expression syntax. An special parameter is "forwardTo", which defines the url where we will be redirected after executing the submit action of the page where we navigate to. |
Hide selectors |
If its value is true, the template and parent selectors will be hidden. This only happens if the parameters (modelId and parentId) of the creation page where we are going to navigate are defined in the url. |
Tooltip |
Used to define the tooltip, that is, a text which will appear when the mouse enters in the widget. The tooltip attribute can be expressed as a static value or as a frontend expression. See Frontend expressions to learn the frontend expression syntax. |
Target |
Used to define the tab where the linked item is loaded. Possible values are:
|
Button alignment |
The alignment of the button can be Left or Right. |
Icon url |
The url of an image, which will be displayed inside the button as an icon. |
Icon alignment |
The alignment of the icon inside the button. Can be Left or Right. |
8.6.13. CMMN Action Button attributes
Attribute name | Description |
---|---|
Common |
See Common attributes to learn more about the common attributes. The CMMN Action Button form widget does not support the Value, Default value and the Editable attribute, as these do not make sense for read only widgets. |
Model ID |
The model ID corresponds to the Model ID attribute of components which provide action buttons in CMMN template. These components are:
|
Tooltip |
Used to define the tooltip, that is, a text which will appear when the mouse enters in the widget. The tooltip attribute can be expressed as a static value or as a frontend expression. See Frontend expressions to learn the frontend expression syntax. |
Button alignment |
The alignment of the button can be Left or Right. |
Icon url |
The url of an image, which will be displayed inside the button as an icon. |
Icon alignment |
The alignment of the icon inside the button. Can be Left or Right. |
8.6.14. Inline Iframe attributes
Attribute | Description |
---|---|
Common |
See Common attributes to learn more about the common attributes. |
Source URL |
The URL of the source to be displayed in the iframe, might also contain expressions. |
Height |
Used to define the maximum height of the iframe in pixels. |
Show border |
If is set to true, it renders a border around the iFrame. |
Scrolling type |
If is set to true, a scrolling bar is attached to the iframe or not. The possible values are:
|
8.6.15. Pdf preview attributes
Attribute name | Description | ||
---|---|---|---|
Common |
See Common attributes to learn more about the common attributes. The Pdf preview form widget does not support the Default value and the Editable attribute, as these do not make sense for read only widgets. |
||
Document source type |
Possible values are:
|
||
Document source |
It depends on the prevous attribute, the Document source type:
|
||
Height |
Defines the height of the pdf preview. |
||
Show border |
If is set to true, the pdf preview will have a wrapper border. |
8.6.16. Button group attributes
Attribute name | Description |
---|---|
Common |
See Common attributes to learn more about the common attributes. The Button group form widget does not support the Default value and the Editable attribute, as these do not make sense for read only widgets. |
Button alignment |
The alignment of the button group. It can be Right, Left or Center. |
8.6.17. Horizontal line attributes
Attribute name | Description |
---|---|
Common |
See Common attributes to learn more about the common attributes. The Label attribute is used to define the title that is displayed inside the horizontal line. The Horizontal line form widget does not support the Default value and the Editable attribute, as these do not make sense for read only widgets. |
8.7. Executable form widgets
The execution form widgets executes actions and saves the result in a variable.
Form widget | Description |
---|---|
A button which calls an endpoint and redirects to a workitem view depending on the result. |
|
Button which executes a query and stores the result in a variable. In combination with a sub form, this allows to create search-like forms. If the button is clicked, the search is executed, the result stored in the variable and the subform will show the entries accordingly. If the query is using expression bound to search fields, you can create search forms this way. |
|
A button which makes a call to an url and sets the result in the model, with timer interval capability. |
|
A button which saves in a variable the result of a script. |
|
A button which saves in a variable the result of a script and shows a text based on the result. |
8.7.1. Dynamic Link Button attributes
Attribute name | Description | ||
---|---|---|---|
Common |
See Common attributes to learn more about the common attributes. The Dynamic Link Button form widget does not support the Value, Default value and the Editable attribute, as these do not make sense for read only widgets. |
||
Button text |
The attribute is used to define the button text. The Button text can be expressed as a static value or as a frontend expression. See [frontend-expressions] to learn the frontend expression syntax. |
||
REST url |
The REST url where the navigation information is retrieved. The response from the REST endpoint should have the following structure: { "id" : "GEAR-35354f5d-1004-460a-8d53-88a04e0f22c1", "type" : "TSK", "view" : "browse" } Where
|
||
Target view |
Define the view where will be redirected if the view is not defined in the REST url. If any is defined it will be redirected to Browse view by default. |
||
Context variables |
Parameters that can be added to the URL linked. A dialog is opened where the name and the value of the parameters are specified. The value of the parameter can be a frontend-expression. See Frontend expressions to learn the frontend expression syntax. An special parameter is "forwardTo", which defines the url where we will be redirected after executing the submit action of the page where we navigate to. |
||
Tooltip |
Used to define the tooltip, that is, a text which will appear when the mouse enters in the widget. The tooltip attribute can be expressed as a static value or as a frontend expression. See Frontend expressions to learn the frontend expression syntax. |
||
Target |
Used to define the tab where the linked item is loaded. Possible values are:
|
||
Button alignment |
The alignment of the button can be Left or Right. |
||
Icon url |
The url of an image, which will be displayed inside the button as an icon. |
||
Icon alignment |
The alignment of the icon inside the button. Can be Left or Right. |
8.7.2. Search button attributes
Attribute name | Description |
---|---|
Common |
See Common attributes to learn more about the common attributes. The Search button form widget does not support the Value, Default value and the Editable attribute, as these do not make sense for read only widgets. |
Button text |
The attribute is used to define the button text. The Button text can be expressed as a static value or as a frontend expression. See [frontend-expressions] to learn the frontend expression syntax. |
Value |
Is used to store the query result once executed (e.g. '{{searchResult}}'). You can bind the same variable to a subform for instance in order to render the result returned by the query. |
Query |
The edoras one query that is used to load the work items for the list. Typical queries:
See section Searches in the User guide to learn more about the search syntax and about all possible search terms. |
Max result size |
The maximum number of items being returned by the query in order to limit the result, might even be an expression. See Frontend expressions to learn the frontend expression syntax. |
Auto execute |
Automatically executes the query during initialization of the form, if set to 'true', might even be an expression. See Frontend expressions to learn the frontend expression syntax. |
Tooltip |
Used to define the tooltip, that is, a text which will appear when the mouse enters in the widget. The tooltip attribute can be expressed as a static value or as a frontend expression. See Frontend expressions to learn the frontend expression syntax. |
Target |
Used to define the tab where the linked item is loaded. Possible values are:
|
Button alignment |
The alignment of the button can be Left or Right. |
Icon url |
The url of an image, which will be displayed inside the button as an icon. |
Icon alignment |
The alignment of the icon inside the button. Can be Left or Right. |
8.7.3. REST button attributes
Attribute name | Description | ||
---|---|---|---|
Common |
See Common attributes to learn more about the common attributes. The REST button form widget does not support the Default value and the Editable attribute, as these do not make sense for read only widgets. |
||
Button text |
The attribute is used to define the button text. The Button text can be expressed as a static value or as a frontend expression. See [frontend-expressions] to learn the frontend expression syntax. |
||
Value |
Is used to store the REST endpoint result once executed (e.g. '{{result}}'). You can bind the same variable to a subform for instance in order to render the result returned by the REST endpoint. |
||
REST url |
Define the URL of the REST endpoint which returns the data.
|
||
Refresh time |
The milliseconds interval to execute the button automatically in every tick. If it’s not defined it will not be executed automatically. |
||
Auto execute |
Automatically executes the rest request during initialization of the form, if set to 'true', might even be an expression. See Frontend expressions to learn the frontend expression syntax. |
||
Tooltip |
Used to define the tooltip, that is, a text which will appear when the mouse enters in the widget. The tooltip attribute can be expressed as a static value or as a frontend expression. See Frontend expressions to learn the frontend expression syntax. |
||
Target |
Used to define the tab where the linked item is loaded. Possible values are:
|
||
Button alignment |
The alignment of the button can be Left or Right. |
||
Icon url |
The url of an image, which will be displayed inside the button as an icon. |
||
Icon alignment |
The alignment of the icon inside the button. Can be Left or Right. |
8.7.4. Script button attributes
Attribute name | Description |
---|---|
Common |
See Common attributes to learn more about the common attributes. The Script button form widget does not support the Default value and the Editable attribute, as these do not make sense for read only widgets. |
Button text |
The attribute is used to define the button text. The Button text can be expressed as a static value or as a frontend expression. See [frontend-expressions] to learn the frontend expression syntax. |
Value |
Is used to store the returned value of the script once executed (e.g. '{{scriptResult}}'). e.g It’s possible to bind the variable to a text widget in order to render the result returned by the script. |
Script |
The script which will be executed. Inside the script scope is possible to access to a variable called elementId which have the value of the id attribute of the script button. Is possible to use some util methods or properties:
If the script returns an Angular promise, the button becomes in loading state and ignores new clicks until the promise gets resolved or rejected. Once the promise is resolved, the resolved value will be stored in the model; If the promise is rejected the model won’t be changed. An example of a script returning a promise: /* $q needs to be previously injected */ var defer = $q.defer(); setTimeout(function(){ defer.resolve("anyResult"); }, 1000); return defer.promise; |
Refresh time |
The milliseconds interval to execute the button automatically in every tick. When is empty, it will not be executed automatically. |
Auto execute |
If it is set to 'true', the script is executed automatically during initialization of the form. It might even be an expression. See Frontend expressions to learn the frontend expression syntax. |
Tooltip |
Used to define the tooltip, that is, a text which will appear when the mouse enters in the widget. The tooltip attribute can be expressed as a static value or as a frontend expression. See Frontend expressions to learn the frontend expression syntax. |
Button alignment |
The alignment of the button can be Left or Right. |
Icon url |
The url of an image, which will be displayed inside the button as an icon. |
Icon alignment |
The alignment of the icon inside the button. Can be Left or Right. |
8.7.5. Selection script button attributes
Attribute name | Description |
---|---|
Common |
See Common attributes to learn more about the common attributes. The Selection Script button form widget does not support the Default value and the Editable attribute, as these do not make sense for read only widgets. |
Button text |
The attribute is used to define the button text. The Button text can be expressed as a static value or as a frontend expression. See Frontend expressions to learn the frontend expression syntax. |
Value |
Is used to store the returned value of the script once executed (e.g. '{{scriptResult}}'). |
Script |
The script which will be executed. Inside the script scope is possible to access to a variable called elementId which have the value of the id attribute of the script button. Is possible to use some util methods or properties:
|
Refresh time |
The milliseconds interval to execute the button automatically in every tick. When is empty, it will not be executed automatically. |
Auto execute |
If it is set to 'true', the script is executed automatically during initialization of the form. It might even be an expression. See Frontend expressions to learn the frontend expression syntax. |
Result format |
Shows the result of the script in a text field. If the result is an object saved in the 'result variable', it is possible to display its properties by setting it to {{scriptResult .anyProperty}} |
Tooltip |
Used to define the tooltip, that is, a text which will appear when the mouse enters in the widget. The tooltip attribute can be expressed as a static value or as a frontend expression. See Frontend expressions to learn the frontend expression syntax. |
8.8. Nesting form widgets
The nesting form widgets allow to nest widgets.
The data model of a nested form is usually stored in a nested data context. If configured that way the forms and the data model nest in a corresponding way: A field in a nested form then becomes a attribute in the nested data context.
Nested forms can be repeated. This way it is possible to define lists in the data model.
Usually nested forms are rendered in a way that the user can clearly see that the form fields belong to a nested form. But if desired nested forms can be rendered in a transparent way. The user can then not tell if a field comes from the main form or from a nested form.
Form widget | Description |
---|---|
Used to nest forms of a single type. |
|
Used to nest forms of multiple types. |
8.8.1. Single-type subform attributes
Attribute | Description |
---|---|
Form reference |
Used to define the form that is rendered in place of the subform. The editor for this attribute allows to pick an existing form or to create a new one. |
Element name |
Used to define the text for the add button. |
Common |
See Common attributes to learn more about the common attributes. The Value attribute is used to define the nested data context. This means if the Value is set to foo then all data inside the subform is stored in the foo attribute of the data model. This widget does not support the Label position, the Default value, and the Description attribute, as these do not make sense for nesting widgets. |
Validation |
This widget supports the minimum number of children and the maximum number of children validation. See Validation attributes to learn more about validation. |
Multiple elements |
Used to define if the user can repeat the form or not. If true, additional buttons are rendered to let the user add new forms and remove existing ones. |
Show border |
Used to define if the form inside the subform form widget is rendered nested or not. If true the form is rendered in a nested way and the user can clearly see that this is a nested form. If false the form is rendered in a transparent way and the user cannot distinguish if a field comes form the main form or from the nested form. |
Show add/remove buttons |
If the subform can hold multiple elements, this attribute specifies whether the add/remove buttons should be shown and thus allowing the user to create new elements or to remove existing elements. This can also be done using a dynamic expression. |
Collapsible |
If true, the subform can be collapsed/expanded by clicking on an arrow â–²/â–¼. |
Collapsed |
If true, the subform will appear collapsed by default. It supports FE expression by writing it in "Collapsed(RT)" field. Using FE expression, if the value of the expression changes, it will be applied to the subform, that is, if it becomes true, the subform will be collapsed and vice versa. |
8.8.2. Multi-type subform attributes
Attribute | Description |
---|---|
Form references |
Used to define the forms that are rendered in place of the subform. The editor to define the form references asks for a discriminator value, the form reference and display name. The discriminator value identifies the form reference and hence the form to be used inside the data model. The display name is used to define the text for the add button. The value stored in the discriminator attribute decides which form is used to display the data in the sub data context. |
Common |
See Common attributes to learn more about the common attributes. The Value attribute is used to define the nested data context. This means if the Value is set to foo then all data inside the subform is stored in the foo attribute of the data model. This widget does not support the Label position, the Default value, and the Description attribute, as these do not make sense for nesting widgets. |
Validation |
This widget supports the minimum number of children and the maximum number of children validation. See Validation attributes to learn more about validation. |
Multiple elements |
Used to define if the user can repeat the form or not. If true, additional buttons are rendered to let the user add new forms and remove existing ones. |
Show border |
Used to define if the form inside the subform form widget is rendered nested or not. If true the form is rendered in a nested way and the user can clearly see that this is a nested form. If false the form is rendered in a transparent way and the user cannot distinguish if a field comes form the main form or from the nested form. |
Show add/remove buttons |
If the subform can hold multiple elements, this attribute specifies whether the add/remove buttons should be shown and thus allowing the user to create new elements or to remove existing elements. This can also be done using a dynamic expression. |
Collapsible |
If true, the subform can be collapsed/expanded by clicking on an arrow â–²/â–¼. |
Collapsed |
If true, the subform will appear collapsed by default. It supports FE expression by writing it in "Collapsed(RT)" field. Using FE expression, if the value of the expression changes, it will be applied to the subform, that is, if it becomes true, the subform will be collapsed and vice versa. |
8.9. Attachment form widget
The attachment form widget allows to attach files.
Attribute | Description |
---|---|
Common |
See Common attributes to learn more about the common attributes. |
Validation |
The attachment form widget supports the minimum files and the maximum files validation. See Validation attributes to learn more about validation. |
Preview type |
Used to define the preview type. The following values are allowed:
|
Thumbnail maximum height |
Used to define the maximum height of the thumbnail. This attribute is only available when the preview type is Thumbnail. |
Select file message |
Used to define the message that is shown to the user inside the attachment form widget. By default the attachment form widget shows Please select file to the user. |
9. Process model
A process model defines a process that can be used by other workflow models to interact with the user.
Process models support the following settings:
- Name
-
The name of the model
- Description
-
Describes the purpose of the model. This is provided solely as information for modelers and does not have any runtime significance.
- Init form
-
A reference to the initialization form model. This form is used to set the initial state of the process when a new process is created based on this model.
- Work form
-
A reference to the work form model. This form is used to view and / or update the state of the process after it has been created.
The process can be quickly checked in edoras one by hovering over the process model in the App’s model list,
previewed within the process model using the Preview
view or edited in the edoras vis modeler using
the Design
action. It is also possible to download the process definition using the Download
action.
The following sections describe the elements available in the process modelling palette of edoras one. Each modeling element and its corresponding attributes are described in detail. Since edoras one is based on the BPMN 2.0 specification large parts of the modelling capabilities come from there. Ì‹Currently, edoras one does not support the full BPMN 2.0 standard for execution and the process palette contains only the BPMN2.0 elements that are currently supported by the engine.
In addition to the BPMN 2.0 standard elements, edoras one provides some dedicated process activities that can be used within process models. These edoras one specific activities are dedicated implementations of BPMN 2.0’s generic service task. They are implemented using the custom extensions hook of BPMN 2.0 so if you import a process model to another system that supports BPMN 2.0 these activities will appear as generic service tasks.
There are several attributes, that are available for all modelling elements:
Attribute Name | Description |
---|---|
Name |
The name of the element, displayed on the diagram. This attribute is not equal to the id of the element. |
Documentation |
Use this attribute to add any documentation / description to the element. The content of the element can not be displayed on the model graphics, but is exported to the BPMN 2.0 XML. |
Custom Properties |
Defines arbitrary definition properties as name / value pairs. Custom properties are similar to static constants in Java: defined properties are added to the given element in the process definition and cannot be modified without redeploying the app, but they can be accessed at runtime using a runtime expression. Expression evaluation is not supported within a property definition as expressions are only resolved at runtime, so only plain strings can be used for property names and values. Custom properties have a number of uses, for example modifying the behaviour of application code that interacts with the process definition or configuring specific instances of a reusable component. |
Background Colour |
Specify the background colour of the element in the diagram. |
Border Colour |
Specify the border colour of the element in the diagram. |
LoopType |
Selection of the loop type. See Multi Instance to know more about loops. |
There are several attributes, that are available to customize the font format of all modelling elements in the diagram. If the attributes are set at process level, all the components of the process will contain these attributes by default:
Attribute Name | Description |
---|---|
Font size |
Specify the font size of the element in the diagram. |
Font weight |
Specify the font weight of the element in the diagram. |
Font style |
Specify the font style of the element in the diagram. |
Font Color |
Specify the font color of the element in the diagram. |
These attributes can also be modified by the shortcut with a "T" icon placed in the left-bottom corner of the components. Clicking on this brings up a text format dialog where the formatting can be changed as required. The dialog includes a button to remove the style format and goes back to the default format.
Moreover the process can contain attributes associated to the whole process. In order to set them click in the design area without selecting any element.
Attribute Name | Description |
---|---|
Init form ref |
The reference to a form which will be rendered before the process starts by the 'Start process' action. |
Label expression |
Specify a label expression for tasks within this process if you want something else being used as the name property. |
Is executable |
If is set to false the deployment will ignore the process. Once is set to true and the process deployed |
Text format attributes |
See the table above. If the text format attributes are set at process level, all the components of the process will be created with the format set. |
9.1. Events
9.1.1. Start Event
A none start event technically means that the trigger for starting the process instance is unspecified. This means that the engine cannot anticipate when the process instance must be started.
Attribute Name | Attribute Type |
---|---|
Description |
none |
Sub-processes must always start with a none start event.
9.1.2. Message start event
A message start event can be used to start a process instance using a named message. This effectively allows us to select the right start event from a set of alternative start events using the message name.
When deploying a process definition with one or more message start events, the following considerations apply:
-
The name of the message start event must be unique across a given process definition. A process definition must not have multiple message start events with the same name. edoras one throws an exception upon deployment of a process definition for which two or more message start events reference the same message or messages with identical names.
-
The name of the message start event must be unique across all deployed process definitions. edoras one throws an exception upon deployment of a process definition for which one or more message start events reference a message with the same name as a message start event already deployed by a different process definition.
-
Process versioning: Upon deployment of a new version of a process definition, the message subscriptions of the previous version are cancelled. This is also true for message events that are not present in the new version.
Attribute Name | Description |
---|---|
Is interrupting |
This attribute denotes whether the sub-process encompassing the event sub-process should be cancelled or not. |
Message name |
|
Operation name |
9.1.3. Error start event
An error start event can be used to trigger an Event Sub-Process. An error start event cannot be used for starting a process instance.
An error start event is always interrupting.
Attribute Name | Description |
---|---|
Error code |
The error code associated to the event. |
9.1.4. Timer start event
A timer start event is used to create process instance at given time. It can be used both for processes which should start only once and for processes that should start in specific time intervals. Timer start event is scheduled as soon as process is deployed. That means that the process will be started without parent case. When a timer is needed after the start (not deployment) of a process then an intermediate time event (after a start event) should be used.
A process cannot be deployed if after timer start event there is a create case, create case from subform, create pdf or convert to PDF component. |
A subprocess cannot have a timer start event. |
There is no need to start an instance explicitly, although starting a process is not restricted and will cause one more starting of the process at the time invocation. |
When a new version of a process with a start timer event is deployed, the job corresponding with the previous timer will be removed. The reasoning is that normally it is not wanted to keep automatically starting new process instances of this old version of the process. |
Attribute Name | Description |
---|---|
Is interrupting |
This attribute denotes whether the sub-process encompassing the event sub-process should be cancelled or not. |
Timer properties |
Opens a dialog to specify when the timer should fire. |
9.1.5. Intermediate Event
An intermediate event marks the occurrence of a particular business event.
Process execution is not delayed.
Attribute Name | Description |
---|---|
Execution listeners |
The execution listeners to be executed when the process token arrives in the event. |
9.1.6. Message catching intermediate event
Message Catching Intermediate Events are used to model wait state for particular message event with a specified name. After message catching process instance continues in its execution.
Message Catching Intermediate Event style rules: * By convention, message catching intermediate events are named after the event they are waiting for. (e.g. "Additional data received")
Attribute Name | Description |
---|---|
Message name |
The name of the message that the event is waiting for |
Operation name |
9.1.7. Timer intermediate event
Timer Intermediate Events are used to model wait state driven by a time.
Timer Intermediate Event style rules: * By convention, timer intermediate events are named after the event they are waiting for. (e.g. "Delivery deadline reached")
Attribute Name | Description |
---|---|
Timer properties |
A wizard to configure the timer. |
9.1.8. Signal catching intermediate event
Signal Catching Intermediate Events are used to model wait for particular signal. After catching the signal the process execution continues. The signal is not consumed after the catching. One signal can fire execution of several independent process instances in one step.
Signal Catching Intermediate Event style rules: * By convention, signal catching intermediate events are named after the event they are waiting for. (e.g. "New customer arrived")
Attribute Name | Description |
---|---|
Is interrupting |
If the event is used as a boundary event. Specify if the related activity should be terminated when the signal arrives. |
Signal name |
The name of the signal the event is waiting for. |
9.1.9. Signal throwing intermediate event
Signal Throwing Intermediate Events are used to model sending a particular signal. After sending the signal the process execution continues. One signal can fire execution of several independent process instances in one step.
Signal Throwing Intermediate Event style rules: * By convention, signal throwing intermediate events are named after the event they are throwing.
Attribute Name | Description |
---|---|
Execution listeners |
The execution listeners to be executed when the process token arrives in the event. |
Signal name |
The name of the signal the event is throwing. |
9.1.10. Boundary error event
An intermediate catching error on the boundary of an activity, or boundary error event for short, catches errors that are thrown within the scope of the activity on which it is defined.
Defining a boundary error event makes most sense on an embedded subprocess, or a call activity, as a subprocess creates a scope for all activities inside the subprocess. Errors are thrown by error end events. Such an error will propagate its parent scopes upwards until a scope is found on which a boundary error event is defined that matches the error event definition.
When an error event is caught, the activity on which the boundary event is defined is destroyed, also destroying all current executions within (e.g. concurrent activities, nested subprocesses, etc.). Non interrupting error boundary event is not supported currently. Process execution continues following the outgoing sequence flow of the boundary event. Transaction is committed when the first wait state after boundary event is reached.
Attribute Name | Description |
---|---|
Error code |
The error code associated to the event. |
The errorCode is used to match the errors that are caught:
If errorRef is omitted, the boundary error event will catch any error event, regardless of the errorCode of the error. In case an errorRef is provided and it references an existing error, the boundary event will only catch errors with the same error code. In case an errorRef is provided, but no error is defined in the BPMN 2.0 file, then the errorRef is used as errorCode (similar for with error end events).
9.1.11. End event
A none end event means that the result thrown when the event is reached is unspecified. As such, the engine will not do anything extra besides ending the current path of execution.
Attribute Name | Description |
---|---|
none |
9.1.12. Error end event
When process execution arrives in an error end event, the current path of execution is ended and an error is thrown. This error can caught by a matching intermediate boundary error event. In case no matching boundary error event is found, an exception will be thrown.
Attribute Name | Description |
---|---|
Error code |
The error code associated to the event. |
9.1.13. Terminate end event
A terminate end event means that all active tasks for the given process are terminated. edoras one extension may archive parent case also.
Attribute Name | Description |
---|---|
Archive type |
The options to archive the parent case which contains the given process. * Do not archive * Archive only if there are no active children * Archive only if there are only active documents * Archive the case and all children |
Terminate end event should reference persisted process instances. Note that a process instance without wait state is not persisted. However wait state can be easily created by changing automatic component property from synchronous to asynchronous.
9.2. Tasks
9.2.1. User Task
A user task is used to model work that needs to be done by a human actor. When the process execution arrives at such a user task, a new task is created in the task list of the user(s) or group(s) assigned to that task.
Attribute Name | Description |
---|---|
Guid |
The task guid. It can not be edited. |
Form Reference |
Select a form to be attached to the current task. You can also directly create a new form from here |
Owner |
Set the owner of the task by selecting an existing user statically. |
Owner (RT) |
Use a backend expression to evaluate the owner dynamically at runtime. |
Assignee |
Set the assignee of the task by selecting an existing user statically. |
Assignee (RT) |
Use a backend expression to evaluate the assignee dynamically at runtime. |
Candidate Users |
Set the candidate users of the task by selecting existing users statically. |
Candidate Users (RT) |
Use a backend expression to evaluate the candidate users dynamically at runtime. |
Candidate Groups |
Set the candidate users of the task by selecting existing groups statically. |
Candidate Groups (RT) |
Use a backend expression to evaluate the candidate groups dynamically at runtime. |
Priority |
Set the priority of the task by using a literal or a backend expression. The priority is not currently not supported at runtime |
Due Date |
Set the due date of the task. The due date is currently not supported at runtime |
Allowed actions |
The allowed actions of the task can be edited. If they are removed, will not appear in one. The Assign, Share and Create Variables can be selected or removed. |
Mail Attributes |
Refer to Send Mail Service Task for the usage of these attributes. By using this attribute section, you cause the engine to additionally send an email when the task is created |
9.2.2. Manual task
A Manual task defines a task that is external to the BPM engine. It is used to model work that is done by somebody, which the engine does not need to know of, nor is there a system or UI interface. For the engine, a manual task is handled as a pass-through activity, automatically continuing the process from the moment process execution arrives into it.
Attribute Name | Description |
---|---|
none |
9.2.3. Service Task
A service task is a task that uses some sort of service, which could be a web service or an automated application.
There are 4 ways of declaring how to invoke Java logic:
-
Specifying a class that implements JavaDelegate or ActivityBehavior.
-
Evaluating an expression that resolves to a delegation object.
-
Invoking a method expression.
-
Evaluating a value expression.
The named objects are resolved in the execution’s process variables and (if applicable) in the Spring context.
Please note that only one of the following attributes must be filled: class, expression or delegateExpression.
Attribute Name | Description |
---|---|
Expression |
Specify a UEL method expression or UEL value expression that should be evaluated. |
Delegate expression |
Expression that resolves to a delegation object. It is also possible to use an expression that resolves to an object provided in the attribute.
This object must follow the same rules as objects that are created when the class attribute is used. |
Result variable |
The return value of a service execution (for service task using expression only) can be assigned to an already existing or to a new process variable by specifying the process
variable name as a literal value for resultVariable attribute of a service task definition. |
Class |
Class that implements JavaDelegate or ActivityBehaviorSpecify. The class is called during process execution. The fully qualified classname needs to be provided by the attribute. Example: org.activiti.MyJavaDelegate |
Disable security |
If this option is enabled then the service task will be executed with the security checks disabled, meaning that there will be no restrictions on the work objects that can be accessed or modified during the task execution. This should be used with caution. |
9.2.4. Create Case Service Task
The Create Case Service Task can be used to create a new case from within a process. Input data for the new case can be mapped and the newly created case can be referenced form the current case if needed.
Attribute Name | Description |
---|---|
Case Model |
Select a case model for the new case to be created |
Init Variables |
Specify additional variables that should be initialized during the creation of the new case |
Case Name |
Set the name of the new case using literals or backend expressions |
CaseId Variable |
specify a variable name where the id of the newly created case. Variable value is of
without prefix stores generated document id as a variable of the current process. This is optional |
ParentId |
specify an expression to resolve the work item id to be the parent item of the new case to be created. This is optional |
9.2.5. Create case from subform service task
The create case from subform service Task is an itemization of the create case service task. Here you can specify a variable (subform) of the current workitem hierarchy as the input values for the new case instead of binding all input parameters manually.
Attribute Name | Description |
---|---|
Case Model |
Select a case model for the new case to be created |
Init Variables |
Specify additional variables that should be initialized during the creation of the new case |
Case Name |
Set the name of the new case using literals or backend expressions |
CaseId Variable |
specify a variable name where the id of the newly created case should be stored in the current case. This is optional |
ParentId |
specify an expression to resolve the work item id to be the parent item of the new case to be created. This is optional |
Subform Variable |
Specify the variable name where the subform to create the new case from is bound to |
Remove Subform Variable |
If set to true, the variable of the subform will be removed from the data model after creating the case |
9.2.6. Create document service task
edoras one allows to enhance business processes with document creation service tasks. The create document service task creates a copy of the specified document template insid the current case. In case the document template is either a MS Word or Adobe PDF form, form fields will automatically be populated with execution data. Refer to Document Placeholders for more information.
Attribute Name | Description |
---|---|
Document Model |
Select a document model for the new document to be created |
Document Id variable name |
Specify a variable name where the id of the newly created document. Variable value is of
without prefix stores generated document id as a variable of the current process. This is optional. |
Document name |
The name of the document to be created within the case, might also contain expressions |
9.2.7. Convert to pdf service task
edoras one allows to enhance business processes with document conversion to pdf service tasks. The 'Convert to pdf' service converts a specified document to pdf format.
Attribute Name | Description |
---|---|
Document Id |
Specify the ID of the document which will be converted to pdf. |
Save as copy |
Indicates if the pdf document is saved as a new document. |
Document id variable |
Only active when 'Save as copy' is true. Specify a variable name where the id of the newly created document is stored. Variable value is of
without prefix stores generated document id as a variable of the current process. |
9.2.8. Send Mail Service Task
edoras one allows to enhance business processes with automatic mail service tasks that send e-mails to one or more recipients, including support for cc, bcc, mail templates,
… etc. Since version 1.5.0.S120
the mail is send only once to all recipients. Email sending does not iterate through the list of mail recipient as the implementation worked
before 1.5.0.S120
.
See section Mail Server in the Operators Guide for information on configuring the mail server. |
Attribute Name | Description |
---|---|
Mail Model |
This mail model defines rich-text templates for the mail subject and body. Backend expressions in the mail model templates will be replaced when the mail is sent. The mail model is a required runtime back end expression (the If you specify a back end expression, then this should resolve to either an email model id or email definition key (that is, a specific version of an email model). In the first case, the latest deployed version (definition) of the email model is used as template. In the latter case, the specified definition will be used, similar to selecting the literal case mentioned above. |
Mail Recipient |
The mail recipient is a required expression or literal that defines the email recipient (or multiple recipients). The first mail recipient can be accessed in the mail
template by |
Mail Reply-To |
The mail reply-to is an optional expression that specify an explicit reply address. If no reply address is defined then the global system default will be used (which will vary from installation to installation) |
Mail CC |
Specify one or multiple CC recipients using literals or backend expressions. This attribute is optional |
Mail Bcc |
Specify one or multiple BCC recipients using literals or backend expressions. This attribute is optional |
Mail Priority |
An optional expression or literal that specifies the mail priority (usually an integer in the range 1 - 5) |
Mail Headers |
Specify additional mail headers. They will be applied before the message is sent |
Attachments ids |
The list of documents sent by the email. The documents can be referenced by its id or a backend expression. |
9.2.9. Invoke REST endpoint service task
The Invoke REST endpoint service task provides a generic client to call arbitrary REST endpoints. The task supports all HTTP operations, Basic Authentication, custom headers and different mime-types.
Attribute Name | Description |
---|---|
Protocol |
Specify the protocol to use for the request. HTTP and HTTPS are supported |
Request Type |
Specify the type of the HTTP Request. GET, POST, PUT and DELETE are supported |
Request Headers |
Add additional HTTP message headers to your request |
Request Body |
Specify the message body that will be sent with the request. You can use backend expressions to include data from the data model within your message body structure. This can only be used with POST and PUT requests |
Content Type |
Define the content type header to be set within the request. This value will be overwritten if you have set a content type in the Header attribute |
Host Name |
The host name of the remote server (e.g. service.edorasware.com |
Port Number |
The port number of the remote server. If not specified, 80 is used |
Request Path |
Specify the path to the endpoint on the remote server. The path must start with a leading / You can use backend expressions to set the path dynamically at runtime based on values from the data model |
Request Parameters |
Specify the parameters that are passed as part of the request URL. Multiple parameters can be defined using the editor provided |
Username |
If the remote server requires basic authentication specify the username of the user you want to use for the request |
Password |
If the remote server requires basic authentication specify the password of the user you want to use for the request |
Response Type |
Select the format of the response of the REST call. Currently JSON and XML are supported |
Set Variables |
Map the response data to your data model. specify the variable name and use X-Path expressions to select the respecting value from the response |
Overwrite if existing |
Set to true if you want to overwrite the values of existing variables with the values from the REST calls response |
9.2.10. JSON to XML mapping
The JSON to XML mapping used to prepare data for the XPath expression evaluation is mainly intuitive, but for completeness here is a quick summary of how different JSON content is mapped:
JSON | XML | XPath example | Result |
---|---|---|---|
|
|
//node |
value |
|
|
//node[2] |
value2 |
|
|
//child |
cValue |
|
|
/root |
single value |
|
|
/json/root[2] |
two |
Note that in the case where multiple values are in the top-level JSON content, an additional root node (json) will be created as XML may only have a single root node. |
9.2.11. Initialize variables service task
Use the initialize variables service task to initialize arbitrary variables in the current workitem hierarchy. You can use Expressions or literals to set the values of the variables.
Attribute Name | Description |
---|---|
Init Variables |
Specify variable name and target workitem of the variable you want to initialize using literals. Use literals or backend expressions to specify the value of the variable |
Overwrite if existing |
If set to true, the values of already defined variables will be overwritten. Otherwise, already initialized variables are skipped |
9.2.12. Initialize variables on query result
Use the 'Initialize variables on query result' service task to initialize variables in every work item being returned by a query. You can use Expressions or literals to set the values of the variables.
Attribute Name | Description |
---|---|
Query |
The specified variables will be applied to every work item being returned by that query. |
Variables to initialize |
Specify variable name and target workitem of the variable you want to initialize using literals. Use literals or backend expressions to specify the value of the variable. For each variable it’s specified the flag 'Overwrite if existing', If set to true, the value of variable will be overwritten. Otherwise, already initialized variable is skipped |
Result list item name |
The name of the local variable representing the currently processed result list work item. This name might be used in an expression to access the current work item (e.g. '#{item.name}') |
Result list item index |
The name of the local variable representing the index (0-based) of the currently processed result list work item. This might be used in an expression to access the loop counter (index) of the currently processed work item (e.g. '#{itemIndex+1}') |
9.2.13. Comment service task
Use the comment service task to add a comment to an arbitrary workitem reachable by the expression resolver. You can use templates similar to the ones in the send mail service Task to add formatted, structured comments.
Attribute Name | Description |
---|---|
Comment Target Object |
Use an expression that resolves to the workitem where the comment should be added to the comment-stream |
History variable name |
Stores the last comment added in the given variable name. If empty the comment is added to the comment-stream. |
Comment User |
Specify a the user in whose name the comment is created using an expression |
Comment Template |
Select the template for the comment |
9.3. Execution elements
9.3.1. Sequence Flow
A sequence flow is the connector between two elements of a process. After an element is visited during process execution, all outgoing sequence flow will be followed. This means that the default nature of BPMN 2.0 is to be parallel: two outgoing sequence flow will create two separate, parallel paths of execution.
A sequence flow can have a condition defined on it. When a BPMN 2.0 activity is left, the default behavior is to evaluate the conditions on the outgoing sequence flow. When a condition evaluates to true, that outgoing sequence flow is selected. When multiple sequence flow are selected that way, multiple executions will be generated and the process will be continued in a parallel way.
The above holds for BPMN 2.0 activities (and events), but not for gateways. Gateways will handle sequence flow with conditions in specific ways, depending on the gateway type. |
Currently conditionalExpressions can only be used with Backend Expressions, detailed info about these can be found in section Backend Expressions. The expression used should resolve to a boolean value, otherwise an exception is thrown while evaluating the condition.
All BPMN 2.0 tasks and gateways can have a default sequence flow. This sequence flow is only selected as the outgoing sequence flow for that activity if and only if none of the other sequence flow could be selected. Conditions on a default sequence flow are always ignored.
Attribute Name | Description |
---|---|
Condition Type |
Specify the condition type of the message flow. standard an conditional flow behave the same, but are displayed differently. Use a backend expression in the Condidtion Expression Attribute to specify the condition. If you set the condition type to Default, this flow is executed when no other flow condition evaluates to true |
Condition Expression |
A backend expression that must evaluate to a boolean value |
9.3.2. Exclusive Gateway
An exclusive gateway (also called the XOR gateway or more technical the exclusive data-based gateway), is used to model a decision in the process. When the execution arrives at this gateway, all outgoing sequence flow are evaluated in the order in which they are defined. The sequence flow which condition evaluates to true (or which doesn’t have a condition set, conceptually having a 'true' defined on the sequence flow) is selected for continuing the process.
Note that the semantics of outgoing sequence flow is different to that of the general case in BPMN 2.0. While in general all sequence flow which condition evaluates to true are selected to continue in a parallel way, only one sequence flow is selected when using the exclusive gateway. In case multiple sequence flow have a condition that evaluates to true, the first one defined in the XML (and only that one!) is selected for continuing the process. If no sequence flow can be selected, an exception will be thrown. |
Attribute Name | Description |
---|---|
none |
9.3.3. Inclusive gateway
The inclusive gateway can be seen as a combination of an exclusive and a parallel gateway. Like an exclusive gateway you can define conditions on outgoing sequence flows and the inclusive gateway will evaluate them. But the main difference is that the inclusive gateway can take more than one sequence flow, like the parallel gateway. The functionality of the inclusive gateway is based on the incoming and outgoing sequence flow:
-
fork: all outgoing sequence flow conditions are evaluated and for the sequence flow conditions that evaluate to true the flows are followed in parallel, creating one concurrent execution for each sequence flow.
-
join: all concurrent executions arriving at the inclusive gateway wait in the gateway until an execution has arrived for each of the incoming sequence flows that have a process token. This is an important difference with the parallel gateway. So in other words, the inclusive gateway will only wait for the incoming sequence flows that will be executed. After the join, the process continues past the joining inclusive gateway.
Note that an inclusive gateway can have both fork and join behavior, if there are multiple incoming and outgoing sequence flow for the same inclusive gateway. In that case, the gateway will first join all incoming sequence flows that have a process token, before splitting into multiple concurrent paths of executions for the outgoing sequence flows that have a condition that evaluates to true.
Note that at least one condition must be true |
Attribute Name | Description |
---|---|
none |
9.3.4. Parallel gateway
Gateways can also be used to model concurrency in a process. The most straightforward gateway to introduce concurrency in a process model, is the Parallel Gateway, which allows to fork into multiple paths of execution or join multiple incoming paths of execution. The functionality of the parallel gateway is based on the incoming and outgoing sequence flow:
-
fork: all outgoing sequence flow are followed in parallel, creating one concurrent execution for each sequence flow.
-
join: all concurrent executions arriving at the parallel gateway wait in the gateway until an execution has arrived for each of the incoming sequence flow. Then the process continues past the joining gateway.
Note that a parallel gateway can have both fork and join behavior, if there are multiple incoming and outgoing sequence flow for the same parallel gateway. In that case, the gateway will first join all incoming sequence flow, before splitting into multiple concurrent paths of executions.
An important difference with other gateway types is that the parallel gateway does not evaluate conditions. If conditions are defined on the sequence flow connected with the parallel gateway, they are simply neglected. |
Attribute Name | Description |
---|---|
none |
9.3.5. Call activity (subprocess)
BPMN 2.0 makes a distinction between a regular subprocess, often also called embedded subprocess, and the call activity, which looks very similar. From a conceptual point of view, both will call a subprocess when process execution arrives at the activity.
The difference is that the call activity references a process that is external to the process definition, whereas the subprocess is embedded within the original process definition. The main use case for the call activity is to have a reusable process definition that can be called from multiple other process definitions.
When process execution arrives in the call activity, a new execution is created that is a sub-execution of the execution that arrives in the call activity. This sub-execution is then used to execute the subprocess, potentially creating parallel child execution as within a regular process. The super-execution waits until the subprocess is completely ended, and continues the original process afterwards.
Attribute Name | Description |
---|---|
LoopType |
Selection of the loop type. See Multi Instance to know more about loops |
Sub Process Reference |
Select the subprocess to be called within the call activity |
Sub Process Reference (RT) |
Use a backend expression to evaluate the sub process reference dynamically at runtime. |
In |
Map input data to be passed from the parent (current) process to the subprocess while starting the subprocess |
Out |
Map output data to be passed form the subprocess to the parent process after the subprocess has finished |
9.3.6. Subprocess
BPMN 2.0 makes a distinction between a regular subprocess, often also called embedded subprocess, and the call activity, which looks very similar. From a conceptual point of view, both will call a subprocess when process execution arrives at the activity.
The difference is that the call activity references a process that is external to the process definition, whereas the subprocess is embedded within the original process definition. The main use case for the call activity is to have a reusable process definition that can be called from multiple other process definitions.
A subprocess is executed within the scope of the parent process.
Attribute Name | Description |
---|---|
LoopType |
Selection of the loop type. See Multi Instance to know more about loops |
9.3.7. Text Annotation
The Text Annotation is for documentation purpose only, it’s not evaluated by the engine. Use it to add textual explanations to an element of the process model. In contrast to the Documentation property of an element, the text annotation is also visible on the graphical representation of the process model.
Attribute Name | Description |
---|---|
Text |
Text annotation displayed in the process model. |
9.3.8. Association
An association is represented with a dotted line. It is used to associate an artifact or text to a flow object, and can indicate some directionality using an open arrowhead (toward the artifact to represent a result, from the artifact to represent an input, and both to indicate it is read and updated). No directionality is used when the artifact or text is associated with a sequence or message flow (as that flow already shows the direction).
edoras one currently only supports undirected associations |
Attribute Name | Description |
---|---|
none |
9.4. Role elements
9.4.1. Horizontal Pool
Represents the organizational boundaries of a process, typically separating different organisations. A pool contains one or more lanes (like a real swimming pool). One process has to be executed within a pool. If the end-to-end process includes multiple pools, each pool has its own process flow. Communication between pools is handled by Message Flows. The horizontal pool in edoras one represents the system boundaries of edoras one in the mentioned orientation.
Attribute Name | Description |
---|---|
isExecutable |
Indicates if this pool is executable. |
9.4.2. Vertical Pool
Represents the organizational boundaries of a process, typically separating different organisations. A pool contains one or more lanes (like a real swimming pool). One process has to be executed within a pool. If the end-to-end process includes multiple pools, each pool has its own process flow. Communication between pools is handled by Message Flows. The vertical pool in edoras one represents the system boundaries of edoras one in the mentioned orientation.
Attribute Name | Description |
---|---|
isExecutable |
Indicates if this pool is executable. |
9.4.3. Collapsed pool
A collapsed pool hides internal detail from the viewer. It’s used to visualize communication between the main pool and an external system / organization that is not in the scope of the current project. The collapsed pool has no impact at execution time.
Attribute Name | Attribute Type |
---|---|
Description |
none |
9.4.4. Lane
Used to organise and categorise activities within a pool according to function or role, and depicted as a rectangle stretching the width or height of the pool. A lane contains the flow objects, connecting objects and artifacts.
Attribute Name | Description |
---|---|
Owner |
Set the owner of the lane by selecting an existing user statically. |
Owner (RT) |
Use a backend expression to evaluate the owner dynamically at runtime. |
Assignee |
Set the assignee of the lane by selecting an existing user statically. |
Assignee (RT) |
Use a backend expression to evaluate the assignee dynamically at runtime. |
Candidate Users |
Set the candidate users of the lane by selecting existing users statically. |
Candidate Users (RT) |
Use a backend expression to evaluate the candidate users dynamically at runtime. |
Candidate Groups |
Set the candidate users of the lane by selecting existing groups statically. |
Candidate Groups (RT) |
Use a backend expression to evaluate the candidate groups dynamically at runtime. |
All User task
components in a lane will inherit the values of Assignee
, Owner
, Candidate groups
and Candidate users
attributes at run-time, but only if
they are not explicitly set on the individual User task
components. This makes proper assignmetn of User tasks easier in the context of Swimlanes.
9.4.5. Message Flow
A Message Flow is represented with a dashed line, an open circle at the start, and an open arrowhead at the end. It tells us what messages flow across organizational boundaries (i.e., between pools). A message flow can never be used to connect activities or events within the same pool.
Attribute Name | Description |
---|---|
none |
9.5. Multi Instance
edoras one supports the creation of multiple instances of several BPMN 2.0 elements (Human Task, Call Activity, Embedded Subprocess and all Activities in the section Service Tasks of the edoras one palette). Multi-instancy is configured within the process model.
To specify multi-instancy select the corresponding type parallel or sequential.
If you chose parallel, all instances of the element are created at once, when the execution arrives at the activity. If you choose sequential, the next instance of the activity ist created, when the previous activity was completed.
Attribute Name | Description |
---|---|
Loop collection |
A varialbe from the variable hierarchy that holds a list of elements. All elements of the list are processed, that means, the platform will generate one instance per list element |
Loop element variable |
a copy of the current list element. If you want to modify the variable, write the new value to the original list element since the loop element variable is not merged with the original one, once the execution is terminated. |
Loop element index variable |
The name of the variable where the current list index is stored. |
Loop cardinality |
An expression that evaluates to an integer which determines the number of instances to be created if you do not use a list for iteration. |
Completion condition |
A boolean expression do define a condition, to terminate the multi-instancy. As long as the expression evaluates to true, a new instance will be created. |
10. Mail model
A mail model is used to define an email template that can be sent automatically by a workflow, and supports the following settings:
- Name
-
The name of the model
- Description
-
Describes the purpose of the model. This is provided solely as information for modelers and does not have any runtime significance.
- Mail Subject
-
The subject line to be sent with the email.
- Mail Body
-
The body text to be sent with the email.
10.1. Placeholder expressions
The mail subject and body can contain placeholder expressions that can be used to insert dynamic values.
Placeholder expressions are delimited in the same way as other backend expressions, i.e. with #{…}
:
When the mail is sent (for example using a mail task as part of a process definition), the placeholders will be resolved at the time the mail is sent:
11. Keyboard shortcuts
Name | Description |
---|---|
Up |
Navigate to above property in the panel. |
Down |
Navigate to below property in the panel. |
ENTER |
To open editors and closing/committing entered value for inline editors. |
SPACE |
To open inline editors / toggle boolean values. |
ESC |
To close inline editor without committing the values. |
F2 |
To open editor for editing selected attribute. |
Name | Description |
---|---|
ALT + 1 |
Selecting a New radio button. |
ALT + 2 |
Selecting a Reference radio button. |
ALT + 3 |
Selecting a Url radio button. |
ALT + 4 |
Selecting a Remove Reference radio button. |
SHIFT + F |
Switch to Find(Search) mode in reference panel. |
SHIFT + T |
Switch back to Treeview mode in reference panel. |
Up |
Navigate to above node in tree. |
Down |
Navigate to below node in tree. |
Left |
Collapse folder. |
Right |
Expand folder. |
ENTER |
Select the current model. |
Name | Description |
---|---|
INSERT |
Adding a new row. |
DELETE |
Deleteing a selected row. |
CTRL + up |
Moving selected row up. |
CTRL + down |
Moving selected row down. |
ENTER |
Editing a selected cell. |
TAB |
Selecting next cell. |
F2 |
To open editor for editing the selected cell. |
12. Designer Usability hints
The designer provides various usability hints.
12.1. Alignment of shapes
Using Middle and Center
toolbar buttons we can align shapes horizontally
or vertically.
Click the link to see demo.
12.2. Resizing of shapes to same size
Using Same size toolbar button we can resize all selected shapes to the same size.
Click the link to see demo.
12.3. Auto layout of connectors in process designer
Using Auto Layout toolbar button we can auto layout the connectors (sequence flows) in the process diagram.
12.4. Creating dockers and removing dockers
We can create and remove dockers in 2 ways:
-
By using Add Docker
and Delete Docker
toolbar buttons
-
By using mouse pointer directly on connecting shapes.
Click the link to see demo.
12.5. Changing the position of shapes
Using Change the position of shapes toolbar button we can move the shapes horizontally or vertically.
Click the link to see demo.
12.6. Transform shape
Using Transform shape feature we can transform a shape to another type belonging to same group.
Click the link to see demo.
12.7. Validating a process
Using Validate Process toolbar button we can find if there are any errors in the process.
Click the link to see demo.
12.8. Deleting of shapes
Using Delete all selected shapes toolbar button we can delete all selected shapes. We can also delete selected shapes using Del key.
Click the link to see demo.
12.9. View preview in form designer
Using View preview toolbar button we can view preview of the form.
12.10. Import BPMN 2.0 XML in process designer
Using Import BPMN 2.0 XML toolbar button we can import process from a BPMN 2.0 XML into the process diagram.
12.11. Compare revisions
Compare revisions toolbar button can be used to compare the revisions of the model to view the changes done between revisions.
12.12. Revert to a previous revision
In the Compare revisions mode you can click the Revert to this revision
button. This action creates a new revision with the content of the selected revision.
12.13. Drop shape on connectors / remove shape from connector
When we drop a new shape on a connector which is already connecting 2 other shapes, the connector automatically splits to accomodate the new shape.
Similarly, if we delete a shape which is already connected to two other shapes, the connectors automatically rejoin.
Click the link to see demo.
12.14. Quick shape menu
We can quickly add and connect shapes to existing shapes using the quick shape menu.
Click the link to see demo.
12.15. Editing shape property in process/form designer
We can directly edit some of the shape properties like name in the process editor, and label, description and value in the form editor.
Click the link to see demo.
12.16. Using label expression in process designer
We can define a custom label expression for shapes, so that corresponding values are displayed as label on the shapes
Click the link to see demo.
12.17. Resizing of shapes using mouse
Using mouse pointer, we can resize the shapes.
Click the link to see demo.
13. Expressions
edoras one can evaluate expressions in both the frontend (i.e. in the browser) and in the backend (i.e. in the server). Expressions can be used in a number of ways in the edoras one application, for example:
-
to create a binding between a form field and work object data
-
to modify the state of form fields dynamically in response to user input (e.g. field visibility)
-
to populate a mail template before the mail is sent
-
to control the execution flow in a process execution
-
to execute method calls on the server
-
…
13.1. Frontend expressions
13.1.1. Form binding expressions
Forms are used to display and edit the data of underlying work objects. The work object data and the form definition are fetched from the server, and the expressions used within the form definition are then used to link the form fields with corresponding data. For editable fields, any changes made are reflected in the underlying work object data, which is sent back to the server to be persisted when the form is submitted:
Form data binding expressions are placed between two sets of curly braces, e.g. {{expression}}, and are set using a form field’s Value attribute:
The Value attribute of most form fields may only be bound to a single expression, and this may not be preceded or followed by other text. The only exception to this rule is the output field, which doesn’t bind to a single value, but instead uses form expressions embedded within a rich text template to create dynamic textual output. |
A simple value name in double curly braces (e.g. {{value}}) is used to link to the corresponding variable in the current work object. If the work object variable doesn’t exist when the form is opened then it will be created automatically.
A work object in edoras one is typically part of a hierarchy, where work objects are linked together in a tree of parent/child relationships. For example a case typically serves as a container for other work objects (tasks, running processes, documents etc.). Form binding expressions can also be used to access the values from related work objects in the work object hierarchy. This is done be preceding the variable to be accessed by a qualifier (e.g. {{root.value}}):
The following qualifier keywords are currently supported:
parent |
the parent of the current work item |
root |
the root of the current work item hierarchy |
self |
the current work item |
$this |
the form. When we use a subform widget it would be the subform itself. |
As an example, if we start a process within a case then the process’s parent work object will be the case. A form task created by that process will have the process work object as its parent:
In this case {{root.name}} will bind to "Example case", {{parent.name}} will bind to "Example process" and {{name}} will bind to "Example task".
Init forms for tasks and processes only support parent variables update. That means that is not possible to update the case variables using the expression root. |
- currentUser
-
The object of the current user logged in the application, which provides its properties like id, name e.g {{currentUser.id}}
- isUserInGroup(userId, groupId)
-
The result of this expression will become true if the user is member of the provided group.
-
Parameters:
-
userId: the id of the user.
-
groupId: the id of the group.
-
-
This expression is executed asynchronously, that means that it will be "false" until the response from server is success.
- isUserInGroups(userId, groupIds)
-
The result of this expression will become true if the user is member of one of the provided groups.
-
Parameters:
-
userId: the id of the user.
-
groupIds: an array of group id’s.
-
-
This expression is executed asynchronously, that means that it will be "false" until the response from server is success.
- isUserInAllGroups(userId, groupIds)
-
The result of this expression will become true if the user is member of all of the provided groups.
-
Parameters:
-
userId: the id of the user.
-
groupIds: an array of group id’s.
-
-
This expression is executed asynchronously, that means that it will be "false" until the response from server is success.
13.1.2. Formatting dates in frontend expressions
When not being used to create a binding between a form field and a work item attribute (e.g. when used in the output form widget), frontend expression that resolve into a date can have an additional format string that defines how the date is formatted. To do so append the format string to the binding expression, for example:
{{anyBoundDate | date:'MMM/dd/yyyy'}} {{anyBoundDate | date:'dd-MM-yyyy'}}
If no format string is explicitly specified then yyyy-MM-dd is used.
The following tokens are allowed:
Token | Description |
---|---|
yyyy |
4 digit representation of year, e.g. 0001, 2010 |
yy |
2 digit representation of year, padded (00-99), e.g. 01, 10 |
MMMM |
month name long (always in English): January-December |
MMM |
month name short (always in English): Jan-Dec |
MM |
month of year (two digit): 01-12 |
M |
month of year (no leading zero): 1-12 |
dd |
day of month (two digit): 01-31 |
d |
day of month (no leading zero): 1-31 |
EEEE |
day name long (always in English): Sunday-Saturday |
EEE |
day name short (always in English): Sun-Sat |
The format string can contain literal values which need to be quoted with single quotes. Make sure that you escape the single quotes that denote a literal value. In order to output a single quote, use two single quotes in a sequence:
{{anyBoundDate | date: '\'day\' d \'of\' MMMM \'in the year\' yyyy'}} {{anyBoundDate | date: '\'Today it\'\'s\' dd/MM/yyyy'}}
It’s also possible to use the age filter in order to calculate the elapsed time from provided date until current date. The elapsed time can be calculate in ages or days.
{{anyBoundDate | age}} {{anyBoundDate | age: 'd'}}
13.1.3. More complex frontend expressions
When not being used to create a binding between a form field and a work object attribute, that is when not setting value property on most of the widgets, we can use more complex expressions like arithmetic or logic operations.
You can use this kind of expressions in runtime properties (like Editable(RT) or Visible(RT) ), query, default, or in the value of the output text.
- Arithmetic operations
{{ (number1 + number2) * number3 }} {{ number1 / number2 }}
- Text concatenation
{{ text + ‘_end’ }}
- Logic operations
{{ (boolean && otherBoolean) && ( text + _‘endText’ )}}
- Subform with multiple elements special expression keys
-
When we use subform or multi type subform with multiple elements we can make use of some special expressions:
Key | Result type | Description |
---|---|---|
$index |
number |
iterator offset of the repeated element (0..length-1) |
$first |
boolean |
true if the repeated element is first |
$middle |
boolean |
true if the repeated element is between the first and last |
$last |
boolean |
true if the repeated element is last |
$even |
boolean |
true if the position $index is even |
$odd |
boolean |
true if the position $index is odd |
We can, for example, retrieve the value of the previous item, having a subform with "mySub" value, the last item would be {{mySub[$index-1]}}
- Accessing arrays
-
Some widgets saves an array of items (Search button , Autocomplete with multitag, subform with miltiple elements, etc.)
You can access the value of an element through an expression model, for example, having a search button with {{myResult}} value, and a number widget with {{myIndex}}. You can use an expression like {{myResult[myIndex]}} to retrieve an item of the array.
13.2. Backend Expressions
Expressions can also be executed on the server, for example within the process models. Server-side expressions are called backend expressions. A much wider range of expressions is possible than in frontend expressions the expressions may also have side-effects within the system (for example causing an e-mail to be sent). As well as accessing data from the work object hierarchy, backend expressions support additional functionality such as accessing work objects outside of the immediate hierarchy, predefined function calls and bean method calls.
There are two basic expression types:
- value expressions
-
have the form #{value.property} and resolve to a value
- method expressions
-
have the form #{bean.method(value)} and result in a method invocation
The full backend expression language is part of the EE6 specification and only an brief overview will be provided here. For a full description of the expression language syntax please refer to the EE6 specification. |
13.2.1. Accessing work objects
As in the frontend, qualifiers can be used to traverse the work object hierarchy, although there are more options available in backend expressions. qualifiers can also be chained (e.g. #{process.parent.name}):
The following qualifier keywords are currently supported:
- self
-
the current work item (the default if no work object is explicitly specified)
- case
-
the top-most parent case to which the current work object belongs
- parentCase
-
the nearest parent case to which the current work object belongs
- process
-
the top-most parent process to which the current work object belongs
- parentProcess
-
the nearest parent process to which the current work object belongs
- root
-
the root of the current work object hierarchy
- parent
-
the direct parent of the current work object
13.2.2. Backend attribute values
Simple attribute names can be used to access work object attributes in backend expressions in the same way as in frontend expressions (see Frontend expressions).
To access attributes, simply use the attribute name: #{case.name}
One significant difference between frontend expressions and backend expressions is that the work object attributes accessible in the frontend may have been pre-processed by the server so that the attribute values are in a form that makes more sense in the client’s context. With backend expressions this processing is not performed so you will be working with raw work attributes. As an example, state is represented in a work object by an instance of the State class. In the frontend , the expression {{state}} will be bound to the name field of this object (e.g. "ACTIVE"). The conversion from a State object to the state name string has already been performed by the server. The corresponding process binding, #{state} resolves to the underlying State object, which if it is used in a string context will be converted to a string literal, e.g. "[State@51d838d9 name = \'ACTIVE']". To access the plain name ("ACTIVE") we can use a java bean property expression: #{state.name}. |
For a description of common work object attributes, refer to Common attributes.
13.2.3. Automatic work object ID conversion
Work objects are referenced using IDs, and in a backend expressions it is often useful to access not the ID itself but the referenced work object. To support this use case, an expression that resolves to a work object ID will automatically be converted to the corresponding work object instance as needed.
For example the expression #{ownerId} will resolve to the owner ID, but if we then extend the expression (e.g. #{ownerId.name} then the ID will be converted to the corresponding work object, and the name attribute from this work object will be returned.
As access to other work objects linked from a work object using IDs is so common there are also some shortcut expressions to access this information directly:
Expression | Type | Description |
---|---|---|
#{owner} |
User work object |
the work object’s owner |
#{assignee} |
User work object |
the work object’s assignee |
#{initialAssignee} |
User work object |
the work object’s initial assignee |
#{previousAssignee} |
User work object |
the work object’s previous assignee |
#{candidateUsers} |
List of user work object |
the work object’s candidate user list |
13.2.4. Resolving hierarchy variables
A major difference between frontend expressions and backend expressions is the visibility of work object variables within the work object hierarchy. With frontend expressions, accessing parent or root variables requires explicit use of the appropriate qualifier (e.g. parent.attribute).
With backend expressions, however, this is not always required. In the server, variables from parent work objects in the hierarchy are also visible in the child work objects. If a parent and child both have variables with the same name then only the child variable will be visible in the child work object.
For example, take the following work object hierarchy:
If we are resolving variables in the task context, then the expression #{case.message} will resolve to "Case message".
The expression #{process.message} will also resolve to "Case message" the process work object will inherit the message value from its parent (the case).
The expression #{message} will resolve to "Task message", however, as the variable inherited from the case has been hidden by a more local value.
13.2.5. Bean resolution
Backend expressions can also be used to access java beans, either to make method calls (#{beanName.method()}) or to access bean properties (#{beanName.property}).
For security reasons it is obviously not a good idea to allow access to all beans within the server, and so edoras one only allows access to a specific set of approved bean names.
13.2.6. Predefined functions
Backend expressions also support a number of predefined functions. As with bean resolution, the functions provided by a given edoras one installation can be configured, so the list of available functions may vary from system to system.
The following functions are provided by default:
- now()
-
returns the current date and time
- formatDate(Date date, String pattern)
-
returns the provided date formatted according to the provided pattern. When input parameters are null or empty throws IllegalArgumentException.
- formatDateNullSafe(Date date, String pattern)
-
returns the provided date formatted according to the provided pattern. When input parameters are null or empty returns empty string.
- formatType(Type type, boolean lowerCase)
-
returns the provided type formatted as a String. When type input parameter is null throws IllegalArgumentException.
- anyOf(Boolean... operands)
-
returns true if any of the provided booleans is true, false otherwise
- allOf(Boolean... operands)
-
returns true if all of the provided operands are true, false otherwise
- concatenateListWithList(List<T> base, List<T> toAppend)
-
returns a list that is the concatenation of the given two lists
- concatenateListWithElements(List<T> base, T... toAppend)
-
returns a list that is the concatenation of the given lists and the given elements
- extractValuesFromCollectionOfMaps(Collection<Map<String, T>> maps, String mapKey, boolean skipNullValues)
-
returns a collection of map values for the given key from the given collection of maps
13.2.7. Identity Manager bean
The predefined bean #{identityManager} provides functions related with the group management and the session user name.
The available functions of this bean are:
- getUsersOfGroup(GroupId)
-
returns the list of users of a given group.
- getUsersOfGroups(Collection<?>)
-
returns the list of users of a collection of groups. Only objects of String and GroupId type are allowed in the parameter.
- isUserInGroup(UserId userId, GroupId groupId)
-
returns a boolean which value is true if the given user belongs to a given group.
- isUserInGroups(UserId userId, Collection<?> groupIds)
-
returns a boolean which value is true if the given user is member of at least one group in the collection, false otherwise. In case of empty list false is returned. Only objects of String and GroupId type are allowed in the parameter.
- isUserInAllGroups(UserId userId, Collection<?> groupIds)
-
returns a boolean which value is true if the given user belongs to all groups in the collection, false otherwise. In case of empty list false is returned. Only objects of String and GroupId type are allowed in the parameter.
- getSessionUserName()
-
returns the display name of the current session user. It also adds the information if the user is impersonated by another user.
- getCurrentSystemAdminUserId()
-
returns the current tenant system administrator user id.
13.2.8. Model Manager bean
The predefined bean #{modelManager} provides functions related with the models.
- findLatestDefinitionKeyByModelId(String testModelId)
-
Returns a string which contains the latest active definition key by the given model id.
13.2.9. System properties in backend expressions
The expressions using system properties with dots in the name are supported in the following way, for the example for the property mail.smtp.from:
#{systemProperties['mail.smtp.from']}
13.3. Common attributes
13.3.1. Work object attributes
A number of predefined attributes are available on every work object:
Expression | Type | Description |
---|---|---|
name |
String |
the work object’s name |
description |
String |
the work object’s description |
state |
String |
the work object’s state |
type |
String |
the work object’s type |
ownerId |
User ID |
the work object’s owner |
assigneeId |
User ID |
the work object’s assignee |
candidateUserIds |
List of group IDs |
the work object’s candidate users |
candidateGroupIds |
List of group IDs |
the work object’s candidate groups |
creationTime |
Date |
the work object’s creation time |
updateTime |
Date |
the work object’s last update time |
dueTime |
Date |
the work object’s last due time |
priority |
Number |
the work object’s priority |
13.3.2. User attributes
The following attributes are defined in user work objects:
Expression | Type | Description |
---|---|---|
login |
String |
the user’s login name |
name |
String |
the user’s display name (full name) |
firstName |
String |
the user’s first name |
lastName |
String |
the user’s surname |
address |
String |
the user’s address |
phone |
String |
the user’s telephone number |
mobile |
String |
the user’s mobile telephone number |
String |
the user’s email address |
|
language |
String |
the user’s language |
homeUrl |
String |
the user’s home URL |
notes |
String |
the user’s profile notes |
memberGroups |
List of group IDs |
the groups ids which the user belongs to |
14. Localization
In this section you can find how to localize your application models.
edoras one supports five languages: English, German, French, Spanish and Italian. When modelling, it is possible to define different language texts for tasks, forms widgets, cases, etc.
14.1. Key concepts
Localised texts fall into one of two categories:
-
design-time (non-runtime) text that is displayed in the modeler dashboard and in model previews
-
runtime text that is used for corresponding runtime objects (usually marked with
RT
)
For example, a task in a process model has the following Name
attributes in the process design view:
As you can see, the value of the plain Name
attribute is shown as the task label in the model.
When a user task is created, the runtime attributes will be used to set the task name:
Note that it is only necessary to define separate runtime and non-runtime texts if different values are required. In the above example, displaying an expression in the task label would be ugly and not meaningful in a process preview so it’s a good idea to provide a separate design-time label for the task.
In general, if no specific runtime text is provided then the design-time text will be used instead.
14.2. Localize applications models
In order to set the supported languages of the application model, firstly they should be defined in the 'Browse' view. There you can set a primary language and various secondary languages.
If your language is not maintained in a particular App model, it defaults to the primary language defined.
14.3. Localize case models
In order to localize the cases, the modeller should navigate to the 'Browse' view and click in 'Localize' action button. The name and description of the case can be set in the languages defined in the application model.
14.4. Localize process models
In order to localize the processes, the modeller should navigate to the 'Browse' view and click in 'Localize' action button. The name and description of the process can be set in the languages defined in the application model.
14.5. Localization in VIS
There are some attributes of VIS elements which can also be localized, for example the labels or the task names can be set in the languages defined in the corresponding App model. To see the localized attributes in the attributes panel, the language must be selected at the top-right of the panel. A list with the application model languages will be displayed:
When a language is selected, a new attribute for each attribute which can be localized will be added in the attributes list:
At the end of the attributes list an i18n-key attribute is also added. This key is used in exporting and importing all translations within an App model.
Moreover the design and preview form will be displayed in the language selected in the menu.
14.6. Exporting and Importing translations used in Process, Form and Case models
To make localization easier to manage, edoras one supports exporting and importing of text translations used within the Process, Form and Case models belonging to a given App model.
Translations for all the attributes which support multi-language entries in the vis designer view and have a i18n-key specified are exported to respective language specific translation_<language-code>.properties file bundled into a <App-Model-Name>-translations.zip file.
Each translation file has a global section at the top followed by model specific sections. The global section contains common i18n-keys used across multiple models within the App. While the model specific sections contain i18n-keys used only within each model.
In cases where same i18n-keys are used in multiple attributes within various models of an App and such attributes have different values, commented duplicate key value entries are exported in the translation properties file to facilitate the user to choose the correct one among them and then import it back into the App model.
The translations in the language specific properties files can be edited as required and re-zipped into a zip file and imported using the Import translation
action of the App
model. The new translations will then be set to the attributes which have the matching i18n-key entries within all the models of the App.
Rich text content edited with the rich-text editor are exported in HTML format within an enclosing <rich-text> tag. This enclosing <rich-text> tag needs to be retained while importing the translations so that the formatting is preserved.
15. Attribute value replacement support in VIS
VIS supports attribute value replacements in Case, Process and Form models when [[attribute-id]] place holders are used in the attribute values.
In an attribute’s value, one can reference another attribute by giving the attribute-id of the other attribute, for example, in the "Description" attribute’s value (of a Human task), you can have "This task has priority=[[priority]]" where "priority" is the id of the "Priority" attribute.
In this case, in the generated CMMN XML the description value will be exported as "This task has priority=1" if the priority attribute’s value is 1. In case the priority is left blank, then, it will be exported as "This task has priority=".
Multiple [[attribute-id]] place-holders can be used within an attribute’s value and all of them will be replaced as described above.
Run-time (RT) values of attributes will be used for replacement, where available, else the design-time values will be used for fall back.
15.1. Attribute value replacement support in REST URLs
Attribute place holders ([[attribute-id]]) used in REST URLs which are used to load REST Combo-box data at design-time are replaced by design-time attribute values.
However, in cases where values entered in the attribute’s RT fields need to be used for replacement in REST URLs an _rt
suffix (as in [[attribute-id_rt]]) should be
used.
16. Design time notes support in VIS
VIS supports adding design time notes to all process elements, case elements and form widgets. These notes are not shown in the previews.
Whenever an element or widget is selected in the design view, a small Notes
icon is shown near the top-right corner of the selected element or widget, clicking on which
displays the notes call out box where the design time notes can be entered.
Clicking again on this icon will hide the design time notes for that element or widget.
The toolbar also has a Notes
menu-item which can be used to toggle the display of all the design time notes added within the diagram.
17. Front end scripting reference
The edoras API provides a set of commands and utilities to interact with ONE in a standardised way.
It eases the job of the implementer by leveraging the most common operations in a small set of operations.
The API can be consumed via script buttons or in a developer console in the browser accessing the global property window.edoras. We recommend to use the developer console to test ideas and debugging and then move your code to the script button before deploying.
UI |
UI |
|||||||||||
Proxies commands to the user interface to interact with the application via CLI. Think of this namespace as a lightweight version of a browser driver like Selenium or WebDriverIO. |
Examples |
|||||||||||
refresh |
||||||||||||
Refresh the page data without reloading the html, it returns a promise which is resolved when the refresh is finished. |
refresh
|
|||||||||||
Actions |
||||||||||||
Whenever a view exposes actions to the user, they can be reproduced using this namespace as if the user interacted with the UI manually. Functions
|
Actions
|
|||||||||||
globalMessage |
||||||||||||
Shows a message to the user. Functions
|
GlobalMessage
|
|||||||||||
navigate |
||||||||||||
Navigate to views and action views Functions
|
Navigate
|
|||||||||||
REST |
REST |
|||||||||||
Not implemented Provides direct access to the backend rest endpoints. |
Examples |
|||||||||||
WorkObject |
||||||||||||
Create, update, read and delete WorkObjects |
WorkObject
|
|||||||||||
CurrentState |
CurrentState |
|||||||||||
Exposes the current state of the application |
Examples |
|||||||||||
user |
||||||||||||
Get the current user |
User
|
|||||||||||
forms |
||||||||||||
Get the current forms and read or set values in them Functions
|
forms
|
|||||||||||
formData |
||||||||||||
Gets a copy of the data from the default form of the current view Functions
|
edoras.currentState.formData
|
|||||||||||
tempData |
||||||||||||
Gets a copy of the temporary data from the default form of the current view Functions
|
edoras.currentState.tempData
|
|||||||||||
WorkObject |
||||||||||||
Get the current in-memory work object data |
WorkObject
|
|||||||||||
Services |
Services |
|||||||||||
Provides access to ONE services and allows registering custom services on demand to use globally in the app |
Examples |
|||||||||||
register |
||||||||||||
Sets a function as a ONE service by providing a name and a reference |
register
|
|||||||||||
i18n |
||||||||||||
Get translations for i18n keys |
i18n
|
|||||||||||
expressionService |
||||||||||||
Evaluates and normalizes expressions |
expressionService
|
|||||||||||
ViewEngine |
ViewEngine |
|||||||||||
Extend the form renderer configuration |
Examples ViewEngine
|
|||||||||||
EventLog |
EventLog |
|||||||||||
Get the history of actions triggered by edoras API |
Examples EventLog
|
|||||||||||
Configuration |
Configuration |
|||||||||||
Provides means of configuring and extending the client. |
Examples |
|||||||||||
widgets |
||||||||||||
Implementers can register new components to use in the view engine by using this namespace. Functions
|
Widgets
|
|||||||||||
Chain |
Chain |
|||||||||||
Execute a sequence of API commands |
Examples |
|||||||||||
Execute a sequence of API commands Functions
|
Chain
Chain with rejected promise
|
18. Glossary
- app
-
an app is a container for a collection of models that define a specific workflow.
- backend expression
-
a backend expression will be evaluated in the server, for example to populate a mail template before it is sent.
- dashboard
-
a page in the edoras one application where work objects can be found, displayed and manipulated. Each dashboard manages related work object types that play a given role within the system.
- definition
-
when a model is deployed, a definition is created in the system. Definitions describe the behaviour of the system as seen by a normal user.
- deployment
-
the process of converting the models into definitions to create an executable workflow.
- document placeholder
-
a backend expression identified by a key in a document model. Used to insert dynamic content into documents.
- expression
-
an expression can be used to access content or trigger specific behaviour at runtime. Two types of expressions are used: frontend expressions and backend expressions.
- form
-
a form is a graphical layout of fields that may be bound to work object data to allow this data to be displayed or modified within the edoras one application.
- form widget
-
a form widget is a type of form field, e.g. text form widget, date form widget, number form widget. The form field represents the single element on the form whereas the form widget represents the type of these single elements. As such the form widget defines the look and behaviour of the corresponding form fields.
- form field
-
a form field is a single element on a form. The user interacts with the form field, most of them are interactive but some of them are read-only.
- form field part
-
a form field is composed of different graphical parts: a label, a control, a description, a required indicator. The user interacts with the control part only.
- frontend expression
-
a frontend expression will be evaluated in the browser, for example to bind form fields to work object data.
- model
-
a description of a workflow component which can be deployed together with other models to create a executable workflow in edoras one
- process
-
a process is a workflow definition, described using a BPMN 2.0 model and executed within edoras one. It typically defines the automated and manual tasks that must be performed to complete the workflow.
- system app
-
a special App that can only be seen by the administrator. It contains the models that are required for the correct operation of edoras one.
- task
-
a task is a single action within a workflow, and may be either automated (a service task) or manual (a user task).
- work object
-
an item that can be created or manipulated in edoras one. Different types of work object are supported. The work object types are typically grouped according to their role within the system and accessed through dashboards.