What's it all About?
iCM has an integrated business process modeller.
Business process modelling can be used to describe the interactions users have, often via your website, with your organisation, and the processes that exist when tasks are carried out.
Interactions may take the form of a simple request using a single form submission. On the other hand complex workflow processes could be involved, linking together multiple users, integrations with other systems and applications, decision-making logic, or long running processes that require information to be passed back and forwards between multiple parties.
Your business process models define how a process is carried out, the tasks that need to be performed, and the decisions that need to be made.
Why Use It?
Forms, process models, End Points, and templates like Self Service and User Requests, combine to create a platform that can deliver services to your users. Rather than managing emails coming at you from all directions, forms that create tasks and store data in the platform can better organise your work and integrate with other systems and services. Also, by using the platform as the central hub for service delivery and interactions, it's far easier to delete user data if you ever need to.
Definitions
Most people use the term "workflow" in a general way to describe the business process modeller and what it does. There's nothing wrong with that, but it's important, especially when reading this documentation, to be aware of the proper terms.
Model
A business model designed in the Business Process Modeller. Models are also called Process Definitions - they define a process.
Process
A deployed model, ready to be used.
Process Instance
An active (running) process. There will be multiple instances of a process - one for each time the process starts. The act of running a process instance is known as an execution. Instances are either active, suspended, or completed.
A process instance maintains the state of the current process execution and its associated process variables.
Instances can be started by users (generally by submitting a form), timers, by another process, or by interacting directly with the Workflow Worker's API (either in End Points or template code).
Process Variables
Workflow process variables are similar to the variables you find in JavaScript. They have a name and value. Some are created automatically when a process instance starts. Some hold values from an iCM form (for example if a form was used to start a process instance, all of the fields and their values can be made available to the process as process variables).
Process variables can be updated and created during the execution of a process instance. There's more information in the Process Variables article.
Tasks, Activities and Events
A process model is made up of a series of activities and events. Activity is the more general term used to describe elements like the user task (a task where user input is needed via an iCM form), mail task (a task that sends an email) or the API Server task (which interacts with a worker on the API Server).
Events include timers, signals, messages and errors that are triggered as your process instance is executed.
Candidates, Assignees and Claiming Tasks
The users that interact with a process are all defined as website users in iCM. Self Service, User Requests and Forms display process tasks and information to users on your website. (You can also interact with processes from within iCM if your iCM user is aliased to a website user)
User tasks can be made available to individuals, or to groups of users. These users are known as candidates. Candidates claim a task and then carry it out. A task can also be un-claimed, returning it to the pool of tasks, ready to be claimed by another candidate.
Users that have tasks assigned directly to them are known as assignees. Tasks assigned in this way can't be claimed by any other user and must be carried out by the assignee.
Once a task has been claimed by a candidate user, or is assigned directly to an assignee, it is known as an assigned task.