Capítulo 16. Servidor de ejecución

16.1. Reglas de tareas

Las reglas de tareas son reglas ejecutadas de forma automática cuando se crea o completa una tarea humana. Este mecanismo puede ser utilizado, por ejemplo, para asignar automáticamente una tarea humana a un usuario específico para efectuar una tarea si faltan los datos.

16.1.1. Definición de reglas de tareas

Para definir reglas de tareas, proceda de la siguiente manera:
  1. Cree un archivo que contenga la definición de la regla sobre classpath de Central empresarial (la ubicación recomendada es $DEPLOY_DIR/standalone/deployments/business-central.war/WEB-INF/classes/):
    • default-add-task.drl con las reglas que deben verificarse cuando se crea la tarea humana.
    • default-complete-task.drl with the rules con las reglas que deben verificarse cuando se completa la tarea humana.
  2. Defina las reglas en el archivo.

Ejemplo 16.1. El contenido 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 los propietarios potenciales de una tarea human contienen el usuario Mary la tarea automáticamente asignará al usuario mary.

Ejemplo 16.2. El contenido 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 los propietarios potenciales de una tarea human contienen el usuario Mary la tarea automáticamente asignará al usuario mary.