Alfresco Process Services 1.11 introduces a new end-user app for working with tasks and processes, called Process Workspace.
For developers, this is a new user experience based on ADF 2.0, enabling high customization and faster time-to-value.
The Alfresco Process Services Landing Page continues to provide a user interface for managing your tasks but with the additional features for process design and profile management.
Process Workspace is a front-end application that is packaged and deployed separately from the Process Services application (activiti-app).
For more information about installation, see Installing Alfresco Process Services Workspace [4]
Process Workspace runs in a web browser. To open Process Workspace, use the following steps.
http://localhost:8080/process-workspace/
Where localhost:8080 represents the host name and the port number of where Process Workspace is hosted.
You'll see the login page.
When you log in, you'll see your Apps Page.
When you log in to Process Workspace, you'll see your Apps Page displaying the tiles that you have available. Each tile shows a process definition that gives you tools for a distinct set of tasks.
In the following image, you'll see that there is a Claim Review Process tile. Your Apps Page may show more tiles.
Click on an apps tile to display the Process Workspace dashboard for this .
The Process Workspace dashboard lets you review the statistics for a process definition. This information gives you an overview of the activity.
When you first open the dashboard, you'll see the minimized menu mode.
The following image shows the Process Workspace dashboard with the minimized menu. Your menu choices are shown on the left side of the dashboard.
To change to the expanded menu mode, click . The following image shows the Process Workspace
dashboard with the expanded menu.
The following information is available on each activity.
Statistic | Description |
---|---|
Activity | The name of the activity. |
Active Count | The number of activities that are active. |
Active Average Duration | The average time spent on an activity. |
Completed Count | The number of completed activities. |
Completed Average Duration | The average time taken to complete an activity. |
When you are using Process Workspace, you can
return to the Dashboard by clicking .
The Dashboard Settings lets you filter the data for the current process to customize the information on the dashboard.
The Dashboard Settings pane displays in the right-side of the dashboard.
You can see all of the tasks that you are working with on the My Tasks
list. To view your tasks, click .
You'll see the My Tasks page, which shows the tasks created within this app or as part of the processes from the app. New tasks that you create will appear in the My Tasks list.
To view a task, double-click on a task in the task list. A new page opens showing the task form. This provides options to save, approve or reject the task.
You can control the number of tasks displayed on the page. Click the down arrow next to Items per page and select a value from the list. The page refreshes to display the number of items you chose.
To view a task, double-click on a task in the task list. A new page opens showing the task form. This provides options to save, approve or reject the task.
Create new tasks for yourself or to assign to others.
The Start Task window appears.
You can view the detailed information about your active tasks.
You'll see the Details and Activity tabs on the right side of the page. The Details tab displays information about the currently selected task. The Activity tab allows you to add comments related to the task.
You'll see the information about the task.
You can also add people and groups. Click . Type the name of the person to search,
and then click ADD.
You'll see the name of the person in the list of people this task is shared with.
You'll see the comments made by you and others about this task. The comments list shows the name of the person who created the comment, along with the comment text and the date and time it was made.
To add your own comment, type into the Add a comment field.
You can upload a file that you wish to be attached to a task.
An attachment page appears.
Drag and drop files to this page. You can also click to upload files using your file
browser.
Process Workspace lets you download a PDF file that shows a summary of the task, including the task details and activity. This file is called the Task Audit.
The Processes list shows the details of the currently running processes.
To view your processes, click .
If you are using the expanded menu, you can see a more complete list of processes and you can filter the list for Running, Completed and All processes.
New processes that you create will appear in this list.
Double-click on a row in the process list to see a list of active tasks. Below this, a process diagram of the active process appears.
Create new processes for yourself or for other to use.
The Start Process window appears.
You can view the detailed information about your active processes.
You'll see the Details and Activity tabs on the right side of the page. The Details tab displays information about the currently selected process. The Activity tab allows you to add comments related to the process.
You'll see the information about the process.
You'll see the comments made by you and others about this process. The comments list shows the name of the person who created the comment, along with the comment text and the date and time it was made.
To add your own comment, type into the Add a comment field.
You can view the workflow for the process.
The left-hand pane displays a list of active tasks, below which a diagram of the process model appears.
You'll see a list of active tasks and the process workflow diagram for this process.
You'll then see the detailed information for the current task.
The default language used in Process Workspace is English. You can change the language.
You'll see the list of languages that are available.
.
The user interface text for Process Workspace changes to the selected language.
The Landing Page is the starting point from which you can use:
App Designer - Design your process
My Tasks - View your task inbox or queue
Profile management / Identity management - Manage user and group capabilities
Analytics - Generate reports on process performance
Depending on the capabilities of your account you may or may not get access to the App Designer or Analytics.
Profile management will appear will appear for you only if you are a user. This is where you manage your personal information. If you have administrator capabilities, then Profile management will be displayed as Identity management. Use this tile to access your profile page as well as to manage user, group, and capability management pages for your tenant or the whole system.
You can click on the Alfresco Process Services logo at any time to return to your landing page.
Your landing page is dynamic, and new tiles will appear when you create new process apps in the App Designer and deploy them in the Task App.
You'll also see a list of shortcuts for tasks you might want to do next.
All pages display the App Navigator icon in the far-right corner of the header. It provides useful 1-click shortcuts to various parts of the app. You can navigate instantly to all your process models, tasks, processes, stencils, forms, decision tables, quickly start any process, view the tasks and processes for a published and deployed app, or view and change your profile. As you deploy process apps, the App Navigator will also show shortcuts for the newly created process apps.
You can add a photo to your profile.
To edit your profile, click Profile management.
On the Personal page you can edit your details, such as your name, change your password, and view your group membership and capabilities.
To add your photo, click the image to the left of your name and upload the desired photo.
Use the App Designer to create process models, forms, app definitions, and share your models and definitions with others. As you create items, they appear as tiles on their respective page. The Last Modified drop-down on the top-right enables you to sort the display order ranging from last modified, oldest first, name order, or reverse name order. Use the filter on the left to filter the list of displayed items. Additionally, if you are unable to find a specific process, use the search box to find more processes. If your processes require human input, then you will need forms to gather it.
You can filter the list of Business Process Models using the following options on the left:
My items - View all your processes / app definitions / data models / stencils / reusable forms / reusable decision tables. The filter name changes based on the tab you are in. For example, in case of the Forms tab, it changes to My reusable forms and to My App definitions when you are in the Apps tab.
Shared with Me - View items shared by others with you.
Shared with Others - View items that you have shared with others.
Favorited - View your favorite items.
Everyone’s - View all processes regardless of who created them.
The App Designer panel includes the following tabs:
Processes - Provide tools for creating new processes, modifying existing processes, and importing processes from outside Process Services. If your account has the capability, you can also import existing models that are defined in BPMN 2.0 standard format.
Forms - Provide tools for creating new forms, and modifying existing forms. Filter the list of displayed forms using the options on the left. You can view all your forms, or just those shared by others with you, or those you have shared with others, or just those you have favorited. If you haven’t created any forms yet, then a new button called Create a new form now! will appear on the Forms tab.
Decision Tables - List decision tables that can be used across processes. Decision tables are an easy way to define business rules.
Apps - Create new apps, modify existing apps, and import apps from outside Process Services. You create an app to group one or more of your processes, so you manipulate them as one unit. You can make an app available for yourself and share it with others. An app can contain no process at all, which allows you to create simple task list.
Data Models - Enable you to map your business data with a relational database or a custom API such as a customer database, patient database, and so on. You can create business objects to connect to an external database that can be accessed by all processes in your application.
Open the App Designer editor by clicking a process definition, reusable form, reusable decision table, app definition, data models, or the stencils tab. The App Designer editor provides features such as copy, comment, delete, add to favorites, share with others, and export. You can also open the corresponding editor to make changes to the content, and perform actions specific to the item type. For example, you can publish an app definition or edit a process.
In the above example, the App Designer editor was opened for an app definition called publisher. The editor always displays the details of the selected item on the top panel along with a set of buttons on the top right. The right-most button opens the editor corresponding to the item displayed. So in the example, the right-most button opens the app editor. If a process definition created via the step editor is opened in the App Designer editor, then the App Editor would open the step editor.
Use the Task App to access your task list and work on tasks assigned to you from the Processes tab. This is also where you initiate new processes and tasks.
The Task App menu bar has tabs for working with tasks, processes, reports, and a Start button, which is a shortcut to start a process using a published process definition.
The Tasks tab is organized into three columns.
The left column lets you filter the list of displayed tasks. There are four pre-defined filters and a New Filter control which lets you define and name your own filters. Any filters you create are added to the list of displayed filters.
The middle column provides tools for creating new tasks, and lists the tasks included by the current active filter. Click on the accordion icon above the list of tasks to change the default display order from Newest first to oldest first, Due last order, or Due first order.
The right column is displayed when you click on a task in the middle column. It displays the selected task details and also tools for completing open tasks and for viewing the audit log of a completed task.
When you create a new filter in the Tasks tab or Processes tab, you can filter by process definition, the state of the task/process, by task name, and by assignment. You can also change the default sort order.
Select an active (running) process name, and display only those tasks that are associated with that process.
Choose to display tasks or processes based on its state. For tasks, select Completed or Open. Completed is selected by default. For processes, select Running, complete, or All. Running is selected by default.
Select tasks in which you are involved, or tasks that have been assigned to you, or tasks where you are one of the several candidates. This is only applicable to the Tasks tab.
Sort the list by Newest first, Oldest first, Due last, or Due first.
Type a string to search for matching task names or process name depending on the tab you’re in.
Select an icon for your new filter by clicking on the funnel icon, and specify a name for the filter.
If you have no tasks or processes running, then James will appear with a shortcut to let you create a new task for yourself or start an existing process and track its progress.
Use the Processes tab to start a new process from a list of published process definitions. The Processes tab is organized into three columns similar to the Tasks tab [42] except that instead of tasks, process details are displayed. You can also create a new filter to filter by process definitions, process state, and by process name.
Use the Reports tab to generate reports based on the available parameters. You can view the reports that you saved in the Analytics App. For more information, see Analytics App [43].
These are operations to manage tenants, groups and users. This is useful for example to bootstrap environments with the correct identity data.
Use the Tenants tab for creating new tenants, and modifying existing tenants.
By default, the details of the currently selected tenant are displayed. You can edit the name of the current tenant and configure various settings as follows:
Logo - Add or update your existing logo.
Events - A log of management events for the tenant.
Alfresco repositories - Configure your on-premise repositories. See Create Alfresco repository.
Endpoints - Configure your RESTful endpoints and Basic Authentication for endpoints.
Data sources - Register your data sources for using in Data Model.
Document templates - Upload a Microsoft Word (.docx) file that can be used as a template in processes.
Email templates - Create new custom email templates, view or edit the existing templates (both standard and custom). For information on creating custom templates, see Custom email templates [53].
Config - Configure settings for Box metadata support, validate decision table expressions, and enable or disable the option for involved users to edit forms. In addition, you can define the minimum length for the password, and the date format for forms (for example, D-M-YYYY).
Create custom email templates to send an email to the assigned user of a user task after the task is assigned to them.
Custom email templates can be created centrally or within an application when it is being designed.
Templates can contain process and task variables using the format ${title} where the variable is called title.
The following predefined variables can also be used depending on the assignment of the user task [55]:
Assignment | Variable |
---|---|
Single User Task | taskCreator, taskName, taskDirectUrl, homeUrl |
Group Task | groupName, taskName, taskDirectUrl, homeUrl |
Candidate User Task | taskName, taskDirectUrl, homeUrl |
The following is an example of a custom email template using variables:
A ${taskName} has been assigned to ${userName} for approval by ${dateDue}. If a response is not received within ${sla} it will be automatically approved.
Custom email templates can be created at the tenant level or per application:
Tenant level custom email template:
Existing custom templates can managed, edited and deleted in the same location.
Application level custom email template:
The users tab provides tools for managing users. The current users are displayed on the right panel. You can select from the list of users and use Select an action to change details, status, account type, password, and primary group of the user. In addition, you can create a new user, or filter the list of current users by status, account type, email or name, and company.
Use the Capabilities tab for managing the capabilities and groups of users that are available for this tenant.
There are two types of groups:
Capability groups - Groups that can be granted with variety of capabilities.
Organization groups - Functional groups that reflect the structure of your organization.
The following capability groups are available by default:
Analytics-users - Access the Analytics app to view reports.
Superusers - Administration of tenant of this group gives full administration rights for the current tenant to the selected group.
App Designer - Access to App Designer app that allows you to design and publish process definitions.
In addition, an Administrator can grant to the following capabilities to any of the capabilities groups:
Access Analytics app
Access App Designer app
Access the REST API
Access to all tenants' models
Administration of tenant of this group
Publish app to user dashboard
Upload license
You create and delete capabilities groups, add and remove users to and from a group, and add and remove capabilities to and from all users in a group.
Use the Organization tab to create functional groups that reflect the structure of your organization. Groups are used to grant access to apps or tasks. You can also add and remove users to and from a group, and create subgroups within a group.
Create a group
Group 1 Group 2
Result: Group 1 and Group 2 have been created as groups.
Create a subgroup
Group 1 Group 1.1 Group 2
Result: Group 1.1 has been created as a subgroup of Group 1.
Add an existing group
Group 1 Group 2 Group 1.1
Result: Group 1.1 has been moved from being a subgroup of Group 1 to Group 2.
Another example:
Group 1 Group 2 Group 1.1
Result: Group 2 has been added as a subgroup of Group 1 and Group 1.1 persists as a subgroup of Group 2.
Delete a group
Group 1 (deactivated) Group 2 (deactivated) Group 1.1 (deactivated)
Result: Group 1 has now been deleted.
Add users to a group
Name | |
user1@app.activiti.com | user1 |
Assign a group manager
Result: user2 has been appointed as the group manager.
Use the Analytics App tile to add standard reports and configure custom reports for performance and throughput statistics of your processes. You can view the Analytics App tile only if your account has the Analytics capability. Before generating process reports, make sure to run your processes at least a few times.
When you visit the Analytics app for the first time, you'll see some useful hints on the welcome screen.
The Analytics app has the following tabs:
Reports - Use this to add standard reports in Alfresco Process Services and view the existing reports.
Configure - Use this to configure standard reports and custom reports.
In Alfresco Process Services, you can add Standard reports at a click of a button. You can choose to add all standard reports at once or configure only the reports you’re interested in. For example, you can configure your report panel to isolate Task related reports such as Task overview and Task service level agreement reports, or custom reports that are based on generated reports (see Customizing reports [60]).
To add standard reports:
From the Analytics app > Reports tab, click Add some standard reports now link. The following standard reports appear in your Reports panel on the left:
Process definition heat map
Process definition overview
Process instances overview
Task overview
Task service level agreement
Alternatively, you can also add the same set of standard reports via the Configure tab. To remove your existing reports from the Reports panel, click Reset all my reports.
Once you have added the standard reports, you can access them from the Reports panel and generate them based on the required filter parameters. If the data is available, it will be presented in graph and tabular form, depending on the report selected.
You can filter most reports by the following parameters:
Date range
Process definition
Process Status
Task (Task related report only)
Task Status (Task related report only)
Some reports such as Task service level agreement and Process instances overview reports have additional parameters.
You can customize reports by selecting the Process Status and Date Range parameters. You can also create new reports by modifying the filter option of an existing report and saving it with a new name.
To generate and save a Task overview report:
Process Definition - Process definitions for the selected user.
Date Range - Tasks from Today, Yesterday, Last 7 days, Previous month, Current year, or Custom Range.
Task Status - All tasks, Active, or Complete.
Aggregate dates by - Tasks by hour, day, week, month, or year.
Relevant data for Task Counts, Task counts by assignee, Number of tasks divided by date interval, Task Duration, and statistics of all tasks are presented in graphical, tabular, and table formats. In addition, there’s an option to view the previous chart data in a table format.
You can generate all other reports in the same way by using the appropriate filter options. You are now ready to explore the advanced reporting and analytic features in Alfresco Process Services.
The Step Editor guides you through creating a business process through a sequence of simple steps. The processes you create using the step editor do not exploit the full power of BPMN 2.0 like those created by the BPMN editor, but you can use it to design both simple and quite complex process models, without knowledge of BPMN 2.0.
The editor has a menu bar with buttons to save your model, validate that the model is a complete BPMN 2.0 model definition, provide feedback to the Alfresco Process Services team, and to close the editor.
When you open the step editor on a new process definition, you can see the first step, the Process start step is already added to the process diagram for you. When you mouse-over a step, the stop becomes click-able. Click on it, and the details of the step are displayed and can be edited. This design principle is reflected throughout the Alfresco Process Services app. You can mouse-over and click text areas to modify their content, and variables to change their values. So for the Process start step, you can click on the single Process trigger variable and choose the trigger type:
The editor will guide you in creating your process. For example, when a form is required, it will present you with a list of existing forms and provide you with a button to create a new form.
Below the last step in a sequence, there is a + (plus) icon. Click on this to add a step to your process.
You can move steps around in your process Click in the top-right of the step and the step will be outlined in green, and the + icons will change to green discs.
Click the green disk at which you want your highlighted step to move, and the step is moved to that position in the flow:
In addition to the Process start step, there are five types of step you can add to your process.
A human step is a task to be completed by a user. You choose who to assign the task to, provide a form for that user to complete, define a due date for the task, and set a timer. If a timer is triggered, it will allow Alfresco Process Services to take an action related to the task, such as reassign it to another user and so on.
The Human step dialog is divided into four tabs:
Details tab
Form tab
Due date tab
Timer tab
Details tab
Property | Description |
---|---|
Id |
A unique identifier for this element |
Name |
A name for the task. |
Documentation |
A description of the task. |
Assignment |
Configure to who this task should be assigned. You can assign the task to one of the following assignees:
|
Form tab
You can select a form to display when the task runs. You can select an existing form, or create a new one. Forms that you create here while designing your process definition are accessible to steps in this process definition only. Forms that you have designed in the Forms tab of the Alfresco Process Services app can be reused by any process definition owned by someone you have shared the form with. Both types of form are listed in the chooser dialog. You can filter the available list of forms by entering text in the Filter box.
Due date tab
If you specify a Due date, then the time remaining until that date will be displayed in the task details when the process is running. If the task is not completed in that time, then the amount of time since the due date is displayed. You have the following options for setting a due date:
This is the default value.
Specifies a Due date in years, months, days, hours, minutes and seconds after the task is started.
Select a date field from a list of those available in forms of this process definition. You can add or subtract a specified amount of time in years, months, days, hours, minutes and seconds from the value of the chosen date field to create a Due date.
Select a variable from the list of those available in forms of this process. You can add or subtract a specified amount of time in years, months, days, hours, minutes and seconds from the value of the chosen date field to create a Due date.
Timer tab
Timer is similar to Due date, except you specify a time after which some action will be performed on the task by Alfresco Process Services. You can also specify an action for the task to be taken when the timer completes.
You have three options for setting a timer:
This is the default value.
You specify another assignee in exactly the same way as you specify the original assignee on the Details tab. When the timer completes, the task is assigned to the specified user, candidates users, or candidate groups.
When you specify Keep task, a new Timer date reached substep appears inside the current step with the + icon underneath it. You can add one or more subtasks inside this step by clicking this icon. When the timer completes, the task remains active, and the first substep becomes active too. The process continues running substeps as each substep is completed. Note that when you specify substeps here, the list of steps available now includes a Go to step. This allows you to choose one of the main process steps to run after this one.
When you specify End task, a new Timer date reached substep appears inside the current step with the + icon underneath it. You can add one or more subtasks inside this step by clicking this icon. When the timer completes, the task ends, and the first substep becomes active. The process continues running substeps as each substep is completed. Note that when you specify substeps here, the list of steps available now includes a Goto step. This allows you to choose one of the main process steps to run after this one.
When the timer completes, all active tasks in the process are canceled and the process ends.
When an email step starts in a running process, it sends an email with a fixed text body and a fixed title to a single or multiple recipients.
The email step dialog contains two tabs that let you fully define the task.
Name and Description are simple text fields that help you and others to identify the task in your task list.
Recipient type lets you choose who receives the email defined in this step:
The user who starts the process is the sole recipient of the email. This is the default.
If you choose this option, a Recipient field is displayed to allow you to search for single user or select someone using an email address.
If you choose this option a second Recipients field is displayed to allow you add one or more users. You can add Alfresco Process Services users or select someone using an email address.
A choice step enables you to start one of two or more sequences of substeps for your process, based on conditions.
Use the Name and Description fields in the choice step dialog to define the task for your task list.
When you select the Choices tab for a new choice step, it shows two choice boxes. You can use the + (plus) icon between them to add more choices. Click the choice box you to edit the choice and name it. You can also add from one of the following conditions:
This choice runs its sub-steps if none of the other choices conditions are met. Note that only one of the choices in a choice step can specify this condition for the model to validate. This is the default.
This choice runs its sub-steps if the value of a field in a form satisfies a conditional statement. If you click this option, the following options are available:
Select a field in a form that is used in this process definition.
Choose an operator from equal, not equal, less than, greater than, less than or equal to, greater than or equal to, empty, not empty.
Specify a value. For example, select a radio button field named direction from a form, choose the equals operator, and type the value Left.
This choice runs its substeps if the outcome of a form that matches the one specified for the choice is selected by the person assigned with the task. If you click this option, the following options are available:
Select an outcome of a form used in this process definition.
Choose an operator from equals or Not equals.
Select a value of the outcome from the list. For example, select an outcome named direction from a form, choose the Equals operator, and choose the value Turn left from the drop-down list.
There are two steps that you can add at the end of a substep sequence in a choice step that change the flow of control in the process.
An end process step is available only when defining a substep within a choice step. You use an end process step to stop the process within a choice step in your process definition. Since this is a terminal step, no + (plus) icon appears after the step.
In the End process step dialog > Details tab, define the task name and description.
The Goto step is available only when defining a substep within a choice step. You use a goto step to jump to a named step within your process definition. Like the End process step, it is a terminal step and no + (plus) icon appears after it.
The process definition used here illustrates models for driving a car. If you turn left, then you continue your journey. As long as you continue turning left, your journey continues. If you turn right, you drive a short distance to your final destination. The goto step provides two ways of managing the flow of control in a process:
A sub process step enables you to create a step that itself contains a sequence of steps that constitute a complete process definition. When saved, this definition is added to the list of substeps available to your main process definition. This gives you a method of managing complex processes by refining repeated sequences of steps into a sub step. This can make your process definition easier to comprehend visually.
The sub step dialog contains one tab that lets you fully define the task.
A sub process lets you choose a sub process that you have already defined in this process definition, or you can create a new sub process that is reusable in this process definition.
This step allows you make an arbitrary REST call. You can define a full endpoint directly or use an endpoint defined by an administrator on your Alfresco Process Services server. You can supply parameters to the call directly in the URL or from process variables in forms, and you can extract properties from the JSON response into process variables for use in your process definition.
The REST call step dialog contains four tabs that let you fully define the call.
Name and Description are simple text fields that help you and others to identify the task in your task list.
You define the URL for your REST call in this tab.
This is the method associated with the REST call. The default is GET, but you must select between GET, POST, PUT, and DELETE based on the documentation for your chosen API call. The example shown in the screenshot, is using the api/enterprise/app-version REST call, which is documented as a GET call.
You select one from a list of endpoints that have been defined by your administrator. In the example the endpoint for the local Alfresco Process Services server REST API, http://localhost:8080/activiti-app/ [72], has been chosen.
Copy the URL fragment from your selected REST API call. In this example we are using api/enterprise/app-version.
You may also choose to enter the full URL, especially for REST services that have not been defined by your administrator, for example, http://httpbin.org/post [73]. This can be useful during development and prototyping cycles.
In all cases, you can use the Test button to test your endpoint.
You can insert values previously submitted in any form (or variables) in your process definition, into the REST URL. The value will be inserted at the position of the cursor in the Rest url field.
Some REST calls require a JSON request body. You can add one or more JSON properties using this tab.
For each property you define the name, property type and value. The value can either be a fixed value, or you can select the value of a form field from a list of available form fields in your process definition.
REST calls return a JSON response body. You can define one or more pairs JSON response properties and process variables. When the step completes, each process variable will contain the value of the returned response property. You can use those values later in your process. In this example, the returned JSON property edition will be contained in the process variable activitiedition, which is a form field in a form used for displaying the edition string later in the process definition.
For complex and nested POST request bodies, specify a JSON Template which is evaluated at run-time. The JSON editor provides syntax highlighting and will highlight any JSON syntax errors on the line number indicator.
Use this step to generate a Microsoft Word or PDF document from a template in Microsoft Word. The process step will substitute any variables you place in the template document with process and form variables. You can upload global template documents for use by all users, or upload personal template documents for your own use.
The Generate Document step dialog contains the following tabs to define the task:
Name and Description - Type the name and description of your task.
Output name - Type the name of your output document.
Output format - Click the format that you want to view your generated document: PDF or Word.
Select from a list of company templates that an administrator has uploaded or upload your own personal templates by clicking Upload Template. In the above example, the offer.docx company template is selected.
You can also filter the list of company templates with a search string, and download any template to see what form and process variable substitutions are made in the template.
Enter a variable name that you have used in the document.
In the template, you can substitute <<[name]>> in the output document with the form variable name, for example:
Templates are processed using the LINQ reporting engine.
You can also use expressions to build more complex templates. For example, the following excerpt was used in an HR offer letter of XXX Corp called offer-letter.docx:
Your initial salary will be <<if [annualsalary > 30000]>>a generous <<else>>a standard starting<</if>> $<<[annualsalary]>> per year
The sample template referred above uses conditional expressions that tests the value of the form variable annualsalary and outputs one of the two different text phrases, depending on that value.
To test the offer.docx template, create a process definition that uses the template. For example:
In this example, the Generate Document step is the last step in the process definition, therefore you can view and download the generated document of the completed process in the Alfresco Process Services process view.
The decision step enables you to create a Decision Table. A decision table is an easier expression to creating business rules.
See the Business rules - decision tables [74] section for more details on Decision Tables.
Use this section to link create content related steps.
The Retrieve Alfresco Properties option enables you to retrieve content-specific properties from Alfresco Content Services and map it to a form field or variable, for example, properties of a document. You can retrieve document information after a document is added or referenced via the Attachment form field in the Share Connector.
Property | Description |
---|---|
Id |
A unique identifier for this element. |
Name |
A name for this element. |
Documentation |
A description of this element. |
Alfresco properties |
Retrieves Alfresco Content Services properties for content stored in the form editor or variable, and allows mapping them. |
The Update Alfresco Properties option enables you to update content-specific properties in Alfresco Content Services using a form field or variable. For example, you can update properties of a document linked from Alfresco Content Services via a form attachment field, or process variable.
The Properties sheet displays the same fields as Retrieve Alfresco properties, except that is used for updating properties rather than retrieving.
The Call Alfresco Action enables you to invoke standard Alfresco Content Services actions from Alfresco Process Services.
Property | Description |
---|---|
Id | A unique identifier for this element. |
Name | A name for this element. |
Documentation | A description of this element. |
Content | Retrieves properties Alfresco Content Services for content stored in the form editor or variable. |
Act as | Identity of the caller: Process Initiator or Specific User. Selecting Specific
User lets you select a different user. When the Identity Service is configured for Alfresco Content Services and Alfresco Process Services, a stored token will be used for authentication to Alfresco Content Services. |
Repository | Changes the repository account. For example: Alfresco Content Services. |
Action | Lists a range of actions specific to Alfresco Content Services. Select the options to make changes to the default name and value depending on your requirement. The options are as follows:
|
This step enables you to write a document or all documents uploaded in your process to an Alfresco Content Services on-premise repository.
A user with administration privileges will need to add accounts for the Alfresco Content Services repositories that you can publish to. An administrator can add repositories on the Tenant page of the Identity Management [71] app. The list of repositories you can publish to is then shown on your Personal Info page. If you click on a repository, an account to access the repository is added for you.
The Publish to Alfresco step dialog contains three tabs that let you fully define the task.
Name and Description are simple text fields that help you and others to identify the task in your task list.
This is the default. All files that have been uploaded in an upload field in a form before this step are published to the specified location in the repository
If you select this option a second field Form field displays a list of form fields from all the forms in your process. You can select one from the list.
This is the folder in an Alfresco repository to which the selected content will be published. Click Select Folder to display a dialog that lets you choose a folder from the available Alfresco repositories defined in your Alfresco Process Services app. Once you have selected a folder, the repository details and folder path are displayed in this field.
If you check create or reuse subfolder, a second field Based on field displays a list of fields from all the forms in your process. You can select one from the list. A folder with a name based on the content of the selected field will be created or reused within the specified destination folder to publish the content selected. If you do not select this option, all the items of content will be published directly to the specified destination folder.
This is similar to the Publish to Alfresco step, but for Box. (https://www.box.com/ [89]).
Note that a Box account needs to be configured in the Identity Management > Personal tab.
This is similar to the Publish to Alfresco task step, but for Google Drive. (https://www.google.com/drive/ [90]).
Note that a Google Drive account doesn’t need to be configured. A popup shows up when you have to select a document/folder and no account is found. This popup will allow you to log in with the Google Drive credentials and use this account thereafter.
With the BPMN editor you can create process definitions using the capabilities of BPMN 2.0. You build your process by dragging and dropping from a palette of grouped components to a canvas on which your process diagram is built.
The BPMN editor is structured into several areas:
On the left side of BPMN editor is the palette, which consists of collapse-able groups of BPMN objects.
On the right side of BPMN editor is the canvas, where the BPMN objects can be added to create a process model.
Below the canvas is the properties sheet, which shows the properties of the selected BPMN object on the canvas, or if no BPMN object is selected, the properties of the process itself. You can click on any of the properties to modify its value. The property sheet is collapse-able to allow you more screen space to view your process diagram.
The toolbar is displayed on the top with a set of grouped command icons. You can save and validate your model, delete selected elements in the diagram, cut, copy and paste selected elements, undo and redo the last action, zoom the process diagram, eliminate crossing connector lines by adding and removing bend-points, view the BPMN editor tour, and provide feedback to the Alfresco Process Services team.
When you first use the BPMN editor, a short guided tour runs showing you the components of the editor and running through the initial steps involved in creating a process definition. You can rerun the tour at any time by clicking the icon in the toolbar.
When you open the BPMN editor to create a new process definition, the canvas already contains a Start Event. Clicking on any event on the canvas frames the event icon with a dotted line and reveals a number of controls.
The controls below the icon allow you to delete the BPMN object, or change in to another object in the same group. For example, you can change a Start event to a Start timer event. The controls to the right of the icon allow you to specify the next object type in the process. The list presented includes only those object types that are valid in the sequence after the current object. In addition, there are controls that allow you to create flows connecting other existing events in your diagrams, and to annotate the event.
There are two ways of adding BPMN objects to your process:
Use the controls that appear when you click on a current object icon. Using this method will create a valid connector between the current event icon and the new event icon.
Drag and drop an object icon from the palette. In this case you add flows to the current event icons in the process yourself by picking the icons from the palette.
The following object groups are shown in a collapsible list in the palette. The groups consist of all the objects available in the BPMN 2.0 specification, and additional Alfresco Process Services extensions such as the Publish to Alfresco task, Publish to Box, Publish to Google Drive.
A start event indicates where a process starts. You can define a start event in one of the following ways:
Start on the arrival of a message
Start at specific time intervals
Start as a result of an error
Start when a specific signal is raised
Start on no specific trigger
In the XML representation, the type start event is specified as a sub-element.
Start events are always catching: a start event waits until a specific trigger occurs.
A start event with an unspecified trigger. BPMN 2.0 refers to this as a none start event. It is visualized as a circle with no icon.
A none start event can have a start form. If so, the start form will be displayed when selecting the process definition from the processes list. Note that a process instance is not started until the start form is submitted. A none start event without a form will simply have a button displayed to start the process instance.
A subprocess always has a none start event.
Property | Description |
---|---|
Id |
A unique identifier for this element. |
Name |
A name for this element. |
Documentation |
A description of this element. |
Execution listeners |
Execution listeners configured for this element instance. An execution listener is a piece of logic that is not shown in the diagram and can be used for technical purposes. |
Process Initiator |
The process variable in which the user ID of the initiator of this instance should be stored. |
Form key |
A key that provides a reference to a form. This property is available for compatibility with Activiti, but should not be used directly when using Forms. Use the Referenced form property instead. |
Referenced form |
A form reference. |
Form properties |
A form definition with a list of form properties. Form properties are the way forms are defined in the community version of Alfresco Process Services. Configuring them has no impact on the rendered form in the Alfresco Process Services, the Referenced form property should be used instead. |
A timer start event initiates a process instance at specific time. You can use it both for processes which must start only once and for processes that must start in repeated time intervals.
It is visualized as a circle with a clock icon.
Note that a process instance started by a timer start event can’t have a start form, as it is started by the system. Similarly, it does not have a process initiator like a none start event. As such when assigning tasks later on in the process definition, keep in mind that the assignment 'assigned to process initiator' will not work.
A subprocess can’t have a timer start event.
Property | Description |
---|---|
Id |
A unique identifier for this instance. |
Name |
A name for this element. |
Documentation |
A description of this element. |
Execution listeners |
Execution listeners configured for this instance. An execution listeners is a piece of logic that is not shown in the diagram and can be used for technical purposes. |
Time Cycle |
A timer cycle defined in http://en.wikipedia.org/wiki/ISO_8601 [106] format, for example: R3/PT10H. |
Time Date in ISO-8601 |
A point in time defined as a http://en.wikipedia.org/wiki/ISO_8601 [106] date, for example: 2015-04-12T20:20:32Z. |
Time Duration |
A period of time defined as a http://en.wikipedia.org/wiki/ISO_8601 [106] duration, for example: PT5M. |
A signal start event starts a process instance using a named signal. The signal is fired from a process instance using the intermediary signal throw event (or programmatically through the java or REST API). In both cases, a process instance for any process definitions that have a signal start event with the same name are started. You can select a synchronous or asynchronous start of the process instances.
A signal start event is visualized as a circle with a triangle inside. The triangle is white inside.
Property | Description |
---|---|
Id |
A unique identifier for this element. |
Name |
A name for this element. |
Documentation |
A description of this element. |
Execution listeners |
Execution listeners configured for this instance. An execution listeners is a piece of logic that is not shown in the diagram and can be used for technical purposes. |
Signal reference |
The name of the signal that initiates this event. Note that signal references are configured on the root level of the process instance and then linked to the signal start event via this property. To configure it, deselect any other element and click the Signal definitions property. |
A message start event starts a process instance using a named message. It is mainly used for starting process instances from external systems.
It is depicted as a circle with an envelope icon inside. The envelope is white inside.
When you deploy a process definition with one or more message start events, consider the following points:
The name of the message start event must be unique across the whole process definition. Alfresco Process Services will throw an exception on deployment of a process definition with two or more message start events that reference the same message or with two or more message start events that reference messages with the same name.
The name of the message start event must be unique across all deployed process definitions. Alfresco Process Services will throw an exception on deployment of a process definition with one or more message start events that reference a message with the same name as a message start event already deployed in a different process definition.
When a new version of a process definition is deployed, the message subscriptions of the previous version are canceled. This is also true for message events that are not present in the new version.
Property | Description |
---|---|
Id |
A unique identifier for this element. |
Name |
A name for this element. |
Documentation |
A description of this element. |
Execution listeners |
Execution listeners configured for this instance. An execution listener is a piece of logic that is not shown in the diagram and can be used for technical purposes. |
Message reference |
The name of the message that initiates this event. Note that messages are configured on the root level of the process instance and then linked to the message start event via this property. To configure it, deselect any other element and click the 'Message definitions' property. |
An error start event triggers an event Sub-Process. An error start event can’t be used for starting a process instance.
It is visualized as a circle with lightning icon inside. The icon is white inside.
Property | Description |
---|---|
Id |
A unique identifier for this element. |
Name |
A name for this element. |
Documentation |
A description of this element. |
Execution listeners |
Execution listeners configured for this instance. An execution listeners is a piece of logic that is not shown in the diagram and can be used for technical purposes. |
Error reference |
The name of the error that initiates this event. This reference needs to match the error identifier thrown by the event that throws the particular error. |
An activity describes a single item of work to be performed in a process. Alfresco Process Services provides some Activity types that are additional to those described in the BPMN 2.0 specification.
An activity is always visualized as a rectangle with rounded corners.
A user task enables you to model work to be done by a human actor. When process execution arrives at a user task in the process definition, it creates a new task in the task list of the assignee or assignees defined in the task.
A user task is depicted as a rounded rectangle with a user icon on the top-left corner.
Property | Description |
---|---|
Id |
A unique identifier for this element |
Name |
A name for this element. |
Documentation |
A description of this element. |
Assignment |
Configures to who this task should be assigned. It is possible to use Fixed Values (advanced usage: these are Alfresco Process Services expressions, for example by invoking a class or Spring bean) or use the Identity Store option. It is recommended to use Identity Store to select groups and users in the system:
|
Referenced form |
Allows to configure or create the form for this task. This form (also called _task form) will be rendered when the task is shown in the task list of the user. A user task typically always has a form defined. |
Form key |
This is a property that exists for compatibility with the community version. When working with task lists and forms, do not set this property. |
Form properties |
This is a property that exists for compatibility with Alfresco Process Services community. When using Alfresco Process Services to work with task lists and forms, do not set this property. |
Due date |
Allows to configure a due date for the task. In the task list, tasks can be sorted by due date to see which tasks are needed to be completed the soonest. The possible ways of configuring are:
|
Allow email notifications |
When enabled, an email will be sent to the assignee when the task is assigned to them. |
Email template | The template of the email to use when Allow email notifications is enabled. A custom email template can be selected from a list available to the tenant, or a new custom template created for the application. See custom templates [53] for instructions on creating a template. |
Asynchronous |
(Advanced) Define this task as asynchronous. This means the task will not be created as part of the current action of the user, but later. This can be useful if it’s not important to have the task immediately ready. |
Exclusive |
(Advanced) Define this task as exclusive. This means that, when there are multiple asynchronous elements of the same process instance, none will be executed at the same time. This is useful to solve race conditions. |
Execution listeners |
Execution listeners configured for this instance. An execution listener lets you execute Java code or evaluate an expression when an event occurs during process execution. |
Multi-Instance type |
Determines if this task is performed multiple times and how. The possible values are:
|
Cardinality (Multi-instance) |
The number of times the task is to be performed. |
Collection (Multi-instance) |
(Used with Multi-Instance type) The name of a process variable which is a collection. For each item in the collection, an instance of this task will be created. |
Element variable (Multi-instance) |
A process variable name which will contain the current value of the collection in each task instance. |
Completion condition (Multi-instance) |
A multi-instance activity normally ends when all instances end. You can specify an expression here to be evaluated each time an instance ends. If the expression evaluates to true, all remaining instances are destroyed and the multi-instance activity ends. |
Is for compensation |
If this activity is used for compensating the effects of another activity, you can declare it to be a compensation handler. For more information on compensation handlers see the Developer Guide. |
Use a service task to invoke an external Java class or execute an expression (for example to call a Spring bean).
A service task is visualized as a rounded rectangle with a cog icon inside.
Property | Description |
---|---|
Id |
A unique identifier for this element instance. |
Name |
A name for this element. |
Documentation |
A description of this element. |
Class |
The name of the Java class that implements your service task. Your class must implement JavaDelegate or ActivityBehavior. For more information on methods of invoking Java logic from a service task see the Developer Guide |
Expression |
An expression that either executes logic in the expression itself (for example ${execution.setVariable(myVar, someValue)}) or calls a method on a bean known by the Activiti engine (for example ${someBean.callMethod}). You can pass parameters (like the current execution) to the method in the expression. For more information on methods of invoking Java logic from a service task see the Developer Guide. |
Delegate expression |
|
Class fields |
Field extensions for the service task. |
Result variable name |
The name of a process variable in your process definition in which to store the result of this service task. This is only valid when using an expression. |
Execution listeners |
Execution listeners configured for this instance. An execution listeners is a piece of logic that is not shown in the diagram and can be used for technical purposes. |
Multi-Instance type |
Determines if this task is performed multiple times and how. For more information on multi-instance, see the Developer documentation. The possible values are:
|
Cardinality (Multi-instance) |
The number of times the task is to be performed. |
Collection (Multi-instance) |
The name of a process variable which is a collection. For each item in the collection, an instance of this task will be created. |
Element variable (Multi-instance) |
A process variable name which will contain the current value of the collection in each task instance. |
Completion condition (Multi-instance) |
A multi-instance activity normally ends when all instances end. You can specify an expression here to be evaluated each time an instance ends. If the expression evaluates to true, all remaining instances are destroyed and the multi-instance activity ends. |
Is for compensation |
If this activity is used for compensating the effects of another activity, you can declare it to be a compensation handler. For more information on compensation handlers see the Developer Guide. |
Asynchronous |
(Advanced) Define this task as asynchronous. This means the task will not be executed as part of the current action of the user, but later. This can be useful if it’s not important to have the task immediately ready. |
Exclusive |
(Advanced) Define this task as exclusive. This means that, when there are multiple asynchronous elements of the same process instance, none will be executed at the same time. This is useful to solve race conditions. |
For a service task it is recommended to make them asynchronous. For example, suppose a service task is called after the user completes a form. When the service task is synchronous, the logic will be executed during the completion action of the user. This means the user has to wait until this logic is finished to have the UI refreshed. Often, this is not needed or wanted. By making the service task asynchronous, the UI will be refreshed when the task is completed. The logic will be executed later.
A script task defines a JavaScript script or other script language (JSR-223 compatible language) that is executed when a process instance executes this step.
A script task is visualized as a rounded rectangle with a paper icon inside.
Property | Description |
---|---|
Script format |
The JSR-223 [120] name of the scripting engine your script is written for. By default, Alfresco Process Services supports javascript and groovy formats. |
Script |
The actual script that will be executed. |
Id |
A unique identifier for this element. |
Name |
A name for this element. |
Documentation |
A description of this element. |
Variables |
In the script, it is possible to set new process variables (using execution.setVariable(myVariable, myValue)), however these won’t show up automatically in dropdowns later on (like the sequence flow condition builder, forms, etc.). To make them show up, configure this property with the variables that are set or exported by this script task. |
Execution listeners |
Execution listeners configured for this instance. An execution listeners is a piece of logic that is not shown in the diagram and can be used for technical purposes. |
Asynchronous |
(Advanced) Define this task as asynchronous. This means the task will not be executed as part of the current action of the user, but later. This can be useful if it’s not important to have the task immediately ready. |
Exclusive |
(Advanced) Define this task as exclusive. This means that, when there are multiple asynchronous elements of the same process instance, none will be executed at the same time. This is useful to solve race conditions. |
Multi-Instance type |
Determines if this task is performed multiple times and how. For more information on multi-instance, The possible values are:
|
Cardinality (Multi-instance) |
The number of times the task is to be performed. |
Collection (Multi-instance) |
The name of a process variable which is a collection. For each item in the collection, an instance of this task will be created. |
Element variable (Multi-instance) |
A process variable name which will contain the current value of the collection in each task instance. |
Completion condition (Multi-instance) |
A multi-instance activity normally ends when all instances end. You can specify an expression here to be evaluated each time an instance ends. If the expression evaluates to true, all remaining instances are destroyed and the multi-instance activity ends. |
Is for compensation |
If this activity is used for compensating the effects of another activity, you can declare it to be a compensation handler. For more information on compensation handlers see the Developer Guide. |
A Business rule task executes one or more rules.
Business rule tasks are mainly there for compatibility with the community product Activiti. Alfresco recommends that you use Decision tables [74] with Alfresco Process Services
A business rule is depicted as a rounded rectangle with a table icon in the top-left corner.
Property | Description |
---|---|
Id |
A unique identifier for this element. |
Name |
A name for this element. |
Documentation |
A description of this element. |
Rules |
A comma-separated list of rules to include or exclude in this task. |
Input variables |
A comma-separated list of process variables to be used as input variables to your rules. |
Exclude |
If you check Exclude only rules that you have not specified in Rules will be executed. If the Exclude is unchecked, only the rules you have specified in Rules will be executed. |
Result variable |
The name of a process variable in your process definition in which to store the result of this task. the result variable is returned as a list of objects. If you do not specify a result variable name, the default name org.activiti.engine.rules.OUTPUT is used. |
Asynchronous |
(Advanced) Define this task as asynchronous. This means the task will not be executed as part of the current action of the user, but later. This can be useful if it’s not important to have the task immediately ready. |
Exclusive |
(Advanced) Define this task as exclusive. This means that, when there are multiple asynchronous elements of the same process instance, none will be executed at the same time. This is useful to solve race conditions. |
Execution listeners |
Execution listeners configured for this instance. An execution listeners is a piece of logic that is not shown in the diagram and can be used for technical purposes. |
Multi-Instance type |
Determines if this task is performed multiple times and how. For more information on multi-instance, see the Developer Guide. The possible values are:
|
Cardinality (Multi-instance) |
The number of times the task is to be performed. |
Collection (Multi-instance) |
The name of a process variable which is a collection. For each item in the collection, an instance of this task will be created. |
Element variable (Multi-instance) |
A process variable name which will contain the current value of the collection in each task instance. |
Completion condition (Multi-instance) |
A multi-instance activity normally ends when all instances end. You can specify an expression here to be evaluated each time an instance ends. If the expression evaluates to true, all remaining instances are destroyed and the multi-instance activity ends. |
Is for compensation |
If this activity is used for compensating the effects of another activity, you can declare it to be a compensation handler. For more information on compensation handlers see the Developer Guide. |
A Receive Task waits for the arrival of an external trigger. This trigger is sent programmatically (via Java or REST API). For process to process triggering, use the signal events.
A receive task is visualized as a rounded rectangle with an envelope icon in the top-left corner.
Property | Description |
---|---|
Id |
A unique identifier for this element. |
Name |
A name for this element. |
Documentation |
A description of this element. |
Variables |
When the API is used to trigger the continuation of the process instance, a set of variables can be passed. However, these won’t appear automatically in drop-down lists later (like the sequence flow condition builder, forms, and so on.). To make them appear, this property needs to be configured with those variables that are set or exported by the script task. |
Asynchronous |
(Advanced) Define this task as asynchronous. This means the task will not be executed as part of the current action of the user, but later. This can be useful if it’s not important to have the task immediately ready. |
Exclusive |
(Advanced) Define this task as exclusive. This means that, when there are multiple asynchronous elements of the same process instance, none will be executed at the same time. This is useful to solve race conditions. |
Execution listeners |
Execution listeners configured for this instance. An execution listeners is a piece of logic that is not shown in the diagram and can be used for technical purposes. |
Multi-Instance type |
Determines if this task is performed multiple times and how. For more information on multi-instance, see the Developer Guide. The possible values are:
|
Cardinality (Multi-instance) |
The number of times the task is to be performed. |
Collection (Multi-instance) |
The name of a process variable which is a collection. For each item in the collection, an instance of this task will be created. |
Element variable (Multi-instance) |
A process variable name which will contain the current value of the collection in each task instance. |
Completion condition (Multi-instance) |
A multi-instance activity normally ends when all instances end. You can specify an expression here to be evaluated each time an instance ends. If the expression evaluates to true, all remaining instances are destroyed and the multi-instance activity ends. |
Is for compensation |
If this activity is used for compensating the effects of another activity, you can declare it to be a compensation handler. For more information on compensation handlers see the Developer Guide. |
A Manual Task defines a task that is external to Alfresco Process Services. You use it to model work done which the Process Engine does not know of. A manual task is handled as a pass-through activity, the Process Engine automatically continues the process from the instant process execution arrives at a manual task activity.
Property | Description |
---|---|
Id |
A unique identifier for this element. |
Name |
A name for this element. |
Documentation |
A description of this element. |
Asynchronous |
(Advanced) Define this task as asynchronous. This means the task will not be executed as part of the current action of the user, but later. This can be useful if it’s not important to have the task immediately ready. |
Exclusive |
(Advanced) Define this task as exclusive. This means that, when there are multiple asynchronous elements of the same process instance, none will be executed at the same time. This is useful to solve race conditions. |
Execution listeners |
Execution listeners configured for this instance. An execution listeners is a piece of logic that is not shown in the diagram and can be used for technical purposes. |
Multi-Instance type |
Determines if this task is performed multiple times and how. The possible values are:
|
Cardinality (Multi-instance) |
The number of times the task is to be performed. |
Collection (Multi-instance) |
The name of a process variable which is a collection. For each item in the collection, an instance of this task will be created. |
Element variable (Multi-instance) |
A process variable name which will contain the current value of the collection in each task instance. |
Completion condition (Multi-instance) |
A multi-instance activity normally ends when all instances end. You can specify an expression here to be evaluated each time an instance ends. If the expression evaluates to true, all remaining instances are destroyed and the multi-instance activity ends. |
Is for compensation |
If this activity is used for compensating the effects of another activity, you can declare it to be a compensation handler. For more information on compensation handlers see the Developer Guide. |
You can enhance your business process with this automatic mail service task that sends emails to one or more recipients. The task supports normal email features such as cc lists, bcc lists, and HTML content.
The mail task is depicted as a rounded rectangle with an envelope icon in the top-left corner.
Property | Description |
---|---|
Id |
A unique identifier for this element. |
Name |
A name for this element. |
Documentation |
A description of this element. |
To |
The recipient of the e-mail. You can specify multiple recipients in a comma-separated list. When using a fixed value, this can be an expression. It is also possible, like with the user task, to use the Identity store option here to pick users that are known in the system or to reference people that were selected in form fields prior to this email task. |
From |
The sender’s email address. If you do not specify this, the default configured system-wide setting from address is used. This can be an expression. |
Subject |
The subject of this email. This can be an expression. |
Cc |
The cc list for this email. You can specify multiple recipients in a comma-separated list. This can be an expression. |
Bcc |
The bcc list for this email. You can specify multiple recipients in a comma-separated list. This can be an expression. |
Text |
The text content of this email. You can specify this as well as HTML to support email clients that do not support rich content. The client will fall back to this text-only alternative. |
Html |
The HTML content of this email. |
Charset |
The charset for this email. By default UTF8 will be used. |
Asynchronous |
(Advanced) Define this task as asynchronous. This means the task will not be executed as part of the current action of the user, but later. This can be useful if it’s not important to have the task immediately ready. |
Exclusive |
(Advanced) Define this task as exclusive. This means that, when there are multiple asynchronous elements of the same process instance, none will be executed at the same time. This is useful to solve race conditions. |
Execution listeners |
Execution listeners configured for this instance. An execution listeners is a piece of logic that is not shown in the diagram and can be used for technical purposes. |
Multi-Instance type |
Determines if this task is performed multiple times and how. The possible values are:
|
Cardinality (Multi-instance) |
The number of times the task is to be performed. |
Collection (Multi-instance) |
The name of a process variable which is a collection. For each item in the collection, an instance of this task will be created. |
Element variable (Multi-instance) |
A process variable name which will contain the current value of the collection in each task instance. |
Completion condition (Multi-instance) |
A multi-instance activity normally ends when all instances end. You can specify an expression here to be evaluated each time an instance ends. If the expression evaluates to true, all remaining instances are destroyed and the multi-instance activity ends. |
Is for compensation |
If this activity is used for compensating the effects of another activity, you can declare it to be a compensation handler. For more information on compensation handlers see the Developer Guide. |
You use the Camel task to send messages to, and receive messages from Apache Camel.
A camel task is visualized as a rounded rectangle with a camel icon in the top-left corner.
You can find more information on Apache Camel here [121]. Note that Camel is by default not installed and would need to be added by the system admin.
Property | Description |
---|---|
Id |
A unique identifier for this element. |
Name |
A name for this element. |
Documentation |
A description of this element. |
Camel context |
A camel context definition. If you do not specify a context, the default Camel context is used. |
Asynchronous |
(Advanced) Define this task as asynchronous. This means the task will not be executed as part of the current action of the user, but later. This can be useful if it’s not important to have the task immediately ready. |
Exclusive |
(Advanced) Define this task as exclusive. This means that, when there are multiple asynchronous elements of the same process instance, none will be executed at the same time. This is useful to solve race conditions. |
Execution listeners |
Execution listeners configured for this instance. An execution listeners is a piece of logic that is not shown in the diagram and can be used for technical purposes. |
Multi-Instance type |
Determines if this task is performed multiple times and how. The possible values are:
|
Cardinality (Multi-instance) |
The number of times the task is to be performed. |
Collection (Multi-instance) |
The name of a process variable which is a collection. For each item in the collection, an instance of this task will be created. |
Element variable (Multi-instance) |
A process variable name which will contain the current value of the collection in each task instance. |
Completion condition (Multi-instance) |
A multi-instance activity normally ends when all instances end. You can specify an expression here to be evaluated each time an instance ends. If the expression evaluates to true, all remaining instances are destroyed and the multi-instance activity ends. |
Is for compensation |
If this activity is used for compensating the effects of another activity, you can declare it to be a compensation handler. For more information on compensation handlers see the Developer Guide. |
Use the Mule task to send messages to the Mule ESB (Enterprise Service Bus).
A mule task is visualized as a rounded rectangle with the Mule logo in the top-left corner.
You can find more information on Mule ESB using https://www.mulesoft.com/resources/esb/what-mule-esb [122]. Note that Mule is by default not installed and would need to be added by the system admin.
Property | Description |
---|---|
Id |
A unique identifier for this element. |
Name |
A name for this element. |
Documentation |
A description of this element. |
Endpoint url |
The Mule endpoint you want to send your message to. |
Language |
The language you want to use to evaluate the payloadExpression, for example juel [123]. |
Payload expression |
An expression for the message’s payload. |
Result variable |
The name of the variable to store the result of the invocation. |
Asynchronous |
(Advanced) Define this task as asynchronous. This means the task will not be executed as part of the current action of the user, but later. This can be useful if it’s not important to have the task immediately ready. |
Exclusive |
(Advanced) Define this task as exclusive. This means that, when there are multiple asynchronous elements of the same process instance, none will be executed at the same time. This is useful to solve race conditions. |
Execution listeners |
Execution listeners configured for this instance. An execution listeners is a piece of logic that is not shown in the diagram and can be used for technical purposes. |
Multi-Instance type |
Determines if this task is performed multiple times and how. The possible values are:
|
Cardinality (Multi-instance) |
The number of times the task is to be performed. |
Collection (Multi-instance) |
The name of a process variable which is a collection. For each item in the collection, an instance of this task will be created. |
Element variable (Multi-instance) |
A process variable name which will contain the current value of the collection in each task instance. |
Completion condition (Multi-instance) |
A multi-instance activity normally ends when all instances end. You can specify an expression here to be evaluated each time an instance ends. If the expression evaluates to true, all remaining instances are destroyed and the multi-instance activity ends. |
Is for compensation |
If this activity is used for compensating the effects of another activity, you can declare it to be a compensation handler. For more information on compensation handlers see the Developer Guide. |
The rest call task is used to communicate with a REST endpoint. The endpoint can be defined in the process definition, or it can be defined company-wide by an administrator. In the latter case, a logical name is all that is needed.
A rest call task is visualized as a rounded rectangle with a rocket icon the top-left corner.
Note that the REST call task always is executed asynchronously.
Property | Description |
---|---|
Id |
A unique identifier for this element. |
Name |
A name for this element. |
Documentation |
A description of this element. |
Endpoint |
Defines which REST endpoint to call. It is an endpoint defined company-wide by the administrator (simply select a logical name in the dropdown) or a URL. You can also use a previously defined form fields or variables to build up the URL. Use the Test button to test the end-point.
If the request mapping (see next property) contains key/value properties or a JSON template, you will be prompted to provide test values for the parameters before the endpoint is tested.
|
Request mapping |
Allows to construct the actual request. HTTP GET represents the URL parameters whereas POST/PUT is the JSON body that is created when the request is sent. You can also use fixed values, form fields, or variables defined prior to this activity.
For nested or complex request bodies for POST requests, you can specify a JSON Template which is evaluated at run-time.
The JSON editor provides syntax highlighting and will highlight any JSON syntax errors on the line number indicator. |
Response mapping |
Maps the JSON response from the REST endpoint to process variables. You can use a nested notation (for example prop1.prop2.prop3) for mapping values. The mapped response values can be used as variables in further steps of the process. |
See Document Templates [124] in the Developing section for how to modify the template for the Generate document task.
A Generate document task appears as a rounded rectangle with a document icon on the top-left corner.
Property | Description |
---|---|
ID |
A unique identifier for this task element. |
Name |
A name for this task element. |
Documentation |
A description of this task element. |
Template |
The template which is used to generate the document. It can be uploaded as part of the process definition, or can be defined company-wide by an administrator and reused by multiple process definitions. |
Output format |
The document output format will be either PDF or Word. |
Document variable |
This is the process variable in which the reference to the generated document is stored. |
File name | The name of the document that will be created by the task. |
Additional data source names | A comma separated list of data sources the document will use as the source of the expressions. |
Additional data source expressions | A comma separated list of expressions to be included in the document. |
You use a decision task to select a decision table while designing your process model. A decision table enables you to define a set of business rules that will be applied when it’s executed. See the LINKHERE section for more information.
A decision task is depicted as a rounded rectangle with a table icon the top-left corner.
Property | Description |
---|---|
Id |
A unique identifier for this element. |
Name |
A name for this element. |
Documentation |
A description of this element. |
Reference decision table |
Defines the actual decision table that will be executed. The decision table can be part of the process definition (a so-called embedded decision table) or defined on itself (a so-called reusable decision table). |
Asynchronous |
(Advanced) Define this task as asynchronous. This means the task will not be executed as part of the current action of the user, but later. This can be useful if it’s not important to have the task immediately ready. |
Exclusive |
(Advanced) Define this task as exclusive. This means that, when there are multiple asynchronous elements of the same process instance, none will be executed at the same time. This is useful to solve race conditions. |
Execution listeners |
Execution listeners configured for this instance. An execution listeners is a piece of logic that is not shown in the diagram and can be used for technical purposes. |
Multi-Instance type |
Determines if this task is performed multiple times and how. The possible values are:
|
Cardinality (Multi-instance) |
The number of times the task is to be performed. |
Collection (Multi-instance) |
The name of a process variable which is a collection. For each item in the collection, an instance of this task will be created. |
Element variable (Multi-instance) |
A process variable name which will contain the current value of the collection in each task instance. |
Completion condition (Multi-instance) |
A multi-instance activity normally ends when all instances end. You can specify an expression here to be evaluated each time an instance ends. If the expression evaluates to true, all remaining instances are destroyed and the multi-instance activity ends. |
Is for compensation |
If this activity is used for compensating the effects of another activity, you can declare it to be a compensation handler. For more information on compensation handlers see the Developer Guide. |
Use the Store entity task to update data models or entities with process values such as variables or form fields. The updated entities can then be mapped to variables and used while creating processes.
Property | Description |
---|---|
Id |
A unique identifier for this element. |
Name |
A name for this element. |
Documentation |
A description of this element. |
Attribute mapping |
Attributes mapped for this element instance. Click to invoke the Change value for "Attribute Mapping" dialog, where you can map entities or Data Models with form fields and variables used in your process. See the Data Models [125] section for more details. |
You use structural components to group multiple components in a sub process to reuse in a parent process definition, and to embed and call other process definitions from inside your own process.
A sub process is a single activity that contains activities, gateways, and events which form a process. A sub process is completely embedded inside a parent process.
A sub-process is visualized as a rounded rectangle:
You can use a sub process to create a new scope for events. Events that are thrown during execution of the sub process, can be caught by Boundary events [130] on the boundary of the sub process, creating a scope for that event limited to just the sub process.
Sub-processes must have the following characteristics:
A sub process has exactly one none start event. No other start event types are permitted. A sub process must have at least one end event.
Sequence flow cannot cross sub process boundaries.
Property | Description |
---|---|
Id |
A unique identifier for this element. |
Name |
A name for this element. |
Documentation |
A description of this element. |
Asynchronous |
(Advanced) Define this task as asynchronous. This means the task will not be executed as part of the current action of the user, but later. This can be useful if it’s not important to have the task immediately ready. |
Exclusive |
(Advanced) Define this task as exclusive. This means that, when there are multiple asynchronous elements of the same process instance, none will be executed at the same time. This is useful to solve race conditions. |
Execution listeners |
Execution listeners configured for this instance. An execution listeners is a piece of logic that is not shown in the diagram and can be used for technical purposes. |
Multi-Instance type |
Determines if this task is performed multiple times and how. The possible values are:
|
Cardinality (Multi-instance) |
The number of times the task is to be performed. |
Collection (Multi-instance) |
The name of a process variable which is a collection. For each item in the collection, an instance of this task will be created. |
Element variable (Multi-instance) |
A process variable name which will contain the current value of the collection in each task instance. |
Completion condition (Multi-instance) |
A multi-instance activity normally ends when all instances end. You can specify an expression here to be evaluated each time an instance ends. If the expression evaluates to true, all remaining instances are destroyed and the multi-instance activity ends. |
You use a collapsed sub-process to add an existing process from your available process definitions as a sub-process to the process definition you are currently editing.
When you drag a collapsed sub-process from the palette to your canvas, and click on the Referenced Subprocess property, you are presented with a visual list of the process definitions you have access to. You can choose from the list, and the chosen process will be added to the current process definition. Note the process chosen must have exactly one none start event, and no other start event type, and it must have at least one end event.
Note that during process instance execution, there is no difference between a collapsed or embedded sub-process. They both share the full process instance context (unlike the call activity).
Note that when you click on the plus icon in a collapsed sub-process, the BPMN editor will open the referenced sub-process definition.
A collapsed sub-process is visualized as a rounded rectangle with a plus icon inside.
Property | Description |
---|---|
Id |
A unique identifier for this element. |
Name |
A name for this element. |
Documentation |
A description of this element instance. |
Referenced Subprocess |
The process definition this collapsed sub-process contains. |
Asynchronous |
(Advanced) Define this task as asynchronous. This means the task will not be executed as part of the current action of the user, but later. This can be useful if it’s not important to have the task immediately ready. |
Exclusive |
(Advanced) Define this task as exclusive. This means that, when there are multiple asynchronous elements of the same process instance, none will be executed at the same time. This is useful to solve race conditions. |
Execution listeners |
Execution listeners configured for this instance. An execution listeners is a piece of logic that is not shown in the diagram and can be used for technical purposes. |
Multi-Instance type |
Determines if this task is performed multiple times and how. The possible values are:
|
Cardinality (Multi-instance) |
The number of times the task is to be performed. |
Collection (Multi-instance) |
The name of a process variable which is a collection. For each item in the collection, an instance of this task will be created. |
Element variable (Multi-instance) |
A process variable name which will contain the current value of the collection in each task instance. |
Completion condition (Multi-instance) |
A multi-instance activity normally ends when all instances end. You can specify an expression here to be evaluated each time an instance ends. If the expression evaluates to true, all remaining instances are destroyed and the multi-instance activity ends. |
An event sub-process is a sub-process that is triggered by an event. You can use an event sub-process in your main process, or in any sub-process.
The event sub-process start event defines the event to be handled by the sub-process, so the type of start event you use must have an event associated with it – none start events are not supported but the event sub-processes. Your event sub-process can be started by a start message event, start signal event or a start error event. The subscription to the start event is created when the scope, process instance or sub-process, hosting the event sub-process is created. The subscription is removed when the scope is destroyed.
Your event sub-process does not have any incoming or outgoing sequence flows. An event sub-process is triggered by an event, so there can be no incoming sequence flow.
The best way to look at an event subprocess is as a method or routine that is called when something happens, and handle it appropriately.
An event sub-process is visualized like a sub-process with a dashed border.
Property | Description |
---|---|
Id |
A unique identifier for this element. |
Name |
A name for this element. |
Documentation |
A description of this element. |
Asynchronous |
(Advanced) Define this task as asynchronous. This means the task will not be executed as part of the current action of the user, but later. This can be useful if it’s not important to have the task immediately ready. |
Exclusive |
(Advanced) Define this task as exclusive. This means that, when there are multiple asynchronous elements of the same process instance, none will be executed at the same time. This is useful to solve race conditions. |
Execution listeners |
Execution listeners configured for this instance. An execution listeners is a piece of logic that is not shown in the diagram and can be used for technical purposes. |
A call activity is used to execute another process definition as part of the current process instance.
The main difference between a sub-process and a call activity is that the call activity does not share context with the process instance. Process variables are explicitly mapped between the process instance and the call activity.
A call activity is visualized as a rounded rectangle with a thick border.
Property | Description |
---|---|
Id |
A unique identifier for this element. |
Name |
A name for this element. |
Documentation |
A description of this element. |
Called element |
This is the identifier of the process definition that should be called. |
In parameters |
Configures the process variables that are mapped into the called process instance when it’s executed. It’s possible to copy values directly (using the source attribute) or with an expression (using the source expression attribute) in a target variable of the called process instance. |
Out parameters |
Configures the process variables that are mapped from the called process instance into the parent process instance. |
Asynchronous |
(Advanced) Define this task as asynchronous. This means the task will not be executed as part of the current action of the user, but later. This can be useful if it’s not important to have the task immediately ready. |
Exclusive |
(Advanced) Define this task as exclusive. This means that, when there are multiple asynchronous elements of the same process instance, none will be executed at the same time. This is useful to solve race conditions. |
Execution listeners |
Execution listeners configured for this instance. An execution listeners is a piece of logic that is not shown in the diagram and can be used for technical purposes. |
Multi-Instance type |
Determines if this task is performed multiple times and how. The possible values are:
|
Cardinality (Multi-instance) |
The number of times the task is to be performed. |
Collection (Multi-instance) |
The name of a process variable which is a collection. For each item in the collection, an instance of this task will be created. |
Element variable (Multi-instance) |
A process variable name which will contain the current value of the collection in each task instance. |
Completion condition (Multi-instance) |
A multi-instance activity normally ends when all instances end. You can specify an expression here to be evaluated each time an instance ends. If the expression evaluates to true, all remaining instances are destroyed and the multi-instance activity ends. |
You use gateways to control the flow of execution in your process.
In order to explain how Sequence Flows are used within a Process, BPMN 2.0 uses the concept of a token. Tokens traverse sequence flows and pass through the elements in the process. The token is a theoretical concept used to explain the behavior of Process elements by describing how they interact with a token as it “traverses” the structure of the Process. Gateways are used to control how tokens flow through sequence flows as they converge and diverge in a process.
As the term gateway suggests, it is a gating mechanism that either allows or prevents passage of a token through the gateway. As tokens arrive at a gateway, they can be merged together on input and/or split apart on output from the gateway.
A gateway is displayed as a diamond, with an icon inside. The icon depicts the type of gateway.
You use an exclusive gateway to model a decision in your process. When execution arrives at an exclusive gateway, the outgoing sequence flows are evaluated in the order in which they are defined. The first sequence flow whose condition evaluates to true, or which does not have a condition set, is selected and the process continues.
An exclusive gateway is visualized as a diamond shape with an X inside.
Note that if no sequence flow is selected, an exception will be thrown.
Property | Description |
---|---|
Id |
A unique identifier for this element. |
Name |
A name for this element. |
Documentation |
A description of this element. |
Asynchronous |
(Advanced) Define this task as asynchronous. This means the task will not be executed as part of the current action of the user, but later. This can be useful if it’s not important to have the task immediately ready. |
Exclusive |
(Advanced) Define this task as exclusive. This means that, when there are multiple asynchronous elements of the same process instance, none will be executed at the same time. This is useful to solve race conditions. |
Flow order |
Select the order in which the sequence flow conditions are evaluated. The first sequence flow that has a condition that evaluates to true (or has no condition) will be selected to continue. |
You use a parallel gateway to model concurrency in a process. It allows you to fork multiple outgoing paths of execution or join multiple incoming paths of execution.
A parallel gateway is visualized as a diamond shape with a plus icon:
In a fork, all outgoing sequence flows are followed in parallel, which creates one concurrent execution for each sequence flow.
In a join, all concurrent executions arriving at the parallel gateway wait at the gateway until an execution has arrived for every incoming sequence flow. Then the process continues past the joining gateway. Note that the gateway simply waits until the required number of executions has been reached and does not check if the executions are coming from different incoming sequence flow.
A single parallel gateway can both fork and join, if there are multiple incoming and outgoing sequence flow. The gateway will first join all incoming sequence flows, before splitting into multiple concurrent paths of executions.
Unlike other gateways, the parallel gateway does not evaluate conditions. Any conditions defined on the sequence flow connected with the parallel gateway are ignored.
Property | Description |
---|---|
Id |
A unique identifier for this element. |
Name |
A name for this element. |
Documentation |
A description of this element. |
Asynchronous |
(Advanced) Define this task as asynchronous. This means the task will not be executed as part of the current action of the user, but later. This can be useful if it’s not important to have the task immediately ready. |
Exclusive |
(Advanced)Define this task as exclusive. This means that, when there are multiple asynchronous elements of the same process instance, none will be executed at the same time. This is useful to solve race conditions. |
You use an inclusive to join and fork multiple sequence flows based on conditions.
Like an exclusive gateway you can define conditions on outgoing sequence flows and the inclusive gateway will evaluate them, but an inclusive gateway can take more than one sequence flow, like the parallel gateway.
All outgoing sequence flow conditions are evaluated. Every sequence flow with a condition that evaluates to true, is followed in parallel, creating one concurrent execution for each sequence flow.
The join behavior for an inclusive gateway is more complex than the parallel gateway counterparts. All concurrent executions arriving at the inclusive gateway wait at the gateway until executions that can reach the inclusive gateway have reached the inclusive gateway. To determine this, all current executions of the process instance are evaluated, checking if there is a path from that point in the process instance to the inclusive gateway. (ignoring any conditions on the sequence flow). When one such execution is found, the inclusive gateway join behavior does not activate.
An inclusive gateway is visualized as a diamond shape with a circle icon inside:
Note that an inclusive gateway can have both fork and join behavior, in which case there are multiple incoming and outgoing sequence flows for the same inclusive gateway. The gateway will 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.
Property | Description |
---|---|
Id |
A unique identifier for this element instance. |
Name |
A name for this element instance. |
Documentation |
A description of this element instance. |
Asynchronous |
(Advanced) Define this task as asynchronous. That is, the task will not be executed as part of the current action of the user, but later. This can be useful if it’s not important to have the task immediately ready. |
Exclusive |
(Advanced) Define this task as exclusive. That is, when there are multiple asynchronous elements of the same process instance, none will be executed at the same time. This is useful to solve race conditions. |
Flow order |
Select the order in which the sequence flow conditions are evaluated. This is of less importance as for the exclusive gateway, as all outgoing sequenceflow conditions will be evaluated anyway. |
You use an event gateway to route process flow based on events.
Each outgoing sequence flow of the event gateway must be connected to an intermediate catching event. When process execution reaches an event gateway execution is suspended, and for each outgoing sequence flow, an event subscription is created. The flow for the event that occurs first, will be followed.
Outgoing sequence flows connect to an event gateway are never "executed", but they do allow the process engine to determine which events an execution arriving at an event-based gateway needs to subscribe to. The following restrictions apply to event gateways:
The gateway must have two or more outgoing sequence flows.
An event-based gateway can only be followed by intermediate catching events. Receive tasks after an event gateway are not supported by Alfresco Process Services.
An intermediate catching event connected to an event gateway must have a single incoming sequence flow.
An event gateway is visualized as a diamond shape with a plus icon inside. Unlike the parallel gateway, the plus icon is not colored black inside:
Property | Description |
---|---|
Id |
A unique identifier for this element instance. |
Name |
A name for this element instance. |
Documentation |
A description of this element instance. |
Asynchronous |
(Advanced) Define this task as asynchronous. This means the task will not be executed as part of the current action of the user, but later. This can be useful if it’s not important to have the task immediately ready. |
Exclusive |
(Advanced) Define this task as exclusive. This means that, when there are multiple asynchronous elements of the same process instance, none will be executed at the same time. This is useful to solve race conditions. |
Flow order |
Select the order in which the sequence flow conditions are evaluated. |
You use boundary events to handle an event associated with an activity. A boundary event is always attached to an activity.
While the activity the boundary event is attached to is active (meaning the process instance execution is currently executing it right there), the boundary event is listening for a certain type of trigger. When the event is caught, the activity is either interrupted and the sequence flow going out of the event is followed (interrupting behavior) or a new execution is created from the boundary event (non-interrupting behavior).
A boundary timer event puts a timer on the activity it is defined on. When the timer fires, the sequence flow going out the boundary event is followed.
A boundary timer event is visualized as a circle with a clock icon inside:
Property | Description |
---|---|
Id |
A unique identifier for this element. |
Name |
A name for this element. |
Documentation |
A description of this element. |
Cancel activity |
Defines if the boundary event interrupts the activity is defined upon or not. |
Time Cycle |
A timer cycle defined in http://en.wikipedia.org/wiki/ISO_8601 [106] format, for example: R3/PT10H. |
Time Date in ISO-8601 |
A point in time defined as a http://en.wikipedia.org/wiki/ISO_8601 [106] date, for example: 2015-04-12T20:20:32Z. |
Time Duration |
A period of time defined as a http://en.wikipedia.org/wiki/ISO_8601 [106] duration, for example: PT5M. |
A boundary error event catches an error that is thrown within the boundaries of the activity the event is based on and continues process execution from the event.
A boundary error event is always interrupting.
A boundary timer event is visualized as a circle with a lightning icon inside:
Property | Description |
---|---|
Id |
A unique identifier for this element. |
Name |
A name for this element. |
Documentation |
A description of this element. |
Error reference |
The identifier of the error to catch. |
A boundary signal event listens to a signal being fired (from within the process instance or system-wide) while the activity upon which the event is defined is active.
A boundary signal event is visualized as a circle with a triangle icon inside:
Property | Description |
---|---|
Id |
A unique identifier for this element. |
Name |
A name for this element. |
Documentation |
A description of this element. |
Signal reference |
The signal to listen to. Signals are defined on the root process definition level and are linked with this property. |
A boundary message event listens to a message being received while the activity upon which the event is defined is active.
A boundary message event is visualized as a circle with an envelope icon inside:
Property | Description |
---|---|
Id |
A unique identifier for this element. |
Name |
A name for this element. |
Documentation |
A description of this element. |
Message reference |
The message to listen to. Messages are defined on the root process definition level and are linked with this property. |
The boundary cancel and compensation event are currently experimental features. See http://activiti.org/userguide/index.html#bpmnBoundaryCancelEvent [140] for more information on them.
An intermediate catching event is a step in the process where the process needs to wait for a specific trigger (in BPMN this is described as catching semantics).
An intermediate event is displayed as two concentric circles containing an icon. The icon shows the type of intermediate event:
Conceptually, the intermediate catch events are close to the boundary events, with that exception they don’t define a scope (the activity) for when the event is active. An intermediate catch event is active as long as the trigger hasn’t happened. A boundary event on the other hand can be destroyed if the activity completed.
All the supported intermediate catch events are configured similar to their boundary event counterparts.
An intermediate throw event is used to explicitly throw an event of a certain type.
Currently, two types are supported:
The none intermediate throwing event. No event is thrown. This is mainly used as a marker in the process definition (for example to attach execution listeners that are used to indicate somehow that some state in the process has been reached).
The signal intermediate throwing event. Throws a signal event that will be caught by boundary signal events or intermediate signal catch events listening to that particular signal event.
An intermediate event is displayed as two concentric circles which may contain an icon. If present, the icon shows the type of intermediate event. A throwing none event contains no icon.
You use an end event to signify the end of a process or sub-process, or the end of a path in a process or sub-process.
In a subprocess or process instance, only when all executions have reached an end event will the subprocess be continued or the whole process instance ended.
An end event is displayed as thick black circle which may contain an icon. If present, the icon shows the type of end event. A none end event has no icon.
A none end event ends the current path of execution.
Property | Description |
---|---|
Id |
A unique identifier for this element. |
Name |
A name for this element. |
Documentation |
A description of this element. |
Execution listeners |
Execution listeners configured for this event. |
You use the end error event to throw an error and end the current path of execution.
The error can be caught by an intermediate boundary error event that matches the error. If no matching boundary error event is found, an exception will be thrown
Property | Description |
---|---|
Id |
A unique identifier for this element. |
Name |
A name for this element. |
Documentation |
A description of this element. |
Execution listeners |
Execution listeners configured for this instance. |
Error reference |
The error identifier. This is used to find a matching catching boundary error event. If the name does not match any defined error, then the error is used as the error code in the thrown exception. |
When a terminate end event is reached, the current process instance or sub-process will be terminated. Conceptually, when an execution arrives in a terminate end event, the first scope (process or sub-process) will be determined and ended. Note that in BPMN 2.0, a sub-process can be an embedded sub-process, call activity, event sub-process or transaction sub-process. This rule applies in general, for example, when there is a multi-instance call activity or embedded subprocess, only that instance will be ended, the other instances and the process instance are not affected.
Property | Description |
---|---|
Id |
A unique identifier for this element. |
Name |
A name for this element. |
Documentation |
A description of this element. |
Execution listeners |
Execution listeners configured for this. |
The cancel end event ends the current path of execution and throws a cancel event that can be caught on the boundary of a transaction subprocess.
Property | Description |
---|---|
Id |
A unique identifier for this element. |
Name |
A name for this element. |
Documentation |
A description of this element. |
Execution listeners |
Execution listeners configured for this. |
You use swimlanes to display activities in your process divided by business function or participant group. A process definition can have one swimlane diagram containing one pool, which in turn contains one or more lanes. The pool represents the whole process, and each lane corresponds to a business function or participant group.
For example, the process of selling a book consists of several activities: ordering a book, processing the order, shipping the book, and reading the book. However, the activities are performed by participants in different groups: by the customer, by the sales department, by the warehouse, or store. In the following diagram, process definitions have one pool called Sell a book with three lanes: Customer, Sales, and Store. The process sequence flow moves between lanes in the pool as the order progresses.
When you drag a pool to your process diagram, it creates an unnamed pool containing one unnamed lane. You can add lanes by dragging a lane icon from the palette to the canvas. When you hover over the name box of the pool, the whole pool border turns green, indicating the lane will be added to the pool when you release the mouse button.
You use artifacts to provide additional information about the process. The BPMN editor supports the text annotation artifact which associates additional text to an element in your process, or to the process itself. The text does not influence the execution of a process and is provided by the process designer to give information to the user of the process.
Text annotation
You can set the following properties in the property sheet:
Property | Description |
---|---|
Id |
A unique identifier for this element instance |
Name |
A name for this element instance |
Documentation |
A description of this element instance |
Text |
The text you want to display in your annotation |
Use this section for actions specific to Alfresco Content Services content store:
Publish to Alfresco task
Retrieve Alfresco Properties
Update Alfresco Properties
Call Alfresco Action
The publish task enables you to publish items that were created or modified during process instance execution to a content store. Currently, the following content stores are supported:
Alfresco Content Services
Box
Google Drive
A publish task is depicted as a rounded rectangle with the icon of the content store on the top-left corner.
Property | Description |
---|---|
Id |
A unique identifier for this element. |
Name |
A name for this element. |
Documentation |
A description of this element. |
Alfresco / Box / Google Drive Content |
Configures what content to publish. You can select a previously defined form field or all the content that was updated during the process instance execution. |
Alfresco / Box / Google Drive Destination |
Configures where the content will be published to. You can publish the content using the process initiator or a specific user (this is important when it comes to permissions in the content store). |
The Retrieve Alfresco Properties option enables you to retrieve content-specific properties from Alfresco Content Services and map it to a form field or variable, for example properties of a document. You can retrieve document information after a document is added or referenced via the Attachment form field in Share Connector.
Property | Description |
---|---|
Id |
A unique identifier for this element. |
Name |
A name for this element. |
Documentation |
A description of this element. |
Alfresco properties |
Retrieves Alfresco Content Services properties for content stored in the form editor or variable, and allows mapping them. |
The Update Alfresco Properties option enables you to update content-specific properties in Alfresco Content Services via a form field or variable. For example, you can update properties of a document linked from Alfresco Content Services via a form attachment field, or process variable.
The Properties sheet displays the same fields as Retrieve Alfresco properties, except that is used for updating properties rather than retrieving.
The Call Alfresco Action enables you to invoke standard Alfresco Content Services actions from Alfresco Process Services.
Property | Description |
---|---|
Id | A unique identifier for this element. |
Name | A name for this element. |
Documentation | A description of this element. |
Content | Retrieves properties Alfresco Content Services for content stored in the form editor or variable. |
Act as | Identity of the caller: Process Initiator or Specific User. Selecting Specific
User lets you select a different user. When the Identity Service is configured for Alfresco Content Services and Alfresco Process Services, a stored token will be used for authentication to Alfresco Content Services. |
Repository | Changes the repository account. For example: Alfresco Content Services. |
Action | Lists a range of actions specific to Alfresco Content Services. Select the options to make changes to the default name and value depending on your requirement. The options are as follows:
|
The form editor provides a powerful drag and drop interface to let you design forms from a rich set of controls. You can define form outcomes and create forms with multiple tabs. Individual controls and whole tabs can be made visible depending on the value of other form fields and process variables. You can design your form with groups of controls in varying numbers of columns.
In the example above, the form editor is open on a form containing two controls, a text box, and a multiline text box.
Control | Description |
---|---|
Text | Allows you to enter text. |
Multi-line Text | Enables you to enter multiple lines of text within a text box. |
Number | Allows you to enter a number. |
Checkbox | Allows selection and deselection of the field. |
Date | Allows selection of a date from a pop-up calendar. |
Date/Time | The behavior is similar to that of the Date control, with the added capability of allowing selection of a time value. |
Dropdown | Allows you to select an item from a displayed list of items. |
Typeahead | On entering data, displays filtered information in a list and allows selection of a value. |
Amount | Allows you to input data representing an amount of money and to define a currency type. |
Radio buttons | Allows you to choose an item from a predefined list. |
People | Allows you to select a person from a list. |
Group of people | Allows you to create a group of people by selecting names from a list. |
Dynamic table | Allows you to input multiple rows of data in a table. |
Hyperlink | Displays a hyperlink. |
Header | Acts as a container into which you can drag and drop other control fields. You can organize these into columns and label them. You can also add a title in the header element. |
Attach file [149] | Allows you to upload and attach files from the file system or other sources, for example, Box, Google Drive. |
Display value | Allows you to display the value of a field or variable previously submitted in any form. |
Display text | Allows you to display text for a field. You can also display values previously submitted in any form, and include this within the text. |
Allows you to upload and attach files from the file system or other sources, for example, Box, Google Drive.
Property | Description |
Label | The name of the field that will appear on the rendered form. |
Override ID? | Sets whether the root folder is created by default. |
ID | The unique ID of the field. |
Required | Checking this box makes a field mandatory. |
Colspan | Then number of columns a field spans. |
Placeholder | The default value of the field. |
Allow multiple files to be attached | Checking this box will allow for more than one file to be uploaded. |
Just link to files, do not copy files to Alfresco Process Services | Checking this box means that the form submission only contains the path to the upload(s) rather than uploading the actual file(s) |
File source | Sets the location for where files can be uploaded from. Alfresco Content is from an APS instance, whilst local file is local to the form filler |
There are many situations in a business process where you wish to evaluate some data you have collected and come to some conclusion or decision. Business rules provide a natural way to express the logic of decision making. Typical decision examples are calculating discounts, credit ratings, who to assign tasks to, what service level (SLA) to use, and so on.
There are business rule systems that are hugely complex and intended for a wide range of uses. You can, of course, integrate Alfresco Process Services to these systems if they provide what you need. Often, within a business process, the rules can be very focused and need to be managed by business users. This is where Alfresco Process Services decision tables provide a natural solution.
In a decision table you only test, set and create variables using a set of business rules. There are no other side effects possible, such as calling out to external systems, because these are not needed: process can do all this using the full range of its BPM capabilities before or after a Decision Table task.
You can think of a Decision Table as a spreadsheet that allows you to define a row for each business rule, with columns representing each variable that needs to be tested or set. There are two parts to a rule: the conditions (if they all match, the rule "succeeds") and the conclusions (then set some values). In each cell of the table there can be a value expression that is used to try and match against variable’s values, or to calculate the value to set. When a Decision Table is evaluated, it tries all the rules in turn (so ordering of rules matters), testing and setting values. Depending on how you want the rules to be interpreted, you can set the rules to stop as soon as one rule matches and succeeds in setting its values, or to run through all the rules, setting values for every matching rule. If it runs through all rules, you can think of the last successful rule winning, as it may overwrite values that were set for the same variables in other successful rules.
Decision tables follow the Decision Model Notation (DMN) specification [151].
In the following, we will create a simple process that makes use of a Decision task and its Decision Table. We will use the BPMN editor, but you can just as well use the Step editor to achieve the same result. First let’s take a look at the process we want to create:
In this "Annual Work Review" process, a user can enter the details of his or hers achievements for the current year, and if the work efforts have gone beyond the employee’s obligations a bonus will be given and an email sent notifying the user about it. The logic to decide if a bonus should be given or not is implemented using a Decision Table in the "Calculate bonus" Decision task above. Before we take a look at the Decision Table itself, let’s quickly take a look at the tasks before the "Calculate bonus" Decision task.
The process' start form is shown below and defines 4 fields: obligationsCompleted (boolean), additionalAchievements (string), completedDate (date) and dueDate (date). See the Form editor [152] section for more information on how to create forms.
The second task in the process is a "Script task" that we are using to load some demo user data. It has format javascript and declares 2 variables: yearsOfService (integer) and salary (integer) in the "Variables" property dialog. In the "Script" property dialog for the script task the following code has been added to get some employee data.
execution.setVariable("salary", 1000); execution.setVariable("yearsOfService", 5);
Now we are ready to create our Decision Table that will have all the input values it needs to decide if a bonus should be given or not. The decision task is created by dragging and dropping a "Decision Task" from the "Activities" section in the editor palette. The only mandatory property is the "Referenced decision table" property in which you should choose "New decision table". Enter "Calculate Bonus" as the name and click the "Create decision table" button to be taken to the decision table editor, as shown below.
Before starting to look at the details of the editor, let’s start by looking at the rules that we want to create to decide if a bonus should be given or not. The logic (or the rules) we will create can be seen in the Decision Table below:
The logic can be summarized as:
IF the user has completed the obligations AND has performed additional achievements AND has worked for the company more than 5 years AND completed the obligations 3 months before the due date
THEN the bonus is 5% of the salary
IF the user has completed the obligations AND has performed additional achievements
THEN the bonus is 3% of the salary
IF the user has completed the obligations AND has worked for the company more than 5 years
THEN the bonus is 3% of the salary
IF the user has completed the obligations AND completed the obligations 3 months before the due date
THEN the bonus is 3% of the salary
IF none of the rules above matched (empty cells are treated as an automatic match)
THEN the user gets no bonus
The expressions in each cell is an MVEL expression. MVEL is an embeddable scripting language that you can read more about here [153]. Note though that you don’t have to write MVEL syntax yourself but can use the edit icon in each cell to display a structured expression dialog where you can create these expressions through a simple interface. Once you are familiar with the syntax you can just enter them directly in the cells, like editing a spreadsheet.
Even if you don’t know MVEL, most expressions are self-explanatory. The complex date expression < fn_subtractDate(dueDate,0,3,0) probably requires a small explanation though. A custom calculation for dates is used that takes the dueDate as the first parameter and then will calculate a date value by subtracting from it the last 3 parameters for years, months and days. In this case the expression checks if the completedDate is 3 months before the due date.
Now create the decision table for yourself. The first thing you need to do is add four input expressions using the Add input button in the Decision Table editor. For each of these, select the process variable or form field to use as input for the column. When adding yearsOfService it should look like the following.
Then you need to add an output column by clicking "Add output", making sure the dialog looks as below to create a new process variable named bonus.
Time to add our rules. Feel free to type them directly into the cell or use the structured editor (which pops up when clicking the edit icon to the right in each cell). Below you can see how the structured editor looks like when adding the date expression from above.
When done, click Validate to make sure your decision table doesn’t contain errors. Note that once you click Validate, the editor will validate your table for every change you make. When you’re happy with your table, click the save icon. You will be prompted to give a "Decision Table key" which can be any value unique to the process.
Back at the BPMN editor add an "Exclusive gateway" and from it add a new "End event" by clicking the circle with the thick border. Select the arrow that connects them and enable the "Default flow" property.
Now drag and drop a "Mail task" and set its "To" property’s "Fixed value" to ${emailBean.getProcessInitiator(execution)} so it sends the email to the initiator of the process. Then enter values for its "Subject" and "Text" (or "Html") properties. Add a sequence flow arrow to connect the gateway to the email task and make sure to set its "Flow condition" property to have an advanced condition as in the image below.
Finally, draw the sequence flow arrow from the mail task to the end event.
We are now ready to use our Decision Table in the Task app. Once you have deployed your process, start an Annual Work Review process by entering the following details in its Start form and click Start Process.
The process detail view is displayed as shown below. After a decision table is executed in a process, it is listed in the Executed Decision Tables section. If something caused the decision table to fail during execution, a red icon with a message is displayed stating an error occurred. Click the Calculate Bonus decision table in the user interface to see details about the decision table and its evaluation.
A decision table is a bit like a black box. You can see the history of it when it was executed. In the image below you can see the audit trail of the decision table.
An input cell marked with a blue border indicates that the expression in the cell matched the input value. If a cell border is red it means it did not match. If it has no border it means it wasn’t evaluated at all (for example, a previous cell had failed to match and is shown as red). If an exception occurs during evaluation it is also marked with a red border, but also with a red error icon in the right part of the cell.
An output cell only displays the value that was set by its expression. A blue border indicates that it was successfully set. A red border indicates an error occurred during execution of the cell expression. For tooltip information, position your cursor over a cell. An example of this can be seen in the image above where the output cell sets the bonus to "30": hover over the cell and the expression used to calculate the value is displayed.
To see a list of all the input values that were provided to the decision table before execution, click the "Input values" section and you will see the table below.
To see a list of all the output values that were set by the decision table after execution, click the "Output values" section and you will see the table below.
You may have noticed that we haven’t yet mentioned anything about the decision table’s "Hit policy". The hit policy decides "how" the decision table will be executed when rules succeed (a "hit"). In our decision table we have selected "First (single pass)", which means the decision engine will execute all rules in the given order until it has found a rule where all cell expressions match their input values. Then no further rules will be tested and the outcome expressions specified on the successful rule will be used to set the output values.
Empty cells are considered to be an automatic match, meaning that a rule with only empty cells will always be treated as succeeding (a hit). In our decision table we have such a rule in row #5, but with the input we gave, it will find a match on row #4 and the rule on row #5 will never get tested.
If we change the Hit policy in our table to be "Any (single pass)" the result after executing the decision table will be different. The execution evaluate all rows until the last rule, even if it found a rule that matched on a previous row.
Given the rules in our example, the Any hit policy does not make much sense, since the result would always be that bonus is set to "0" because the last rule always matches, no matter what input is given.
A Data Model enables you to access and manipulate data related to a business process in Alfresco Process Services. For example, you can define a data model that maps to a relational database (via JDBC) or a custom API to connect to an external source such as a patient database or a customer database.
To use the Data Model functionality effectively, perform one or all of the following steps:
Reference an entity while mapping variables.
Make entity fields visible in the process by mapping them.
Reference mapped entity fields in forms when creating or editing forms.
Reference entity fields in expressions when creating or maintaining decision tables.
You can establish connection from your process with a relational database. To enable the connection, you must first register the data source for your tenant in the Identity Management app in Alfresco Process Services.
To configure the data source:
Name – Name of your data source. For example, modeler.
JDBC url – The JDBC URL used to connect to the database. For example:
jdbc:mysql://127.0.0.1:3306/modeler?characterEncoding=UTF-8 - Driver class – The JDBC driver used to connect to the database. For example: com.mysql.jdbc.Driver - Username & Password – The username and password of the account used to connect to the database. . Click Save.
When configuring data source and data models for DBMSs you will normally require the JDBC driver to be available at run-time. Alfresco Process Services is only supplied with the driver for the H2 database. For other DBMSs (MySQL, Oracle, PostgreSQL) make sure that the relevant JDBC drivers are in the classpath, for example the Tomcat library path or <Process Services Installation>/tomcat/webapps/activiti-app/WEB-INF/lib.
You can either manually define a data model or import it from an existing data source, such as a relational database schema or an Alfresco content model.
Entity name – The name you want to use for the entity, for example, Customer.
Entity description (optional) – Description of the entity.
Table name – The database table name that you want the entity to be mapped to, for example Customer.
Attributes – Displays the entity attributes as you add them.
Attribute name – Name you want to use for the attribute, for example, Customer Id.
Attribute description (optional) – Description of the attribute.
Column name – Column name as specified in the database, for example, id.
Attribute type – One of the following attribute types: String, number, date.
Primary key – Select to indicate if the attribute is a primary key or not.
Database generated value (autoincrement) - Select this if the primary key is set to autoincrement in the database.
Required – Select to indicate if the attribute should be mandatory or not.
The Data Models page is displayed.
The Create a new data model dialog box appears. Or to import an existing data model, click Import Data Model.
This examines the RDBMS of the datasource and creates an entity and an attribute for each table. In this example, we use the MySQL sample database, Sakila. For more information, see https://dev.mysql.com/doc/sakila/en/sakila-installation.html [162].
If you overwrite, any changes made to the entities and the attributes since your last import will be lost.
Select Skip overwriting existing attributes if you have renamed attributes and you want to save your changes while adding new attributes.
Select Overwrite if you want to reset the changes you have made to the attributes and bring in new additions.
Once you have defined the data model for a database data source, the next step is to use them in forms, decision tables, and process conditions, by mapping them into form fields or process variables. For example, to use patients’ information, you can map their information such as their name and address into your forms.
To start accessing data using your data model:
Developers can define a ‘value path’ that is stored in Process Services and made available to the developer at runtime, allowing them programmatic access to the information in the custom control. This information can then be extracted into a custom data model.
The implementation uses the Alfresco data model service AlfrescoCustomDataModelService to connect the custom data models to external sources and perform custom data operations. The value path should be injected into the wrapper bean class to make it available with the mapped complex data model field at application runtime. The value path value is stored in JSON format in the database.
An optional 'Field value path' is available for custom controls in the Attribute mapping for the 'Store Entity task'.
As you collect new data about an entity, you may wish to save this back to the database. However, as this is not done automatically when a form is saved, you must create a task in your process to explicitly save the data you want.
To save data using the data model:
Mapped data model – Select the data model to map your entity with.
Mapped entity – Select the entity to map your data model with.
New Variable/ existing variable – Create a new variable or select an existing variable.
Attribute name – Map the attribute names with the relevant form fields by selecting the relevant form field value from the drop-down list. For example, Customer Id with ID and Customer name with Name.
Mapped value type – Select one of the value types for mapping attributes. In the above example, Form field was selected. However, you can also map your attributes with a static field or variable.
Open your app and click + START. The form fields that you defined in your process appear.
Edit an existing Id (column name) with a new customer name and verify if the changes appear in your database.
Sample database table
While working on the data model functionality, locate or create a database table and its columns from your database and make sure to create matching attributes in your Data Model. For example, the following customer table was used for the customer data model in the above sections.
You can map entities to the Alfresco Content Services repository to create data models for Alfresco Content Services folders.
Before defining a data model for Alfresco Content Services folders entities, you need to establish a repository connection and register the data source in your tenant.
Once you've configured the data source you can define folder entity data models.
This loads the repository source menu.
Attribute Name | Alfresco Content Services Property | Entity Time |
---|---|---|
ID | sys:node-uuid | string |
Name | cm:name | datasource.driverstring |
Title | cm:title | datasource.urlstring |
Created | cm:created | date |
Creator | cm:creator | string |
Modified | cm:modified | date |
Modifier | cm:modifier | string |
Parent | cm:parentId | string |
With Alfresco Content Services you can define and use custom content models using either XML or the Alfresco Share Model Manager. You can import content models and use them in your data models.
This creates a folder with two XML files.
This prompts you to select the content model file.
Unlike database schemas, importing a content model doesn't overwrite an existing entity if it's currently selected. If the name already exists then an error will be displayed. If it doesn't exist then a new entity is created with the content models using the type name (<type name=”.. >) as the entities name.
You need to activate the content model in Alfresco Share to use it in deployed process applications.
When you've created a folder data model, you can use it in several ways.
You can create an Alfresco Content Services folder entity in Alfresco Content Services repository with the folder metadata.
This is usually a form with the appropriate fields, as in the following example. This example uses a form to provide the Name, Description, and Title for the folder entity and under the parent folder, and is used as the referenced form of the start task.
This can be used in expressions, parameters, and other mappings later on in the process. Use this variable to retrieve the ID of the folder entity for future operations such as update or retrieve.
This indicates to the task that a new folder should be created. Specifying the Id updates an existing folder.
The new process instance is created. You can sign in to Alfresco Share and see the new folder created, and see that in the properties the Name, Title, and Description are set to the values entered in the form.
To create a folder entity you need to provide a parent for the entity parent folder. This can be configured in three different ways.
This is the Alfresco Content Services repository where folder entities will be stored.
This is the folder under which the folder entity will be stored.
You can choose whether to allow users to change the default value and select a new folder. This means the user can select folders in collaborative processes where folders are available. This also allows administrators to provide folder-based grouping of content. For example, the administrator can define a number of different folders for each region.
Alternatively, you can hide this field and enforce a single parent throughout the process application.
This is a variation of the previous method. The parent folder is created and stored as the default for other processes to store all their folder entities.
You can now use the default folder parent value in various ways, including:
This method stops the user from knowing the details of where the entity is stored. You'll need to create a process starting with a form that allows the user to select a parent folder.
The previous approach is possible because parent folder information is stored in a process variable as JSON, for example:
{"path":{"id":"47cb278d-c775-444f-a23e-b9f2d92390da","title":"documentLibrary > my-folder","folderTree":[{"id":"ec5eb0ec-76a0-4175-adbf-dcf3842ed00c","title":"documentLibrary","simpleType":"folder","folder":true},{"id":"47cb278d-c775-444f-a23e-b9f2d92390da","title":"my-folder","simpleType":"folder","folder":true}]},"account":{"id":"alfresco-1","name":"local"},"site":{"id":"health-care","title":"health care"}}
The Store Entity task can recognize the JSON format and extract the values needed. Process developers can construct the parent folder dynamically in code, scripting, or expressions, and store it in a process variable.
Updating a Alfresco Content Services folder entity is similar to creating one using Store Entity tasks, with different key mapped fields.
Unlike the creation operation, the Id attribute is required to update the folder entity. Alternatively, you can supply the parent folder and name of folder instead of the folder id. When you supply a folder id and folder name this renames the folder.
You can sign in to Alfresco Share open the folder to see the updated Title and Description.
As with other data models, there are two ways you can retrieve Alfresco Content Services folder entities and use them in a process or decision table.
Using the form field to data model mapping property in a start or user task to map the form fields to the models attributes. Follow the same process described in Using data model in your processes [157].
When creating or updating folder entities, the entity can be stored in a variable.
These variables can then be used in the process expressions and parameters, forms, or decision tables. To use a variable in a form:
After updating the folder entity a new task is created which uses the Display
Folder name to show the entity attributes.
In Process Services, you create a process models to represent a series of tasks in your business process. This tutorial guides you through creating a simple process model.
The process you are modeling here is a simplified business project lifecycle. Each project has a name, type, due date, and documents associated with it. Each project is started, and then reviewed to determine if it should be accepted on to the project list, or rejected.
The Create a new business process model dialog appears.
For example, First Process.
The Step editor is displayed.
The first step, Process start, is already added to your process. You are going to set the process to start by having the user complete a form.
It expands to allow you to change the step.
If you have some forms in your Forms library, they will be listed here, and you can pick one, but in this tutorial we will create a new form.
The Create a new form dialog appears. The form you create now is part of this process model and is not available in your forms library for use in other process models. If you want to create a form you can reuse in other process models you can do so from the Forms page.
For example, Start form.
The Form Editor is displayed. Design the form by dragging and dropping the field types from the palette to the Form Editor. You can hover over each field in the Design area, and click the pencil icon to edit the field properties, or to remove the field from the form. Each field type offers different options. You can also add a display label in the process to reference a value entered in a field by a user in a running process. You can also define if the field is mandatory for the form to be completed. In this tutorial, you just give labels to the fields.
You are back in the Step editor.
You need to add a Human step that can be used to assign a task to a user.
For this tutorial, use the name Review project.
The Human step allows you to select who the task should be assigned to. You can assign the person who initiated the process, a single named user, a set of candidate users, or depending on the type of your account, a group of users. When a task is assigned to a group or a list of candidate users, all of those users can see the task in their task list, and will need to claim it in order to complete the task. For this tutorial, you will assign all tasks to the process initiator, that’s you, so you can run the process and see the tasks yourself.
This step allows you to take a different action depending on the outcome selected in the associated form.
You can add more choices by clicking on the + icon in the middle of the Choice step. For this tutorial, we only need two based on your accept and reject outcomes.
The text can contain references to values for forms in the process. In addition, there is a helper drop-down list from which a form field reference can be selected. It is inserted at the current cursor position in the text.
The step editor is displayed.
Your process is listed in the Process tab as a thumbnail of the process. You can edit any process from the list by clicking the BPMN Editor button in the top right corner of the thumbnail. You can see additional information about a model by clicking on the thumbnail itself or the Show Details button in the top right corner of the thumbnail. This takes you to the Details page for the process model. Here, you can see a read-only preview of the model and the actions you can perform on it.
Now that you have created a process, you need to create your first app so you can publish and deploy your process model.
You create an Alfresco Process Services process app to group together a number of processes to make them available to yourself or other users. An app is the container for handling a group of published processes and deploying them to a Process Engine. This tutorial leads you through the steps required to create and use an app containing a single process.
This tutorial uses the process model created in the Creating your first process [173] tutorial.
The Create a new app definition dialog appears.
Use the name My First App for this tutorial.
Publishing an app makes it available to everyone you’ve shared it with.
A new app tile is added to your landing page.
Your app is now deployed and ready to be used.
You start a process from the Processes tab of the Task app page. In this section, you are going to start and monitor the process you designed in the previous tutorial. To start the process, first add a process to an app and deploy that app deployed.
The following steps use the process model created in the Creating your first process [173] tutorial, and the corresponding app created and deployed in the Creating your first app [174] tutorial.
The form you created in the Creating your first process [173] tutorial is displayed. . Fill in the details on the form, and add any documents you need, and click START PROCESS.
You are returned to the Processes page, which displays the process list with the process that you just started.
On the Processes page, you can view running processes and see the current and completed tasks. You can also add comments that are available for anyone involved in the process.
The first step in the process is a task to review the project, and accept or reject it. Remember that when you created the first step in Step Editor, you specified that the task should be assigned to the process initiator. Since you started the process, you are the process initiator and this task is assigned to you.
At this stage you can add people, documents, and comments to the task.
The Review Project task is complete and a new task, Update Project List is displayed. You defined this as a choice step in Step Editor, if the user choice was to accept the project.
The task that shows the details of the accepted project is displayed.
You have now completed all the tasks in the process and there are no tasks displayed for you in the Tasks tab. Now, if you click on the Processes tab, you’ll not see any running processes.
You have started your first process, performed the tasks assigned to you in that process, and completed a process successfully.
As you have seen from previous sections, processes are made up of individual tasks. You can also create a single task for yourself or others and assign it for completion. This tutorial guides you through the steps for creating and completing a single task.
In this tutorial you will add a single task Brush teeth and complete the task yourself.
The New task dialog appears.
Your new task appears in the task list, and the task details are displayed in the right-hand panel.
Now you have created a task you can alter the details such as the assignee and the Due date, involve others in the task, add a document and add comments to be shared with other collaborators in the task. For this simple task of Brushing teeth, you are just going to add a due date of today. . Click Due date.
A date chooser drops down.
The Due date now has a timer displayed showing the number of hours before the end of the day. Many fields displayed in Alfresco Process Services can accept user input when you click on them. The Assignee field the task is another example.
The task is removed from the open task list.
You have created and completed your first single task and used some of the filtering capabilities of the Task app.
You can create a process model using the Step Editor or BPMN Editor.
Step Editor lets you define a business process through a sequence of steps. The BPMN Editor is a more powerful process design tool for creating BPMN 2.0 standard models.
Let’s start by creating a process model using the Step Editor:
By default, Step Editor includes a number of Steps, however this depends on the Stencil that you selected for editing the process model.
The Forms editor has the following tabs:
Design - Define the layout of form fields from the palette.
Tabs - Customize tab names to display in the form.
Outcomes - Define the outcome buttons for the form.
Style - Define the style (css) for the form elements. For example, adding the following style in the Style panel will convert the field background to blue:
.fields { background-color: blue; }
Javascript - Define javascript code for an element in the form. For example:
// __var currentUser = scope.$root.account;__ __console.log(currentUser);__ __alert ("Hello World!");__
Properties - Define custom properties (metadata) for the form. This is particularly useful when using a custom form renderer (Jave API or Rest API) to retrieve the properties.
Variables - Define variables in the form.
You can design the form layout by dragging and dropping the required field type from the palette on the left to the form editor.
For each field dropped in the Design area, you can hover over it and edit the field properties using the pencil icon. Alternatively, click X to remove a field from the form.
Add labels for the selected fields. Optionally, you can reference a display label with the value entered by a user running the process. In addition, you can also define if the field is required to be filled before the form can be completed.
You can also specify who this task should be assigned to. For example:
Someone who initiated the process
A single user
A set of candidate users or depending on the type of account, a group of users.
To simplify a process, assign all tasks to the process initiator so that you can run the process and have the tasks assigned to yourself.
Accept
Reject
The next step depends on the outcome selected in the previous step.
You can also add additional choices by clicking the + (plus) icon in the center of the Choice step.
All your processes are listed with a thumbnail of the process. You can edit a process from the list by clicking Visual Editor. For any additional information about a model, click the thumbnail itself or the Show Details button on the top right corner of the thumbnail. This takes you to the Details page for the process model where you can see the preview model as well as the actions that you can perform on it.
Tips:
When you edit and save a model, you can choose for the changes to be saved as a new version.
Previous versions can be accessed from the History popup, as can any commentary from the Comments popup, where you can add further comments.
Other action buttons are self-explanatory such as deleting, starring (favorites), sharing, and downloading the model.
Now that we have a process defined, let’s create a process app using the Apps page.
You can do similar actions on an app in its Details page for all models, such as deleting and sharing. You can also publish the app directly instead of doing it via the Save dialog. Publishing an app makes it available to everyone you’ve shared it with to add to their landing page. Let’s add it to our landing page so we can see our process in action.
A process app is a collection of processes that you want to group together to make them available to yourself or other users you share it with.
To access tasks and processes:
When you involve someone else in a task, it will appear in their tasks list. This enables them to contribute to the task such as add comments, documents, and even involve more people. However, only the person who is assigned the task with can actually complete it. In the following example we’ve added a document, a comment, and involved a person.
Tasks that are directly assigned to you
Tasks where you are listed as a candidate
Tasks that belong to the group you’re member of
Now that the tasks have been created, let’s start the process we designed earlier.
You will be returned to the Processes page, showing the details of the newly started process in your process list.
You can always view a process to see what the current and completed tasks are, as well as add comments that will be available for anyone involved in the process at any stage. If you go to the Task page that we just created, you will see the first step in the process is that of a task to review the project, and accept or reject it. The task was assigned to you because it was set to the process initiator, and you started the process.
Before you fill in the review summary and choose accept or reject, you can still add people, documents, and comments by clicking on the Show details button in the task header area. You can get back to the form from there by clicking the Show form button. If you click the Accept button, the Review Project task will disappear and instead a new task, Update Project List will appear. This is because you defined it as the next choice step in the Step Editor, if the choice was to accept the project. You can just click the Complete button to move to the next step, which is a task to show the details of the accepted project.
When you complete this task, your task list and your process list will be empty. If you prefer to see all your tasks and processes in one place rather than through different process apps, you can use the My Tasks tile to get your complete task and process lists.
The Tasks App screen is displayed and the involved
Tasks option is highlighted.
The new Involved Task is displayed.
If the group exists, the matching group name is displayed on the screen.
Links:
[1] https://docs.alfresco.com/../concepts/pw_using_intro.html
[2] https://docs.alfresco.com/../concepts/Landing-page.html
[3] https://docs.alfresco.com/../concepts/welcome.html
[4] https://docs.alfresco.com/../tasks/pw-install.html
[5] https://docs.alfresco.com/../tasks/pw-login.html
[6] https://docs.alfresco.com/../concepts/pw_apps_landing.html
[7] https://docs.alfresco.com/../concepts/pw_dashboard.html
[8] https://docs.alfresco.com/../concepts/pw-working-with-tasks.html
[9] https://docs.alfresco.com/../concepts/pw-working-with-processes.html
[10] https://docs.alfresco.com/../concepts/userGuide.html
[11] https://docs.alfresco.com/../tasks/pw-dashboard-settings.html
[12] https://docs.alfresco.com/../tasks/pw-create-task.html
[13] https://docs.alfresco.com/../tasks/pw-view-task.html
[14] https://docs.alfresco.com/../tasks/pw-task-attachment.html
[15] https://docs.alfresco.com/../tasks/pw-task-audit-PDF.html
[16] https://docs.alfresco.com/../tasks/pw-create-process.html
[17] https://docs.alfresco.com/../tasks/pw-view-process.html
[18] https://docs.alfresco.com/../tasks/pw-view-process-workflow.html
[19] https://docs.alfresco.com/../tasks/pw-language.html
[20] https://docs.alfresco.com/../topics/personal_profile.html
[21] https://docs.alfresco.com/../topics/App_Designer_app.html
[22] https://docs.alfresco.com/../topics/task_app.html
[23] https://docs.alfresco.com/../topics/identity_management.html
[24] https://docs.alfresco.com/../topics/analytics_app.html
[25] https://docs.alfresco.com/../topics/step_editor.html
[26] https://docs.alfresco.com/../topics/bpmn_editor.html
[27] https://docs.alfresco.com/../topics/form_editor.html
[28] https://docs.alfresco.com/../topics/business_rules_decision_tables.html
[29] https://docs.alfresco.com/../topics/data_models.html
[30] https://docs.alfresco.com/../topics/creating_your_first_process.html
[31] https://docs.alfresco.com/../topics/creating_your_first_app.html
[32] https://docs.alfresco.com/../topics/starting_your_first_process.html
[33] https://docs.alfresco.com/../topics/creating_a_single_task.html
[34] https://docs.alfresco.com/../topics/creating_a_process_model.html
[35] https://docs.alfresco.com/step_editor.html
[36] https://docs.alfresco.com/bpmn_editor.html
[37] https://docs.alfresco.com/../topics/App_Designer_editor.html
[38] https://docs.alfresco.com/../topics/tasks_tab.html
[39] https://docs.alfresco.com/../topics/processes_tab.html
[40] https://docs.alfresco.com/../topics/reports_tab.html
[41] https://docs.alfresco.com/../topics/using_the_new_filter_in_tasks_amp_processes.html
[42] https://docs.alfresco.com/tasks_tab.html
[43] https://docs.alfresco.com/analytics_app.html
[44] https://docs.alfresco.com/../topics/tenants_tab.html
[45] https://docs.alfresco.com/../topics/users_tab.html
[46] https://docs.alfresco.com/../topics/capabilities_tab.html
[47] https://docs.alfresco.com/../topics/organization_tab.html
[48] https://docs.alfresco.com/../topics/tenants.html
[49] https://docs.alfresco.com/../topics/users.html
[50] https://docs.alfresco.com/../topics/groups.html
[51] https://docs.alfresco.com/../topics/content_services_repositories.html
[52] https://docs.alfresco.com/../topics/history.html
[53] https://docs.alfresco.com/custom_email_templates.html
[54] https://docs.alfresco.com/../topics/custom_email_templates.html
[55] https://docs.alfresco.com/user_task.html
[56] https://docs.alfresco.com/process-services1.10/topics/tenants_tab.html
[57] https://docs.alfresco.com/../topics/configuring_standard_reports.html
[58] https://docs.alfresco.com/../topics/filtering_reports.html
[59] https://docs.alfresco.com/../topics/customizing_reports.html
[60] https://docs.alfresco.com/customizing_reports.html
[61] https://docs.alfresco.com/../topics/human_step.html
[62] https://docs.alfresco.com/../topics/email_step.html
[63] https://docs.alfresco.com/../topics/choice_step.html
[64] https://docs.alfresco.com/../topics/sub_process_step.html
[65] https://docs.alfresco.com/../topics/rest_call.html
[66] https://docs.alfresco.com/../topics/generate_document.html
[67] https://docs.alfresco.com/../topics/decision_step.html
[68] https://docs.alfresco.com/../topics/content_related_steps.html
[69] https://docs.alfresco.com/../topics/end_process_step.html
[70] https://docs.alfresco.com/../topics/goto_step.html
[71] https://docs.alfresco.com/identity_management.html
[72] http://localhost:8080/activiti-app/
[73] http://httpbin.org/post
[74] https://docs.alfresco.com/business_rules_decision_tables.html
[75] https://docs.alfresco.com/retrieve_alfresco_properties.html
[76] https://docs.alfresco.com/update_alfresco_properties.html
[77] https://docs.alfresco.com/call_alfresco_action.html
[78] https://docs.alfresco.com/publish_to_alfresco.html
[79] https://docs.alfresco.com/publish_to_box.html
[80] https://docs.alfresco.com/publish_to_google_drive.html
[81] https://docs.alfresco.com/../topics/retrieve_alfresco_properties.html
[82] https://docs.alfresco.com/../topics/update_alfresco_properties.html
[83] https://docs.alfresco.com/../topics/call_alfresco_action_2.html
[84] https://docs.alfresco.com/../topics/publish_to_alfresco.html
[85] https://docs.alfresco.com/../topics/publish_to_box.html
[86] https://docs.alfresco.com/../topics/publish_to_google_drive.html
[87] https://docs.alfresco.com/service_task.html
[88] https://docs.alfresco.com/../topics/acs_actions.html
[89] https://www.box.com/
[90] https://www.google.com/drive/
[91] https://docs.alfresco.com/../topics/start_events.html
[92] https://docs.alfresco.com/../topics/activities.html
[93] https://docs.alfresco.com/../topics/structural_components.html
[94] https://docs.alfresco.com/../topics/gateways.html
[95] https://docs.alfresco.com/../topics/boundary_events.html
[96] https://docs.alfresco.com/../topics/intermediate_catching_events.html
[97] https://docs.alfresco.com/../topics/intermediate_throwing_events.html
[98] https://docs.alfresco.com/../topics/end_events.html
[99] https://docs.alfresco.com/../topics/swimlanes.html
[100] https://docs.alfresco.com/../topics/artifacts.html
[101] https://docs.alfresco.com/../topics/none_start_event.html
[102] https://docs.alfresco.com/../topics/start_timer_event.html
[103] https://docs.alfresco.com/../topics/start_signal_event.html
[104] https://docs.alfresco.com/../topics/start_message_event.html
[105] https://docs.alfresco.com/../topics/start_error_event.html
[106] http://en.wikipedia.org/wiki/ISO_8601
[107] https://docs.alfresco.com/../topics/user_task.html
[108] https://docs.alfresco.com/../topics/service_task.html
[109] https://docs.alfresco.com/../topics/script_task.html
[110] https://docs.alfresco.com/../topics/business_rule_task.html
[111] https://docs.alfresco.com/../topics/receive_task.html
[112] https://docs.alfresco.com/../topics/manual_task.html
[113] https://docs.alfresco.com/../topics/mail_task.html
[114] https://docs.alfresco.com/../topics/camel_task.html
[115] https://docs.alfresco.com/../topics/mule_task.html
[116] https://docs.alfresco.com/../topics/rest_call_task.html
[117] https://docs.alfresco.com/../topics/generate_document_task.html
[118] https://docs.alfresco.com/../topics/decision_task.html
[119] https://docs.alfresco.com/../topics/store_entity_task.html
[120] http://jcp.org/en/jsr/detail?id=223
[121] http://camel.apache.org/
[122] https://www.mulesoft.com/resources/esb/what-mule-esb
[123] http://juel.sourceforge.net
[124] https://docs.alfresco.com/document_templates.html
[125] https://docs.alfresco.com/data_models.html
[126] https://docs.alfresco.com/../topics/sub_process.html
[127] https://docs.alfresco.com/../topics/collapsed_sub_process.html
[128] https://docs.alfresco.com/../topics/event_sub_process.html
[129] https://docs.alfresco.com/../topics/call_activity.html
[130] https://docs.alfresco.com/boundary_events.html
[131] https://docs.alfresco.com/../topics/exclusive_gateway.html
[132] https://docs.alfresco.com/../topics/parallel_gateway.html
[133] https://docs.alfresco.com/../topics/inclusive_gateway.html
[134] https://docs.alfresco.com/../topics/event_based_gateway.html
[135] https://docs.alfresco.com/../topics/boundary_timer_event.html
[136] https://docs.alfresco.com/../topics/boundary_error_event.html
[137] https://docs.alfresco.com/../topics/boundary_signal_event.html
[138] https://docs.alfresco.com/../topics/boundary_message_event.html
[139] https://docs.alfresco.com/../topics/boundary_cancel_and_compensation_event.html
[140] https://www.activiti.org/5.x/userguide/index.html#bpmnBoundaryCancelEvent
[141] https://docs.alfresco.com/../topics/none_end_event.html
[142] https://docs.alfresco.com/../topics/error_end_event.html
[143] https://docs.alfresco.com/../topics/terminate_end_event.html
[144] https://docs.alfresco.com/../topics/cancel_end_event.html
[145] https://docs.alfresco.com/../topics/publish_to_alfresco_task_box_google_drive.html
[146] https://docs.alfresco.com/../topics/retrieve_alfresco_properties_2.html
[147] https://docs.alfresco.com/../topics/update_alfresco_properties_2.html
[148] https://docs.alfresco.com/../concepts/ps-form-controls.html
[149] https://docs.alfresco.com/form-attach.html
[150] https://docs.alfresco.com/../concepts/form-attach.html
[151] http://www.omg.org/spec/DMN/1.0/
[152] https://docs.alfresco.com/form_editor.html
[153] https://en.wikisource.org/wiki/MVEL_Language_Guide
[154] https://docs.alfresco.com/../topics/connecting_your_data_model_to_a_relational_database.html
[155] https://docs.alfresco.com/../topics/defining_data_models.html
[156] https://docs.alfresco.com/../topics/importing_data_models.html
[157] https://docs.alfresco.com/../topics/using_data_model_in_your_processes.html
[158] https://docs.alfresco.com/../topics/saving_data_using_your_data_model.html
[159] https://docs.alfresco.com/../concepts/ps-create-datamodel.html
[160] https://docs.alfresco.com/../tasks/ps-import-model.html
[161] https://docs.alfresco.com/../concepts/ps-folder-entities.html
[162] https://dev.mysql.com/doc/sakila/en/sakila-installation.html
[163] https://docs.alfresco.com/../concepts/complex_custom_control_mapping.html
[164] https://docs.alfresco.com/../tasks/ps-config-data-source.html
[165] https://docs.alfresco.com/../tasks/ps-define-data-model.html
[166] http://docs.alfresco.com/5.2/concepts/admintools-cmm-intro.html
[167] https://docs.alfresco.com/../tasks/ps-create-folder-entity.html
[168] https://docs.alfresco.com/../tasks/ps-config-folder-entity-parent.html
[169] https://docs.alfresco.com/../tasks/ps-update-folder-entity.html
[170] https://docs.alfresco.com/../tasks/ps-retrieve-and-use.html
[171] https://docs.alfresco.com/ps-create-folder-entity.html
[172] https://docs.alfresco.com/ps-update-folder-entity.html
[173] https://docs.alfresco.com/creating_your_first_process.html
[174] https://docs.alfresco.com/creating_your_first_app.html
[175] https://docs.alfresco.com/../topics/assigning_tasks.html
[176] https://docs.alfresco.com/../topics/creating_a_process_app.html
[177] https://docs.alfresco.com/../topics/using_my_tasks_and_process_apps.html
[178] https://docs.alfresco.com/../tasks/group-task.html