From IBM BPM v8.5, the Assignment options which were there before such as "Last User in the lane", "Routing Policy", "List Of Users" and "Custom" were deprecated an can no longer be used for the Task Assignments.
The Earlier Concept of Participant Groups has been replaced with Teams, a Team can have static members or static LDAP groups, also it can be linked to a "Team Retrieval Service" which can in any way (most commonly used DB lookup) retrieve a group of users and create a team with the members added to it. The result of this lookup can be cached as is the case with any other service.
In Task Assignments you can assign a Team defined by the above process directly and the task will get assigned to the resulting team from the invocation of the "Team Retrieval Service". Additionally on top of that it is sometimes required to create a dynamic filtered team based on certain inputs e.g. You want to exclude certain people from the team or include only some people and exclude all others in this case "Team Filter Services" come handy, Team filter service takes a team and optional inputs and based on the incoming team and input parameters does some filteration of users and returns the filtered team back to the Task Assignment call.
There is a common problem/bug with this approach, the filtered team is a temporary team which gets assigned when the task is created, if you add some new members to the Team, the team gets updated with the new members because it is dynamically tied to the Team Retrieval, but the filtered teams are temporary teams and do not get updated when new users are added to the team.
we have solved this issue by creating a small dashboard which does a search for the desired tasks, retrieves the filter inputs and then reruns the team retrieval and filter service using jsapi and assigns the team to the task with jsapi commands.