Crear WorkFlow con REST Full

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

Crear WorkFlow con REST Full

Me gustaría consultaros una duda, para ver si me podéis ayudar o aconsejar.

Actualmente estoy desarrollando una integración entre Alfresco y la intranet de mi empresa, para ello utilizo los WebScripts out of the box de Alfresco. Sobre todo utilizo Rest Full con mensajes JSON.

Concretamente el tema con el que estoy ahora y que me trae de cabeza es cómo crear un workflow remotamente, ya sea por Rest Full u  otro tipo de WebScript.
Para entendernos pretendo hacer justo lo que hace el webscript Post Workflow Instance  http://wiki.alfresco.com/wiki/Workflow_REST_API#Post_Workflow_Definition
Iniciar una instancia de un worflow. Sé que aún no está implementada (yo tengo la versión 3.4e Community)
La cuestión es cómo me recomiendas hacerlo, desarrollando un nuevo webscript por completo o existe otra opción más fácil.

Estoy un poco perdido, supongo que esta pregunta la habrán hecho más personas, pero no lo he encontrado en este foro.

Saludos
Muchas gracias
3 Replies
warden
Member II

Re: Crear WorkFlow con REST Full

Buenas,

Después de muchas vueltas he conseguido una primera versión de web script para crear un workflow via REST.
De momento lo he desarrollado para metodo GET ya lo haré después para PUT que es lo suyo.

Al script se le pasan una serie de parámetros descritos en el desc.xml que adjunto y devuelve el identificador del workflow creado en JSON.
Parámetros de entrada
  definition: Definicion del workflow
  description: Descripcion del workflow
  assign: uid de la persona a la que se asigna la tarea
  fileNodeId (opcional): nodeId del fichero que se adjunta

Espero que le sirva a alguien.

create-workflow-instance.get.desc.xml

<webscript>
<shortname>Create Workflow Instance</shortname>
<description>
Creates a workflow instance and returns a instance identification of the new workflow.
</description>
<url>/workflow-instance-create?definition={definition}&amp;description={description}&amp;assign={assign}&amp;=fileNodeId{fileNodeId?}
</url>
<args>
<arg>
<shortname>definition</shortname>
<description>the work flow definition name</description>
</arg>
<arg>
<shortname>description</shortname>
<description>the description for the new workflow</description>
</arg>
<arg>
<shortname>assign</shortname>
<description>the person uid to assign the first task</description>
</arg>
<arg>
<shortname>fileNodeId</shortname>
<description>the file node id that we want to attach to the workflow</description>
</arg>
</args>
<format default="json">extension</format>
<authentication>user</authentication>
</webscript>

create-workflow-instance.get.js

//Arguments values
var definition = args.definition;
var description = args.description;
var assignee = args.assign;
var FileNodeId = args.fileNodeId

var registrationWorkflowDefinition = workflow.getDefinitionByName(definition);

//Parameters
var parameters = new Object();
parameters["bpm:workflowDescription"] = description;
parameters["bpm:assignee"] =[people.getPerson(assignee)];  

//Attached File
if (FileNodeId!= null)
{
  var nodeId = FileNodeId;
  var theDocument = search.findNode("workspace://SpacesStore/" + nodeId);
  var workflowPackage = workflow.createPackage();
  workflowPackage.addNode(theDocument);

}
else
{
  var workflowPackage = workflow.createPackage();
}

//Creating the workflow
//Note the order of the arguments in startWorkflow method are in inverse order than documentation
var registrationWorkflowStart = registrationWorkflowDefinition.startWorkflow(workflowPackage,parameters);

//Values to return
model.workflowInstance = registrationWorkflowStart.instance;
model.workflowInstanceID = registrationWorkflowStart.id;

create-workflow-instance.get.json.ftl

{
   "id": "${workflowInstance.id}"
}


Saludos
rubia69
Member II

Re: Crear WorkFlow con REST Full

Muchas gracias!!!Cómo lo has conseguido??Creo que sí me puede servir….gracias otra vez
gute
Member II

Re: Crear WorkFlow con REST Full

Muchísimas gracias, justo necesitaba realizar esto, me sacaste varias horas de encima, muchísimas gracias