SharePoint-Site Workflow für mehrere Elemente starten

Grundsätzlich startet ein Listenworkflow in Microsoft SharePoint für neue oder geänderte Elemente im Kontext dieses Elements. Um einen Workflow für m​ehrere Elemente zu starten, gibt es vorerst keine Funktion.

​Um dennoch einen Workflow für mehrere Elemente zugleich starten zu können, haben wir einen Ribbon Button implementiert. Dieser übergibt per JSOM (JavaScript Object Model) die selektierten Elemente in einem Ajax Aufruf an den Nintex WebService und startet somit einen oder mehrere Site Workflows.

Im Ribbon wird folgende JavaScript Funktion aufgerufen:

<CommandUIHandler Command="SharePoint.DoSmth" CommandAction="javascript:SharePoint.DoSmth.Execute('{SiteUrl}');" EnabledScript="javascript:SharePoint.DoSmth.IsEnabled();" />

Im JavaScript wird folgendes ausgeführt um den Site Workflow zu starten und die ausgewählten Elemente an den Workflow zu übergeben:

ExecuteSingle: function (webUrl, itemId) {

    var item = {
        id: itemId
    };

    var items = new Array(item);
    SharePoint.Common.RunNintexSiteWorkflow("DoSmth", items, webUrl);
},​​

RunNintexSiteWorkflow: function (workflowName, selectedItems, webUrl) {

    var selectedItemsString = '';
    var i;

    for (i in selectedItems) {
        selectedItemsString += selectedItems[i].id + ';';
    }

    selectedItemsString = selectedItemsString.substr(0, selectedItemsString.length - 1);

    SP.UI.Notify.addNotification("Working...", false);

    var associationData = '\' + selectedItemsString + ']]\>';
    var webMethod = webUrl + '/_vti_bin/nintexworkflow/workflow.asmx';
    var soap = "" +
    "" +
    "" +
    "" +
    "" + workflowName + "" +
    "" + associationData + "" +
    "" +
    "" +
    "";

    $.ajax({
        type: "POST",
        url: webMethod,
        beforeSend: function (xhr) {
            xhr.setRequestHeader("SOAPAction", "http://nintex.com/StartSiteWorkflow");
        },
        data: soap,
        contentType: "text/xml; charset=utf-8",
        dataType: "xml",
        success: function (data) {

            SP.UI.Notify.addNotification(selectedItems.length + ' item' + 's' + ' processed.', false);

        },
        error: function (e) {
            SP.UI.Notify.addNotification("Error", false);
            alert(e.responseText);
        }
    });
}

Der Nintex Workflow empfängt anschließend die associationData und verarbeitet diese als Nintex Variable weiter:

 

Im nächsten Blogbeitrag wird dann beschreiben, wie der Workflow mit administrativen Berechtigungen gestartet werden kann und somit auch von Benutzern, die z. B. nur Read Permissions auf die Seite haben.​

By |2017-01-24T08:35:44+02:00December 16th, 2014|SharePoint, Workflows|0 Comments

About the Author:

Project Manager, Experte für: Project Management

Leave a Reply

%d bloggers like this:

novaCapta verwendet Cookies, um die Funktionalität dieser Website zu verbessern. Durch die Nutzung dieser Seite stimmen Sie der Verwendung von Cookies zu. Weiterlesen

The cookie settings on this website are set to "allow cookies" to give you the best browsing experience possible. If you continue to use this website without changing your cookie settings or you click "Accept" below then you are consenting to this.

Close