> For the complete documentation index, see [llms.txt](https://bpmflow.gitbook.io/project/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://bpmflow.gitbook.io/project/functional-and-technical-information/roles-and-performers.md).

# Roles and Performers

**Roles** are assigned with **Tasks** and each **Role** in a **Bpm Process** can have **"N"** **Tasks**. But a **Task** can be assigned to only one **Role**. One **Role** per **Task** is enough in most of cases but there are situations where a **Task** must have more than on **Role**. For these situations **Performers** are used. **Performers** are also **Roles** but more than one **Performer** can be assigned to a single **Task**. When **Performers** are used **Bpm Lanes** are ignored.

Check how to do this at **Design Time** in the following link: [Roles and Performers](/project/application-manuals/backoffice-manual/main-menu/processes/define-new-process/performers-and-roles.md)

**Performers Implementation**

When **aBpmUser** take **aBpmAssignment** then a worker is added to the **BpmTask**. The instance variables \[***rolesWhoWorked***] and \[***usersWhoWorked***] are only used when performers are set.

![](https://3974112602-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LH4gGgyMb1_fhOg782r%2F-LHEf6ZIDgt3XU8u7ARb%2F-LHEfrweE8fymUWLjuTS%2FPerformers-02.jpg?alt=media\&token=07c9c3df-b465-4cb9-bc0a-0182e767b640)

Internally when **aBpmTaskAssignment** is finalized and it has **Performers** then the **BpmProcessInstance** do NOT generate next tasks. The **BpmTaskAssignment** is released (#free) and the next **Performer** is now able to take it.

![](https://3974112602-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LH4gGgyMb1_fhOg782r%2F-LHEf6ZIDgt3XU8u7ARb%2F-LHEfwbsKPuiC4dXwgtW%2FPerformers-01.jpg?alt=media\&token=7efc84f6-bcd1-40c6-8eed-9c054ea20319)
