SharePoint 2013/Online: Workflow service in JSOM (Part 1)
Introduction
SharePoint 2013 provides set of JavaScript libraries that can be used to manage workflows. First, you need to refer sp.workflowservices.js which is available in _layouts/15/sp.workflowservices.js.
<script src="/_layouts/15/sp.workflowservices.js"></script>
Using the Library
Following are few examples of using the library:
- Get all workflows deployed to current web
- Get all workflow subscriptions attached to a list
- Get all workflow subscriptions in current web
- Get all workflow subscriptions for workflow definition
Get all workflows deployed to current web
var context = SP.ClientContext.get_current();
var web = context.get_web();
var sMgr =new SP.WorkflowServices.WorkflowServicesManager(context, web);
var wDefs = sMgr.getWorkflowDeploymentService().enumerateDefinitions();
context.load(wDefs);
context.executeQueryAsync(
function(){
var e = wDefs.getEnumerator();
while (e.moveNext()) {
var def = e.get_current();
alert(def.get_displayName() + " id: " + def.get_id());
}
},
function(a,b){
alert(args.get_message());
}
);
Get all workflow subscriptions attached to a list
For this you need to have List Guide related to a relevant list.
var listGuid = "93A65752-DB60-496F-B9F5-CD864050DB39";
var context = SP.ClientContext.get_current();
var web = context.get_web();
var sMgr =new SP.WorkflowServices.WorkflowServicesManager(context, web);
var sservice = sMgr.getWorkflowSubscriptionService();
var ssubs = sservice.enumerateSubscriptionsByList(listGuid);
context.load(ssubs);
context.executeQueryAsync(
function(){
var e = ssubs.getEnumerator();
while(e.moveNext())
{
var c = e.get_current();
alert("Name :" + c.get_name() + " sID: " + c.get_id());
};
},
function(){ alert("error")}
;
Get all workflow subscriptions in current web
var context = SP.ClientContext.get_current();
var web = context.get_web();
var sMgr =new SP.WorkflowServices.WorkflowServicesManager(context, web);
var sservice = sMgr.getWorkflowSubscriptionService();
var ssubs = sservice.enumerateSubscriptions();
context.load(ssubs);
context.executeQueryAsync(
function(){
var e = ssubs.getEnumerator();
while(e.moveNext())
{
var c = e.get_current();
alert("Name :" + c.get_name() + " sID: " + c.get_id());
};
},
function(){ alert("error")}
);
Get all workflow subscriptions for workflow definition
var wfdefinitionId = "c791c3cb-abcd-4022-bc06-6fcc6ca4f6bc";
var context = SP.ClientContext.get_current();
var web = context.get_web();
var sMgr =new SP.WorkflowServices.WorkflowServicesManager(context, web);
var sservice = sMgr.getWorkflowSubscriptionService();
var ssubs = sservice.enumerateSubscriptionsByDefinition(wfdefinitionId);
context.load(ssubs);
context.executeQueryAsync(
function(){
var e = ssubs.getEnumerator();
while(e.moveNext())
{
var c = e.get_current();
alert("Name :" + c.get_name() + " sID: " + c.get_id());
};
},
function(){ alert("error")}
);
Other ways to get subscriptions
Apart from these things you can get subscriptions by:
- enumerateSubscriptionsByEventSource
- enumerateSubscriptionsByListAndParentContentType
- enumerateSubscriptionsByListWithContentType