Forzar iniciador en un Workflow?

cancel
Showing results for 
Search instead for 
Did you mean: 
pacosantos
Active Member II

Forzar iniciador en un Workflow?

Buenos días:

Con todo casi listo en mi trabajo de aproximación a Alfresco, me encuentro con un pequeño problema. He buscado en todos los sitios posibles y o bien la información no es correcta o directamente no existe.

En todos los sitios donde he encontrado info se indica que utilizando en el script del WF...

workflow.parameters["initiator"] = people.getPerson("username");

Debería ser posible forzar el usuario iniciador de un WF, de manera que cuando este se complete, sea el el que reciba la notificación y la tarea de cierre correspondiente, pero en todas mis pruebas esto no sucede. He probado también con:

  • workflow.parameters["wf:initiator"] = people.getPerson("username");
  • workflow.parameters["bpm:initiator"] = people.getPerson("username");

Pero el resultado es siempre el mismo. Por supuesto, el usuario que pretendo sea iniciador existe y tiene permisos.

El WF se inicia correctamente pero siempre desde el usuario que está logado en el sistema.

¿Existe otra forma de hacerlo?

Gracias por adelantado

3 Replies

Re: Forzar iniciador en un Workflow?

Diría que el nombre de la variable es "initiator", pero no lo he probado:

https://github.com/Alfresco/alfresco-repository/blob/ac38ac94ff4f9cbdf2671a9517781bda389a13c4/src/ma...

Debería ser el nombre del usuario como String, no un objeto de tipo Person.

Software Engineer in Alfresco Search Team.
pacosantos
Active Member II

Re: Forzar iniciador en un Workflow?

Gracias Ángel:

He probado creo que todas las combinaciones posibles:

workflow.parameters["initiator"] = "user_name";
workflow.parameters["initiator"] = 'user_name';
workflow.parameters.initiator = "user_name";

He probado también a usar initiatorhome, y nada...

Seguiré investigando. Gracias de nuevo

 

 

pacosantos
Active Member II

Re: Forzar iniciador en un Workflow?

Hola  de nuevo.

Finalmente y tras mucho investigar me he olvidado de buscar el parametro dichoso entre otras cosas por que no es posible.

He tirado por la implementación de un Run As que he encontrado por ahí y lo he instalado como módulo. Si a alguien le interesa el AMP ya compilado puede pedirmelo por privado a falta de encontrar un sitio donde dejarlo.

Una vez instalado solo hay que ejecutar lo que se quiera dentro de:

 

runAsUserUtil.runAs("usuario que suplanta la acción",function(){
Script o acciones a realizar
});

En mi caso:

 

runAsUserUtil.runAs("avelazquez",function(){

function createAdvancedWorkflow(docNode) {
   logger.system.out("Dentro de la función");
   var workflow = actions.create("start-workflow");
   workflow.parameters.workflowName = "activiti$activitiReview";
   workflow.parameters["bpm:workflowDescription"] = "Iniciado como AVelazquez: "+docNode.name;
   workflow.parameters["bpm:assignee"] = people.getPerson("apineda"); 

   var futureDate = new Date();
   futureDate.setDate(futureDate.getDate() + 3);
   workflow.parameters["bpm:workflowDueDate"] = futureDate; 
   
   workflow.execute(docNode);
}

function main() {
       var docNode = search.findNode(document.nodeRef); 
       createAdvancedWorkflow(docNode);
}
main();
				
});

 

Donde el usuario avelazquez actua como iniciador del workflow a pesar de que para ello estoy validado como admin.

Funciona con cualquier usuario y al menos hasta la versión 5.2 

 

Enjoy