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:
- 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.drlcon las reglas que deben verificarse cuando se crea la tarea humana.default-complete-task.drlwith the rules con las reglas que deben verificarse cuando se completa la tarea humana.
- 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.