Chapitre 16. Serveur d'exécution

16.1. Règles d'attribution

Les règles d'attribution sont des règles exécutées automatiquement lorsqu'une tâche humaine est créée ou terminée. Ce mécanisme peut être utilisé, par exemple, pour affecter une tâche humaine automatiquement à un utilisateur particulier appartenant à un groupe ou pour empêcher un utilisateur d'effectuer une tâche si des données sont manquantes.

16.1.1. Définir les règles d'attribution

Pour définir les règles d'attribution, procéder ainsi :
  1. Créer un fichier qui contienne la définition de la règle sur le chemin d'accès de Business Central (l'emplacement recommandé est $DEPLOY_DIR/standalone/deployments/business-central.war/WEB-INF/classes/) :
    • default-add-task.drl avec les règles à vérifier quand la tâche humaine est créée.
    • default-complete-task.drl avec les règles à vérifier quand la tâche humaine est terminée.
  2. Pour définir les règles dans le fichier.

Exemple 16.1. Le contenu de default-add-task.drl

package defaultPackage

import org.kie.api.task.model.Task;
import org.kie.api.task.model.User;
import org.kie.api.task.model.Status;
import org.kie.api.task.model.PeopleAssignments;
import org.jbpm.services.task.rule.TaskServiceRequest;
import org.jbpm.services.task.exception.PermissionDeniedException;
import org.jbpm.services.task.impl.model.*;
import java.util.HashMap;
import java.util.List;


global TaskServiceRequest request;

rule "Don't allow Mary to complete task when rejected"
    when
        $task : Task()
        $actualOwner : User( id == 'mary') from $task.getTaskData().getActualOwner()
        $params : HashMap(this["approved"] == false)
    then
        request.setAllowed(false);
        request.setExceptionClass(PermissionDeniedException.class);
        request.addReason("Mary is not allowed to complete task with approved false");
end
Si les propriétaires potentiels d'une tâche humaine contiennent l'utilisateur Mary, la tâche sera assignée automatiquement à l'utilisateur mary.

Exemple 16.2. Le contenu de default-complete-task.drl

package defaultPackage

import org.kie.api.task.model.Task;
import org.kie.api.task.model.User;
import org.kie.api.task.model.Status;
import org.kie.api.task.model.PeopleAssignments;
import org.jbpm.services.task.rule.TaskServiceRequest;
import org.jbpm.services.task.exception.PermissionDeniedException;
import org.jbpm.services.task.impl.model.*;
import java.util.HashMap;
import java.util.List;


global TaskServiceRequest request;

rule "Don't allow Mary to complete task when rejected"
    when
        $task : Task()
        $actualOwner : User( id == 'mary') from $task.getTaskData().getActualOwner()
        $params : HashMap(this["approved"] == false)
    then
        request.setAllowed(false);
        request.setExceptionClass(PermissionDeniedException.class);
        request.addReason("Mary is not allowed to complete task without approval.");
end
Si les propriétaires potentiels d'une tâche humaine contiennent l'utilisateur Mary, la tâche sera assignée automatiquement à l'utilisateur mary.