Asignar todas las tareas de una Senda a un mismo usuario

1
0
-1

Hola!!
Tengo un proceso en el cual en una senda tengo más de un usuario, esta senda cuenta con tres tareas diferentes, lo que quiero hacer es que cuando un usuario específico toma la primera tarea, pues sea este el que continúe con las demás y no las pueda tomar cualquier otro usuario asignado a esta senda.

Ayuda!!

2 answers

1
0
-1

I think I understand now, I think I would do it this way:

Remove the Actor assignment to the task, it's not required.

In a script connector:

  • get the current user
  • Start the Task
  • (you must then wait for it to initiate)
  • Assign the Task to the User

El siguiente código no está completo y trabaja en nuestro medio ambiente, pero que puede ayudar, tendrá que crear algunas variables para el nombre actual proceso, nombre de la tarea y el ID de usuario, etc. para hacer que funcione. Pero le guiará en la dirección correcta (lo que me queda en el código de depuración, esto se utiliza para asegurarse de que utiliza correctamente):

ENG: The following code is NOT COMPLETE and works in our environment but it may help you, you will need to create some variables for current process name, task name and user id etc. to make it work. But it will guide you in the correct direction (I have left in debug code, this was used to ensure it operated correctly):

Para el proceso y pisa el usuario ...
//Get Human Tasks
//Obtener Tareas Humanos

                SearchOptionsBuilder searchOptionsBuilder = new SearchOptionsBuilder(0, 100);
                searchOptionsBuilder.filter(HumanTaskInstanceSearchDescriptor.NAME, processIdent[0]);
                SearchOptions searchOptions = searchOptionsBuilder.done();
               
                if(debug){dI++; logger.severe(thisTrace+"A4: Writing userTasks - START");}
                SearchResult<HumanTaskInstance> searchHumanTaskInstances = processAPI.searchHumanTaskInstances(searchOptions);

                if(debug){dI++; logger.severe(thisTrace+"B4-For: ");}
//Loop though found tasks
//Bucle a través de las tareas que se encuentran

                for (HumanTaskInstance pendingTask : searchHumanTaskInstances.getResult()) {

                        if(debug){dI++; logger.severe(dI+thisTrace+"In-For HumanTaskInstance: ");}
                        if(debug){dI++; logger.severe(dI+thisTrace+"processProcessId[0]: "+processProcessId[0]);}
                        if(debug){dI++; logger.severe(dI+thisTrace+"processProcessId[1]: "+processProcessId[1]);}
                        if(debug){dI++; logger.severe(dI+thisTrace+"pendingTask.getId(): "+pendingTask.getId());}
                        if(debug){dI++; logger.severe(dI+thisTrace+"pendingTask.getParentContainerId(): "+pendingTask.getParentContainerId());}
                        if(debug){dI++; logger.severe(dI+thisTrace+"pendingTask.getParentProcessInstanceId(): "+pendingTask.getParentProcessInstanceId());}

//Find tasks for this processID
//Encuentra las tareas de este proceso ID

                        if (pendingTask.getParentProcessInstanceId().toString().equals(processProcessId[1].toString())){
                       
                                if(debug){dI++; logger.severe(dI+thisTrace+"A4-pt: "+pendingTask.getName()+" "+pendingTask.getId()+" "+pendingTask.getParentProcessInstanceId());}
                                if (pendingTask.getId()>activityId){
                                        activityId = pendingTask.getId();
                                        if(debug){dI++; logger.severe(dI+thisTrace+"process.split(:): "+processProcessId[0]+" "+processProcessId[1]+" "+activityId);}
                                }
                        }
                }
                if(debug){dI++; logger.severe(dI+thisTrace+"After-For: ");}
               
//Force the process and step on the user...
//Para el proceso y pisa el usuario ...

                try{
                        if(debug){dI++; logger.severe(dI+thisTrace+"processProcessId[2]: "+processProcessId[2].toString());}
                        String bonUser = processProcessId[2].substring(processProcessId[2].lastIndexOf("(") + 1, processProcessId[2].indexOf(")"));
                        bonUser = bonUser.replace(" ", ".");
                        userid = identityAPI.getUserByUserName(bonUser.toLowerCase());
                        if(debug){dI++; logger.severe(dI+thisTrace+"userID    : "+userid.toString());}
                        try{
                                processAPI.assignUserTask(activityId, userid.getId());
                                processAPI.updateDueDateOfTask(activityId, dueDate);  //otherwise c?
                                if(debug){dI++; logger.severe(dI+thisTrace+"A7 userid.getId(): "+userid.getId());}
                        }
                        catch(Exception ass1){
                                        logger.severe(thisTrace+"Ass1    : "+ass1.toString());
                        }
                        catch(Exception u1){
                                logger.severe(thisTrace+"userID u1 : "+u1.toString());
                        }
                }
                catch(Exception e5){
                        logger.severe(thisTrace+"Exception e5\n\n"+e5.toString());
                }

regards
Seán

PS: If this reply answers your question, please mark a resolved.

1
0
-1

For each task in the process assign the Initiator as follows:

General->Actors->Actor Filter->Select Initiator->Next->give it a name->Next->Check Automatically Assign is checked->Finish

regards
Seán

PS: If this reply answers your question, please mark a resolved.

Comments

Submitted by clara.lopez on Sat, 04/23/2016 - 21:20

No es eso lo que deseo hacer, a ver si me explico mejor, con ésta opción el usuario que inicia la tarea, o sea el que está marcado como el que inicia el proceso es el que continua, yo no quiero eso.
https://www.dropbox.com/s/1ujq5jybym90gnd/paso.png?dl=0

esta imagen es una parte de mi proceso, que tiene dos sendas Solicitante y Agente Institucional. En la senda de Agente Institucional tengo dos usuarios, que no son usuarios que inician el proceso, si uno de ellos toma la tarea Revisión Institucional, debe de continuar con la siguiente, que es Justificar Rechazo. Ejemplo: si hellen.kelly toma revisión ya no pueda daniela.angelo tomar la tarea justificar rechazo que le corresponde hacer a hellen. Lo que deseo hacer es que el flujo que sigue en esa senda, sólo lo pueda hacer uno de los asignados.

Saludos y gracias por contestar!!!

Notifications