Share via


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

See Also