Capítulo 16. Servidor de Execução

16.1. Regras de Atribuição

As regras de atribuição são regras executadas automaticamente quando uma Tarefa Humana é criada ou concluída. Esse mecanismo pode ser usado, por exemplo, para atribuir automaticamente uma Tarefa Humana a um usuário de um grupo em particular ou para evitar que um usuário conclua uma Tarefa, caso os dados estejam ausentes.

16.1.1. Definindo as Regras de Atribuição

Para definir as regras de atribuição, siga as instruções a seguir:
  1. Crie um arquivo que contenha a definição de regra no caminho de classe do Business Central (o local recomendado é $DEPLOY_DIR/standalone/deployments/business-central.war/WEB-INF/classes/):
    • default-add-task.drl com as regras a serem verificadas quando a Tarefa Humana é criada
    • default-complete-task.drl com as regras a serem verificadas quando a Tarefa Humana é concluída
  2. Defina as regras no arquivo.

Exemplo 16.1. Conteúdo 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
Caso os proprietários potenciais de uma Tarefa Humana contenham o usuário Mary, a tarefa será atribuída automaticamente ao usuário mary.

Exemplo 16.2. Conteúdo 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
Caso os proprietários potenciais de uma Tarefa Humana contenham o usuário Mary, a tarefa será atribuída automaticamente ao usuário mary.