Incluir o reemplazar la asignación de trabajo

<< Clic para mostrar Tabla de Contenidos >>

Navegación:  Automatización de Procesos con poco código > Studio Cloud -ambiente de autoría > Bizagi Studio > Asistente de Procesos > Reglas de Negocio > Ejemplos de reglas de negocio > Casos y actividades >

Incluir o reemplazar la asignación de trabajo

Las funciones assignWorkItem y assignWorkItem​ById son funciones avanzadas que permiten incluir o reemplazar la asignación en cualquier tarea de usuario EXISTENTE, incluyendo eventos intermedios.

 

La sintaxis de la función assignWorkItem es:

 

Me.Case.assignWorkItem(string sTaskName, int iNewUserId, bool bReplace)

 

Y la sintaxis de la función assignWorkItemById es:

 

Me.Case.assignWorkItemById(int iWorkItemId, int iNewUserId, bool bReplace)

 

Los parámetros principales de estas funciones son:

El sTaskName: el nombre único de la tarea en la cual el nuevo usuario será agregado o reemplazado.

El iWorkItemId: el identificador del workItem de la tarea en la cual el nuevo usuario será agregado o reemplazado.

El iNewUserId: el identificador  del usuario que será agregado o reemplazado.

El bReplace: un atributo Booleano que determina si la asignación actual será reemplazada o actualizada. Si el valor es verdadero (true), reemplazará todos los usuarios asignados. Si es falso (false), el usuario será agregado a los usuarios asignados.

 

note_pin

Es una buena práctica guardar los usuarios asignados en una tabla (colección), si el evento es recurrente (si después de dar clic en Siguiente se crea de nuevo) entonces la regla de asignación será tomar los usuarios desde la colección.

En Sub procesos, las reglas de asignación sólo aplican para los procesos en ejecución. Así, si existen dos actividades nombradas igual en los procesos padre e hijo, la regla de asignación sólo funciona en el proceso que está siendo ejecutado.

Si desea obtener los asignados de una tarea después de utilizar la función assignWorkItem en el mismo evento (Al Entrar, Al Guardar o Al Salir). Utilice el método Me.Case.getWorkItem(sTaskName).Assignees. No utilice Me.Assignees.

 

Ejemplo

El siguiente ejemplo ilustrará cómo usar estas funciones.

 

En un proceso de Solicitud de Créditos Personales, se agrega un nuevo asignado para el evento Declinar Solicitud dependiendo la fase del proceso. La asignación tiene las siguientes reglas:

 

Fase

Ejecutante(s) del evento

Prefiltro de solicitantes

Creador del caso

Registro de la información de la solicitud

Creador del caso, Jefe del creador del caso

Verificación de información

Creador del caso, Jefe del creador del caso, Líder de seguridad.

Análisis de resultados

Líder de seguridad.

Desembolso

Vicepresidente de préstamos

 

Antes de continuar

Debe definir las tareas donde será ejecutada la regla de negocio donde se agregarán los usuarios. En nuestro ejemplo, estableceremos la ejecución de la expresión Al Entrar en la primera actividad de la nueva fase o Al Salir de la última actividad de la fase.

En nuestro ejemplo, las actividades serán

 

Al entrar en la tarea Verificar información del solicitante. Primera actividad de la fase Registro de la información de la solicitud.

Al entrar en el subproceso Verificar Documentación e Información. Primera actividad de la fase Verificación de información.

Al salir de la compuerta ¿Solicita Excepción?. Última actividad de la fase Verificación de información.

Al salir de la tarea Verificar Garantías y productos. Última actividad de la fase Análisis de resultados.

 

Obtener el identificador del evento Declinar Solicitud en la base de datos. En nuestro ejemplo, el identificador de Declinar Solicitud es 552.

 

Procedimiento

1. Establezca el asignado del evento usando el paso 5 del asistente de proceso.

 

2. Vaya a la primera actividad donde la asignación será modificada y cree un expresión ya sea a la entrada o a la salida (como fue definido previamente). En nuestro ejemplo, la primera actividad es Verificar información del solicitante y la expresión será ejecutada a la entrada.

 

ReplaceAllocation_01

 

3. Agregue el siguiente código a su expresión para actualizar la asignación.

 

// Obtenga el nombre para mostrar de la tarea actual
var actDisplayName = Me.Task.DisplayName;
// Cargue en una variable el identificador del evento
var eventName = Me.Task.Name;
// Tanto para las posiciones de vicepresidente y líder, asumimos

// que solo hay un usuario para cada una

var oUser = CHelper.getUsersForPosition("LoansVicepresident");

var loansVpId = oUser[0];

oUser = CHelper.getUsersForPosition("SecurityLeader");

var secLeader = oUser[0];

// Compare el nombre para mostrar con las actividades donde

// cambiará la asignación
if (actDisplayName == "Verify Applicants Information")
{
  Me.Case.assignWorkItem(eventName, Me.Case.Creator.BossId, false);
}
else if (actDisplayName == "Verify Documentation and Information")
{
  Me.Case.assignWorkItem(eventName, secLeader, false);
}
else if (actDisplayName == "Exception Request?")
{
     // La asignación será reemplzada
  Me.Case.assignWorkItem(eventName, secLeader, true);
}
else if (actDisplayName == "Verify Collaterals and Products")
{
  Me.Case.assignWorkItem(eventName, loansVpId, true);
}

 

ReplaceAllocation_02

 

Si prefiere utilizar la función assignWorkItem​ById, el código será:

 

// Obtenga el nombre para mostrar de la tarea actual
var actDisplayName = Me.Task.DisplayName;
// Cargue en una variable el identificador del workitem
var workItem = Me.Id;
// Tanto para las posiciones de vicepresidente y líder, asumimos

// que solo hay un usuario para cada una

var oUser = CHelper.getUsersForPosition("LoansVicepresident");

var loansVpId = oUser[0];

oUser = CHelper.getUsersForPosition("SecurityLeader");

var secLeader = oUser[0];
// Compare el nombre para mostrar con las actividades donde

// cambiará la asignación
if (actDisplayName == "Verify Applicants Information")
{
  Me.Case.assignWorkItem​ById(workItem, Me.Case.Creator.BossId, false);
}
else if (actDisplayName == "Verify Documentation and Information")
{
  Me.Case.assignWorkItem​ById(workItem, secLeader, false);
}
else if (actDisplayName == "Exception Request?")
{
     // La asignación será reemplzada
  Me.Case.assignWorkItem​ById(workItem, secLeader, true);
}
else if (actDisplayName == "Verify Collaterals and Products")
{
  Me.Case.assignWorkItem​ById(workItem, loansVpId, true);
}

 

Guarde la expresión y continúe.

 

4. Agregue la expresión creada previamente en el evento correspondiente de las actividades previamente definidas. Una vez haya establecido la expresión en todas las actividades, guarde su proceso y ejecútelo para probar.


Last Updated 1/26/2022 4:07:04 PM