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 :
- 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.drlavec les règles à vérifier quand la tâche humaine est créée.default-complete-task.drlavec les règles à vérifier quand la tâche humaine est terminée.
- 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.