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