Search code examples
javascriptsharepointworkflowsharepoint-jsom

SharePoint JavaScript API for Workflow throws an error


I am trying to access information about running workflows in a SharePoint list but I am running into problems with the workflow services JSOM library. I am using the workflow services just like every example I can find, see code below:

var context = SP.ClientContext.get_current();
var web = context.get_web();
var servicesManager = SP.WorkflowServices.WorkflowServicesManager.newObject(context, web);
var instanceService = servicesManager.getWorkflowInstanceService();

While executing the code, the last line in the above snippet throws an exception

TypeError: this.get_context is not a function.


Solution

  • Propbaly this error occurs since one of the specified files from SharePoint JavaScript library has not been loaded.

    • SP.js
    • SP.Runtime.js
    • SP.WorkflowServices.js

    To ensure that the specified file(s) has been loaded you could consider the following approach:

    SP.SOD.registerSod('SP.ClientContext', SP.Utilities.Utility.getLayoutsPageUrl('sp.js'));
    SP.SOD.registerSod('SP.WorkflowServices.WorkflowServicesManager', SP.Utilities.Utility.getLayoutsPageUrl('SP.WorkflowServices.js'));
    SP.SOD.loadMultiple(['SP.ClientContext', 'SP.WorkflowServices.WorkflowServicesManager'], function(){
    
        var ctx = SP.ClientContext.get_current();
        var workflowServicesManager = SP.WorkflowServices.WorkflowServicesManager.newObject(ctx, ctx.get_web()); 
        var workflowSubscriptionService = workflowServicesManager.getWorkflowSubscriptionService();                
        //...    
    
    });
    

    SP.SOD.loadMultiple function is intended for loading on demand scripts which in turn is a part of SharePoint JavaScript Library. Alternatively you could utilize jQuery.getScript() from jQuery library.