Filters for teams of 2 with supervisors


Hi! We have a process with several teams. Each team is a group of 2 users -- here, students doing a translation work. Each team has 6 sheets to translate (and to summarize with an abstract). Team A is Alice and Albert, team B is Brigitte and Bob, etc.

Alice is translating sheets A1, A2 and A3.

Albert is translating sheets A4, A5 and A6.

Albert is the reviewer of the work done by Alice (sheets A1, A2 and A3). Alice reviews the translation work done by Albert (sheets A4, A5 and A6).

Finally, Zoe and Zoro are teachers ("supervisors" in the diagram below): when Alice, Albert, Brigitte, Bob... are happy with their work, they submit it to Zoe and Zoro. Zoe and Zoro work closely together, they choose the Bonita tasks they want to carry on. So they take tasks (supervising the translations and abstracts made by the students) depending on their work load.

The diagram is as below:


This is successfully implemented (Bonita 7.9.3) and works, except for two issues, for which we ask here for help. Both issues relate to actors and filters, so we group them in a single question.

ISSUE 1: currently, we based our work on the bonita camp with the acme organisation. Albert from example above is walter.bates, his manager is helen.kelly. When walter.bates translates sheets A1, we defined a filter in the Reviewer lane which filters the initiator’s manager (in this case, helen.kelly) as the person doing the review task; so far so good. But when we need helen.kelly to translate sheet A4 and have it reviewed by walter.bates, our filters are inappropriate: we can not set helen.kelly’s manager to be walter.bates (Bonita Studio complains that it creates a cycle: Bates > Kelly > Bates).

The solution we think of is to create a filter with two conditions, for the reviewer lane:

cond_1a: the reviewer must be in the same group as the initiator (so: if the initiator is Alice, her group is A and this first condition keeps only Alice and Albert)

cond_1b: the reviewer cannot be the initiator (so: if the initiator is Alice, this condition keeps only Albert).

We have no idea on how to code these filters in the Bonita Studio. We saw a few questions (eg ) and filters (, regex-1.0.jar…) but failed to have this work; java fluency is low in the team.

To define groups, we are happy to create new groups in the organisation (we defined functions in a LibreOffice Calc spreadsheet, which turn lists of users, emails and groups into lines of xml… similar to the organization export format).

(as a last resort, we would create 2 users for each single student: Alice_translator and Alice_reviewer, use our filter based on initiator’s manager, with Alice_reviewer being Albert_translator’s manager, and vice verso; no cycle here).

ISSUE 2: We use a manager-type filter for the teachers (Zoro and Zoe); it is not appropriate. We could not find a simple way to have the 3rd lane restricted to a group of users (change the actor or create an actor filter). (Last resort would be, well, only one “Zorozoe” account, and lots of emails…).

Thank you in advance for any help!


(PS: For the record – but not absolutely necessary to understand the question, we translate sheets like these: A1= )

(PPS: if you’d like to look at the BOS, just email me; my email is at the bottom of the following page: )

2 answers


Hi, thanks a lot! With respect to Issue 2, your post ( ) helped me solve the issue. I've modified successfully the Bonita Camp example to have a lane restricted to a group of users (a department in the ACME organisation). For other readers, note the complete procedure is described in:

Note that there are several steps: Define the actors at the pool level, do the mapping of actors ("Map an actor", configure button), then filter it at the line level

I'm looking at your dynamic filter and report here my progress with respect to Issue 1.

Thanks again!




The both issue can be resolve by a dynamic filter that have already created and posted here : (It's in French, but code it's code ^^)

To call this filter, you just need to get all your needed users in a list, and pass the list to the filters.

So, you can do your if/else to create your users list.