Quantcast
Channel: jQuery Library for SharePoint Web Services
Viewing all articles
Browse latest Browse all 6517

New Comment on "StartWorkflow"

$
0
0
Here is a function to help with that (code available there too: https://gist.github.com/3873181) /** * Start a workflow * * @param {Object} params * @param {String} params.listName The name of the list * @param {Number} params.itemID The item ID * @param {Array|Object} [params.parameters] An array of object with {Name:"Name of the parameter", Value:"Value of the parameter"} * @param {Function} [params.after] Callback after the request is done */ function startWorkflow(params) { // we need to make sure that SP.ClientContext is loaded if (SP.ClientContext == undefined) { setTimeout(function() { startWorkflow(params) }, 100); return } params.after = params.after || (function() {}); function onQuerySucceeded() { var enumerator = workflows.getEnumerator(); while (enumerator.moveNext()) { var workflow = enumerator.get_current(); if (workflow.get_name() == "Workflow for Requests") { var url = 'http://' + window.location.hostname + item.get_item("FileRef"); var templateId = '{' + workflow.get_id().toString() + '}'; var workflowParameters = "<root />"; if (params.parameters) { var p; if (params.parameters.length == undefined) p = [ params.parameters ]; p = params.parameters.slice(0); workflowParameters = "<Data>"; for (var i=0; i<p.length; i++) workflowParameters += "<"+p[i].Name+">"+p[i].Value+"</"+p[i].Name+">"; workflowParameters += "</Data>"; } // trigger the workflow jQuery().SPServices({ operation:"StartWorkflow", async:true, item:url, templateId:templateId, workflowParameters:workflowParameters, completefunc:params.after }); break; } } } function onQueryFailed() { throw "Error with Start workflow" } //var guid = new SP.Guid(__GlobalConfig.listID['Requested']); var context = SP.ClientContext.get_current(); var lists = context.get_web().get_lists(); var list = lists.getByTitle(params.listName); var item = list.getItemById(params.itemID); var file = item.get_file(); context.load(list); context.load(item); var workflows = list.get_workflowAssociations(); context.load(workflows); context.executeQueryAsync(onQuerySucceeded, onQueryFailed); } I'll try to add this feature into my Sharepoint JavaScript API called SharepointPlus (http://aymkdn.github.com/SharepointPlus/)

Viewing all articles
Browse latest Browse all 6517

Trending Articles