Как я могу вызвать рабочий процесс sharepoint с помощью веб-службы sharepoint

У меня есть веб-приложение asp.net, которое может вставлять данные в библиотеку sharepoint с помощью веб-сервисов sharepoint. Как я могу запустить рабочий процесс, связанный с библиотекой, после вставки данных.

Если я не могу запустить рабочий процесс таким образом, мне нужно загрузить документ в столбец Тип, тогда он запустит рабочий процесс.


person bach dang    schedule 21.03.2014    source источник


Ответы (1)


Вызовите эту функцию, передав указанные параметры:

    static void StartWorkflow(SPListItem listItem, SPSite spSite, string wfName)
    {
        SPList parentList = listItem.ParentList;
        SPWorkflowAssociationCollection associationCollection = parentList.WorkflowAssociations;
        foreach (SPWorkflowAssociation association in associationCollection)
        {
            if (association.Name == wfName)
            {
                association.AutoStartChange = true;
                association.AutoStartCreate = false;
                association.AssociationData = string.Empty;
                spSite.WorkflowManager.StartWorkflow(listItem, association, association.AssociationData);
            }
        }
    } 

Вам также понадобится

using Microsoft.SharePoint;
using Microsoft.SharePoint.Workflow;

Это сработало для моего приложения VS.

person Kate    schedule 21.03.2014
comment
Есть ли конечная точка веб-службы sharepoint, которую можно использовать для достижения той же цели? В моем веб-приложении нет объектов sharepoint, только веб-службы sharepoint. - person bach dang; 21.03.2014
comment
Я не уверен в этом. Почему вы не можете создавать объекты SP? Вам просто нужно знать адрес вашего сайта и название списка. Дай мне знать, если тебе понадобится помощь. - person Kate; 21.03.2014
comment
Мой веб-сайт не является проектом sharepoint, а просто веб-сайтом asp.net, который использует веб-сервисы sharepoint. И веб-сайт находится на сервере, отличном от sharepoint. Было бы хорошо, если бы я сохранил абстракцию. - person bach dang; 21.03.2014
comment
Ваш метод StartWorkflow не принимает идентификатор элемента или идентификатор строки, поэтому как он узнает, с каким элементом библиотеки работать? - person bach dang; 24.03.2014
comment
Принимает сам предмет (первый аргумент). Найти его можно с помощью: SPListItem listItem = list.GetItemById (itemId); - person Kate; 24.03.2014
comment
Является ли ваш VS-проект проектом sharepoint? Я думал, что у вас должен быть проект sharepoint, чтобы использовать библиотеку sharepoint. - person bach dang; 24.03.2014
comment
Нет, это консольное приложение. - person Kate; 24.03.2014
comment
Спасибо за вашу помощь. - person bach dang; 25.03.2014