Ошибка JSOM SharePoint 2013 при получении WorkflowSubscription

Я следовал инструкциям msdn, чтобы получить WorkflowSubscriptionService через JSOM.

Работа с клиентской объектной моделью служб рабочих процессов SharePoint 2013: http://msdn.microsoft.com/en-us/library/office/dn481315(v=office.15).aspx

var clientContext = SP.ClientContext.get_current();
var workflowServicesManager = SP.WorkflowServices.WorkflowServicesManager.newObject(clientContext, clientContext.get_web()); 
var workflowSubscriptionService = workflowServicesManager.getWorkflowSubscriptionService();

Эти три строки всегда выдают ошибку: TypeError: Object [object Object] has no method 'get_context' message: "Object [object Object] has no method 'get_context'" stack: (...) get stack: function () { [собственный код] } set stack: function () { [собственный код] } proto: ошибка

Я не могу найти ошибку. Это известная ошибка?


person JSX    schedule 19.03.2014    source источник


Ответы (2)


Эти ошибки возникают из-за того, что указанные объекты не были загружены.

Чтобы использовать клиентскую объектную модель служб рабочих процессов SharePoint 2013, необходимо загрузить следующие библиотеки JSOM:

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

Вы можете использовать, например, SP. SOD.executeFunc (библиотека JavaScript для SharePoint) или jQuery.getScript() (jQuery ibrary), чтобы убедиться, что указанный файл был загружен.

Пример:

var scriptbase = _spPageContextInfo.webAbsoluteUrl + "/_layouts/15/";    
$.getScript(scriptbase + "SP.js", function () {    
    $.getScript(scriptbase + "SP.Runtime.js", function () {    
        $.getScript(scriptbase + "SP.WorkflowServices.js", function () {

            var clientContext = SP.ClientContext.get_current();
            var workflowServicesManager = SP.WorkflowServices.WorkflowServicesManager.newObject(clientContext, clientContext.get_web()); 
            var workflowSubscriptionService = workflowServicesManager.getWorkflowSubscriptionService();    

            //... 

        });    
    });   
});    
person Vadim Gremyachev    schedule 22.03.2014

Прежде чем пытаться получить контекст, убедитесь, что CSOM загружен. Вот пример того, как проверить, что ваш код выполняется после загрузки JS SharePoint. В этом случае я также регистрируюсь в div, который CSOM загрузил с помощью jQuery.

$(document).ready(function()
{
    SP.SOD.executeFunc('sp.js', 'SP.ClientContext', function() 
    {
        $('div#log').append("SharePoint Client Object Model Loaded<br/>");
    });
});
person Maarten    schedule 19.03.2014