Alfresco Documentation
Published on Alfresco Documentation (https://docs.alfresco.com)

Home > Alfresco Process Services 1.10

Alfresco Process Services 1.10

Welcome to the Alfresco Process Services 1.10 documentation.

If you want to know about the new features and improvements of Alfresco Process Services 1.10, see What's new in Alfresco Process Services [1].

Looking for the online documentation for a previous release? Go to the Alfresco documentation [2] landing page to find all the documentation resources. For those interested in the Share Connector, you can find the documentation here [3].

Alfresco customers should also take a look at the Alfresco Support Handbook [4].

  • What's new in Alfresco Process Services [5] Here are all the new features of Alfresco Process Services 1.10
  • Supported Platforms [6] Here is a list of the individual components that have been through the complete Alfresco Quality Assurance and Certification activities for Alfresco Process Services.
  • Getting Started with Alfresco Process Services [7] With Alfresco Process Services it's easy to create, publish, and use process models and apps.
  • Using Alfresco Process Services [8]Alfresco Process Services 1.10 gives you two ways of accessing your tasks and processes.
  • Deploying [9] There are several options for deploying Alfresco Process Services and its associated applications.
  • Administering [10] This section describes how to install and configure Alfresco Process Services.
  • Developer guide [11] This guide describes how to develop extensions and customize Alfresco Process Services.
  • Using the Share Connector [12] The Share Connector enables you to start and run Alfresco Process Services processes, and tasks in an Alfresco Share environment. You can create process definitions in Alfresco Process Services, and deploy them to Share.
  • Copyright [13]
  • Disclaimer [14]

What's new in Alfresco Process Services

Here are all the new features of Alfresco Process Services 1.10

See what we've been up to below, and follow our latest updates at Alfrescodocs [15].

To learn more about Alfresco Process Services architecture, see our Alfresco ArchiTech Talks video [16].

What's new in Alfresco Process Services 1.10

  • Process Services now supports Java 11 [17]
  • Elasticsearch 7.3 [18]
  • Helm charts [19]
  • Deprecations [20]

Java 11 support

Process Services now supports OpenJDK 11.1, upgrading from OracleJDK 8.

back to top [21]

Elasticsearch version 7.3

The minimum version of Elasticsearch has been upgraded to 7.3 supporting external instances of Elasticsearch using REST connections.

See Elasticsearch configuration [22] for more detail and configuration options.

back to top [21]

Helm charts for Process Services

This release includes a sample deployment Helm chart for Process Services .

See Deploying [9] for the deployment options available.

back to top [21]

Deprecations

The application servers JBoss, WebLogic and WebSphere, and IBM JDK have been deprecated. Full support will be removed in a future release.

back to top [21]

Parent topic: Alfresco Process Services [23]

Supported Platforms

Here is a list of the individual components that have been through the complete Alfresco Quality Assurance and Certification activities for Alfresco Process Services.

Last modified: November 20 2019

Choose a combination of products to build your own Supported Stack. If anything is unclear then please contact our Support team https://support.alfresco.com [24].

Operating systems

Server 1.10 Comment
Red Hat Enterprise Linux 7.6 Clustered ✓  
Red Hat Enterprise Linux 7.3 x64 ✓  
Red Hat Enterprise Linux 7.1 x64 ✓  
Windows Server 2016 ✓  
Windows Server 2012 R2 x64 ✓  
CentOS 8 x64 ✓  
CentOS 7 x64 ✓  

Databases

Database 1.10 Comment
MySQL 5.7.20 ✓ mysql-connector-java-5.1.32-bin.jar
MS SQL Server 2016 ✓ Microsoft SQL Server JDBC Driver 4.0
Oracle 12c ✓ Ojdbc7.jar – 12.1.0.1 (use jdbc:oracle:thin in db_url)
PostgreSQL 10.9 ✓ postgresql-9.4-1205.jdbc42.jar
Amazon Aurora ✓ mysql-connector-java-5.1.42.jar

Application servers

Application server 1.10 Comment
Tomcat 8.5.28 ✓  
JBoss 7.2.0 EAP ✓  
IBM Websphere 9.0.5 ✓  

JDKs

JDK 1.10 Comment
OpenJDK 11.0.1 ✓  
Oracle JDK 8 X64 ✓ Latest update
IBM JDK 8 ✓  

Browsers

Browser 1.10 Comment
Mozilla Firefox ✓  
MS Internet Explorer 11 ✓  
MS Internet Explorer 10 ✓  
Chrome ✓  

Third party integrations

Integration 1.10 Comment
MS Office 2011 ✓  
MS Office 2010 ✓  
Google Drive ✓  
Elasticsearch 7.3.1 ✓  

Integrated services

Service 1.10 Comment
Identity Service 1.2 ✓ For use with LDAP and SAML
Identity Service 1.1 ✓ For use with LDAP and SAML
Process Workspace 1.3.4 ✓  
Process Workspace 1.3.3 ✓  

Related components

Component 1.10 Comment
VMWare ESXi 5.1.0 ✓ For supported guest operating systems
Parent topic: Alfresco Process Services [23]

Getting Started with Alfresco Process Services

With Alfresco Process Services it's easy to create, publish, and use process models and apps.

This Getting Started tutorial shows you in 3 steps how to create and use a simple expense approval process app.

Prerequisites

Before you begin, make sure that you've following the instructions in Installing Alfresco Process Services.

If you’ve registered for our cloud trial [25] you don’t need to install anything and are ready to go.

Steps

Step 1: Create your first process [26]

Step 2: Create and publish your first process app [27]

Step 3: Use your first process app [28]

  • Create your first process [26] This is the first of three simple steps in creating a process app.
  • Create and publish your first process app [27] Once you’ve created a process, you can create an app and add the process to it, then publish the app.
  • Use your first process app [28] When you’ve created and published a process app, it can be used to request a new expense for approval
Parent topic: Alfresco Process Services [23]

Create your first process

This is the first of three simple steps in creating a process app.

In this step, you are going to design a simple expense approval process that includes three BPMN elements:
  • A start event to trigger the process by submitting a new expense
  • A user task to approve or reject the request
  • An end event to end the process

This process also includes 2 web forms.

  1. Open Alfresco Process Services from one of the following options:

    • Local installation

      - address - http://localhost:8080/activiti-app/#/

      - sign in - admin@app.activiti.com/

      - password - admin

    • Cloud trial - https://activiti.alfresco.com/activiti-app/#/ [29] (use your online trial sign in details)

  2. Select App Designer on your dashboard.
  3. Select Create Process.
  4. Give the process model a name (for example “Expense approval”) and a description, then select the BPMN Editor as the Editor type.
  5. Select Create new model.

    Note: If this is the first time you’ve used Alfresco Process Services then some help tips may be displayed. You can click Next to watch them or press Esc. to close them.
  6. The start event is displayed on the canvas as a circle. Double-click on it and type a name, for example “Submit expense”, then click on the canvas.
  7. Click the circle again and drag and drop the User task icon to the right.

    This adds a user task after the start event.

  8. Double-click on the user task and type a name, for example “Review”, then click on the canvas.

  9. Click the user task again and drag and drop the End event end event icon (circle) to the right.
  10. Double-click on the end event and type a name, for example “End process”, then click on the canvas.

    The process model now has three stages.

  11. Click Validate the model on the toolbar.

    This checks models (processes, web forms, decision tables, data models, and stencils) for errors. If there are errors then a message shows you details on how to resolve them.

    Once it’s validated, you can add forms to the process using the Forms editor. This example needs two forms to be added:
    • One for the requester to submit the expense (start event)
    • One for the manager to review the expense request (user task).
    You can create forms:
    • Directly from the Process editor (embedded in the BPMN model)
    • Separately from the process model and then reference them in the design by adding a key
    In this example they’ll be created directly from the Process editor.
  12. Click the start event and then click Referenced form in the properties panel.

  13. Click New form in the Form reference window.
  14. Give the form a name (for example “Submit expense”) and a description, the click Create form.

    This opens the Form editor.

  15. Drag stencils onto the Design canvas in this order:

    • Text
    • Amount
    • Date
    • Attach File
  16. Hover over the Text stencil and click the Edit icon, then type "Text" as the Label and click Close.

    Repeat this step for the other stencils you added, and type the following labels:

    • Amount
    • Date
    • Attachment

  17. Click Save then Save and close editor.
  18. In the Process editor click the review expense user task and then click Referenced form in the properties panel.
  19. Give the form a name (for example “Expense review”) and a description, the click Create form.
  20. Drag stencils onto the Design canvas in this order:

    • Text
    • Amount
    • Date
    • Attach File
  21. Hover over the Text stencil and click the Edit icon, then type "Text" as the Label and click Close.

    Repeat this step for the other stencils you added, and type the following labels:

    • Amount
    • Date
    • Attachment
  22. Click the Outcomes tab to add a custom outcome so that the reviewer can approve or reject the expense.
  23. Select Use custom outcomes for this form and in the Possible outcomes add two outcomes:

    • Approve
    • Reject
  24. Click Save then Save and close editor.
  25. In the Process editor click Save then Save.
Next step: Create and publish your first process app [30]
Parent topic: Getting Started with Alfresco Process Services [7]

Create and publish your first process app

Once you’ve created a process, you can create an app and add the process to it, then publish the app.

  1. Click App Designer on your dashboard then click the Apps tab and select Create App.
  2. Give the app a name (for example “Expense Approval”) and a description, then click Create new app definition.
  3. Click Edit included models.
  4. Select the Expense approval model. The Selected icon icon shows that you’ve selected it. Then click Close.
  5. Click Save icon Save then select the Publish? option and Save and close editor.
  6. Click Back icon to return to your dashboard.
  7. Click + to add a new app then select the Expense Approval app and click Deploy.

    App added

    The Expense Approval app is added to your dashboard.

    Next step: Use your first process app [31]

Parent topic: Getting Started with Alfresco Process Services [7]

Use your first process app

When you’ve created and published a process app, it can be used to request a new expense for approval

  1. Click the Expense Approval app on your dashboard then click Start.
  2. Complete the requested information and click Start Process to submit the new expense.

    Start process

    The Processes page now shows the new expense approval request. From here you can add comments or cancel the process.

    If you click Show diagram you can see the current status of your expense claim. The active user task is highlighted in green to indicate it's at review stage. Click Close to go back to the claim.

    Green review

  3. Click Review under Active Tasks to review the claim.

    Note: This would usually be done by a user with the required approval level.

    Approve expense

  4. Click Approve to complete the task.

    This completes the claim as it is now at the end of the process flow.

    Note: To review completed tasks click the Processes tab, then click New Filter and select Completed as the Process State.
    Approved

    You can click Audit Log to download a PDF audit report. The template used for the Audit Log is part of the configuration settings and can be customized to your specific needs.

Now that you’ve set up and used your first process app, check the rest of the documentation to learn more advanced uses of Alfresco Process Services.
Parent topic: Getting Started with Alfresco Process Services [7]

Using Alfresco Process Services

Alfresco Process Services 1.10 gives you two ways of accessing your tasks and processes.
  • Process Workspace
  • Alfresco Process Services Landing Page

Alfresco Process Services 1.10 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.

  • Alfresco Process Services Workspace [32]Process Workspace is a new, easy to use app for you to work with your tasks and processes, and it gives you the flexibility to work on either a web interface or on mobile.
  • Process Services Landing Page [33] The Landing Page is your user interface to Process Services. Each tile gives you tools for distinct sets of tasks.
Parent topic: Alfresco Process Services [23]

Alfresco Process Services Workspace

Process Workspace is a new, easy to use app for you to work with your tasks and processes, and it gives you the flexibility to work on either a web interface or on mobile.

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 [34]

  • Opening Process Workspace [35]Process Workspace runs in a web browser. To open Process Workspace, use the following steps.
  • Process Workspace Apps Page [36] 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.
  • Process Workspace Dashboard [37] The Process Workspace dashboard lets you review the statistics for a process definition. This information gives you an overview of the activity.
  • Working with tasks [38]Process Workspace lets you view existing tasks and to create new tasks. The task list lets you work on tasks assigned to you from any process app.
  • Working with processes [39]Process Workspace lets you view existing processes and create new processes.
Parent topic: Using Alfresco Process Services [8]

Opening Process Workspace

Process Workspace runs in a web browser. To open Process Workspace, use the following steps.

  1. Enter the URL into your browser:

    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.

  2. Enter your user name and password for Process Workspace.

    When you log in, you'll see your Apps Page.

Parent topic: Alfresco Process Services Workspace [32]

Process Workspace 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 .

Parent topic: Alfresco Process Services Workspace [32]

Process Workspace Dashboard

The Process Workspace dashboard lets you review the statistics for a process definition. This information gives you an overview of the activity.

The Process Workspace dashboard has two menu modes:
  • Minimized
  • Expanded

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 .

  • Changing the Dashboard Settings [40] The Dashboard Settings lets you filter the data for the current process to customize the information on the dashboard.
Parent topic: Alfresco Process Services Workspace [32]

Changing the Dashboard Settings

The Dashboard Settings lets you filter the data for the current process to customize the information on the dashboard.

  1. Click .

    The Dashboard Settings pane displays in the right-side of the dashboard.

  2. Change the settings to display the statistics that you want.

    • Process Definition - select an alternative process definition to display
    • Status - select All, Complete, or Active events
    • Start Date and End Date - select the date range for the events
  3. Click to close the Dashboard Settings pane.
Parent topic: Process Workspace Dashboard [37]

Working with tasks

Process Workspace lets you view existing tasks and to create new tasks. The task list lets you work on tasks assigned to you from any process app.

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 task [41] Create new tasks for yourself or to assign to others.
  • View task details and activity [42] You can view the detailed information about your active tasks.
  • Attach files to a task [43] You can upload a file that you wish to be attached to a task.
  • Task audit PDF [44]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.
Parent topic: Alfresco Process Services Workspace [32]

Create task

Create new tasks for yourself or to assign to others.

These steps vary depending on whether you are using the minimized or expanded menu.
  1. From the Process Workspace Apps Page, select a process definition.
  2. Click (minimum menu) or click Create (expanded menu).
  3. Select New Task.

    The Start Task window appears.

  4. Add the details for the new task.

    • Name - Enter a name for the new task. You'll not be able to click Start until you enter a name.
    • Description - Add a description for the task.
    • Choose Date - Add a date using the format DD/MM/YYY, or click and select the date from the calendar.
    • Assignee - Choose to whom you want to assign the task. Leave this empty if the task if for you.
    • Form - Choose a task form.
  5. Click Start.
The new task appears in My Tasks.
Parent topic: Working with tasks [38]

View task details and activity

You can view the detailed information about your active tasks.

  1. From the My Tasks page, single click a tasks in the list to select it.

    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.

  2. Click Details.

    You'll see the information about the task.

    • Assignee - shows to whom the tasks is assigned.
    • Status - shows the status of the task, which can be running, completed
    • Priority - shows a number that represents the priority of the task.
    • Due Date - shows the due date of the tasks or you can add a date by clicking and selecting the date from the calendar.
    • Category - shows any associated categories
    • Parent Name - shows the name of the process app to which this task belongs
    • Created By - shows the name of the person who created this task
    • ID - shows the unique identifying number of this task
    • Description - shows the description of the task that was used when the task was created
    • Form Name - shows the name of the form that provides the additional form fields for this 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.

  3. Click Activity.

    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.

  4. Click to close the details and activity.
Parent topic: Working with tasks [38]

Attach files to a task

You can upload a file that you wish to be attached to a task.

  1. From the My Tasks page, click on a task, and then click on the right-side.
  2. Click ACTIVITY.

    An attachment page appears.

    Drag and drop files to this page. You can also click to upload files using your file browser.

You will see the list of files in the attachment page.
Parent topic: Working with tasks [38]

Task audit PDF

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.

  1. From the My Tasks page, click to produce a Task Audit PDF.
  2. The file downloads.
Parent topic: Working with tasks [38]

Working with processes

Process Workspace lets you view existing processes and create new processes.

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 process [45] Create new processes for yourself or for other to use.
  • View process details and activity [46] You can view the detailed information about your active processes.
  • View process workflow [47] You can view the workflow for the process.
  • Use Process Workspace in another language [48] The default language used in Process Workspace is English. You can change the language.
Parent topic: Alfresco Process Services Workspace [32]

Create process

Create new processes for yourself or for other to use.

These steps vary depending on whether you are using the minimized or expanded menu.
  1. From the Process Workspace Apps Page, select a process definition.
  2. Click (minimum menu) or click Create (expanded menu).
  3. Select New Process.

    The Start Process window appears.

  4. Add the details for the new process.

    • Process Name - Enter a name for the new process. You'll not be able to click Start Process until you enter a name.
    • Select Process - Choose the name of a process definition from the list of available processes. When you choose a process from the list, you'll see the additional fields that are required. Enter the details in the additional field.
  5. Click Start Process.
Your process appears in the Process list.
Parent topic: Working with processes [39]

View process details and activity

You can view the detailed information about your active processes.

  1. From the Processes page, single click a process name to select it.

    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.

  2. Click Details.

    You'll see the information about the process.

    • Status - shows the status of the process
    • Due Date - shows the due date of the process or you can add a date by clicking and selecting the date from the calendar.
    • Category - shows any associated categories
    • Created By - shows the name of the person who created this process
    • ID - shows the unique identifying number of this process
    • Description - shows the description of the process that was used when the process was created
  3. Click Activity.

    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.

  4. Click to close the details and activity.
Parent topic: Working with processes [39]

View process workflow

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.

  1. From the Processes list, double-click on a process.

    You'll see a list of active tasks and the process workflow diagram for this process.

  2. Click and click View Task.

    You'll then see the detailed information for the current task.

  3. Click to return to the Processes list.
Parent topic: Working with processes [39]

Use Process Workspace in another language

The default language used in Process Workspace is English. You can change the language.

  1. From Process Workspace, click .
  2. Select Languages.

    You'll see the list of languages that are available.

  3. Choose the language that you wish to use.

    • English
    • French
    • German
    • Italian
    • Spanish
    • Japanese
    • Dutch
    • Brazilian Portuguese
    • Norwegian
    • Russian
    • Simplified Chinese

    .

    The user interface text for Process Workspace changes to the selected language.

Parent topic: Working with processes [39]

Process Services Landing Page

The Landing Page is your user interface to Process Services. Each tile gives you tools for distinct sets of tasks.

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.

Note: If you are an administrator, your landing page is slightly different. Instead of the Profile management tile, you’ll find a more powerful set of tools called the Identity management tile.

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.

  • Personal profile [49] You can add a photo to your profile.
  • App Designer [50] 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.
  • Task App [51] 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.
  • Identity Management [52] These are operations to manage tenants, groups and users. This is useful for example to bootstrap environments with the correct identity data.
  • Analytics App [53] 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.
  • Step editor [54] 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.
  • BPMN editor [55] 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.
  • Form editor [56] 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.
  • Business rules - decision tables [57] 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.
  • Data Models [58] 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.
  • Creating your first process [59] 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.
  • Creating your first app [60] 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.
  • Starting your first process [61] 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.
  • Creating a single task [62] 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.
  • Creating a process model [63] You can create a process model using the Step Editor or BPMN Editor.
Parent topic: Using Alfresco Process Services [8]

Personal profile

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.

images/3.png
Parent topic: Process Services Landing Page [33]

App Designer

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.

image

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.

Note: The Everyone’s filter is applicable for admin purposes only. You can’t use this option to allow others to reuse the model. To allow someone else to use this model, it has to be shared first.

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.

Note: If you haven’t created any processes yet, then you will see shortcuts for creating a process. You can use the simple Step editor [64], or the more powerful BPMN editor [65]. If you are not familiar with the BPMN 2.0 Business Process Model language, then the Step Editor is for you. However, if you’d like to create complex processes, then the BPMN Editor will let you use the full power of the language. It’s helpful if you’re familiar with BPMN 2.0 for using the BPMN Editor.
  • 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.

  • Stencils - A stencil is a palette consisting of both standard and customized controls that are common to the Step editor, BPMN editor, and Forms editor. When you create a process or a form, you can specify a specific stencil or use the default for the editor you are using.
    Note: When editing a form in the form editor, you can change the existing stencil assigned to the form.
    1. Click the Form Stencils drop-down list in the upper right corner of the screen.
    2. Select a stencil from the list.
    3. The new stencil is assigned to the form and its controls appear in the form palette.
      Note: When you change stencils and a field existing in the form canvas is not available in the new stencil, a validation error is displayed. To resolve this issue, remove the field from the form canvas.
  • App Designer editor [66] 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.
Parent topic: Process Services Landing Page [33]

App Designer editor

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.

image

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.

Parent topic: App Designer [50]

Task App

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.

image

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.

Note: If you haven’t created any tasks for yourself, and there are no tasks assigned for you from current processes or from other users, then James will appear with shortcuts to help you create a task or start a published process.
  • Tasks tab [67] The Tasks tab is organized into three columns.
  • Processes tab [68]
  • Reports tab [69]
Parent topic: Process Services Landing Page [33]

Tasks tab

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.

Note: The Audit log button is only available for a completed process instance or a completed task.
  • Using the new filter in tasks and processes [70] 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.
Parent topic: Task App [51]

Using the new filter in tasks and processes

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.

Process definition

Select an active (running) process name, and display only those tasks that are associated with that process.

State

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.

Assignment

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

Sort the list by Newest first, Oldest first, Due last, or Due first.

Task name / Process Name

Type a string to search for matching task names or process name depending on the tab you’re in.

Filter icon and name

Select an icon for your new filter by clicking on the funnel icon, and specify a name for the filter.

Note:

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.

Parent topic: Tasks tab [67]

Processes tab

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 [71] 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.

Parent topic: Task App [51]

Reports tab

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 [72].

Parent topic: Task App [51]

Identity Management

These are operations to manage tenants, groups and users. This is useful for example to bootstrap environments with the correct identity data.

  • Tenants tab [73] Use the Tenants tab for creating new tenants, and modifying existing tenants.
  • Users tab [74] 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.
  • Capabilities tab [75] Use the Capabilities tab for managing the capabilities and groups of users that are available for this tenant.
  • Organization tab [76] Use the Organization tab to create functional groups that reflect the structure of your organization. You can also add and remove users to and from a group, and create subgroups within this kind of group.
  • Tenants [77] Following REST endpoints are only available for users that are either a tenant admin or a tenant manager.
  • Users [78] Following REST endpoints are only available for users that are either a tenant admin or a tenant manager.
  • Groups [79] The following REST endpoints are only available for users that are either a tenant admin or a tenant manager.
  • Alfresco Content Services repositories [80] A tenant administrator can configure one or more Alfresco Content Services repositories to use when working with content. To retrieve the repositories configured for the tenant of the user used to do the request:
Parent topic: Process Services Landing Page [33]
Parent topic: Historic processes and tasks [81]

Tenants tab

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 [82].

  • 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).

  • Custom email templates [83] Use Custom email templates to create your own set of templates for Alfresco Process Services. You can use a custom template when creating human tasks in your process. This is particularly useful if you want to send a customized email notification as part of your process.
Parent topic: Identity Management [52]

Custom email templates

Use Custom email templates to create your own set of templates for Alfresco Process Services. You can use a custom template when creating human tasks in your process. This is particularly useful if you want to send a customized email notification as part of your process.

You can include values from a range of predefined variables. These are listed in the following table:

Assignment Variable Name
Single User Task taskCreator, taskName, taskDirectUrl, homeUrl
Group Task groupName, taskName, taskDirectUrl, homeUrl
Candidate User Task taskName, taskDirectUrl, homeUrl

Prerequisites:

  • In IDM, create a user and assign the Administration of tenant of this group capability.

  • Make sure to create users with valid email addresses as that will be needed for sending email notifications.

To create a new custom email template:

  1. Go to the Identity Management app, click Tenants > Email templates. The email template page appears.
  2. From the Custom email templates tab, click Create new email template. The Create new email template dialog appears.
  3. The new template appears on the Custom email templates list.

You can edit and delete an existing custom template by selecting the edit (pencil) and delete (bin) icons in the Email Templates respectively. Once an email template is created, you can search it by entering a string for matching email templates.

Alternatively, you can also create a custom email template within the App Designer editor when adding or editing a human step in a process.

To create a custom email template via the App Designer Editor:

  1. Go to App Designer > Processes, and create a new process with a human task or edit a human task in an existing process. Make sure to create a form or reference an existing form with the step.
  2. In the Human step, check Allow email notifications and then select Custom template.
  3. Type a Subject, and Email content for your template, and then click Save. A new custom email is created.
Note: Ensure that you don’t give an existing name to your new template, otherwise an error Name already taken is displayed.

To use a custom email template in the process:

  1. Go to App Designer > Processes, and create a process with at least two human steps.
  2. In the Human step dialog > Details tab, check Allow email notifications.
  3. In Email, select Email template, and then the custom template that you created in the above section (Create a new custom email template section).

To complete a task using custom emails:

  1. Create a new app for the email process that you created above and then publish it.
  2. Access the newly deployed App from the main Alfresco Process Services page.
  3. Start a new process and access your tasks.
  4. Click Complete to complete the required tasks.

Your task is completed and custom emails are sent to the assigned user of the task.

Parent topic: Tenants tab [73]

Users tab

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.

Parent topic: Identity Management [52]

Capabilities tab

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.

Parent topic: Identity Management [52]

Organization tab

Use the Organization tab to create functional groups that reflect the structure of your organization. You can also add and remove users to and from a group, and create subgroups within this kind of group.

Note: When you remove a group, it will be deactivated, until all its tasks are complete. To remove the group completely, click the remove button a second time. When you remove a group, this will remove all its sub groups too.
Parent topic: Identity Management [52]

Analytics App

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.

images/32.png

When you visit the Analytics app for the first time, you'll see some useful hints on the welcome screen.

image

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.

  • Configuring standard reports [84]
  • Filtering reports [85] You can filter most reports by the following parameters:
  • Customizing reports [86] 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.
Parent topic: Process Services Landing Page [33]

Configuring standard 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 [87]).

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.

Parent topic: Analytics App [53]

Filtering reports

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.

Parent topic: Analytics App [53]

Customizing reports

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:

  1. Sign in to Alfresco Process Services as a user with Administrator privileges.
  2. Click Analytics App > Configure and then Task overview.
  3. Select from the following filter options:
    • 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.

  4. Click Export Data to generate the report in csv format.
  5. Optionally, to save the report with the selected filter options, click Save this report. You can also choose to save the report by a new name for easy identification. For example, if your report is specific to a task called Patients List, you could save the report as Task overview for Patients' list.
image

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.

Parent topic: Analytics App [53]

Step editor

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.

image

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.

image

Click the green disk at which you want your highlighted step to move, and the step is moved to that position in the flow:

image

In addition to the Process start step, there are five types of step you can add to your process.

  • Human step [88] 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.
  • Email step [89] 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.
  • Choice step [90] A choice step enables you to start one of two or more sequences of substeps for your process, based on conditions.
  • Sub process Step [91] 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.
  • REST call [92] 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.
  • Generate document [93] 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.
  • Decision step [94] The decision step enables you to create a Decision Table. A decision table is an easier expression to creating business rules.
  • Content-related steps [95] Use this section to link create content related steps.
Parent topic: Process Services Landing Page [33]

Human step

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:

Assigned to process initiator

The user that started the process instance, which could be you, or a user you have shared the process definition with. The process initiator is the default assignee.

Assigned to process initiator’s (primary) group manager

The group manager of the user that started the process instance.

Assigned to single user

When selected, an additional Assignee field is displayed enabling you to search for a single user or select someone using an email address. If that person is not currently an Alfresco Process Services user, they will receive an invite.

Assigned to group manager

When selected, an additional Group field is displayed enabling you to search for a group manager or select a form field (providing you have defined a form). Only users that have a primary group defined will have a group manager. You can define a primary group via Identity Management > Users > Select an action > Change primary group.

Candidate users

When selected, an additional Candidates field is displayed enabling you to add one or more candidates. You can add Alfresco Process Services users or select someone using an email address. If that person is not currently an Alfresco Process Services user, they will receive an invite. All of the selected candidates are eligible to complete the task. The task will show up in their Queued tasks task list. The task is not assigned until they have claimed it, which will make the user the assignee.

Candidate groups

When selected, an additional Groups field is displayed enabling you to add one or more groups of Alfresco Process Services users. The task will show up in their Queued tasks task list. The task is not assigned until they’ve claimed it. The other users won’t see that task in a task list anymore.

Allow process initiator to complete a task

When checked, the user that started the process instance (process initiator) can complete the task. This is checked by default. This option is available only for Candidate Groups, Candidate Users, and Assign to single user options.

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:

No due date for this task

This is the default value.

Fixed duration after creation

Specifies a Due date in years, months, days, hours, minutes and seconds after the task is started.

Based on field

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.

Based on variable

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:

No action

This is the default value.

Reassign task

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.

Keep task

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.

End task

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.

End the process

When the timer completes, all active tasks in the process are canceled and the process ends.

Parent topic: Step editor [54]

Email step

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:

Process initiator recipient

The user who starts the process is the sole recipient of the email. This is the default.

Single user recipient

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.

Multiple user recipients

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.

Parent topic: Step editor [54]

Choice step

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:

No condition

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.

Form field

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.

Form outcome

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.

  • End process Step [96] 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.
  • Goto step [97] 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.
Parent topic: Step editor [54]

End process Step

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.

Parent topic: Choice step [90]

Goto step

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.

  1. In the Goto step dialog > Details tab, type a Name and Description in order to help you and others to identify the tasks in your task list.
  2. Select a Goto step in this process definition to follow next.

    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:

  3. You can implement repetition, as illustrated.
  4. You can also move the flow of tasks to another step in the current process.
Parent topic: Choice step [90]

Sub process Step

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.

Parent topic: Step editor [54]

REST call

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.

Note: A user with administration privileges will need to add endpoints for standard REST calls, with Username and Password pairs that are permitted for basic authentication. An administrator can add these endpoints and authentications on the Tenant page of the Identity Management [98] app. The benefit of using standard endpoints is that they can be easily switched for test and deployment configurations. It is also possible to use a REST step to call the Alfresco Process Services REST API.

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.

HTTP Method

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.

Base endpoint

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/ [99], has been chosen.

Rest URL

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 [100]. This can be useful during development and prototyping cycles.

In all cases, you can use the Test button to test your endpoint.

Form Field/Variables

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.

Parent topic: Step editor [54]

Generate document

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.

Note: A user with administration privileges can upload global templates. An administrator can add templates on the Tenant page of the Identity Management [98] app.

The Generate Document step dialog contains the following tabs to define the task:

Details tab
  • 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.

Template tab

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.

Variable tab

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:

image

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:

  1. Create a process with the option started by user filling in a form.
  2. Create a form called starter with four fields: a text field with the ID name, a set of radio buttons with the ID department, and two number fields with the IDs annualsalary and annualbonus.
  3. Once you have filled the form, the Generate Document step will take the offer.docx template (mentioned above) and generate a document with a name defined by value of the Variable tab, offer-letter.docx.
  4. Create an app to include the process definition that you just defined, and then publish the app.
  5. Click Start Process. The Generate Document step is executed and the offer-letter.docx document is generated.

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.

Parent topic: Step editor [54]

Decision step

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 [101] section for more details on Decision Tables.

Parent topic: Step editor [54]

Content-related steps

Use this section to link create content related steps.

  • Retrieve Alfresco Properties [102]
  • Update Alfresco Properties [103]
  • Call Alfresco Action [104]
  • Publish to Alfresco [105]
  • Publish to Box [106]
  • Publish to Google Drive [107]
  • Retrieve Alfresco Properties [108] 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.
  • Update Alfresco Properties [109] 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.
  • Call Alfresco Action [110] The Call Alfresco Action enables you to invoke the standard Alfresco Content Services actions from Alfresco Process Services.
  • Publish to Alfresco [111] This step enables you to write a document or all documents uploaded in your process to an Alfresco Content Services on-premise repository.
  • Publish to Box [112]
  • Publish to Google Drive [113]
Parent topic: Step editor [54]

Retrieve Alfresco Properties

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.

Parent topic: Content-related steps [95]

Update Alfresco Properties

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.

Parent topic: Content-related steps [95]

Call Alfresco Action

The Call Alfresco Action enables you to invoke the standard Alfresco Content Services actions from Alfresco Process Services.

Property Description

Details tab

Name

The name of the content-specific step.

Description

A description of this step.

Target tab

Content

Retrieves Alfresco properties for content stored in the form editor or variable based on your selection.

Act as

Identity of the caller: Process initiator or Specific User. Selecting Specific User lets you select a different user.

Repository

Changes the repository account. For example: Alfresco Content Services.

Action tab

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:

extract-metadata

Extracts embedded metadata from files and added to the file properties. Alfresco Content Services supports Microsoft Office document properties, LibreOffice, and a number of other formats.

move

Moves the files and subfolders to the locations of your choices in Share if you edit the following value with the exact location of your document in Share: workspace://SpacesStore/<ID>

add aspect

Adds a property aspect to files for additional behaviors or properties.

specialise-type

Changes a file’s content type, if applicable. For example, you can changes a standard file into a policy document and adds the appropriate metadata for that content type.

script

Runs a custom JavaScript script from the Data Dictionary/Scripts folder. There are a number of sample scripts available. The list can vary depending on how Alfresco Content Services is configured.

check-in

Checks in files that are currently checked out. For example, files will be checked in before being moved to another folder. Select the option to indicate whether they will be checked in as minor or major versions.

transform and copy content

Action for transforming and copying content. You can add copies of files, in the format of your choice, to another location. For example, you can generate a copy of a Word document in PDF format in a different folder.

remove-features

Removes a property aspect from files to remove functionality or properties.

check-out

Checks out files automatically with a working copy created in the location of your choice. Select the option to associate a name or type with the file.

copy

Creates copies of files in the location of your choice. Set the additional deep-copy and overwrite-copy options to true if you want to copy or overwrite sub-folders and their contents.

transform-image

Action for transforming and copying image files in the format of your choice to another location. For example, you can generate a copy of GIF file in PNG format in a different folder.

Action Parameters

View or update parameters of the action selected in the previous field.

Parent topic: Content-related steps [95]

Publish to Alfresco

This step enables you to write a document or all documents uploaded in your process to an Alfresco Content Services on-premise repository.

Note:

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 [98] 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.

Publish all content loaded in process

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

Publish content uploaded in field

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.

Destination

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.

Subfolder

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.

Parent topic: Content-related steps [95]

Publish to Box

This is similar to the Publish to Alfresco step, but for Box. (https://www.box.com/ [114]).

Note that a Box account needs to be configured in the Identity Management > Personal tab.

Parent topic: Content-related steps [95]

Publish to Google Drive

This is similar to the Publish to Alfresco task step, but for Google Drive. (https://www.google.com/drive/ [115]).

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.

Parent topic: Content-related steps [95]

BPMN editor

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.

image

The BPMN editor is structured into several areas:

Palette

On the left side of BPMN editor is the palette, which consists of collapse-able groups of BPMN objects.

Canvas

On the right side of BPMN editor is the canvas, where the BPMN objects can be added to create a process model.

Properties sheet

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.

Toolbar

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.

  • Start events [116] A start event indicates where a process starts. You can define a start event in one of the following ways:
  • Activities [117] 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.
  • Structural components [118] 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.
  • Gateways [119] You use gateways to control the flow of execution in your process.
  • Boundary events [120] You use boundary events to handle an event associated with an activity. A boundary event is always attached to an activity.
  • Intermediate catching events [121] 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).
  • Intermediate throwing events [122] An intermediate throw event is used to explicitly throw an event of a certain type.
  • End events [123] 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.
  • Swimlanes [124] 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.
  • Artifacts [125] 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.
  • Alfresco Content Services actions [126] Use this section for actions specific to Alfresco Content Services content store:
Parent topic: Process Services Landing Page [33]

Start events

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.

  • None start event [127] 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.
  • Start timer event [128] 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.
  • Start signal event [129] 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.
  • Start message event [130] A message start event starts a process instance using a named message. It is mainly used for starting process instances from external systems.
  • Start error event [131] An error start event triggers an event Sub-Process. An error start event can’t be used for starting a process instance.
Parent topic: BPMN editor [55]

None start event

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.

image

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.

Note:

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.

Parent topic: Start events [116]

Start timer event

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.

image

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.

Note:

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 [132] format, for example: R3/PT10H.

Time Date in ISO-8601

A point in time defined as a http://en.wikipedia.org/wiki/ISO_8601 [132] date, for example: 2015-04-12T20:20:32Z.

Time Duration

A period of time defined as a http://en.wikipedia.org/wiki/ISO_8601 [132] duration, for example: PT5M.

Parent topic: Start events [116]

Start signal event

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.

image

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.

Parent topic: Start events [116]

Start message event

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.

image

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.

Parent topic: Start events [116]

Start error event

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.

image

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.

Parent topic: Start events [116]

Activities

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.

  • User task [133] 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.
  • Service task [134] Use a service task to invoke an external Java class or execute an expression (for example to call a Spring bean).
  • Script task [135] 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.
  • Business rule task [136] A Business rule task executes one or more rules.
  • Receive task [137] 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.
  • Manual task [138] 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.
  • Mail task [139] 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.
  • Camel task [140] You use the Camel task to send messages to, and receive messages from Apache Camel.
  • Mule task [141] Use the Mule task to send messages to the Mule ESB (Enterprise Service Bus).
  • Rest call task [142] 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.
  • Generate document task [143] The Generate document task generates a document in Word or PDF format and stores the reference to the document as a process variable. The document is based on a (Word) template that describes how the document needs to be rendered, using process variables and various constructs (such as if-clauses and loops).
  • Decision task [144] 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.
  • Store Entity task [145] 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.
Parent topic: BPMN editor [55]

User task

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.

image

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:

Assigned to process initiator

The user that started the process instance will be the assignee of this task.

Assigned to process initiator’s (primary) group manager

The group manager of the user that started the process instance will be the assignee of this task.

Assigned to single user

A single user who will be the assignee of the task. This user will see the task in their Involved tasks task list. It is possible to reference a user that was selected in a previous form field (tab Form field).

Assigned to group manager

The group manager of the user will be the assignee of the task. Only users that have a primary group defined will have a group manager. To define a primary group, go to Identity Management > Users > Select an action > Change primary group.

Candidate users

One or more users as the candidate(s) of the group. The task will show up in their Queued tasks task list. The task is not yet assigned to them. They first have to claim the task, which will make that one user the assignee. The other users won’t see that task in a task list anymore. It is possible to reference users that were selected in a previous form field (tab Form field).

Candidate groups

One or more groups whose members will be the candidate of the group. The task will show up in their Queued tasks task list. The task is not yet assigned to them. They first have to claim the task, which will make that one user the assignee. The other users won’t see that task in a task list anymore. It is possible to reference groups that were selected in a previous form field (tab Form field).

Allow process initiator to complete task

When checked, the user that started the process instance (process initiator) can complete the task. This is checked by default.

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:

No due date

This is the default value.

Expression definition (Advanced)

Uses an Alfresco Process Services expression to resolve the due date (for example, this expression could call a Spring bean).

Fixed duration after task creation

Allows to configure an amount of time, starting from the creation of the task.

Based on field

Allows to configure the due date based on a previous field in the process instance, by adding or subtracting a certain amount of time.

Based on variable

Allows to configure the due date based on a variable previously declared in the process instance, by adding or subtracting a certain amount of time.

Allow email notifications

When enabled, an email will be sent to the assignee when the task is created.

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:

None

The task is performed once only.

Parallel

The task is performed multiple times, with each instance potentially occurring at the same time as the others.

Sequential

The task is performed multiple times, one instance following on from the previous one.

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.

Parent topic: Activities [117]

Service task

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.

image

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:

None

The task is performed once only.

Parallel

The task is performed multiple times, with each instance potentially occurring at the same time as the others.

Sequential

The task is performed multiple times, one instance following on from the previous one.

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.

Parent topic: Activities [117]

Script task

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.

image

Property Description

Script format

The JSR-223 [146] 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:

None

The task is performed once only.

Parallel

The task is performed multiple times, with each instance potentially occurring at the same time as the others.

Sequential

The task is performed multiple times, one instance following on from the previous one.

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.

Parent topic: Activities [117]

Business rule task

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 [101] with Alfresco Process Services

A business rule is depicted as a rounded rectangle with a table icon in the top-left corner.

image

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:

None

The task is performed once only.

Parallel

The task is performed multiple times, with each instance potentially occurring at the same time as the others.

Sequential

The task is performed multiple times, one instance following on from the previous one.

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.

Parent topic: Activities [117]

Receive task

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.

image

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:

None

The task is performed once only.

Parallel

The task is performed multiple times, with each instance potentially occurring at the same time as the others.

Sequential

The task is performed multiple times, one instance following on from the previous one.

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.

Parent topic: Activities [117]

Manual task

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.

image

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:

None

The task is performed once only.

Parallel

The task is performed multiple times, with each instance potentially occurring at the same time as the others.

Sequential

The task is performed multiple times, one instance following on from the previous one.

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.

Parent topic: Activities [117]

Mail task

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.

image

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:

None

The task is performed once only.

Parallel

The task is performed multiple times, with each instance potentially occurring at the same time as the others.

Sequential

The task is performed multiple times, one instance following on from the previous one.

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.

Parent topic: Activities [117]

Camel task

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.

image

You can find more information on Apache Camel here [147]. 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:

None

The task is performed once only.

Parallel

The task is performed multiple times, with each instance potentially occurring at the same time as the others.

Sequential

The task is performed multiple times, one instance following on from the previous one.

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.

Parent topic: Activities [117]

Mule task

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.

image

You can find more information on Mule ESB using https://www.mulesoft.com/resources/esb/what-mule-esb [148]. 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 [149].

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:

None

The task is performed once only.

Parallel

The task is performed multiple times, with each instance potentially occurring at the same time as the others.

Sequential

The task is performed multiple times, one instance following on from the previous one.

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.

Parent topic: Activities [117]

Rest call task

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.

image

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.

Parent topic: Activities [117]

Generate document task

The Generate document task generates a document in Word or PDF format and stores the reference to the document as a process variable. The document is based on a (Word) template that describes how the document needs to be rendered, using process variables and various constructs (such as if-clauses and loops).

See Document Templates [150] 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.
Parent topic: Activities [117]

Decision task

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.

image

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:

None

The task is performed once only.

Parallel

The task is performed multiple times, with each instance potentially occurring at the same time as the others.

Sequential

The task is performed multiple times, one instance following on from the previous one.

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.

Parent topic: Activities [117]

Store Entity task

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.

left
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 [151] section for more details.

Parent topic: Activities [117]

Structural components

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.

  • Sub-process [152] 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.
  • Collapsed sub-process [153] 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.
  • Event sub-process [154] 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.
  • Call activity [155] A call activity is used to execute another process definition as part of the current process instance.
Parent topic: BPMN editor [55]

Sub-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:

image

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 [156] 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:

None
The task is performed once only.
Parallel
The task is performed multiple times, with each instance potentially occurring at the same time as the others.
Sequential
The task is performed multiple times, one instance following on from the previous one.

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.

Parent topic: Structural components [118]

Collapsed sub-process

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.

image

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:

None

The task is performed once only.

Parallel

The task is performed multiple times, with each instance potentially occurring at the same time as the others.

Sequential

The task is performed multiple times, one instance following on from the previous one.

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.

Parent topic: Structural components [118]

Event sub-process

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.

image

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.

Parent topic: Structural components [118]

Call activity

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.

image

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:

None

The task is performed once only.

Parallel

The task is performed multiple times, with each instance potentially occurring at the same time as the others.

Sequential

The task is performed multiple times, one instance following on from the previous one.

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.

Parent topic: Structural components [118]

Gateways

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.

  • Exclusive gateway [157] 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.
  • Parallel gateway [158] 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.
  • Inclusive gateway [159] You use an inclusive to join and fork multiple sequence flows based on conditions.
  • Event based gateway [160] You use an event gateway to route process flow based on events.
Parent topic: BPMN editor [55]

Exclusive 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.

image

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.

Parent topic: Gateways [119]

Parallel gateway

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:

image

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.

Parent topic: Gateways [119]

Inclusive gateway

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:

image

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.

Parent topic: Gateways [119]

Event based gateway

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:

image

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.

Parent topic: Gateways [119]

Boundary events

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).

  • Boundary timer event [161] 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.
  • Boundary error event [162] 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.
  • Boundary signal event [163] 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.
  • Boundary message event [164] A boundary message event listens to a message being received while the activity upon which the event is defined is active.
  • Boundary cancel and compensation event [165]
Parent topic: BPMN editor [55]

Boundary timer event

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:

image

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 [132] format, for example: R3/PT10H.

Time Date in ISO-8601

A point in time defined as a http://en.wikipedia.org/wiki/ISO_8601 [132] date, for example: 2015-04-12T20:20:32Z.

Time Duration

A period of time defined as a http://en.wikipedia.org/wiki/ISO_8601 [132] duration, for example: PT5M.

Parent topic: Boundary events [120]

Boundary error event

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:

image

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.

Parent topic: Boundary events [120]

Boundary signal event

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:

image

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.

Parent topic: Boundary events [120]

Boundary message event

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:

image

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.

Parent topic: Boundary events [120]

Boundary cancel and compensation event

The boundary cancel and compensation event are currently experimental features. See http://activiti.org/userguide/index.html#bpmnBoundaryCancelEvent [166] for more information on them.

Parent topic: Boundary events [120]

Intermediate catching events

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:

image

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.

Parent topic: BPMN editor [55]

Intermediate throwing events

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.

Parent topic: BPMN editor [55]

End events

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.

  • None end event [167] A none end event ends the current path of execution.
  • Error end event [168] You use the end error event to throw an error and end the current path of execution.
  • Terminate end event [169] 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.
  • Cancel end event [170] 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.
Parent topic: BPMN editor [55]

None end event

A none end event ends the current path of execution.

image

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.

Parent topic: End events [123]

Error end event

You use the end error event to throw an error and end the current path of execution.

image

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.

Parent topic: End events [123]

Terminate end event

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.

image

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.

Parent topic: End events [123]

Cancel end event

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.

image

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.

Parent topic: End events [123]

Swimlanes

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.

image

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.

Parent topic: BPMN editor [55]

Artifacts

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

Parent topic: BPMN editor [55]

Alfresco Content Services actions

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

  • Publish to Alfresco task / Box / Google Drive [171] 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:
  • Retrieve Alfresco Properties [172] 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.
  • Update Alfresco Properties [173] 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.
  • Call Alfresco Action [174] The Call Alfresco action enables you to invoke the standard Alfresco Content Services actions from Alfresco Process Services.
Parent topic: BPMN editor [55]

Publish to Alfresco task / Box / Google Drive

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.

image

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).

Parent topic: Alfresco Content Services actions [126]

Retrieve Alfresco Properties

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.

Parent topic: Alfresco Content Services actions [126]

Update Alfresco Properties

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.

Parent topic: Alfresco Content Services actions [126]

Call Alfresco Action

The Call Alfresco action enables you to invoke the standard Alfresco Content Services actions from Alfresco Process Services.

Note: Alfresco Actions are asynchronous. This is important to note if you have multiple tasks executing against the same node(s) in Alfresco Content Services. To control a sequence of actions against a node, use a Service Task [175] instead.
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.
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:

extract-metadata

Extracts embedded metadata from files and added to the file properties. Alfresco Content Services supports Microsoft Office document properties, LibreOffice, and a number of other formats.

move

Moves the files and subfolders to the locations of your choices in Share if you edit the following value with the exact location of your document in Share: workspace://SpacesStore/<ID>

add aspect

Adds a property aspect to files for additional behaviors or properties.

specialise-type

Changes a file’s content type, if applicable. For example, you can changes a standard file into a policy document and adds the appropriate metadata for that content type.

script

Runs a custom JavaScript script from the Data Dictionary/Scripts folder. There are a number of sample scripts available. The list can vary depending on how Alfresco Content Services is configured.

check-in

Checks in files that are currently checked out. For example, files will be checked in before being moved to another folder. Select the option to indicate whether they will be checked in as minor or major versions.

transform and copy content

Action for transforming and copying content. You can add copies of files, in the format of your choice, to another location. For example, you can generate a copy of a Word document in PDF format in a different folder.

remove-features

Removes a property aspect from files to remove functionality or properties.

check-out

Checks out files automatically with a working copy created in the location of your choice. Select the option to associate a name or type with the file.

copy

Creates copies of files in the location of your choice. Set the additional deep-copy and overwrite-copy options to true if you want to copy or overwrite sub-folders and their contents.

transform-image

Action for transforming and copying image files in the format of your choice to another location. For example, you can generate a copy of GIF file in PNG format in a different folder.

Parent topic: Alfresco Content Services actions [126]

Form editor

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.

image

In the example above, the form editor is open on a form containing two controls, a text box, and a multiline text box.

  • Form Controls [176] The form controls for each field determine how the field is displayed and handled.
Parent topic: Process Services Landing Page [33]

Form Controls

The form controls for each field determine how the field is displayed and handled.
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 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.
Parent topic: Form editor [56]

Business rules - decision tables

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 [177].

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:

images/decision-process.png

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 [178] section for more information on how to create forms.

images/decision-process-start-form.png

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.

images/decision-table-editor.png

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:

images/decision-table-editor-rules.png

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 [179]. 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.

Note: By default it is NOT possible to type in any MVEL expression, but only a sub-set that is supported by the structured expression editor. If you want to be able to write more complex MVEL expressions, you may do so globally by your system administrator setting the validator.editor.dmn.expression property in activiti-app.properties to false. By disabling the default validation you will be able to run any MVEL expression, but you will not get the same help validating that your syntax is correct. Also, you will get a warning message in the structured editor when trying to open an expression it isn’t able to recognize.

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.

images/decision-table-input-expression.png

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.

images/decision-table-output-expression.png

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.

images/decision-table-expression-date.png

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.

images/decision-process-gateway-condition.png

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.

images/decision-process-start.png

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.

images/decision-process-details.png

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.

images/decision-process-table-audit.png

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.

images/decision-process-table-audit-input.png

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.

images/decision-process-table-audit-output.png

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.

Parent topic: Process Services Landing Page [33]

Data Models

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.

  • Connecting your data model to a relational database [180] 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.
  • Defining data models [181] Once defined, Data Models enable you to read, insert, update, and delete entities while working through your process.
  • Importing data models [182] Use these instructions to import a data model from a database schema.
  • Using data model in your processes [183] 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.
  • Saving data using your data model [184] 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.
  • Creating data models for folders [185] You can map entities to the Alfresco Content Services repository to create data models for Alfresco Content Services folders.
  • Importing content models [186] 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.
  • Using folder entities in process applications [187] When you've created a folder data model, you can use it in several ways.
Parent topic: Process Services Landing Page [33]

Connecting your data model to a relational database

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:

  1. In the Identity Management app, click Tenants > Data sources.
  2. Click + (plus icon) and configure the following settings (see the activiti-app.properties file for more details):
    • 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.

Parent topic: Data Models [58]

Defining data models

Once defined, Data Models enable you to read, insert, update, and delete entities while working through your process.

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.

To define a data model:
  1. From the App Designer, click Data Models. The Data Models page is displayed.
  2. Click Create Data Model. The Create a new data model dialog box appears. Or to import an existing data model, click Import Data Model.
  3. Select the data source that you defined in Identity Management.
  4. Click Add Entity and enter data in the following fields:
    • 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.

  5. Click Add Attribute and enter data in the following fields:
    • 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.

  6. Save the data model.
Note: The Remove entity and Remove attribute buttons can be used to remove entities and attributes respectively.
Parent topic: Data Models [58]

Importing data models

Use these instructions to import a data model from a database schema.
To define a data model:
  1. From the App Designer, click Data Models.

    The Data Models page is displayed.

  2. Click Create Data Model.

    The Create a new data model dialog box appears. Or to import an existing data model, click Import Data Model.

  3. Select the data source that you defined in Identity Management.
  4. Click Import.

    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 [188].

  5. You can now change the attributes, save the model, and use it as if it was created manually.
  6. If you attempt to re-import a database schema, you can either:
    • cancel the operation,
    • skip overwriting the existing entities and only import entities added since the last import, or
    • overwrite all entities.

      If you overwrite, any changes made to the entities and the attributes since your last import will be lost.

  7. You may also use Import attributes for individual entities which updates the attributes of the selected entity. This is useful if you have only made changes to a single table. In our example, the field region was added in the city table.

    To import attributes:
    1. Select the entity you want to update.
    2. Click Import attributes.
    3. You will prompted again to select how to handle the existing attributes.
      You can either:
      • cancel the operation,
      • skip overwriting the existing entities and only import entities added since the last import, or
      • overwrite all entities.

      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.

Parent topic: Data Models [58]

Using data model in your processes

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:

  1. From the App Designer, create a simple business process model with a BPMN task that includes a Start event, Store entity task, and an End task.
    images/datamodel_1.png
  2. From the BPMN editor, select the Start event and then click Referenced Form to select an existing form, or create a new form. The Form reference dialog box appears.
  3. Select the form that you want to customize and click Open.
  4. In the selected form, drag a text type field from the palette, rename it as Company name and then save it.
  5. From the BPMN editor, click Form field to data model mapping. A dialog box to change value for form field to data mapping appears.
  6. Map the fields for Company Name as shown below:
    images/datamodel_2.png
  7. From the BPMN editor, click the Store entity task and then Attribute mapping to edit the mappings. The Change value for Attribute mapping dialog box appears.
    images/Datamodel_3.png
  8. Select the Mapped data model and Mapped entity.
  9. Add a new variable or use an existing variable. In this case, select an existing one: ThisCompany – Customer.
  10. Map the attribute names with mapped value by selecting the required attribute in the Attribute table as shown below:
    images/Datamodel_4.png
  11. Configure the variable for the selected mapping, and then click Save.
  12. Publish your app and verify the data connection by making changes to the process data.
  • Mapping Complex Custom Control Values [189]Process Services provides capability to write data from a complex custom control to a data model, allowing the data in the custom control to be externalized.
Parent topic: Data Models [58]

Mapping Complex Custom Control Values

Process Services provides capability to write data from a complex custom control to a data model, allowing the data in the custom control to be externalized.

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'.

  1. From the BPMN editor, click the Store Entity task containing your attribute mappings.
  2. Click Attribute mapping to edit the mappings. The Change value for Attribute mapping dialog dialog box appears.

  3. Click on an entry in the Attribute table and then click the Form field tab.
  4. Select the custom control from the Form field dropdown list and assign a value path in the Field value path field.
  5. Click Save to save your changes.
  6. The values from the custom control will be made available in the specified value path at runtime.
Note: The developer must manage the protocol for storing data in a custom control (such as JSON in a text field) and the data extraction scheme (such as the developer implemented and documented syntax for extraction) for mapping custom control values.
Note: The developer is also responsible for taking the data storage protocol and mapping scheme available to them and writing values to the custom control. This also extends to making sure the field value path is specified correctly, as exception handling is not included.
Parent topic: Using data model in your processes [183]

Saving data using your data model

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:

  1. From the App Designer, edit the business process model you created above to access data.
  2. In the Visual Editor, drag the Store entity task activity type from the palette and place before the process End.
  3. Remove the link from the selected task and connect the Store task between it and the process End.
  4. Edit the Store entity task activity and click the attribute mapping field. Configure the following settings in the Attribute Mapping dialog box:
    • 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.

  5. Create a new app definition and associate your process with it.
  6. Deploy the app and test it by updating the data. For example:
    • 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.

images/Datamodels_5.png
Parent topic: Data Models [58]

Creating data models for folders

You can map entities to the Alfresco Content Services repository to create data models for Alfresco Content Services folders.

  • Configuring the data source [190] 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.
  • Defining folder entity data models [191] Once you've configured the data source you can define folder entity data models.
Parent topic: Data Models [58]

Configuring the data source

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.

  1. In the Identity Management app, click Tenants then Alfresco Repositories.
  2. Click + and set the followings:

    • Name - Name of the Alfresco Content Services repository, for example, local
    • Repository Base URL – This is the base URL for the repository, for example, http://localhost:8080/alfresco
    • Share Base URL – This is the base URL for the Alfresco Share installation, for example, http://localhost:8080/share
    • Alfresco version – The version of the Alfresco Content Services repository, usually version 4.2 or higher
  3. Click Save.
Parent topic: Creating data models for folders [185]

Defining folder entity data models

Once you've configured the data source you can define folder entity data models.

  1. Select the Alfresco Data Model type.

    This loads the repository source menu.

  2. Select Repository source then click Add entity to add an entity that maps to custom folder node in the repository.
  3. Give the entity a name, such as Custom Folder.
  4. Specify the node type, including any aspects that should be applied. In this example select TODO. This is an instruction to create the folder with a custom type.

    Tip: Use commas to separate type and aspects.
    Note: Use the F: prefix for the type as it's a custom type.
  5. Specify any custom aspects to apply and any out-of-the-box aspects if needed, for example cm:titled).

    Note: These are also referred to as secondary types in the CMIS standard.
  6. After you've entered the type and aspects definitions, specify all other relevant properties. There following properties are mandatory:

    • cmis:name (or cm:name) - used to specify the name of the new node
    • cmis:parentId - used to specify what parent node the new node should be created under
    When creating a new entity the Data Model designer automatically creates the required fields as well as the most commonly used attributes:
    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
    All folder entities require at least one attribute that maps to the cm:name property. It can also map to the cmis:name property, if you prefer to use CMIS property names.
  7. After the entity and the default attributes are generated, click Add Attribute to add entities to map the remaining folder properties.
  8. When you're done, click Save.
Parent topic: Creating data models for folders [185]

Importing content models

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.

See Model Manager [192] for more details.
  1. Export the model from Alfresco Content Services.
  2. Unzip the downloaded file.

    This creates a folder with two XML files.

    • the content model definition, with a file name similar to <content model name>.xml
    • the content modeler configuration file with a file name similar to CMM_<content model name>_module.xml. This is only required for re-importing a model into Alfresco Share so isn't relevant for the import operation.
  3. In the App Designer select Data Models and create a new (or edit an existing) folder data model.
  4. On the Entities list click Import.

    This prompts you to select the content model file.

  5. Go to the location of the unarchived file and select the content model file, for example, healthCareModel.xml. Ignore the CMM<mode name> _module xml file.

    Select a data model

  6. Click Open and the corresponding entry and attributes are created.

    Data model imported

    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.

Parent topic: Data Models [58]

Using folder entities in process applications

When you've created a folder data model, you can use it in several ways.

  • Create a folder entity in the Alfresco Content Services repository with the folder metadata
  • Update an existing folder entity in the Alfresco Content Services repository using the Store Entity Task
  • Retrieve and display the folder entity and its related metadata in a form
  • Creating folder entities [193] You can create an Alfresco Content Services folder entity in Alfresco Content Services repository with the folder metadata.
  • Configuring the folder entity parent [194] To create a folder entity you need to provide a parent for the entity parent folder. This can be configured in three different ways.
  • Updating folder entities [195] Updating a Alfresco Content Services folder entity is similar to creating one using Store Entity tasks, with different key mapped fields.
  • Retrieve and use a folder entity [196] 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.
Parent topic: Data Models [58]

Creating folder entities

You can create an Alfresco Content Services folder entity in Alfresco Content Services repository with the folder metadata.

  1. In the App Designer create a new or open an existing process in the BPMN Editor.
  2. Create a new BPMN process and add your logic to collect the folder entity data.

    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.

    Data model sample form

  3. From the Components List of the BPMN Editor, drag and drop a Store Entity Task.
  4. Select the Store Entity Task and make it a Create Folder.

    Data model store entity task

  5. Click on the Attribute Mapping property.
  6. From the Mapping Configuration screen select the relevant data model. In this example the Simple Folder Model is used.
  7. Click New variable to store the result of creating an folder entity. In this example MyF is used.

    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.

  8. For each folder data model attribute listed in Attribute name, select a form field to use for mapping the form fields to the attributes to be stored. You can also select process variables, but in this example the values from the form are used.
  9. Leave the Id attribute empty.

    This indicates to the task that a new folder should be created. Specifying the Id updates an existing folder.

  10. Enter a Name attribute to be used as the name of the new folder.
  11. Click Save.

    Data model attribute map

  12. Save the process then publish and deploy the application.
  13. Start a process and enter the details in the start form.

    Data model start process map

  14. Click Start Process.

    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.

    Folder in Alfresco Share

Parent topic: Using folder entities in process applications [187]

Configuring the folder entity parent

To create a folder entity you need to provide a parent for the entity parent folder. This can be configured in three different ways.

  1. As part of an end-user form
    1. Specify the folder entity parent as in Creating folder entities [197].
    2. In the Form Designer drag and drop the new Attach Folder field.

      Data model sample form

    3. Click the configure option Data model sample form for the new field to display the Field Configuration screen.
    4. Click Attach Folder options.

      Data model sample form

    5. Enter the Repository source.

      This is the Alfresco Content Services repository where folder entities will be stored.

    6. Click Select folder for the Start folder and select a parent folder.

      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.

  2. Default parent setting via a configuration process

    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.

    1. Create a form to use to configure the parent folder.
    2. Use variable mapping to map the Attach Folder field to a process variable, for example folderParent.

    Data model variable mapping

    You can now use the default folder parent value in various ways, including:

    • Storing it as a persisted configuration setting and using in other processes
    • Mapping it to a model attribute in the Store Entity task

    Data model map to model

    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.

  3. Programatically

    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.

Parent topic: Using folder entities in process applications [187]

Updating folder entities

Updating a Alfresco Content Services folder entity is similar to creating one using Store Entity tasks, with different key mapped fields.

  1. In the App Designer create a new or open an existing process in the BPMN Editor.
  2. Select Start and click on the reference form.
  3. Create a form similar to those created in Creating folder entities [197].

    Data model update form

  4. Click Save and Close to return to the BPMN Process Editor.
  5. From the Components List of the BPMN Editor, drag and drop a Store Entity Task.

    Data model update form flow

  6. Click on the Attribute Mapping property.
  7. From the Mapping Configuration screen select the relevant data model. In this example the Simple Folder Model is used.
  8. Select a previously created variable holding a folder entity or click New variable to store the result of updating the folder entity.
  9. For each folder data model attribute listed in Attribute name, select a form field to use for mapping the form fields to the attributes to be updated.

    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.

    Data model update folder

  10. Click Save.
  11. Save the process then publish and deploy the application.
  12. In the application start a new process.
  13. Select the parent folder of the folder entity and type in the name of the folder you want to update.
  14. Type in a new description and title and click Start Process.

    You can sign in to Alfresco Share open the folder to see the updated Title and Description.

Parent topic: Using folder entities in process applications [187]

Retrieve and use a folder entity

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.

  1. Using the form field to data model mapping

    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 [183].

  2. Using variables obtained from Stored Entity tasks

    When creating or updating folder entities, the entity can be stored in a variable.

    Note: MyF and GetMyFolder were the examples in Creating folder entities [197] and Updating folder entities [198].

    These variables can then be used in the process expressions and parameters, forms, or decision tables. To use a variable in a form:

    1. Extend the example you created in Updating folder entities [198] by adding a User Task action.
    2. Create a new form display folder.

      Data model retrieve folder

    3. From the form control toolbox drag and drop a Display Value field.
    4. Use the field configuration to select the variable.

      Note: The myGetFolder variable is an object with all the model attributes listed.
    5. Select a Name and Description.

      Data model retrieve variable

      Data model display folder

    6. Click Save.
    7. Save the process then publish and deploy the application.
    8. Create a new process and then create folder entities [197] and update folder entities [198].

      After updating the folder entity a new task is created which uses the Display Folder name to show the entity attributes.Data model new display folder

Parent topic: Using folder entities in process applications [187]

Creating your first process

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.

  1. From your landing page, click the App Designer app tile.
  2. Click the Create Process Button.

    The Create a new business process model dialog appears.

  3. Give your new process model a name.

    For example, First Process.

  4. In the Editor type drop-down, select the Step editor.
  5. Click Create new model.

    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.

  6. Click on the Process start step.

    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.

  7. Click on the Start form box.
  8. Click Create 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.

  9. Give the new form a name.

    For example, Start form.

  10. Click Create new 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.

  11. Drag and drop the required fields from the palette to the canvas on the right-hand side.
    From the screen shot you can see your form has four fields.
    1. A Text field for the project name.
    2. A Date field for the project’s start date.
    3. A group of three Radio buttons to select the project type.
    4. An Attach control to allow the user to store project documents.
  12. Click the Save icon to save your form.

    You are back in the Step editor.

  13. Clicking the + icon below the Process start box to add the first step in your process.

    You need to add a Human step that can be used to assign a task to a user.

  14. Select the Human step and fill in a name in the step box just created.

    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.

  15. You need to create a form to allow review comments before we create the next step in the process.
    1. On the Form tab for the Review project step, create a new form called decide.
    2. Add a Multiline text field and name it Review comment.
    3. Select the Outcomes tab and choose the Use custom outcomes for this form option, and add two outcomes: Accept and Reject.
    4. Save the form, and return to the step editor.
  16. Add a Choice step by clicking the + icon below the Review Project step.

    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.

  17. Click on the First choice box. A dialog allows you to select a condition based on existing form fields or outcomes. For this tutorial, set the First choice to a Form outcome. Choose the decide form from the drop-down list of those already added to the process, and then select it to be Equals, to the value Accept.
  18. Click on the Second choice box, and repeat the last step, this time choosing the value Reject.
  19. You need to add a task to be done if a project review is accepted.
    1. Under the First choice click the + icon.
    2. Add a Human step with the name Update project list.
  20. You need to add a task to be done if a project review is rejected.
    1. Under the Second choice click the + icon.
    2. Add a Human step with the name Inform project leader of rejection.
    3. Since the process should stop after rejection, add an End process step under the Inform project leader of rejection step.
  21. Add a final step after the accept/reject choice step to display the project details by clicking the + icon at the bottom of the step diagram.
    1. Add a Human step with the name Show Project Details.
    2. On the Form tab for this step, create a new form. Drag a Display text field to the canvas, and enter a text message to display.

      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.

    3. Save the form.

      The step editor is displayed.

  22. Save your completed process model.

    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.

Parent topic: Process Services Landing Page [33]

Creating your first app

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 [199] tutorial.

  1. Go to App Designer > Apps tab, and click Create App.

    The Create a new app definition dialog appears.

  2. Enter a name for your app and click Create a new app definition.

    Use the name My First App for this tutorial.

  3. Choose an icon and theme for your new app tile.
  4. Click Edit included models and select a process(s) of your choice. In this case, select the published model from the Creating your first process [199] tutorial.
  5. Click Save, and select the Publish check box in the Save app definition dialog to save and publish your app.

    Publishing an app makes it available to everyone you’ve shared it with.

  6. You can now add the app as a tile on your landing page.
    1. On the landing page, click on the last tile labeled with a + (plus) icon. The Add app to landing page dialog appears.
    2. Select My First App from the list of published apps and click Deploy.

      A new app tile is added to your landing page.

Your app is now deployed and ready to be used.

Parent topic: Process Services Landing Page [33]

Starting your first process

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 [199] tutorial, and the corresponding app created and deployed in the Creating your first app [200] tutorial.

  1. Go to the Task App > Processes tab, and click Start. button

    The form you created in the Creating your first process [199] 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.

  2. Now that you have started the process, you should complete the tasks you defined in it. Go to the Tasks tab.

    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.

  3. Click Show Details or Show Form.

    At this stage you can add people, documents, and comments to the task.

  4. Click Show Form to return to the form and then Accept.

    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.

  5. Click Complete to go to the next step.

    The task that shows the details of the accepted project is displayed.

  6. Click Complete.

    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.

Parent topic: Process Services Landing Page [33]

Creating a single task

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.

  1. On the Tasks tab of the Task app page click the CREATE TASK button

    The New task dialog appears.

  2. Give your new task a name, and optionally a description, and click Create.

    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.

  3. Click Due today.

    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.

  4. When you’ve brushed your teeth, click Complete in the task details area.

    The task is removed from the open task list.

  5. By default, your task list displays only open tasks. That is why you no longer see the task you just completed. For completed tasks click the COMPLETED TASKS filter in the right-most column of the Tasks tab.

You have created and completed your first single task and used some of the filtering capabilities of the Task app.

Parent topic: Process Services Landing Page [33]

Creating a process model

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:

  1. Click Create Process. The Create a new business process model dialog box appears.
  2. Type the Name and Description of your process model.
  3. Select the Editor type and Stencil.
  4. Click Create new model. The Step Editor page is displayed.

    By default, Step Editor includes a number of Steps, however this depends on the Stencil that you selected for editing the process model.

  5. Click Process start to expand and start by setting the process trigger to User filling a form.
    images/8.png
  6. Click Create form to create a new form or select an existing form from your Forms library. The Form Editor is displayed.
    images/7.png
    Note: Any form that’s created this way will not be available in your Forms library because it was created as part of this process model. To create a form that you can reuse in other process models, you must create it from the main Forms page. In this example, the form is defined in the Step Editor.

    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.

      images/pallete.png

      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.

      Note: The options that become available in the edit view are determined by the field type selected from the palette. For example, a checkbox field has General, Visibility, and Style tabs, whereas a radio button field type might have an additional tab called Options.

      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.

      images/10.png
  7. When you’ve finished designing the form, click Save. You’ll be returned to the Step Editor.
  8. Click the + (plus) icon at the bottom of the Process start box to add the first step in your process. The steps available to you are defined by the Stencil you associated the model with. The default stencil includes a Human step that can be used to assign a task to the user.
  9. Select the Human step and fill in a name within the step box that you just created.
images/11.png
images/12.png

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.

Note: When a task is assigned to a group or a list of candidate users, all of those users can see the task in their tasks list, however to complete the task they must claim it first.
  • Assigning tasks to a process [201] 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.
  • Creating a process app [202] Now that we have a process defined, let’s create a process app using the Apps page.
  • Using My Tasks and Process Apps [203] 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.
  • Using Involved Tasks [204] As well as allowing individual collaboration on a task, you can also involve groups. You can use this feature as an alternative to manually selecting multiple individuals when involving them with a task.
Parent topic: Process Services Landing Page [33]

Assigning tasks to a process

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.

  1. Click Forms > Create Form. The Create a new form dialog box appears.
  2. Enter a form name and click Save.
  3. Drag a multiline text field and drop it to the form. Name the label as Review comment.
  4. Click the Outcomes tab and then select Use custom outcomes for this form.
  5. In possible outcomes, add the following outcomes and then save the form:
    • Accept

    • Reject

      images/13.png

      The next step depends on the outcome selected in the previous step.

  6. Add a Choice step by clicking the + (plus) icon below the Review Project step.
    images/14.png

    You can also add additional choices by clicking the + (plus) icon in the center of the Choice step.

  7. Click the relevant choice box to set the condition for the selected choice. The Edit choice dialog appears where you can select the condition based on the existing form fields or outcomes.
  8. For the first choice, click Form Outcome and select the following values: Review form > Equal > Accept.
    images/15.png
  9. Click Save. Repeat the same for second choice: Review form > Equal > Reject.
    Note: Provide a meaningful name for the choice steps if you can.
  10. Add a task that should be done once the project review is accepted by clicking the + under the First choice box.
    images/16.png
  11. Now, add a simple human task called Update Project List. Under the Second choice box, add a human task with a name Inform Project Leader of Rejection. The aim is for the process to stop when the rejection task is completed. Therefore, add a Stop step to the bottom of this task.
    images/17.png
  12. Continue with adding steps to the First choice, or in this case continue to add them after completing the Choice step by clicking the + at the very bottom. We’ll just add a Human task with the name Show Project Details.
    images/18.png
  13. On the Forms tab for this task, create a new form. Drag a Display text field from the palette and enter the text message to display. The text can contain references to values added by a user in previous forms. There is a helper drop down that you can select from to insert the given reference at the cursor position in the text.
    images/19.png
  14. Add some text as shown. Then drag a Display value field from the palette and set it to display the project files by selecting the appropriate field from the list.
    images/20.png
  15. Save the form to return to the Step Editor. In addition, save the process model you’ve just designed.

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.

images/21.png

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.

Parent topic: Creating a process model [63]

Creating a process app

Now that we have a process defined, let’s create a process app using the Apps page.

  1. On the Apps page, click Create app definition.
  2. Select an icon and theme for the tile. You can have an app without any process definitions linked to it, which lets you create a simple custom task list.
  3. Click Edit included models to use the process we’ve just defined, and select from the lists to add a model.
    images/22.png
  4. Save the app and select the option to publish the app in the Save dialog to return the Apps list view.

    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.

  5. On your landing page, click the tile with the + (plus) icon. The Add app to landing page dialog appears.
  6. Choose the apps you want to add and click Deploy. A new tile will be added to your landing page.
Parent topic: Creating a process model [63]

Using My Tasks and Process Apps

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:

  1. Click on the new app tile that you just created and you will be taken to its Task page. This will only show the tasks created within this app or as part of the processes from the app.
  2. Click on the hint box next to James to create a task and fill in some text. You will now have a task in your task list.
    images/24.png
  3. Complete a task by clicking Complete. The task will no longer be available in your task list. Before you click Complete, you can do a variety of things with a task, such as give it a due date or assign it to someone else.
    images/25.png

    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.

    images/26.png
  4. Click Complete. If you wish to view that task again, you can click the Completed Tasks filter on the left pane. By default, you will see all tasks you are involved with, however you can customize your view to:
    • 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

      Note: Not all user accounts may have groups assigned.

      Now that the tasks have been created, let’s start the process we designed earlier.

  5. Click + Start in the header area. A list of available processes are displayed, which in our case will be only one. When you select it, the Start form we created above is displayed. You can also change the name by clicking the title on the right panel. By default the current date is added to the name of the process.
    images/27.png
  6. Fill in the form and click Start Process.

    You will be returned to the Processes page, showing the details of the newly started process in your process list.

    images/29.png

    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.

    images/30.png

    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.

    images/31.png

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.

Parent topic: Creating a process model [63]

Using Involved Tasks

As well as allowing individual collaboration on a task, you can also involve groups. You can use this feature as an alternative to manually selecting multiple individuals when involving them with a task.
Use these instructions to extend task involvement to include groups of users.
  1. Click Task App.

    The Tasks App screen is displayed and the involved Tasks option is highlighted.

  2. Create a new Involved Task.
    1. Enter the task name in the NAME field.
    2. Click CREATE.

    The new Involved Task is displayed.

  3. Click Invite groups of people and start collaborating.
  4. Specify the name of the group you want to collaborate with on the task.

    If the group exists, the matching group name is displayed on the screen.

  5. Select the matching group.

  6. Click Groups + to add more groups.

  7. Click Complete to complete the group involved task.
Parent topic: Creating a process model [63]

Deploying

There are several options for deploying Alfresco Process Services and its associated applications.
The applications available to deploy are:
  • Process Services
  • Process Services Administrator
  • Process Workspace
The two main methods available to deploy Alfresco Process Services are:
  • Using containerized deployment [205]
  • Installing manually [206]
  • Deploying Alfresco Process Services [207] There are several options for deploying Alfresco Process Services.
  • Installing Alfresco Process Services [206] There are several options for installing Alfresco Process Services manually depending on the environment you are deploying in.
Parent topic: Alfresco Process Services [23]

Deploying Alfresco Process Services

There are several options for deploying Alfresco Process Services.

To experiment with Process Services it is recommended to deploy with Docker for Desktop. [208]

For production environments, there is a reference Helm chart [209] available and Docker images in Quay.io [210]. See the containerization support policy [211] for information regarding the supportability of Docker images and Helm charts.

  • Deployment concepts [212]Alfresco Process Services deployment introduces a number of concepts.
  • Deploying with Docker [213]Process Services and Process Services Administrator can be deployed using separate Docker containers.
  • Deploying Process Services on Amazon EKS [209] Use the following information as a reference guide to deploy Process Services on Amazon's Elastic Container Service for Kubernetes (Amazon EKS).
Parent topic: Deploying [9]

Deployment concepts

Alfresco Process Services deployment introduces a number of concepts.

You can start Alfresco Process Services from a number of Docker images. These images are available in the Docker Hub [214] and Quay [215] repositories. However, starting individual Docker containers based on these images, and configuring them to work together might not be the most productive way to get up and running.

There are Helm charts available to deploy Alfresco Process Services in a Kubernetes cluster, for example, on Amazon Web Services (AWS). These charts are a deployment template which can be used as the basis for your specific deployment needs. The Helm charts are undergoing continual development and improvement and should not be used "as-is" for a production deployment, but should help you save time and effort deploying Alfresco Process Services for your organization.

The following is a list of concepts and technologies that you'll need to understand as part of deploying and using Alfresco Process Services. If you know all about Docker, then you can skip this part.

Virtual Machine Monitor (Hypervisor)

A Hypervisor is used to run other OS instances on your local host machine. Typically it's used to run a different OS on your machine, such as Windows on a Mac. When you run another OS on your host it is called a guest OS, and it runs in a Virtual Machine (VM).

Image

An image is a number of layers that can be used to instantiate a container. This could be, for example, Java and Apache Tomcat. You can find all kinds of Docker images on the public repository Docker Hub [216]. There are also private image repositories (for things like commercial enterprise images), such as the one Alfresco uses called Quay [215].

Container

An instance of an image is called a container. If you start this image, you have a running container of this image. You can have many running containers of the same image.

Docker

Docker is one of the most popular container platforms. Docker [217] provides functionality for deploying and running applications in containers based on images.

Dockerfile

A Dockerfile is a script containing a successive series of instructions, directions, and commands which are run to form a new Docker image. Each command translates to a new layer in the image, forming the end product. The Dockerfile replaces the process of doing everything manually and repeatedly. When a Dockerfile finishes building, the end result is a new image, which you can use to start a new Docker container.

Difference between containers and virtual machines

It's important to understand the difference between using containers and using VMs. Here's a picture from What is a Container | Docker [218]:

The main difference is that when you run a container, you are not starting a complete new OS instance. This makes containers much more lightweight and quicker to start. A container also takes up much less space on your hard-disk as it doesn't have to ship the whole OS.

Parent topic: Deploying Alfresco Process Services [207]

Deploying with Docker

Process Services and Process Services Administrator can be deployed using separate Docker containers.

The Docker images for Process Services are available on Docker Hub [219].

To download the images from Docker Hub, use the following commands:
docker pull alfresco/process-services:1.10.0
docker pull alfresco/process-services-admin:1.10.0
Note: If a tag isn't supplied then the latest version will be downloaded.
To run the containers locally using Docker for Desktop, use the following commands specifying a port for them to map to:
docker run -p {port}:8080 alfresco/process-services
docker run -p {port}:8080 alfresco/process-services-admin
For example, to run Process Services Administrator on port 8095 use the following:
docker run -p 8095:8080 alfresco/process-services-admin

Once the containers have started up, visit the following URLs to access the applications:
  • http://localhost:{port}/activiti-app
  • http://localhost:{port}/activiti-admin
For example http://localhost:8095/activiti-admin if running the Administrator application on port 8095.
Note: Docker for Desktop is not a production environment.

It is possible to override the default environment variables for Process Services [220] and Process Services Administrator [221].

  • Configuring environment variables for Alfresco Process Services [222] It is possible to override the default variables to configure the Docker container.
  • Configuring environment variables for Alfresco Process Services Administrator [223]
Parent topic: Deploying Alfresco Process Services [207]

Configuring environment variables for Alfresco Process Services

It is possible to override the default variables to configure the Docker container.

There are three options for specifying your own variables during a Docker deployment:

  • Mount your own activiti-app.properties and optionally an activiti-identity-service.properties file in /usr/local/tomcat/lib using Docker volumes
  • Specifying environment variables for each properties file that points to an accessible location such as an S3 bucket:
    • Use the EXTERNAL_ACTIVITI_APP_PROPERTIES_FILE environment variable for an activiti-app.properties file
    • Use the EXTERNAL_ACTIVITI_IDENTITY_SERVICE_PROPERTIES_FILE environment variable for an activiti-identity-service.properties file
      Note: If you choose this option, the files will be automatically downloaded into the contextual folder.
  • Configure the environment variables in the Docker container by overriding the default values.

For variables that correspond to the activiti-app.properties file:

Property Description Default value
ACTIVITI_DATASOURCE_DRIVER The JDBC driver used to connect to the database. org.h2.Driver
ACTIVITI_HIBERNATE_DIALECT The dialect that Hibernate uses that is specific to the database type. org.hibernate.dialect.H2Dialect
ACTIVITI_LICENSE_MULTI_TENANT Set whether the license used is a multi-tenant one or not. false
ACTIVITI_DATASOURCE_URL The location of the database that will be used. jdbc:h2:mem:db1;DB_CLOSE_DELAY=1000
ACTIVITI_DATASOURCE_USERNAME The username to access the database with. alfresco
ACTIVITI_DATASOURCE_PASSWORD The password for the ACTIVITI_DATASOURCE_USERNAME user. alfresco
ACTIVITI_ADMIN_EMAIL The email address for the default administrator user. admin@app.activiti.com
ACTIVITI_ADMIN_PASSWORD_HASH The hashed password for ACTIVITI_ADMIN_EMAIL user.
ACTIVITI_CORS_ENABLED Sets whether Cross Origin Resource Sharing (CORS) is enabled or not. true
ACTIVITI_CORS_ALLOWED_ORIGINS The host origins allowed in CORS requests. *
ACTIVITI_CORS_ALLOWED_METHODS The HTTP request methods allowed for CORS requests. GET,POST,HEAD,OPTIONS,PUT,DELETE
ACTIVITI_CORS_ALLOWED_HEADERS The headers that can be set in CORS requests. Authorization,Content-Type,Cache-Control,X-Requested-With,accept,Origin,Access-Control-Request-Method,Access-Control-Request-Headers,X-CSRF-Token
ACTIVITI_CSRF_DISABLED Sets whether Cross Site Request Forgery is disabled or not. true
ACTIVITI_ES_SERVER_TYPE

Set this to rest to enable the REST client implementation.

rest
ACTIVITI_ES_REST_CLIENT_ADDRESS The IP address of the Elasticsearch instance. localhost
ACTIVITI_ES_REST_CLIENT_PORT

The port to contact Elasticsearch through.

9200
ACTIVITI_ES_REST_CLIENT_SCHEMA

Sets whether the connection to Elasticsearch uses http or https.

http
ACTIVITI_ES_REST_CLIENT_AUTH_ENABLED

Sets whether authentication is enabled for the REST connection to Elasticsearch.

false
ACTIVITI_ES_REST_CLIENT_USERNAME

The username of the Elasticsearch user.

admin
ACTIVITI_ES_REST_CLIENT_PASSWORD

The password for the Elasticsearch user.

esadmin
ACTIVITI_ES_REST_CLIENT_KEYSTORE

The keystore used to encrypt the connection to the Elasticsearch instance.

ACTIVITI_ES_REST_CLIENT_KEYSTORE_TYPE

The type of keystore used for encrypting the Elasticsearch connection data.

jks
ACTIVITI_ES_REST_CLIENT_KEYSTORE_PASSWORD

The password for the keystore used encrypting the Elasticsearch connection data.

For variables that correspond to the activiti-identity-service.properties file:

Property Description Default value
IDENTITY_SERVICE_ENABLED Sets whether the Identity Service is enabled or not. false
IDENTITY_SERVICE_REALM The name of the realm used by the Identity Service. alfresco
IDENTITY_SERVICE_SSL_REQUIRED Sets whether communication to and from the Identity Service is over HTTPS or not. none
IDENTITY_SERVICE_RESOURCE The Client ID for Process Services within the Identity Service realm. alfresco
IDENTITY_SERVICE_PRINCIPAL_ATTRIBUTE The attribute used to populate UserPrincipal with. This needs to be set to email for Process Services to authenticate with the Identity Service. email
IDENTITY_SERVICE_ALWAYS_REFRESH_TOKEN Sets whether the token is refresh for every request to the Identity Service or not. true
IDENTITY_SERVICE_AUTODETECT_BEARER_ONLY Allows for unauthorized access requests to be redirected to the Identity Service sign in page. true
IDENTITY_SERVICE_TOKEN_STORE The location of where the account information token is stored. session
IDENTITY_SERVICE_ENABLE_BASIC_AUTH Sets whether basic authentication is allowed is supported by the adapter. true
IDENTITY_SERVICE_PUBLIC_CLIENT Sets whether the adapter sends credentials for the client to the Identity Service. It will not send the credentials if this is set to true. true
IDENTITY_SERVICE_AUTH Sets the authentication URL for the Identity Service. The localhost value and port number need to be replaced with the DNS or address used for the deployment. http://localhost:8080/auth
IDENTITY_CREDENTIALS_SECRET The secret key for the client if the access type is not public.
IDENTITY_SERVICE_USE_BROWSER_BASED_LOGOUT Sets whether signing out of Process Services calls the Identity Service logout URL.

If set to true, set the Admin URL to https://{server}:{port}/activiti-app/ under the client settings in the Identity Service management console.

true
Parent topic: Deploying with Docker [213]

Configuring environment variables for Alfresco Process Services Administrator

It is possible to override the default variables to configure the Docker container.

There are three options for specifying your own variables during a Docker deployment:

  • Mount your own activiti-admin.properties file in /usr/local/tomcat/lib using Docker volumes
  • Use the environment variable ACTIVITI_ADMIN_EXTERNAL_PROPERTIES_FILE to point to an accessible location such as an S3 bucket:
    environment:
      ACTIVITI_ADMIN_EXTERNAL_PROPERTIES_FILE: https://your-s3-bucket.com/activiti-admin.properties
  • Configure the environment variables in the Docker container by overriding the default values:
Property Description Default value
ACTIVITI_ADMIN_DATASOURCE_DRIVER The JDBC driver used to connect to the database for Process Services Administrator. org.h2.Driver
ACTIVITI_ADMIN_HIBERNATE_DIALECT The dialect that Hibernate uses that is specific to the database type for the Process Services Administrator. org.hibernate.dialect.H2Dialect
ACTIVITI_ADMIN_REST_APP_HOST The location of the Administrator API. This should be set to the DNS name of the deployment. localhost
ACTIVITI_ADMIN_REST_APP_PORT The port for the Administrator API. 80
ACTIVITI_ADMIN_REST_APP_USERNAME The default user for the Admin API. admin@app.activiti.com
ACTIVITI_ADMIN_REST_APP_PASSWORD The default password for the Admin API admin
Parent topic: Deploying with Docker [213]

Deploying Process Services on Amazon EKS

Use the following information as a reference guide to deploy Process Services on Amazon's Elastic Container Service for Kubernetes (Amazon EKS).
Important: Deployment on AWS such as with Amazon EKS (Elastic Kubernetes Service), is only recommended for customers with a good knowledge of Process Services, and strong competencies in AWS and containerized deployment.
There are several prerequisites for deploying on Amazon EKS using Helm charts:
  • An Amazon EKS environment. See Amazon's EKS getting started Guide [224] as a reference point.
  • A namespace configured for Process Services.
  • Helm and Tiller configured. See Helm's quickstart guide [225] for reference.
Use the following steps to deploy Process Services, Process Services Administrator, Process Workspace, a Postgres database and optionally the Identity Service [226]:
  1. Create a Kubernetes secret to access images in Quay.
    1. Sign into Quay.io with your credentials using the following command:

      docker login quay.io
    2. Generate a base64 value for your dockercfg using one of the following commands:

      # Linux
      cat ~/.docker/config.json | base64
      # Windows
      base64 -w 0 ~/.docker/config.json
    3. Create a file called secrets.yaml and add the following content to it, using your base64 string from the previous step as the .dockerconfigjson value:

      apiVersion: v1
      kind: Secret
      metadata:
        name: quay-registry-secret
      type: kubernetes.io/dockerconfigjson
      data:
        .dockerconfigjson: <your-base64-string> 
    4. Upload your secrets.yaml file to the namespace you are deploying into using the following command:

      kubectl create -f <file-location>/secrets.yaml --namespace=$NAMESPACE
  2. Create a Kubernetes secret for the Process Services license file with the following command:

    kubectl create secret generic licenseaps --from-file=./activiti.lic
    --namespace=$NAMESPACE
  3. Add the Alfresco Kubernetes repository to Helm with the following command:

    helm repo add alfresco-stable https://kubernetes-charts.alfresco.com/stable
  4. Update the properties [227] for the Process Services chart.
  5. (Optional): To enable the Identity Service:
    1. Enable the Identity Service in the alfresco-infrastructure section of the values.yaml:

      alfresco-identity-service:
      enabled: true
    2. Set the Process Services environment variable IDENTITY_SERVICE_ENABLED to true.
    3. Set the Process Services environment variable IDENTITY_SERVICE_AUTH to http://$DNS/auth.
    4. Ensure the Identity Service settings for Process Workspace are set in the properties [227].
  6. Deploy the chart using a command similar to the following:

    helm install alfresco-stable/alfresco-process-services --set dnsaddress="http://$DNS" \
    --namespace=$NAMESPACE --set license.secretName=licenseaps
The applications will be available at the following URLs:
  • Process Services: http://$DNS/activiti-app
  • Process Services Administrator: http://$DNS/activiti-admin
  • Process Workspace: http://$DNS/
  • Identity Service administrator console: http://$DNS/auth/admin
Note: To change the context paths of any of the applications, edit the ingress paths:
ingress:
    path: /activiti-app
  • Helm properties for Process Services [227] The following information details the properties that can be set for Process Services when deploying via Helm on Amazon's Elastic Container Service for Kubernetes (Amazon EKS).
Parent topic: Deploying Alfresco Process Services [207]

Helm properties for Process Services

The following information details the properties that can be set for Process Services when deploying via Helm on Amazon's Elastic Container Service for Kubernetes (Amazon EKS).

The following properties can be configured in the values.yaml file or overridden as environment variables:

Property Description Default value
ACTIVITI_DATASOURCE_DRIVER The JDBC driver used to connect to the database. org.postgresql.Driver
ACTIVITI_HIBERNATE_DIALECT The dialect that Hibernate uses that is specific to the database type. org.hibernate.dialect.PostgreSQLDialect
ACTIVITI_LICENSE_MULTI_TENANT Set whether the license used is a multi-tenant one or not. false
ACTIVITI_DATASOURCE_URL The location of the database that will be used.
ACTIVITI_DATASOURCE_USERNAME The username to access the database with. alfresco
ACTIVITI_DATASOURCE_PASSWORD The password for the ACTIVITI_DATASOURCE_USERNAME user. alfresco
ACTIVITI_CORS_ENABLED Sets whether Cross Origin Resource Sharing (CORS) is enabled or not. true
ACTIVITI_CORS_ALLOWED_ORIGINS The host origins allowed in CORS requests. *
ACTIVITI_CORS_ALLOWED_METHODS The HTTP request methods allowed for CORS requests. GET,POST,HEAD,OPTIONS,PUT,DELETE
ACTIVITI_CORS_ALLOWED_HEADERS The headers that can be set in CORS requests. Authorization,Content-Type,Cache-Control,X-Requested-With,accept,Origin,Access-Control-Request-Method,Access-Control-Request-Headers,X-CSRF-Token
ACTIVITI_CSRF_DISABLED Sets whether Cross Site Request Forgery is disabled or not. true
ACTIVITI_ES_SERVER_TYPE

Set this to rest to enable the REST client implementation.

rest
ACTIVITI_ES_REST_CLIENT_ADDRES The IP address of the REST client. localhost
ACTIVITI_ES_REST_CLIENT_PORT

The port to contact Elasticsearch through.

9200
ACTIVITI_ES_REST_CLIENT_SCHEMA

Sets whether the connection to Elasticsearch uses http or https.

http
ACTIVITI_ES_REST_CLIENT_AUTH_ENABLED

Sets whether authentication is enabled for the REST connection to Elasticsearch.

false
ACTIVITI_ES_REST_CLIENT_USERNAME

The username of the Elasticsearch user.

admin
ACTIVITI_ES_REST_CLIENT_PASSWORD

The password for the Elasticsearch user.

esadmin
ACTIVITI_ES_REST_CLIENT_KEYSTORE

The keystore used to encrypt the connection to the Elasticsearch instance.

ACTIVITI_ES_REST_CLIENT_KEYSTORE_TYPE

The type of keystore used for encrypting the Elasticsearch connection data.

jks
ACTIVITI_ES_REST_CLIENT_KEYSTORE_PASSWORD

The password for the keystore used encrypting the Elasticsearch connection data.

ACTIVITI_ADMIN_DATASOURCE_DRIVER The JDBC driver used to connect to the database for Process Services Administrator. org.postgresql.Driver
ACTIVITI_ADMIN_HIBERNATE_DIALECT The dialect that Hibernate uses that is specific to the database type for the Process Services Administrator. org.hibernate.dialect.PostgreSQLDialect
ACTIVITI_ADMIN_EMAIL The email address for the default administrator user. admin@app.activiti.com
ACTIVITI_ADMIN_PASSWORD_HASH The hashed password for ACTIVITI_ADMIN_EMAIL user.
ACTIVITI_ADMIN_REST_APP_HOST The location of the Administrator API. This should be set to the DNS name of the deployment. localhost
ACTIVITI_ADMIN_REST_APP_PORT The port for the Administrator API. 80
ACTIVITI_ADMIN_REST_APP_USERNAME The default user for the Admin API. admin@app.activiti.com
ACTIVITI_ADMIN_REST_APP_PASSWORD The default password for the Admin API admin
BASE_PATH The base path of Process Workspace. This needs to match the setting of the ingress path if it is changed. /
APP_CONFIG_AUTH_TYPE The authentication method for Process Workspace. OAUTH
APP_CONFIG_BPM_HOST The location of Process Services. http://DNS
APP_CONFIG_OAUTH2_HOST The URL used to authenticate Process Workspace with against the Identity Service. http://DNS/auth/realms/alfresco
APP_CONFIG_OAUTH2_CLIENTID The client configured in the Identity Service for Process Workspace. activiti
APP_CONFIG_OAUTH2_REDIRECT_LOGIN The redirect for sign in that Process Workspace will use when configured with Identity Service. This will normally match BASE_PATH. /
APP_CONFIG_OAUTH2_REDIRECT_LOGOUT The redirect for sign out that Process Workspace will use when configured with Identity Service. This will normally match BASE_PATH. /
APP_CONFIG_OAUTH2_REDIRECT_SILENT_IFRAME_URI The silent redirect used by Process Workspace if a user is already authenticated. http://DNS/process-workspace/assets/silent-refresh.html
IDENTITY_SERVICE_ENABLED Sets whether the Identity Service is enabled or not. false
IDENTITY_SERVICE_REALM The name of the realm used by the Identity Service. alfresco
IDENTITY_SERVICE_SSL_REQUIRED Sets whether communication to and from the Identity Service is over HTTPS or not. none
IDENTITY_SERVICE_RESOURCE The Client ID for Process Services within the Identity Service realm. alfresco
IDENTITY_SERVICE_PRINCIPAL_ATTRIBUTE The attribute used to populate UserPrincipal with. This needs to be set to email for Process Services to authenticate with the Identity Service. email
IDENTITY_SERVICE_ALWAYS_REFRESH_TOKEN Sets whether the token is refresh for every request to the Identity Service or not. true
IDENTITY_SERVICE_AUTODETECT_BEARER_ONLY Allows for unauthorized access requests to be redirected to the Identity Service sign in page. true
IDENTITY_SERVICE_TOKEN_STORE The location of where the account information token is stored. session
IDENTITY_SERVICE_ENABLE_BASIC_AUTH Sets whether basic authentication is allowed is supported by the adapter. true
IDENTITY_SERVICE_PUBLIC_CLIENT Sets whether the adapter sends credentials for the client to the Identity Service. It will not send the credentials if this is set to true. true
IDENTITY_CREDENTIALS_SECRET The secret key for the client if the access type is not public.
IDENTITY_SERVICE_AUTH Sets the authentication URL for the Identity Service. The localhost value and port number need to be replaced with the DNS or address used for the deployment. http://localhost:8080/auth
IDENTITY_SERVICE_USE_BROWSER_BASED_LOGOUT Sets whether signing out of Process Services calls the Identity Service logout URL.

If set to true, set the Admin URL to https://{server}:{port}/activiti-app/ under the client settings in the Identity Service management console.

true
Parent topic: Deploying Process Services on Amazon EKS [209]

Installing Alfresco Process Services

There are several options for installing Alfresco Process Services manually depending on the environment you are deploying in.

To experiment with Process Services it is recommended to install using a setup wizard [228]

For production environments it is recommended that you install manually [229].

  • Installing manually [230] To install Process Services and the administrator application manually, download the relevant Web Application Archive (WAR) files.
  • Installing using setup wizards [231] There are setup wizards available for Linux, macOS and Windows operating systems.
  • Licensing Alfresco Process Services [232] A valid license file is required to run Process Services.
Parent topic: Deploying [9]

Installing manually

To install Process Services and the administrator application manually, download the relevant Web Application Archive (WAR) files.

It is recommended that you install the administrator application in a separate container to Process Services in a production environment. It is possible to install the two applications in the same web container, however separate containers allows them to be managed in isolation from one another.

The download files are available from the support portal [24].

  • Installing Alfresco Process Services manually [233] Use these instructions to install the Process Services application using the WAR file.
  • Installing the Alfresco Process Services Administrator manually [234] Use these instructions to install Process Services Administrator using the WAR file.
  • Installing Alfresco Process Services Workspace [34] You can install Process Workspace using a Web Application Archive (WAR) file or by deploying the files manually into your web container.
Parent topic: Installing Alfresco Process Services [206]

Installing Alfresco Process Services manually

Use these instructions to install the Process Services application using the WAR file.
Ensure you have read the supported platforms [6] to confirm that your web container and database combination is supported before commencing with installation.
  1. Install your web container and database.

    Note: The following steps use Tomcat and MySQL for examples.
  2. Create a schema for the activiti-app application. The default name is activiti

    In MySQL:

    CREATE DATABASE activiti
                            DEFAULT CHARACTER SET utf8
                            DEFAULT COLLATE utf8_general_ci;
  3. Create a user and password. This example will use alfresco/alfresco

    In MySQL:

    CREATE USER 'alfresco'@'localhost' IDENTIFIED BY 'alfresco';
  4. Grant full privileges on the schema to this new user.

    In MySQL:

    GRANT ALL ON activiti.* TO 'alfresco'@'localhost';
  5. Edit the activiti-app.properties file supplied with the WAR file.
    1. Uncomment the correct properties for the database you have installed.
    2. Update the values for the schema and credentials created in the previous steps and check that the hibernate.dialect property matches your chosen database type.

      For example:

      datasource.driver=com.mysql.jdbc.Driver
                                      datasource.url=jdbc:mysql://127.0.0.1:3306/activiti?characterEncoding=UTF-8
                                      datasource.username=alfresco
                                      datasource.password=alfresco
                                      hibernate.dialect=org.hibernate.dialect.MySQLDialect
      Note: Example syntax is provided in the activiti-app.properties file for other database types.
      Important: Ensure that the driver for your database is on the classpath of the web application.
    3. Set a location for the file content to be at using contentstorage.fs.rootFolder.
    4. Set a location for the search and analytics indexes using elastic-search.data.path.
  6. Ensure that the driver for your database is on the classpath of your web container.

    For Tomcat and MySQL:

    Copy the MySQL java connector jar to <Tomcat install location>/lib

  7. Copy the activiti-app.war and activiti-app.properties files to your web container.

    For Tomcat:

    • <Tomcat install location>/webapps/activiti-app.war
    • <Tomcat install location>/lib/activiti-app.properties
  8. Start up your web container.

    For Tomcat:

    • On Linux or MacOS run <Tomcat install location>\bin\catalina.sh
    • On Windows run <Tomcat install location>/bin/catalina.bat
  9. Enter http://localhost:8080/activiti-app into a browser to begin using Process Services.
After installing you will need to apply a valid license file [235] to your installation.
Parent topic: Installing manually [230]

Installing the Alfresco Process Services Administrator manually

Use these instructions to install Process Services Administrator using the WAR file.
Ensure you have read the supported platforms [6] to confirm that your web container and database combination is supported before commencing with installation.
  1. Install your web container and database.

    Note: The following steps use Tomcat and MySQL for examples.
  2. Create a schema for the activiti-admin application. The default name is activitiadmin

    In MySQL:

    CREATE DATABASE activitiadmin
                            DEFAULT CHARACTER SET utf8
                            DEFAULT COLLATE utf8_general_ci;
  3. Create a user and password. This example will use alfresco/alfresco

    Important: You do not need to complete this step if you use the same user you created when installing Process Services [236] and can skip to the next step.
    In MySQL:
    CREATE USER 'alfresco'@'localhost' IDENTIFIED BY 'alfresco';
  4. Grant full privileges on the schema to this new user.

    In MySQL:

    GRANT ALL ON activitiadmin.* TO 'alfresco'@'localhost';
  5. Edit the activiti-admin.properties file supplied with the main Process Services WAR file download.
    1. Uncomment the correct properties for the database you have installed.
    2. Update the values for the schema and credentials created in the previous steps and check that the hibernate.dialect property matches your chosen database type.

      For example:

      datasource.driver=com.mysql.jdbc.Driver
                                      datasource.url=jdbc:mysql://127.0.0.1:3306/activitiadmin?characterEncoding=UTF-8
                                      datasource.username=alfresco
                                      datasource.password=alfresco
                                      hibernate.dialect=org.hibernate.dialect.MySQLDialect
      Note: Example syntax is provided in the activiti-admin.properties file for other database types.
  6. Copy the activiti-admin.war and activiti-admin.properties files to your web container.

    For Tomcat:

    • <Tomcat install location>/webapps/activiti-admin.war
    • <Tomcat install location>/lib/activiti-admin.properties
  7. Start up your web container.

    For Tomcat:

    • On Linux or MacOS run <Tomcat install location>\bin\catalina.sh
    • On Windows run <Tomcat install location>/bin/catalina.bat
  8. Enter http://localhost:8080/activiti-admin into a browser to begin using Process Services Administrator.
After installing you will need to apply a valid license file [235] to your installation.
Parent topic: Installing manually [230]

Installing Alfresco Process Services Workspace

You can install Process Workspace using a Web Application Archive (WAR) file or by deploying the files manually into your web container.
To install Process Workspace from a WAR file, visit the support portal [24] and download the latest version of process-workspace.war.

Move the process-workspace.war file into your web container and restart the server.

Using Tomcat as an example, this would be the /webapps folder.

Alternatively, you can manually deploy Process Workspace into your web container using the following steps:

  1. Download the latest supported version [237] of Process Workspace from artifacts.alfresco.com [238].
    Note: Located in the activiti-enterprise-releases repository under /com/alfresco/alfresco-process-services-workspace.
  2. Unzip the .tgz file.
  3. Move the dist folder contained in the unzipped folder into your web container.
    Note: For Tomcat this is the /webapps folder.
  4. Restart your web server.
Important: Note that the URL for Process Workspace will be generated from the name of the folder you deploy into your web container. To change this:
  1. Rename the folder in your preferred development environment (IDE).
  2. Restart your web server.
  3. Navigate to Process Workspace in a browser using the format: http://{host}:{port}/{folder-name}
For example, if you renamed the dist folder to process-workspace and deployed locally on port 8080 this would be: http://localhost:8080/process-workspace
Parent topic: Installing manually [230]

Installing using setup wizards

There are setup wizards available for Linux, macOS and Windows operating systems.

The setup wizards are evaluation copies that are useful for trials and experimentation. The h2 database provided with them is not suitable for use in a production environment.

The setup wizards install their own Apache Tomcat container for Process Services, an h2 database and all prerequisite software for Alfresco Process Services to run on your chosen operating system.

  • Using the Linux setup wizard [239] Use these instructions to install Process Services on Linux.
  • Using the macOS setup wizard [240] Use these instructions to install Process Services on a Mac.
  • Using the Windows setup wizard [241] Use these instructions to install Process Services on Windows.
Parent topic: Installing Alfresco Process Services [206]

Using the Linux setup wizard

Use these instructions to install Process Services on Linux.
A setup wizard should not be used in a production environment.
  1. Download the Linux setup wizard from your trial email.
  2. Locate the bin you just downloaded and run the following command against it to update its permissions:

    chmod 777 <installer file name>
  3. Run the setup wizard using the following command:

    ./<installer file name>
  4. Read and accept the License Agreement.
  5. Use the default Installation Directory or choose your own.
  6. Select an Installation Profile.
  7. Complete the installation.
    Note: A message will appear displaying the default credentials and URL to use.
  8. Navigate to your installation directory and run the following command to start the application:

    ./start-process-services.sh
    Note: The default installation location is /home/{user}/alfresco/process-services-{version}
  9. Enter http://localhost:8080/activiti-app into a browser once the application has started to begin using Process Services.
    Note: Use the default credentials to log in. View the process-services-readme.txt, by default found in /home/{user}/alfresco/process-services-{version}, if you can't remember them.
  10. Optional: Install the administrator application:
    1. Rename the file activiti-admin.war.undeployed found in /home/{user}/alfresco/process-services-{version}/tomcat/webapps to activiti-admin.war
    2. Stop and restart Tomcat.
    3. Navigate to http://localhost:8080/activiti-admin once the application has started back up.
After installing you will need to apply a valid license file [235] to your installation.
Parent topic: Installing using setup wizards [231]

Using the macOS setup wizard

Use these instructions to install Process Services on a Mac.
A setup wizard should not be used in a production environment.
  1. Download the Mac setup wizard from your trial email.
  2. Locate the dmg you just downloaded using Finder and double click it.
  3. Double click the Alfresco logo to launch the setup wizard.
    Note: Click Open if you are prompted about opening files from the internet.
  4. Read and accept the License Agreement.
  5. Use the default Installation Directory or choose your own.
  6. Select an Installation Profile.
  7. Complete the installation.
    Note: A message will appear displaying the default credentials and URL to use.
  8. Navigate to your installation directory and double click the StartProcessServices application.
    Note: The default installation location is Applications\alfresco\process-services-{version}
  9. Enter http://localhost:8080/activiti-app into a browser once the application has started to begin using Process Services.
    Note: Use the default credentials to log in. View the process-services-readme.txt, by default found in Applications\alfresco\process-services-{version}, if you can't remember them.
  10. Optional: Install the administrator application:
    1. Rename the file activiti-admin.war.undeployed found in Applications\alfresco\process-services-{version}\tomcat\webapps to activiti-admin.war
    2. Stop and start Tomcat via the Terminal or by closing and re-opening the StartProcessServices application.
    3. Navigate to http://localhost:8080/activiti-admin once the application has started back up.
After installing you will need to apply a valid license file [235] to your installation.
Parent topic: Installing using setup wizards [231]

Using the Windows setup wizard

Use these instructions to install Process Services on Windows.
A setup wizard should not be used in a production environment.
  1. Download the Windows setup wizard from your trial email.
  2. Locate the exe you just downloaded and double click it to launch the setup wizard.
  3. Read and accept the License Agreement.
  4. Use the default Installation Directory or choose your own.
  5. Select an Installation Profile.
  6. Complete the installation.
    Note: A message will appear displaying the default credentials and URL to use.
  7. Navigate to your installation directory and double click the StartProcessServices application.
    Note: The default installation location is C://Program Files/alfresco/process-services-{version}
  8. Enter http://localhost:8080/activiti-app into a browser once the application has started to begin using Process Services.
    Note: Use the default credentials to log in. View the process-services-readme.txt, by default found in C://Program Files/alfresco/process-services-{version}, if you can't remember them.
  9. Optional: Install the administrator application:
    1. Rename the file activiti-admin.war.undeployed found in C://Program Files/alfresco/process-services-{version}/tomcat/webapps to activiti-admin.war
    2. Stop and start Tomcat via the Command Line or by closing and re-opening the StartProcessServices application.
    3. Navigate to http://localhost:8080/activiti-admin once the application has started back up.
After installing you will need to apply a valid license file [235] to your installation.
Parent topic: Installing using setup wizards [231]

Licensing Alfresco Process Services

A valid license file is required to run Process Services.

A license file can be obtained from support or a link is provided via email to download a temporary (30-day) license if you signed up for a free trial.

Logging into Process Services as an administrator will display a notification if a license is not currently valid. The notifications are displayed when:
  • No valid license file can be found
  • A license file has expired or is not valid until a date in the future
  • The current license file is close to expiring

There are two options for how to apply a license file [242] to Process Services.

  • Uploading a license file [243] There are two methods for uploading a license file to Process Services
Parent topic: Installing Alfresco Process Services [206]

Uploading a license file

There are two methods for uploading a license file to Process Services
To upload a license through the user interface:
  1. Click the UPLOAD LICENSE button or use the top menu Administrator > Upload license
  2. Browse to, or drag your activiti.lic file into the pop-up.

Alternatively, you can manually move the activiti.lic file into the web container.

For example using Tomcat: <Tomcat install location>\lib\

Parent topic: Licensing Alfresco Process Services [232]

Administering

This section describes how to install and configure Alfresco Process Services.

  • Upgrading from a previous release [244] You can upgrade from earlier versions to Alfresco Process Services 1.10.
  • Multi-node clustered setup [245] You can run the application on multiple servers, for performance, resilience or for failover reasons. The application architecture is designed to be stateless. This means that any server can handle any request from any user. When using multiple servers, it is enough to have a traditional load balancer (or proxy) in front of the servers running the Alfresco Process Services application. Scaling out is done in a "horizontal" way, by adding more servers behind the load balancer.
  • Configuring Alfresco Process Services [246] Configure Alfresco Process Services using a properties file named activiti-app.properties. This file must be placed on the application server’s classpath to be found.
  • Logging in Alfresco Process Services [247] There are several customization options for logging in Process Services.
  • Alfresco Process Services Administrator [248] The Administrator app can be used to inspect and manage the data for an Alfresco Process Services Process Engine (or cluster of engines). It also is used for cluster configuration and monitoring. It is distributed as a separate web application (WAR file).
Parent topic: Alfresco Process Services [23]

Upgrading from a previous release

You can upgrade from earlier versions to Alfresco Process Services 1.10.

Note: Before upgrading, you should back up your database and the activiti-app.properties file.

There are two methods for upgrading:

  • Using the Process Services installation wizard

  • Using the WAR file distribution

  • Upgrading using the Process Services installer [249]
  • Upgrading using the WAR file [250]
Parent topic: Administering [10]

Upgrading using the Process Services installer

You can use the Alfresco Process Services installation wizard to upgrade to the latest version. The process is similar to installing for the first time. For more details, see the Installing using setup wizards [228] section.

To upgrade:

  1. Double-click the Alfresco Process Services installation wizard.
  2. Follow the instructions to install the latest version of Alfresco Process Services.
  3. After the installation is complete, copy the activiti.lic file to the Alfresco Process Services installation directory: <Install>/tomcat/lib folder.

Alternatively, copy the license to your home directory using the terminal (OSX) or command prompt (Windows):

 ~/.activiti/enterprise-license/
or
C:\.activiti\enterprise-license

Tip: You can also upload a license from the user interface. See the Uploading a license file [242] section for more details.

Parent topic: Upgrading from a previous release [244]

Upgrading using the WAR file

You can upgrade using the WAR file in your application server distribution. These instructions use the WAR file from the Apache Tomcat based distribution, however you can choose from different distributions for various application servers.

Review the Supported Stacks [251] list to see what’s supported.

To upgrade using the War file:

  1. Stop the web server running the application.
  2. Deploy the new WAR file in your web server by placing it in the /webapps folder in Tomcat.
  3. Boot up the web server and start Process Services to check if it’s working as expected.

Any database upgrade changes should have now been applied.

Note: See the Installing manually [229] section for more details.
Parent topic: Upgrading from a previous release [244]

Multi-node clustered setup

You can run the application on multiple servers, for performance, resilience or for failover reasons. The application architecture is designed to be stateless. This means that any server can handle any request from any user. When using multiple servers, it is enough to have a traditional load balancer (or proxy) in front of the servers running the Alfresco Process Services application. Scaling out is done in a "horizontal" way, by adding more servers behind the load balancer.

images/multi-node-setup.png

Note that each of the servers will connect to the same relational database. While scaling out by adding more servers, make sure that the database can handle the additional load.

Parent topic: Administering [10]

Configuring Alfresco Process Services

Configure Alfresco Process Services using a properties file named activiti-app.properties. This file must be placed on the application server’s classpath to be found.

Additionally, the properties file is available with the following options:

  • An activiti-app.properties file with default values in the WAR file (or exploded WAR folder) under the WEB-INF/classes/META-INF/activiti-app folder.

  • An activiti-app.properties file with custom values on the classpath. For example, the WEB-INF/classes folder of the WAR, the /lib folder of Tomcat, or other places specific to the web container being used.

The values of a configuration file on the classpath have precedence over the values in the WEB-INF/classes/META-INF/activiti-app/activiti-app.properties file.

For the Alfresco Process Services user interface, there is an additional configuration file named app-cfg.js. This file is located inside the .war file’s script directory.

At a minimum, the application requires the following settings to run:

  • A database connection that is configured either Using JDBC Connection Parameters [252] or Using a JNDI Data Source [253]

  • An accurate Hibernate dialect - see Hibernate Settings [254]

All other properties use the default settings, and this will be allow the application to start up and run.

  • General server settings [255] By default, the following properties are defined.
  • Encrypting configuration properties [256] You can encrypt sensitive properties in the activiti-app.properties, activiti-admin.properties and activiti-ldap.properties configuration files.
  • Database configuration [257] Set the following properties to change the database.
  • Language Support [258]
  • Identity Service [259]Alfresco Process Services can be configured to authenticate using the Identity Service.
  • Configuring Kerberos against Active Directory (AD) [260]Process Services support for Kerberos SSO allows customers with existing Kerberos AD infrastructure to quickly and easily set up Windows-based SSO for their users’ access. It’s established as a security standard in many organizations and does not require additional infrastructure. It allows users secure access to the Process Services app (activiti-app) without explicit login through a web browser.
  • Configuring the OAuth 2 client for the APS app [261] To use the OAuth 2 client for authenticating login to the APS web application, you first need to configure it using the information obtained by the OAuth 2 authorization server.
  • Configuring CORS [262] To enable Cross Origin Resource Sharing (CORS) in Alfresco Process Services, set the cors.enabled property to true in the activiti-app.properties file.
  • Business Calendar settings [263] Business Calendar is used to calculate relative due dates for tasks. To exclude weekends when calculating a task’s relative due date, set the calendar.weekends property as follows:
  • Login session [264] It is possible to invalidate the current Process Services app login session when you close the web browser. By default, closing the web browser will maintain the session cookie and will keep the current login session open.
  • Initial User Created on First Start Up [265] When the application starts for the first time, it will verify that there is at least one user in the system. If not, a user with superuser rights will be created.
  • Email Server configuration [266] The application sends out emails to users on various events. For example, when a task is assigned to the user.
  • Elasticsearch configuration [22]
  • Application Access and default example app [267] It is possible to configure whether users get access to the model editors (the App Designer application) and the analytics application.
  • Group Manager Involvement [268] When a task is created that has one or more candidate groups assigned, the group managers for those groups will be automatically involved with the created task. To stop group managers from being involved, set the following property to false.
  • Process Definition Cache [269] The Process Engine operates in a stateless way. However, there is data that will never change, which makes it a prime candidate for caching.
  • Content Storage [270]Alfresco Process Services enables you to upload content, such as attaching a file to a task or a form.
  • Microsoft Office integration [271] The Microsoft Office integration (opening an Office document directly from the browser) doesn’t need any specific configuration. However, the protocol used for the integration mandates the use of HTTPS servers by default. This means that Alfresco Process Services must run on a server that has HTTPS and its certificates are correctly configured.
  • Logging back-end metrics [272] The application uses SLF4J bounded to Log4j. The log4j.properties configuration file can be found in the WEB-INF/classes folder of the WAR file.
  • Process and Task Query lists [273]
  • External Identity Management (LDAP/Active Directory) [274] It’s possible to hook up a centralized user data store with Alfresco Process Services. Any server supporting the LDAP protocol can be used. Special configuration options and logic has been included to work with Active Directory (AD) systems too.
  • Integration with external systems [275] You can integrate Alfresco Process Services with external systems.
  • Validator configuration [276] By default, Alfresco Process Services is configured in a way that process modelers have access to all powerful features of the Process Engine. In many organizations this is not a problem, as the people who are modeling are trusted IT people or business analysts.
  • License configuration [277] If you start up the application without a license, it will enter read only mode; however, you can upload a license from the user interface at a later stage. In this situation, use the following configuration properties to configure the license.
  • Multi-schema multi-tenancy (MS-MT) [278] It is possible to run Alfresco Process Services in so-called "multi-schema multi-tenancy" mode (MS-MT). This is a multi-tenant setup, where every tenant has its own database schema. This means that the data of one tenant is completely separated from the data of other tenants.
  • Cross-Site Request Forgery (CSRF) [279] Cross-Site Request Forgery, also referred to as CSRF, is one of the most common form of attacks plaguing web browsers. This type of attack results in a malicious request being submitted on a user’s behalf without their consent.
Parent topic: Administering [10]

General server settings

By default, the following properties are defined.

Property

Description

Default

server.contextroot

The context root on which the user accesses the application. This is used in various places to generate URLs to correct resources.

activiti-app

security.rememberme.key

Used for cookie validation. In a multi-node setup, all nodes must have the same value for this property.

somekey

security.csrf.disabled

When true, the cross-site forgery (CSRF) protection is disabled.

false

security.signup.disabled

When true, the Alfresco Process Services sign up functionality is disabled. An error message sign up is not possible will be displayed.

false

Parent topic: Configuring Alfresco Process Services [246]

Encrypting configuration properties

You can encrypt sensitive properties in the activiti-app.properties, activiti-admin.properties and activiti-ldap.properties configuration files.
  1. Download Jasypt http://www.jasypt.org/download.html [280].
  2. Extract the zip file and grant yourself full run permissions on its bin directory.

    You need to know what encryption algorithms are supported. If you’re using the JVM to which the application will be deployed you can do this using the listAlgorithms tool that Jasypt provides: http://www.jasypt.org/cli.html [281]

    Note: Certain algorithms such as SHA1 (PBEWITHSHA1ANDDESEDE) and MD5 (PBEWithMD5AndDES) are available on most JVMs but more secure algorithms require modifications to the JRE policies.
  3. Choose an algorithm.

    If you do not specify an algorithm to Jasypt, then you effectively obtain the default of PBEWithMD5AndDES. Some algorithms may appear in the list but may not be usable as the JRE policy blocks them.

    If you want to increase your range of choices then you can modify the JRE policies: https://www.ca.com/us/services-support/ca-support/ca-support-online/knowledge-base-articles.tec1698523.html [282]There is an equivalent for the IBM JRE: https://www-01.ibm.com/marketing/iwm/iwm/web/reg/pick.do?source=jcesdk. [283]

    Algorithms using AES are generally considered most secure. TripleDES also passes security checks at present. You should consult your security department for advice specific to your organization and the needs of your server.

  4. Use the Jasypt tools to encrypt the value.

    You can use the encrypt script that comes with Jasypt to encrypt the value against your chosen secret password. In addition to their documentation, see this guide: http://www.programering.com/a/MjN1kTNwATg.html [284].

    We recommend to avoid using quotes. Also check that you can decrypt the value, preferably using the intended JRE.

  5. Deploy the application.

    See the application installation instructions.

  6. Set the value in the properties file.

    If the property is called datasource.password, remove the existing entry and put in a new entry of the form datasource.password=ENC(<ENCRYPTEDPASSWORD>) where ENCRYPTEDPASSWORD is the value encrypted by Jasypt.

  7. Configure your application server to set the encryption algorithm and secret encryption password.

    If, for example, you are using Tomcat on Unix then you could include a shell script called setenv.sh in tomcat_home/bin with the following content:

    export JAVA_OPTS="$JAVA_OPTS -Djasypt.encryptor.password=secretpassword -Djasypt.encryptor.algorithm=PBEWITHSHA1ANDDESEDE"
    This assumes that your password is ‘secretpassword’ and you are using the algorithm PBEWITHSHA1ANDDESEDE. The configuration could alternatively be done in startup.sh.

    If you then run using catalina.sh you will see the secret password in the logging on application startup. This is a Tomcat feature, which you can disable by removing <Listener className="org.apache.catalina.startup.VersionLoggerListener" /> from your Tomcat's server.xml https://stackoverflow.com/questions/35485826/turn-off-tomcat-logging-via-spring-boot-application [285]You may initially, however, want to leave this on for diagnostic purposes until you’ve proven you’ve got encryption working. For an example of this, see https://stackoverflow.com/questions/17019233/pass-user-defined-environment-variable-to-tomcat [286]

    For other servers there will be other ways of setting environment/JVM variables. These values can be read as JVM parameters, environment variables or as property file entries (though you would not want to put the secret encryption password in a property file). Therefore, with WebSphere they could set using JVM parameter config http://www-01.ibm.com/support/docview.wss?uid=swg21417365 [287] or environment variable config https://www.ibm.com/support/knowledgecenter/en/SSAW57_8.5.5/com.ibm.websphere.nd.doc/ae/welcvariables.html. [288]

  8. Start the application.

    The application should now start as normal. If it doesn’t, try without the encrypted values and without the encryption parameters to determine whether the problem is related to the encryption setup. Check that you are able to encrypt and decrypt with Jasypt to rule out any issues due to copy-paste errors. 

  9. Logging.

    Some property values (though not sensitive ones) are logged by Alfresco applications if the log level is set high. If you want to restrict this then reduce the log level inlog4j.properties

Parent topic: Configuring Alfresco Process Services [246]

Database configuration

Set the following properties to change the database.

Using JDBC Connection Parameters

Property

Description

datasource.driver

The JDBC driver used to connect to the database. Note that the driver must be on the classpath of the web application.

datasource.url

The JDBC URL used to connect to the database.

datasource.username

The user of the database system that is used to connect to the database.

datasource.password

The password of the above user.

Example:

datasource.driver=com.mysql.jdbc.Driver
datasource.url=jdbc:mysql://127.0.0.1:3306/activiti?characterEncoding=UTF-8

datasource.username=alfresco
datasource.password=alfresco

Connection Pooling

When using JDBC Connection Parameters, you can configure the following connection pool settings to suit the anticipated load.

Property

Description

Value

datasource.min-pool-size

The minimum number of connections in the connection pool.

5

datasource.max-pool-size

The maximum number of connections in the connection pool.

100

datasource.acquire-increment

The number of additional connections the system will try to acquire each time the connection pool is exhausted.

5

datasource.preferred-test-query

The query used to verify that the connection is still valid

No default value (not a required property). The value depends on the database: select 1 for H2, MySQL, PostgreSQL and Microsoft SQL Server, SELECT 1 FROM DUAL for Oracle and SELECT current date FROM sysibm.sysdummy1 for DB2.

datasource.test-connection-on-checkin

Boolean value. If true, an operation will be performed asynchronously on every connection checkin to verify that the connection is valid. For best performance, a proper datasource.preferred-test-query should be set.

true

datasource.test-connection-on-checkout

Boolean value. If true, an operation will be performed asynchronously on every connection checkout to verify that the connection is valid. Testing Connections on checkout is the simplest and most reliable form of Connection testing. For best performance, a proper datasource.preferred-test-query should be set.

true

datasource.max-idle-time

The number of seconds a connection can be pooled before being discarded.

1800

datasource.max-idle-time-excess-connections

Number of seconds that connections in excess of minPoolSize should be permitted to remain idle in the pool before being discarded. The intention is that connections remain in the pool during a load spike.

1800

The connection pooling framework used is C3P0 [289]. It has extensive documentation on the settings described above.

Using a JNDI Data source

If a JNDI data source is configured in the web container or application server, the JNDI name should be set with the following properties:

Property

Description

Value

datasource.jndi.name

The JNDI name of the datasource. This varies depending on the application server or web container.

jdbc/activitiDS

datasource.jndi.resourceRef

Set whether the look up occurs in a J2EE container, that is, if the prefix java:comp/env/ needs to be added if the JNDI name doesn’t already contain it.

true

Example (on JBoss EAP 6.3):

datasource.jndi.name=java:jboss/datasources/activitiDS

Hibernate settings

The Alfresco Process Services specific logic is written using JPA 2.0 with Hibernate as implementation. Note that the Process Engine itself uses MyBatis [290] for full control of each SQL query.

Set the following properties.

Property

Description

Mandatory

hibernate.dialect

The dialect implementation that Hibernate uses. This is database specific.

Yes. Very important to set the correct dialect, otherwise the app might not boot up.

The following values are used to test Alfresco Process Services.

Database

Dialect

H2

org.hibernate.dialect.H2Dialect

MySQL

org.hibernate.dialect.MySQLDialect

Oracle

org.hibernate.dialect.Oracle10gDialect

SQL Server

org.hibernate.dialect.SQLServerDialect

DB2

org.hibernate.dialect.DB2Dialect

PostgreSQL

org.hibernate.dialect.PostgreSQLDialect

Optionally, the hibernate.show_sql property can be set to true if the SQL being executed needs to be printed to the log.

Parent topic: Configuring Alfresco Process Services [246]

Language Support

The Alfresco Process Services interface is supported for use with a number of languages that have been through a quality assurance (QA) and linguistic testing cycle.
Alfresco Process Services is supported with the following languages:
  • US English
  • Swedish
  • Spanish
  • French
  • Italian
  • Japanese
  • Norwegian Bokmå
  • Dutch
  • Brazilian Portuguese
  • Russian
  • Simplified Chinese

To change the display language for Alfresco Process Services, configure the appropriate language in your browser settings.

Parent topic: Configuring Alfresco Process Services [246]

Identity Service

Alfresco Process Services can be configured to authenticate using the Identity Service.

The Identity Service [226] allows you to configure user authentication between a supported LDAP provider or SAML identity provider and the Identity Service for Single Sign On (SSO) capabilities.

The Identity Service needs to be deployed [291] and configured [292] with an identity provider before being set up with other Alfresco products.

Once the Identity Service has been deployed, you will need to configure Process Services [293] to authenticate with it.

Note: Please refer to the supported platforms [251] page to see which parts of Alfresco Process Services are compatible with the Identity Service.
Note: Alfresco Process Services requires an email address as the user name when logging into the Identity Service.
  • Alfresco Process Services properties for Identity Service [294] Use this information to configure Alfresco Process Services to authenticate via Identity Service.
Parent topic: Configuring Alfresco Process Services [246]

Alfresco Process Services properties for Identity Service

Use this information to configure Alfresco Process Services to authenticate via Identity Service.

Configure the activiti-identity-service.properties file using the below properties:

Note: A full list of possible properties [295] is also available.
Property Description Notes
keycloak.enabled Enable or disable authentication via the Identity Service. Required.
keycloak.realm Name of the realm configured in the Identity Service. Required.
keycloak.auth-server-url Base URL of the Identity Service server. Will be in the format https://{server}:{port}/auth Required.
keycloak.ssl-required Whether communication to and from the Identity Service server is over HTTPS. Possible values are all for all requests, external for external requests or none. Important: this property needs to match the equivalent setting for Require SSL in your realm within the Identity Service administration console.
keycloak.resource The Client ID for the client created within your realm that points to Process Services. Required.
keycloak.principal-attribute The attribute used to populate the field UserPrincipal with. If this is null it will default to sub. Important: this property needs to be set to email to work with Process Services.
keycloak.public-client The adapter will not send credentials for the client to the Identity Service if this is set to true. Optional.
keycloak.credentials.secret The secret key for this client if the access type is not set to public.  
keycloak.always-refresh-token The token will be refreshed for every request if this is set to true.  
keycloak.autodetect-bearer-only This should be set to true if your application serves both a web application and web services. It allows for the redirection of unauthorized users of the web application to the Identity Service sign in page, but send a HTTP 401 to unauthenticated SOAP or REST clients. Required.
keycloak.token-store The location of where the account information token is stored. Possible values are cookie or session. Required.
keycloak.enable-basic-auth Whether basic authentication is supported by the adapter. If set to true then a secret must also be provided. Optional.
activiti.use-browser-based-logout Sets whether signing out of Process Services calls the Identity Service logout URL.

If set to true, set the Admin URL to https://{server}:{port}/activiti-app/ under the client settings in the Identity Service management console.

Optional.
Parent topic: Identity Service [259]

Configuring Kerberos against Active Directory (AD)

Process Services support for Kerberos SSO allows customers with existing Kerberos AD infrastructure to quickly and easily set up Windows-based SSO for their users’ access. It’s established as a security standard in many organizations and does not require additional infrastructure. It allows users secure access to the Process Services app (activiti-app) without explicit login through a web browser.
You must first set up accounts for use on a Microsoft Active Directory domain controller. It is important to identify each of the servers in your cluster that will be running the Process Services (activiti-app.war) web application. These instructions also apply to simple non-clustered installations, where a single activiti-app.war runs on a single host.
These instructions use the following naming conventions for the example server, server1.alfresco.org:
  • <host> is the server host name (without domain name suffix). For example, server1.
  • <hostnetbios> is the resolved value of the cifs.serverName property if the server is part of the Active Directory domain (typically the host name with the letter 'A' appended) or the host name otherwise (without domain name suffix). For example, server1A.
  • <domain> is the DNS domain. For example, alfresco.org.
  • <domainnetbios> is the Windows domain NetBIOS name. For example, alfresco.
  • <REALM> is t he DNS domain in upper case. For example, ALFRESCO.ORG.

Prerequisites

You must ensure that you have configured LDAP (LDAP synchronization in particular). You can use Kerberos SSO in combination with LDAP authentication and also database authentication. You can use both of these as fallback scenarios in the case that the user's browser does not support Kerberos authentication.

Kerberos SSO configuration can be divided into three parts:
  • (1) Steps to configure Active Directory and are performed by an Administrator against the domain controllers
  • (2) Steps to configure the machine where Alfresco Process Services is hosted (for example, creating the krb5.ini file)
  • (3) Steps to set configuration properties
  1. Create accounts for the SSO authentication filters by repeating the following steps for each server in the cluster that will be running the activiti-app.war file.
    1. In the Active Directory Users and Computers application, choose Action > New > User, then enter the full name as HTTP <host> and the user log in name as http<host>.
    2. Click Next.
    3. Enter a password.
    4. Enable Password never expires and disable User must change password at next logon.
    5. Click Next.
    6. Click Finish.
    7. Right-click the new user account name, and then select Properties.
    8. Select the Account tab and enable the Do not require Kerberos preauthentication option in the Account Options section.
    9. From the command prompt, use the ktpass utility to generate key tables for this account as shown:

      ktpass -princ HTTP/<host>.<domain>@<REALM> -pass <password> -mapuser 
      <domainnetbios>\http<host> -crypto all -ptype KRB5_NT_PRINCIPAL -out 
      c:\temp\http<host>.keytab -kvno 0
    10. Create the Service Principal Names (SPN) for the account using the setspn utility.

      setspn -a HTTP/<host> http<host>
      setspn -a HTTP/<host>.<domain> http<host>
      Note: When configuring Kerberos on a cluster through a load balancer, use the proxy name as the Service Principal Names (SPN).
    11. In the Active Directory Users and Computers application, right click on the http<host> user and select Properties.
    12. Select the Delegation tab. If you cannot see the Delegation tab, do one or both of the following:

      • Check that you ran the specified setspn command correctly. Delegation is only intended to be used by service accounts, which should have registered SPNs, as opposed to a regular user account which typically does not have SPNs.
      • Raise the functional level of your domain to Windows Server 2012 R2 x64. To do this:
        • Open Active Directory Domains and Trusts.
        • In the console tree, right-click the applicable domain and then click Raise Domain Functional Level.
        • In Select an available domain functional level, click Windows Server 2012, and then click Raise.
    13. In the user Delegation tab, select the Trust this user for delegation to any service (Kerberos only) check box.

    Copy the key table files created in steps 1 and 2 to the servers they were named after. Copy the files to a protected area, such as C:\etc\ or /etc.

  2. On each server in the cluster that will be running the APS web application (activiti-app.war), repeat the following steps:
    1. Set up the Kerberos ini file to point to the Windows domain controller.

      The default location is %WINDIR%\krb5.ini, where %WINDIR% is the location of your Windows directory, for example, C:\Windows\krb5.ini. If the file does not already exist (for example, if the Kerberos libraries are not installed on the target server), you must copy these over or create them from scratch. See Kerberos Help [296] for more information on the krb5.conf file. In this example, our Windows domain controller host name is adsrv.alfresco.org.

      [libdefaults]
      default_realm = ALFRESCO.ORG
      default_tkt_enctypes = rc4-hmac
      default_tgs_enctypes = rc4-hmac
      
      [realms]
      ALFRESCO.ORG = {
         kdc = adsrv.alfresco.org
         admin_server = adsrv.alfresco.org
      }
      
      [domain_realm]
      adsrv.alfresco.org = ALFRESCO.ORG
      .adsrv.alfresco.org = ALFRESCO.ORG
      Note: Specify the realm in uppercase.

      The Kerberos ini file for Linux is /etc/krb5.conf.

    2. Set up the Java login configuration file.

      For JBoss, open the $JBOSS_HOME/standalone/configuration/standalone.xml file.

      In the <subsystem xmlns="urn:jboss:domain:security:1.2"> section, add the following:

      <security-domain name="alfresco" cache-type="default">  
          <authentication>  
                <login-module code="com.sun.security.auth.module.Krb5LoginModule" flag="sufficient"/>  
          </authentication>  
      </security-domain> 

      Add the following security-domain sections:

      <security-domain name="AlfrescoHTTP" cache-type="default">
      	<authentication>
      			<login-module code="com.sun.security.auth.module.Krb5LoginModule" flag="required">
      			   <module-option name="debug" value="true"/>
      			   <module-option name="storeKey" value="true"/>
      			   <module-option name="useKeyTab" value="true"/>
      			   <module-option name="doNotPrompt" value="true"/>
      			   <module-option name="isInitiator" value="false"/>
      			   <module-option name="keyTab" value="C:/etc/http<host>.keytab"/>
      			   <module-option name="principal" value="HTTP/<host>.<domain>"/>
      			</login-module>
      	</authentication>
      </security-domain>

      For other environments, in the Java security folder (for example, C:/Alfresco/java/lib/security), create a file named java.login.config with entries as shown below.

      Alfresco {
         com.sun.security.auth.module.Krb5LoginModule sufficient;
      };
      
      AlfrescoHTTP
      {
         com.sun.security.auth.module.Krb5LoginModule required
         storeKey=true
         useKeyTab=true
         doNotPrompt=true
         keyTab="C:/etc/http<host>.keytab"
         principal="HTTP/<host>.<domain>";
      };
      
      com.sun.net.ssl.client {
         com.sun.security.auth.module.Krb5LoginModule sufficient;
      };
      
      other {
         com.sun.security.auth.module.Krb5LoginModule sufficient;
      };
    3. Enable the login configuration file by adding the following line to the main Java security configuration file, usually at java\lib\security\java.security.

      login.config.url.1=file:${java.home}/lib/security/java.login.config
    4. If the Alfresco Process Services server is not part of the Active Directory domain, ensure that its clock is kept in sync with the domain controller's, for example, by configuring the domain controller as an NTP server.
  3. To complete Kerberos SSO enablement, perform the following configuration steps after completing the actions described in step 1 and step 2 above:

    Note: Use the same server as that used in part 2 of Kereberos SSO configuration to carry out these steps.
    1. Open the <InstallLocation>/tomcat/lib/activiti-ldap.properties file.

      Note: You will need to create this file if it does not already exist.
    2. Specify the configuration settings listed in the table below.

    Property name Description Default value
    kerberos.authentication.enabled A switch for activating functionality for Kerberos SSO authentication. This applies to both the APS user interface and the REST API. FALSE
    kerberos.authentication.principal The Service Principal Name (SPN). For example, HTTP/alfresco.test.activiti.local. None
    kerberos.authentication.keytab The file system path to the key table file. For example, C:/alfresco/alfrescohttp.keytab. None
    kerberos.authentication.krb5.conf The file system path to the local server. For example, C:/Windows/krb5.ini. None
    kerberos.allow.ldap.authentication.fallback Determines whether to allow login for unsupported client browsers using LDAP credentials. FALSE
    kerberos.allow.database.authentication.fallback Determines whether to allow login for unsupported client browsers using database credentials. FALSE
    kerberos.allow.samAccountName.authentication Authentication of the user id using the short form (for example username instead of username@domain.com). FALSE
    security.authentication.use-externalid A setting that enables the use of Kerberos authentication. FALSE
Parent topic: Configuring Alfresco Process Services [246]

Configuring the OAuth 2 client for the APS app

To use the OAuth 2 client for authenticating login to the APS web application, you first need to configure it using the information obtained by the OAuth 2 authorization server.
The following entries show the properties you need to edit in activiti-app.properties and how you might set them for a typical configuration.
security.oauth2.authentication.enabled=true
security.oauth2.client.clientId=<client_id>
security.oauth2.client.clientSecret=<secret_key>
security.oauth2.client.userAuthorizationUri=https://github.com/login/oauth/authorize
security.oauth2.client.tokenName=oauth_token
security.oauth2.client.accessTokenUri=https://github.com/login/oauth/access_token
security.oauth2.client.userInfoUri=https://api.github.com/user
Property Description
security.oauth2.authentication.enabled Enables or disables the OAuth 2 client.

To enable the OAuth 2 client, set this property to true. To disable it, set this property to false.

security.oauth2.client.clientId Client ID provided by the OAuth 2 Authorization server.
security.oauth2.client.clientSecret Client Secret provided by the OAuth 2 Authorization server.
security.oauth2.client.checkToken Configures the OAuth 2 Authorization to be used. Only set this property if you are using an internal authentication server. It contains the authorization URL obtained from the Authorization server. Example: security.oauth2.client.checkToken=http://localhost:9999/oauth/check_token
security.oauth2.client.userAuthorizationUri Implementation of the Authorization endpoint from the OAuth 2 specification. Accepts authorization requests, and handles user approval if the grant type is authorization code.
security.oauth2.client.tokenName Name of the token that will be used as parameter in the request.
security.oauth2.client.accessTokenUri Endpoint for token requests as described in the OAuth 2 specification. Once login access to the application on the authorisation server has been allowed, the server provides the client (APS application) with the access token. This is exchanged with the authorisation server residing on the Uri set within this property.
security.oauth2.client.userInfoUri Uri of the user. This is used to retrieve user details from the authorisation server.
Note: The user name used for Process Services application login should also exist on the external authentication server. Note also that the Process Services user name is an email address.
Parent topic: Configuring Alfresco Process Services [246]

Configuring CORS

To enable Cross Origin Resource Sharing (CORS) in Alfresco Process Services, set the cors.enabled property to true in the activiti-app.properties file.
Note: This feature is only supported on Tomcat application server.
# CORS CONFIGURATION
 #
 cors.enabled=true

When CORS is enabled, CORS requests can be made to all endpoints under {{/activiti-app/api}}.

Also, some additional properties are made available which can be configured to further fine tune CORS. This will make CORS available only to certain origins or to restrict the valid HTTP methods that can be used and headers that can be sent with CORS-enabled requests.

cors.enabled=false
        cors.allowed.origins=*
        cors.allowed.methods=GET,POST,HEAD,OPTIONS,PUT,DELETE
        cors.allowed.headers=Authorization,Content-Type,Cache-Control,X-Requested-With,accept,Origin,Access-Control-Request-Method,Access-Control-Request-Headers,X-CSRF-Token
        cors.exposed.headers=Access-Control-Allow-Origin,Access-Control-Allow-Credentials
        cors.support.credentials=truecors.preflight.maxage=10
Property Description
cors.allowed.origins Specifies the hosts allowed in cross origin requests. By default, the value is set to *, which permits clients hosted on any server to access the resources.

Alternatively, you can specify a host, for example, http://www.example.org:8080 [297], which will only allow requests from this host.

Multiple entries or wildcards are not allowed for this setting.

In general, it is recommended to restrict {{allowedOrigins}} to only allow origins within your organization to make requests.

cors.allowed.methods Configures which HTTP requests are permitted.
  • GET
  • POST
  • HEAD
  • OPTIONS
  • PUT
  • DELETE
cors.allowed.headers Specifies the headers that can be set manually or programmatically in the request headers in addition to the ones set by the user agent (for example, Connection). The default values are:
  • Authorization
  • Content-Type
  • Cache-Control
  • X-Requested-With
  • Accept
  • Origin
  • Access-Control-Request-Method
  • Access-Control-Request-Headers
  • X-CSRF-Token
cors.exposed.headers Allows you to whitelist the headers that the client can access from the server. The default value exposes the following headers:
  • Access-Control-Allow-Origin
  • Access-Control-Allow-Credentials
cors.support.credentials Determines whether HTTP cookie and HTTP Authentication-based credentials are allowed. The default value is true.
cors.preflight.maxage Preflighted requests use the OPTIONS method to first verify the resource availability and then request it. This property determines the maximum time (in minutes) for caching a preflight request. The default value is 10.
To disable CORS set the following property in the activiti-app.properties file:
cors.enabled=false
Parent topic: Configuring Alfresco Process Services [246]

Business Calendar settings

Business Calendar is used to calculate relative due dates for tasks. To exclude weekends when calculating a task’s relative due date, set the calendar.weekends property as follows:

# Weekend days comma separated (day's first 3 letters in capital)
calendar.weekends=SAT,SUN
Parent topic: Configuring Alfresco Process Services [246]

Login session

It is possible to invalidate the current Process Services app login session when you close the web browser. By default, closing the web browser will maintain the session cookie and will keep the current login session open.

To invalidate the login session, do the following:

  1. Open the <InstallLocation>/tomcat/lib/activiti-app.properties file.
  2. Locate and set security.use-http-session to true.
    security.use-http-session=true

    Set this property to false if you do not wish to enable this behavior.

Parent topic: Configuring Alfresco Process Services [246]

Initial User Created on First Start Up

When the application starts for the first time, it will verify that there is at least one user in the system. If not, a user with superuser rights will be created.

The default user ID to sign in with is admin@app.activiti.com using password admin. This should be changed after signing in for the first time.

The initial user details can be modified (must be done before first start up) with following properties:

Property

Description

admin.email

The email address used to create the first user, which also acts as the sign in identifier.

admin.group

Capabilities in Alfresco Process Services are managed by adding users into certain groups. The first user will have all capabilities enabled. This property defines the name of the group to which the first user will be added. By default it is Superusers.

Parent topic: Configuring Alfresco Process Services [246]

Email Server configuration

The application sends out emails to users on various events. For example, when a task is assigned to the user.

Set the following properties to configure the email server.

Property

Description

email.enabled

Enables or disables the email functionality as a whole. By default, it is set to false, therefore make sure to set it to true when you require the email functionality.

email.host

The host address of the email server.

email.port

The port on which the email server is running.

email.useCredentials

Boolean value. Indicates if the email server needs credentials to make a connection. If so, both username and password need to be set.

email.username

The username used as credentials when email.useCredentials is true.

email.password

The password used as credentials when email.useCredentials is true.

email.ssl

Defines if SSL is needed for the connection to the email server.

email.tls

Defines if TLS is needed for the connection to the email server. This needs to be true when Google mail is used as the mail server for example.

email.from.default

The email address that is used in the from field of any email sent.

email.from.default.name

The name that is used in the from field of the email sent.

email.feedback.default

Some emails will have a feedback email address that people can use to send feedback. This property defines this.

Emails are created by a template engine. The emails can contain various links to the runtime system to bring the user straight to the correct page in the web application.

Set the following property to correct the links. The example in the following table uses 'localhost' as host address and 'activiti-app' as the context root:

Property

Example

email.base.url

http://localhost:8080/activiti-app [298]

Parent topic: Configuring Alfresco Process Services [246]

Elasticsearch configuration

Elasticsearch is used in Alfresco Process Services as a data store for generating analytics and reports. Elasticsearch [299] is an open source data store for JSON [300] documents. Its main features include fast full text search and analytics.

Alfresco Process Services uses a REST connection to communicate with a remote instance of Elasticsearch. The application creates a Java Low Level REST client, which allows you to configure Process Services to index event data into a remote Elasticsearch service. The REST client internally uses the Apache HTTP Async Client to send HTTP requests. This allows communication with an Elasticsearch cluster through HTTP.

A REST connection between Elasticsearch and Alfresco Process Services has three points to be aware of:

  • REST operations made using the native transport protocol are not supported. The Elasticsearch service exposes only the REST API and not the transport protocol. Operations must therefore be run across an HTTP connection.
  • No data is stored on the server on which the application is running. The data fully resides within the Elasticsearch cluster in the remote environment.
  • In multi-tenant setups, four indexes are created per tenant.

For more details regarding the REST client, see Java Low Level REST Client [301].

If migrating from an embedded Elasticsearch instance, see rebuilding Elasticsearch instances [302] after configuring a connection to an external Elasticsearch instance via REST.

For information about the compatibility between the REST client and the remote Elasticsearch cluster environment, see Communicating with an Elasticsearch Cluster using HTTP [303].

  • Elasticsearch configuration settings [304] The following properties need to be configured in activiti-app.properties for Elasticsearch:
  • Event processing for analytics [305]
  • Rebuilding the Elasticsearch indexes [306] Occasionally, an Elasticsearch index can get corrupted and become unusable. All data that are sent to Elasticsearch is stored in the relational database (except if the property event.processing.processed.events.action has been set to delete, in which case the data is lost).
Parent topic: Configuring Alfresco Process Services [246]

Elasticsearch configuration settings

The following properties need to be configured in activiti-app.properties for Elasticsearch:

Property Description Example value
elastic-search.server.type The server type for Elasticsearch configuration. Set this to rest to enable the REST client implementation. rest
elastic-search.rest-client.port The port running Elasticsearch. 9200
elastic-search.rest-client.connect-timeout Connection timeout for the REST client. 1000
elastic-search.rest-client.socket-timeout Socket timeout for the REST client. 5000
elastic-search.rest-client.address IP address of the REST client. localhost
elastic-search.rest-client.schema Sets whether the connection uses http or https. http
elastic-search.rest-client.auth.enabled Sets whether authentication is enabled for the REST connection. false
elastic-search.rest-client.username The username of the Elasticsearch user. admin
elastic-search.rest-client.password The password for the Elasticsearch user. esadmin
elastic-search.rest-client.keystore The keystore used to encrypt the connection to the Elasticsearch instance.
elastic-search.rest-client.keystore.type The type of keystore used for encryption. jks
elastic-search.rest-client.keystore.password The password of keystore used for encryption.
elastic-search.default.index.name The default prefix for the default tenant. activiti
elastic-search.tenant.index.prefix The prefix used for indexing in multi-tenant setups. activiti-tenant-

Backing up the data stored in Elasticsearch is described in detail in the Elastic search documentation [307]. When using the snapshot functionality of ElasticSearch, you must enable the HTTP interface and create firewall rules to prevent the general public from accessing it.

Parent topic: Elasticsearch configuration [22]

Event processing for analytics

The event processing is closely related to the Elasticsearch configuration [308].

The main concept is depicted in the following diagram.

images/analytics-event-processing.png
  1. The Process Engine is configured to generate events related to process execution (for example, processes started, task completed, and so on). These events are stored in the database such that there is no problem with database transactions. Meaning, writing the events to the database succeeds or fails with the regular process execution data.
  2. A component called event processor will asynchronously check for new entries in the database table for the events. The events will be processed and transformed to JSON.
  3. The JSON event is asynchronously sent to Elasticsearch. From that point on the data will show up in the reports.

The event processor is architected to work without collisions in a multi-node clustered setup. Each of the event processors will first try to lock events before processing them. If a node goes down during event processing (after locking), an expired events processor component will pick them up and process them as regular events.

The event processing can be configured, however leaving the default values as they are helps cater for typical scenarios.

Property

Description

Default

event.generation.enabled

Set to false if no events need to be generated. Do note that the reporting/analytics event data is then lost forever.

true

event.processing.enabled

Set to false to not do event processing. This can be useful in a clustered setup where only some nodes do the processing.

true

event.processing.blocksize

The number of events that are attempted to be locked and fetched to be processed in one transaction. Larger values equate to more memory usage, but less database traffic.

100

event.processing.cronExpression

The cron expression that defines how often the events generated by the Process Engine are processed (that is, read from the database and fed into Elastic Search). By default 30 seconds. If events do not need to appear quickly in the analytics, it is advised to make this less frequent to put less load on the database.

0/30 * * * * ?

event.processing.expired.cronExpression

The cron expression that defines how often expired events are processed. These are events that were locked, but never processed (such as when the node processing them went down).

0 0/30 * * * ?

event.processing.max.locktime

The maximum time an event can be locked before it is seen as expired. After that it can be taken by another processor. Expressed in milliseconds.

600000

event.processing.processed.events.action

To keep the database table where the Process Engine writes the events small and efficient, processed events are either moved to another table or deleted. Possible values are move and delete. Move is the safe option, as it allows for reconstructing the Elasticsearch index if the index was to get corrupted for some reason.

move

event.processing.processed.action.cronExpression

The cron expression that defines how often the action above happens.

0 25/45 * * * ?

Parent topic: Elasticsearch configuration [22]

Rebuilding the Elasticsearch indexes

Occasionally, an Elasticsearch index can get corrupted and become unusable. All data that are sent to Elasticsearch is stored in the relational database (except if the property event.processing.processed.events.action has been set to delete, in which case the data is lost).

You might have to rebuild the indexes when changing the core Elasticsearch settings (for example, number of shards).

Events are stored in the ACT_EVT_LOG table before they are processed. The IS_PROCESSED_ flag is set to 0 when inserting an event and changing it to 1 to process for ElasticSearch. An asynchronous component will move those table rows with 1 for the flag to the PROCESSED_ACTIVITI_EVENTS.

Therefore, to rebuild the Elasticsearch index, you must do the following:

  • Remove the data from Elasticsearch (deleting the data folders for example in the embedded mode)

  • Copy the rows from PROCESSED_ACTIVITI_EVENTS to ACT_EVT_LOG and setting the IS_PROCESSED flag to 0 again.

Note also, due to historical reasons, the DATA_ column has different types in ACT_EVT_LOG (byte array) and PROCESSED_ACTIVITI_EVENTS (long text). So a data type conversion is needed when moving rows between those tables.

See the example-apps folder that comes with Alfresco Process Services. It has an event-backup-example folder, in which a Maven project can be found that carries out the data type conversion. You can also use this to back up and restore events. Note that this example uses Java, but it can also be done with other languages. It first writes the content of PROCESSED_ACTIVITI_EVENTS to a .csv file. This is also useful when this table becomes too big in size: store the data in a file and remove the rows from the database table.

Parent topic: Elasticsearch configuration [22]

Application Access and default example app

It is possible to configure whether users get access to the model editors (the App Designer application) and the analytics application.

Access to the default application is configured through capabilities. In the admin UI, it is possible to create system groups. These groups have a set of capabilities. All users part of that group have those capabilities.

The following settings configure app access when a new user is created in the system (manual or through LDAP sync). To enable access, set the property app.[APP-NAME].default.enabled to true. If true, a newly created user will be given access to this app.

The access is configured by adding the user to a group with a certain capability that enabled the app. The name of that group can be configured using the app.[APP-NAME].default.capabilities.group property. If this property is set, and the app.[APP-NAME].default.enabled property is set to true, the group with this name will be used to add the user to and provide access to the app. If the group does not exist, it is created. If the property is commented, and app.[APP-NAME].default.enabled property, a default name is used.

Currently possible app names: { analytics | kickstart }

Property

default

app.analytics.default.enabled

true

app.analytics.default.capabilities.group

analytics-users

app.kickstart.default.enabled

true

app.kickstart.default.capabilities.group

kickstart-users

The following setting, if set to true, will create a default example app with some simple review and approve processes for every newly created user.

Property

default

app.review-workflows.enabled

false

Parent topic: Configuring Alfresco Process Services [246]

Group Manager Involvement

When a task is created that has one or more candidate groups assigned, the group managers for those groups will be automatically involved with the created task. To stop group managers from being involved, set the following property to false.

Property

default

app.runtime.groupTasks.involveGroupManager.enabled

true

Note: Users that do not have a primary group defined may not have a group manager. To define the primary group, go to Identity Management > Users > Select an action > Change primary group.
Parent topic: Configuring Alfresco Process Services [246]

Process Definition Cache

The Process Engine operates in a stateless way. However, there is data that will never change, which makes it a prime candidate for caching.

A process definition is an example of such static data. When you deploy a BPMN 2.0 XML file to the Process Engine, the engine parses it to something it can execute, and stores the XML and some data, such as the description, business key, in the database. Such a process definition will never change. Once it’s in the database, the stored data will remain the same until the process definition is deleted.

On top of that, parsing a BPMN 2.0 XML to something executable is quite a costly operation compared with other engine operations. This is why the Process Engine internally uses a process definition cache to store the parsed version of the BPMN 2.0 XML.

images/activiti-proc-def-cache.png

In a multi-node setup, each node will have a cache of process definitions. When a node goes down and comes up, it will rebuild the cache as it handles process instances, tasks. and so on.

The process definition cache size can be set by the following property:

Property

Description

Default

activiti.process-definitions.cache.max

The number of process definitions kept in memory. When the system needs to cope with many process definitions concurrently, it is advised to make this value higher than the default.

128

Parent topic: Configuring Alfresco Process Services [246]

Content Storage

Alfresco Process Services enables you to upload content, such as attaching a file to a task or a form.

Content can be stored locally by setting the property below to fs. Alternatively, you can use Amazon S3 for content storage by setting it to s3.

contentstorage.type

To configure file system for content storage, set the following properties in the activiti-app.properties file:

Note: Please note that the property file located at tomcat/lib/activiti-app.properties has priority over the one found at /tomcat/webapps/activiti-app/WEB-INF/classes/META-INF/activiti-app.properties.
Property Description Example
contentstorage.fs.rootFolder Name and location of the root folder. Important: When using multiple instances of the application, make sure that this path references a shared network drive. This is so that all nodes are able to access all content as the application is stateless and any server can handle any request. /data
contentstorage.fs.createRoot Sets whether the root folder is created by default. true
contentstorage.fs.depth Depth of the folder tree. 4
contentstorage.fs.blockSize Maximum number of files in a single folder. 1024

To configure Amazon S3 for content storage, set the following properties in the activiti-app.properties file:

Property Description
contentstorage.s3.accessKey Set to the S3 access key. The access key is required to identify the Amazon Web Services account and can be obtained from the Amazon Web Services site AWS Credentials [309].
contentstorage.s3.secretKey Set to the S3 secret key.The secret key is required to identify the Amazon Web Services account and can be obtained from the Amazon Web Services site AWS Credentials [309].
contentstorage.s3.bucketName Set to the S3 bucket name.The bucket name must be unique among all Amazon Web Services users globally. If the bucket does not already exist, it will be created, but the name must not have already been taken by another user. See S3 bucket restrictions [310] for more information on bucket naming.
contentstorage.s3.objectKeyPrefix Set to your AWS object prefix.

Alfresco Content Services is also storage mechanism, and you can find more information in Integration with external systems [311].

Parent topic: Configuring Alfresco Process Services [246]

Microsoft Office integration

The Microsoft Office integration (opening an Office document directly from the browser) doesn’t need any specific configuration. However, the protocol used for the integration mandates the use of HTTPS servers by default. This means that Alfresco Process Services must run on a server that has HTTPS and its certificates are correctly configured.

If this is not possible for some reason, change the setting on the machines for each user to make this feature work.

For Windows, see:

http://support.microsoft.com/kb/2123563 [312]

For OS X, execute following terminal command:

defaults -currentHost write com.microsoft.registrationDB hkey_current_user\\hkey_local_machine\\software\\microsoft\\office\\14.0\\common\\internet\\basicauthlevel -int 2

Note that this is not a recommended approach from a security point of view.

Parent topic: Configuring Alfresco Process Services [246]

Logging back-end metrics

The application uses SLF4J bounded to Log4j. The log4j.properties configuration file can be found in the WEB-INF/classes folder of the WAR file.

See SLF4J [313] and Log4j [314] for more information.

For all REST API endpoints available in the application, metrics are gathered about run-time performance. These statistics can be written to the log.

Property

Description

Default

metrics.console.reporter.enabled

Boolean value. If true, the REST API endpoint statistics will be logged.

false

metrics.console.reporter.interval

The interval of logging in seconds. Do note that these logs are quite large, so this should not be set to be too frequent.

60

Note that the statistics are based on the run-time timings since the last start up. When the server goes down, the metrics are lost.

Example output for one REST API endpoint:

com.activiti.runtime.rest.TaskQueryResource.listTasks
  count = 4
  mean rate = 0.03 calls/second
  1-minute rate = 0.03 calls/second
  5-minute rate = 0.01 calls/second
  15-minute rate = 0.00 calls/second
  min = 5.28 milliseconds
  max = 186.55 milliseconds
  mean = 50.74 milliseconds
  stddev = 90.54 milliseconds
  median = 5.57 milliseconds
  75% <= 141.34 milliseconds
  95% <= 186.55 milliseconds
  98% <= 186.55 milliseconds
  99% <= 186.55 milliseconds
  99.9% <= 186.55 milliseconds
Parent topic: Configuring Alfresco Process Services [246]

Process and Task Query lists

Alfresco Process Services provides REST API operations that allow you to query tasks, process instances, historic tasks and historic process instances. You can also request to include task and process variables by using the parameters includeTaskLocalVariables and includeProcessVariables and setting their values to 'True'. When executing REST API calls that include these variables, the result sets could be quite large and you may wish to limit or control the list size provided in the response. The following table shows the properties you can set in the activiti-app.properties file to configure this.

Property name Description
query.task.limit Limits the number of tasks returned from the query GET /runtime/tasks.
query.execution.limit Limits the number of process instances returned from the query GET /runtime/process-instances.
query.historic.task.limit Limits the number of historic tasks returned from the query POST /enterprise/historic-tasks/query.
query.historic.process.limit Limits the number of historic process instances returned from the query POST /enterprise/historic-process-instances/query.
Note: Note the following points:
  • You cannot specify the includeTaskLocalVariables parameter when using the process and historic process query operations. This is only available for GET /runtime/tasks and POST /enterprise/historic-tasks/query. You can use the includeProcessVariables parameter for all queries specified in the table and apply the corresponding property configuration.
  • If the property configuration for a query limit is not enabled in activiti-app.properties, the default limit for the number of instances returned is 20000.
  • If you omit the includeTaskLocalVariables and includeProcessVariables parameters or set them to false, the request excludes the variables from the response and does not apply the query limit configurations.
  • Setting higher limits for the process or task query properties results in more records fetched from the database. This is likely to mean that you experience slower REST API response times.
Parent topic: Configuring Alfresco Process Services [246]

External Identity Management (LDAP/Active Directory)

It’s possible to hook up a centralized user data store with Alfresco Process Services. Any server supporting the LDAP protocol can be used. Special configuration options and logic has been included to work with Active Directory (AD) systems too.

From a high-level overview, the external Identity Management (IDM) integration works as follows:

  • Periodically, all user and group information is synchronized asynchronously. This means that all data for users (name, email address, group membership and so on) is copied to the Alfresco Process Services database. This is done to improve performance and to efficiently store more user data that doesn’t belong to the IDM system.

  • If the user logs in to Alfresco Process Services, the authentication request is passed to the IDM system. On successful authentication there, the user data corresponding to that user is fetched from the Alfresco Process Services database and used for the various requests. Note that no passwords are saved in the database when using an external IDM.

Note that the LDAP sync only needs to be activated and configured on one node in the cluster (but it works when activated on multiple nodes, but this will of course lead to higher traffic for both the LDAP system and the database).

  • Configuring external IDM [315] The configuration of the external IDM authentication/synchronization is done in the same way as the regular properties. There is a properties file named activiti-ldap.properties in the WEB-INF/classes/META-INF/ folder in the WAR file. The values in a file with the same name on the classpath have precedence over the default values in the former file.
  • Server connection configuration [316] The following code snippet shows the properties involved in configuring a connection to an LDAP server (Active Directory is similar). These are the typical parameters used when connecting with an LDAP server. Advanced parameters are commented out in the example below:
  • Authentication [317] To enable authentication via LDAP or AD, set the following property:
  • Synchronization [318] The synchronization component will periodically query the IDM system and change the user and group database. There are two synchronization modes: full and differential.
Parent topic: Configuring Alfresco Process Services [246]

Configuring external IDM

The configuration of the external IDM authentication/synchronization is done in the same way as the regular properties. There is a properties file named activiti-ldap.properties in the WEB-INF/classes/META-INF/ folder in the WAR file. The values in a file with the same name on the classpath have precedence over the default values in the former file.

In addition, in the same folder, the example-activiti-ldap-for-ad.properties file contains an example configuration for an Active Directory system.

Parent topic: External Identity Management (LDAP/Active Directory) [274]

Server connection configuration

The following code snippet shows the properties involved in configuring a connection to an LDAP server (Active Directory is similar). These are the typical parameters used when connecting with an LDAP server. Advanced parameters are commented out in the example below:

# The URL to connect to the LDAP server
ldap.authentication.java.naming.provider.url=ldap://localhost:10389

# The default principal to use (only used for LDAP sync)
ldap.synchronization.java.naming.security.principal=uid=admin,ou=system

# The password for the default principal (only used for LDAP sync)
ldap.synchronization.java.naming.security.credentials=secret

# The authentication mechanism to use for synchronization
#ldap.synchronization.java.naming.security.authentication=simple

# LDAPS truststore configuration properties
#ldap.authentication.truststore.path=
#ldap.authentication.truststore.passphrase=
#ldap.authentication.truststore.type=
# Set to 'ssl' to enable truststore configuration via subsystem's properties
#ldap.authentication.java.naming.security.protocol=ssl

# The LDAP context factory to use
#ldap.authentication.java.naming.factory.initial=com.sun.jndi.ldap.LdapCtxFactory

# Requests timeout, in miliseconds, use 0 for none (default)
#ldap.authentication.java.naming.read.timeout=0

# See http://docs.oracle.com/javase/jndi/tutorial/ldap/referral/jndi.html
#ldap.synchronization.java.naming.referral=follow

It is possible to configure connection pooling for the LDAP/AD connections. This is an advanced feature and is only needed when creating a connection to the IDM system has an impact on system performance.

The connection pooling is implemented using the Spring-LDAP framework. Below are all the properties that it is possible to configure. These follow the semantics of the properties possible for Spring-LDAP and are described here [319].

# -----------------------
# LDAP CONNECTION POOLING
# -----------------------

# Options=
# nothing filled in: no connection pooling
# 'jdk': use the default jdk pooling mechanism
# 'spring': use the spring ldap connection pooling facilities. These can be configured further below
#ldap.synchronization.pooling.type=spring

# Following settings follow the semantics of org.springframework.ldap.pool.factory.PoolingContextSource
#ldap.synchronization.pooling.minIdle=0
#ldap.synchronization.pooling.maxIdle=8
#ldap.synchronization.pooling.maxActive=0
#ldap.synchronization.pooling.maxTotal=-1
#ldap.synchronization.pooling.maxWait=-1
# Options for exhausted action: fail | block | grow
#ldap.synchronization.pooling.whenExhaustedAction=block
#ldap.synchronization.pooling.testOnBorrow=false
#ldap.synchronization.pooling.testOnReturn=false
#ldap.synchronization.pooling.testWhileIdle=false
#ldap.synchronization.pooling.timeBetweenEvictionRunsMillis=-1
#ldap.synchronization.pooling.minEvictableIdleTimeMillis=1800000
#ldap.synchronization.pooling.numTestsPerEvictionRun=3

# Connection pool validation (see http://docs.spring.io/spring-ldap/docs/2.0.2.RELEASE/reference/#pooling for semantics)
# Used when any of the testXXX above are set to true
#ldap.synchronization.pooling.validation.base=
#ldap.synchronization.pooling.validation.filter=
# Search control: object, oneLevel, subTree
#ldap.synchronization.pooling.validation.searchControlsRefs=
Parent topic: External Identity Management (LDAP/Active Directory) [274]

Authentication

To enable authentication via LDAP or AD, set the following property:

ldap.authentication.enabled=true

In some organizations, a case insensitive log in is allowed with the LDAP ID. By default, this is disabled. To enable, set following property to false.

ldap.authentication.casesensitive=false

Next, a property ldap.authentication.dnPattern can be set:

ldap.authentication.dnPattern=uid={0},ou=users,dc=alfresco,dc=com

However, if the users are in structured folders (organizational units for example), a direct pattern cannot be used. In this case, leave the property either empty or comment it out. Now, a query will be performed using the ldap.synchronization.personQuery (see below) with the ldap.synchronization.userIdAttributeName to find the user and their distinguished (DN) name. That DN will then be used to sign in.

When using Active Directory, two additional properties need to be set:

ldap.authentication.active-directory.enabled=true
ldap.authentication.active-directory.domain=alfresco.com

The first property enables Active Directory support and the second property is the domain of the user ID (that is, userId@domain) to sign in using Active Directory.

If the domain does not match with the rootDn, it is possible to set is explicitly:

ldap.authentication.active-directory.rootDn=DC=somethingElse,DC=com

And also the filter that is used (which defaults to a userPrincipalName comparison) can be changed:

ldap.authentication.active-directory.searchFilter=(&(objectClass=user)(userPrincipalName={0}))
The following property can be set to true to allow for basic authentication to be used as a fallback for LDAP authentication. This allows for system or service users to be utilized for certain actions, such as making specific REST API calls:
ldap.allow.database.authenticaion.fallback=true
Parent topic: External Identity Management (LDAP/Active Directory) [274]

Synchronization

The synchronization component will periodically query the IDM system and change the user and group database. There are two synchronization modes: full and differential.

Full synchronization queries all data from the IDM and checks every user, group, and membership to be valid. The resource usage is heavier than the differential synchronization in this type of synchronization and therefore, it is usually only triggered on the very first sync when Alfresco Process Services starts up and is configured to use an external IDM. This is so that all users and groups are available in the database.

To enable full synchronization:

The frequency in which it runs is set using a cron expression:

ldap.synchronization.full.enabled=true
ldap.synchronization.full.cronExpression=0 0 0 * * ?

Differential synchronization is lighter, in terms of performance, as it only queries the users and groups that have changed since the last synchronization. One downside is that it cannot detect deletions of users and groups. Consequently, a full synchronization needs to run periodically (but less than a differential synchronization typically) to account for these deletions.

ldap.synchronization.differential.enabled=true
ldap.synchronization.differential.cronExpression=0 0 */4 * * ?

Do note that all synchronization results are logged, both in the regular logging and in a database table named IDM_SYNC_LOG

The synchronization logic builds on two elements:

  • Queries that return the correct user/group/membership data

  • A mapping of LDAP attributes to attributes used within the Alfresco Process Services system

There are a lot of properties to configure, so do base your configuration on one of the two files in the META-INF folder, as these contain default values. You only need to add the specific properties to your custom configuration file if the default values are not appropriate.

  • Generic Synchronization settings [320] These are settings that are generic or shared between user and group objects. For each property, an example setting of a regular LDAP system (that is, ApacheDS) and Active Directory is shown.
  • User Synchronization Settings [321]
  • Group Synchronization Settings [322]
  • Adding users to an LDAP group [323] Active Directory sets a limit on the number of attributes stored in a group that are retrievable in a single query. To overcome this, you can use incremental retrieval of data. This involves limiting the number of attribute values in a single query. To reduce the number of times the query is required to contact the server, set the number of values requested as close, as possible, to the maximum.
  • Paging [324] It is possible to use paging when connecting to an LDAP server (some even mandate this).
  • Batch insert [325] It is possible to tweak the batch size when doing an LDAP sync.
Parent topic: External Identity Management (LDAP/Active Directory) [274]

Generic Synchronization settings

These are settings that are generic or shared between user and group objects. For each property, an example setting of a regular LDAP system (that is, ApacheDS) and Active Directory is shown.

Property Description LDAP Example Active Directory Example

ldap.synchronization.distinguishedNameAttributeName

The attribute that is the disinguished name in the system.

dn

dn

ldap.synchronization.modifyTimestampAttributeName

The name of the operational attribute recording the last update time for a group or user. Important for the differential query.

modifyTimestamp

whenChanged

ldap.synchronization.createTimestampAttributeName

The name of the operational attribute recording the create time for a group or user. Important for the differential query.

createTimestamp

whenCreated

ldap.synchronization.timestampFormat

The timestamp format. This is specific to the directory servers and can vary.

yyyyMMddHHmmss.SSS’Z'

yyyyMMddHHmmss'.0Z'

ldap.synchronization.timestampFormat.locale.language

The timestamp format locale language for parsing. Follows the java.util.Locale semantics.

en

en

ldap.synchronization.timestampFormat.locale.country

The timestamp format locale country. Follows the java.util.Locale semantics.

GB

GB

ldap.synchronization.timestampFormat.timezone

The timestamp format timezone. Follows the java.text.SimpleDateFormat semantics.

GMT

GMT

Parent topic: Synchronization [318]

User Synchronization Settings

Property Description LDAP Example Active Directory Example
ldap.synchronization.users.ignoreCase If this property is set to true then the synchronization will ignore the case that users are stored in within the source database when syncing users.    
ldap.synchronization.userSearchBase The user search base restricts the LDAP user query to a sub section of a tree on the LDAP server. ou=users,dc=alfresco,dc=com ou=users,dc=alfresco,dc=com
ldap.synchronization.syncAdditionalUsers Set to true if users outside of the userSearchBase but included in the groupSearchBase should be synchronized. false false
ldap.synchronization.personQuery The query to select all objects that represent the users to import (used in the *full synchronization query*ß). (objectclass\=inetOrgPerson) (&(objectclass\=user)(userAccountControl\:1.2.840.113556.1.4.803\:\=512))
ldap.synchronization.personDifferentialQuery The query to select objects that represent the users to import that have changed since a certain time (used in the differential synchronization query).    
ldap.synchronization.userIdAttributeName The attribute name on people objects found in LDAP to use as the user ID in Alfresco uid cn
ldap.synchronization.userFirstNameAttributeName The attribute on person objects in LDAP to map to the first name property of a user givenName givenName
ldap.synchronization.userLastNameAttributeName The attribute on person objects in LDAP to map to the last name property of a user sn cn
ldap.synchronization.userEmailAttributeName The attribute on person objects in LDAP to map to the email property of a user mail mail
ldap.synchronization.userType The person type in the directory server. inetOrgPerson user

You can configure which users should be made administrators in the system. Delimit multiple entries with a ; (Semi-colon) as commas can’t be used.

Notes:
  • No trimming of spaces will be applied.
  • The property value must be an exact string match to the user DN value not an LDAP/AD query string.
ldap.synchronization.tenantAdminDn=uid=joram,ou=users,dc=alfresco,dc=com;uid=tijs,ou=users,dc=alfresco,dc=com
When using multi-tenancy, the administrator of all tenants can be configured as follows. Similar rules for delimiting apply as above.
Note: The property value must be an exact string match to the user DN value not an LDAP/AD query string.
ldap.synchronization.tenantManagerDn=uid=joram,ou=users,dc=alfresco,dc=com
It’s important to set at least 1 user with admin rights. Otherwise no user will be able to sign into the system and administer it.
Parent topic: Synchronization [318]

Group Synchronization Settings

Property

Description

LDAP Example

Active Directory Example

ldap.synchronization.groupSearchBase

The group search base restricts the LDAP group query to a sub section of a tree on the LDAP server.

ou=groups,dc=alfresco,dc=com

ou=groups,dc=alfresco,dc=com

ldap.synchronization.groupQuery

The query to select all objects that represent the groups to import (used in full synchronization).

(objectclass\=groupOfNames)

(objectclass\=group)

ldap.synchronization.groupDifferentialQuery

The query to select objects that represent the groups to import that have changed since a certain time (used in the differential synchronization).

ldap.synchronization.groupIdAttributeName

The attribute on LDAP group objects to map to the authority name property in Alfresco Process Services.

cn

cn

ldap.synchronization.groupMemberAttributeName

The attribute in LDAP on group objects that defines the DN for its members. This is an important setting as is defines group memberships of users and parent-child relations between groups.

member

member

ldap.synchronization.groupType

The group type in LDAP.

groupOfNames

group

Parent topic: Synchronization [318]

Adding users to an LDAP group

Active Directory sets a limit on the number of attributes stored in a group that are retrievable in a single query. To overcome this, you can use incremental retrieval of data. This involves limiting the number of attribute values in a single query. To reduce the number of times the query is required to contact the server, set the number of values requested as close, as possible, to the maximum.

Process Services provides the capability to configure the number of group members retrieved per query subject to the limitations imposed by Active Directory. Follow these steps to enable this:

  1. Open the <InstallLocation>/tomcat/webapps/activiti-app/WEB-INF/classes/META-INF/activiti-app/activiti-ldap.properties file.
  2. Set ldap.synchronization.groupMemberRangeEnabled to true.
    ldap.synchronization.groupMemberRangeEnabled=true
  3. Set the maximum number of members to retrieve in a single query.
    ldap.synchronization.groupMemberRangeSize=1500
    Note: This value should not exceed the limit set by Active Directory. If this is greater than the Active Directoy limit, no members are returned. See https://msdn.microsoft.com/en-us/library/ms676302(v=vs.85).aspx [326] for information related to the maximum number of values returned in a single query in Active Directory. For further information regarding the behavior of the range attribute see https://msdn.microsoft.com/en-us/library/ms676302(v=vs.85).aspx [326].
Note: If you set the enablement property to true, the default value for ldap.synchronization.groupMemberRangeSize is set to 1000.
Parent topic: Synchronization [318]

Paging

It is possible to use paging when connecting to an LDAP server (some even mandate this).

To enable paging when fetching users or groups, set following properties:

ldap.synchronization.paging.enabled=true
ldap.synchronization.paging.size=500

By default, paging is disabled.

Parent topic: Synchronization [318]

Batch insert

It is possible to tweak the batch size when doing an LDAP sync.

The insert batch size limits the amount of data being inserted in one transaction (for example, 100 users per transactions are inserted). By default, this is 5. The query batch size is used when data is fetched from the Alfresco Process Services database (for example, fetching users to check for deletions when doing a full sync).

ldap.synchronization.db.insert.batch.size=100
ldap.synchronization.db.query.batch.size=100
Parent topic: Synchronization [318]

Integration with external systems

You can integrate Alfresco Process Services with external systems.

Alfresco Content Services

The Alfresco Content Services (on premise) integration can be used to:

  • Upload or link related content (for example, for a task)

  • Upload or link content in a form

The connection for an Alfresco installation is created by an administrator through the user interface. Accounts for connecting to an Alfresco installation are created by the users themselves.

Passwords are stored encrypted in the database. An init vector and secret key are used for the encryption. These keys can be changed from the default values as follows:

# Passwords for non-OAuth services (eg. on-premise alfresco) are encrypted using AES/CBC/PKCS5PADDING
# It needs a 128-bit initialization vector (http://en.wikipedia.org/wiki/Initialization_vector) and a 128-bit secret key
# represented as 16 ascii characters below
security.encryption.ivspec=9kje56fqwX8lk1Z0
security.encryption.secret=wTy53pl09aN4iOkL
Note: See the Alfresco Activiti Connector Guide for more information about integrating Alfresco Activiti with Alfresco Content Services. With the connector installed on your Alfresco Content Services server you will be able to use the Alfresco Activiti’s Task application from Alfresco Share. If you are using Alfresco Activiti 1.3.2 with the Activiti Connector, you don’t need to have your users create the Alfresco accounts in Activiti (as mentioned above) because an SSO connection is established between the systems by default.

Google Drive

The Google Drive integration can be used to:

  • Upload related content (eg. for a task)

  • Upload content in a form

To integrate Google Drive, you must have a valid development account to access the API [327]. See this link [328] for more information.

In addition, you will need a secret key, x509 certificate URL, and a client Id. These settings are provided by the Google Drive Dev Account.

# No need to change these properties
googledrive.web.auth_uri=https://accounts.google.com/o/oauth2/auth
googledrive.web.token_uri=https://accounts.google.com/o/oauth2/token
googledrive.web.auth_provider_x509_cert_url=https://www.googleapis.com/oauth2/v1/certs

# Following properties need to be changed to map to the correct url
googledrive.web.redirect_uris=http://localhost:8080/activiti-app/app/rest/integration/google-drive/confirm-auth-request
googledrive.web.javascript_origins=http://localhost:8080/activiti-app

# Following properties are provided by Google
googledrive.web.client_secret=aabbcc
googledrive.web.client_email=bla
googledrive.web.client_x509_cert_url=bla
googledrive.web.client_id=bla

By default, the Google Drive support is disabled so that it won’t show up in the upload widget. To enable Google Drive support, change the following property.

googledrive.web.disabled=false

Box

The Box integration can be used to:

  • Upload related content (for example, for a task)

  • Upload content in a form

To integrate Box, you must have access to https://developers.box.com [329], the secret key, authentication urls, and client Id. These settings are provided by the Box Dev Account.

# No need to change these properties
box.web.auth_uri=https://app.box.com/api/oauth2/authorize
box.web.token_uri=https://app.box.com/api/oauth2/token

# Following properties need to be changed to map to the correct url
box.web.redirect_uris=http://localhost:8080/activiti-app/app/rest/integration/box/confirm-auth-request
box.web.javascript_origins=http://localhost:8080

# Following properties are provided by Box
box.web.client_id=RegisterWithBoxForYourClientId
box.web.client_secret=RegisterWithBoxForYourSecret

By default, the Box support is disabled so that it won’t show up in the upload widget. To enable Box support, change the following property:

box.disabled=false
Parent topic: Configuring Alfresco Process Services [246]

Validator configuration

By default, Alfresco Process Services is configured in a way that process modelers have access to all powerful features of the Process Engine. In many organizations this is not a problem, as the people who are modeling are trusted IT people or business analysts.

However, some organizations may expose the modeling tools of Alfresco Process Services directly to all end users giving t