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:
- 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.drlcom as regras a serem verificadas quando a Tarefa Humana é criadadefault-complete-task.drlcom as regras a serem verificadas quando a Tarefa Humana é concluída
- 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.