/** | |
* Start a workflow | |
* | |
* @param {Object} params | |
* @param {String} params.listName The name of the list | |
* @param {Number} params.itemID The item ID | |
* @param {String} params.workflowName The name of the workflow | |
* @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() {}); | |
if (!params.workflowName) { alert("Please provide the workflow name!"); return; } | |
function onQuerySucceeded() { | |
var enumerator = workflows.getEnumerator(); | |
while (enumerator.moveNext()) { | |
var workflow = enumerator.get_current(); | |
if (workflow.get_name() == params.workflowName) { | |
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); | |
} |
This comment has been minimized.
This comment has been minimized.
Do you know if you can start the workflow w/o using SPServices in SP 2010? |
This comment has been minimized.
This comment has been minimized.
Github didn't notify me on this comment.... So it's why my answer is coming so late... So yes i think, look at http://www.codeproject.com/Articles/607127/Using-SharePoint-2013-Workflow-Services-JS-API#example5 (I guess it should work with SP2010 too...) |
This comment has been minimized.
This comment has been minimized.
Brilliant - THANK YOU! |
This comment has been minimized.
This comment has been minimized.
@iOnline247. Have you tried this code with SharePoint 2010? |
This comment has been minimized.
This comment has been minimized.
Thank you very much! Works good on SP2010. |
This comment has been minimized.
This comment has been minimized.
@gendalf7771 It's really work on SP2010? Could you help me? I even can't find and load SP.WorkflowServices.js (( Is there it in free access? Thank's! |
This comment has been minimized.
This comment has been minimized.
How to use it on sharepoint 2013? This is a sample
|
This comment has been minimized.
This comment has been minimized.
Can you please help me by providing how can we the access the parameters passed in the above code example (params.parameters) in SPD 2010 or SPD 2013 |
This comment has been minimized.
This comment has been minimized.
Hey, @Aymkdn I have a small improvement for your code:
This way your script waits until Thanks for sharing this snippet, it's very useful! :) |
This comment has been minimized.
This comment has been minimized.
how to make this in office 365 , I have tired this but not working with me. |
This comment has been minimized.
Example: