Поделиться через


Пошаговое руководство. Создание пользовательского действия рабочего процесса сайта

В этом пошаговом руководстве показано, как создать пользовательское действие для рабочего процесса на уровне сайта с помощью Visual Studio.(Рабочие процессы на уровне сайта действуют для всего сайта, а не для определенного списка на сайте.) Пользовательское действие создает резервную копию списка Announcements и копирует в него содержимое списка Announcements.

В этом пошаговом руководстве показано выполнение следующих задач.

  • Создание рабочего процесса на уровне сайта.

  • Создание пользовательского действия рабочего процесса.

  • Создание и удаление списка SharePoint.

  • Копирование элементов из одного списка в другой.

  • Отображение списка на панели быстрого запуска.

ПримечаниеПримечание

На вашем компьютере названия некоторых элементов интерфейса пользователя Visual Studio или их расположение могут отличаться от указанных в нижеследующих инструкциях. Это зависит от имеющегося выпуска Visual Studio и используемых параметров. Дополнительные сведения см. в разделе Параметры Visual Studio.

Обязательные компоненты

Ниже приведены компоненты, необходимые для выполнения данного пошагового руководства.

Создание проекта пользовательского действия рабочего процесса сайта

Сначала создайте проект, в котором предстоит разместить и протестировать пользовательское действие рабочего процесса.

Создание проекта пользовательского действия рабочего процесса сайта

  1. В строке меню выберите Файл, Создать, Проект для отображения диалогового окна Создать проект.

  2. Разверните узел SharePoint под или *** Visual C# *** или Visual Basic, а затем выберите узел 2010.

  3. В панели Шаблоны выберите шаблон Проект SharePoint 2010.

  4. В окне Имя введите AnnouncementBackup, а затем кнопку ОК.

    Появится окно Мастер настройки SharePoint.

  5. На странице Укажите сайт и уровень безопасности для отладки выберите переключатель Развернуть как решение фермы, а затем нажмите кнопку Готово для принятия уровень доверия и по умолчанию сайт.

    На этом этапе для решения задается уровень доверия "решение фермы" — единственно возможный вариант для проектов рабочего процесса.

  6. В Обозреватель решений выберите узел проекта, а затем в строке меню выберите Проект, Добавление нового элемента.

  7. В группе или *** Visual C# *** или Visual Basic разверните узел SharePoint, а затем выберите узел 2010.

  8. В панели Шаблоны выберите шаблон Последовательный рабочий процесс (только для решения фермы), а затем нажмите кнопку Добавить.

    Появится окно Мастер настройки SharePoint.

  9. На странице Укажите имя рабочего процесса для отладки примите имя по умолчанию (AnnouncementBackup - Workflow1).Измените тип шаблона рабочего процесса в Рабочий процесс сайта, а затем нажмите кнопку Далее.

  10. Нажмите кнопку Готово, чтобы принять остальные параметры по умолчанию.

Добавление класса пользовательского действия рабочего процесса

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

Добавление класса пользовательского действия рабочего процесса

  1. В строке меню выберите Проект, Добавление нового элемента для отображения диалогового окна Добавление нового элемента.

  2. В представлении в виде дерева Установленные шаблоны выберите узел Код, а затем выберите шаблон Класс в списке шаблонов элементов проектов.Используйте имя по умолчанию (Class1).Нажмите кнопку Добавить.

  3. Удалите весь код в шаблоне Class1 на следующий код.

    Imports System
    Imports System.Collections.Generic
    Imports System.Linq
    Imports System.Text
    Imports Microsoft.SharePoint
    
    Namespace AnnouncementBackup
        ' This custom activity will back up all of the announcements 
        ' in the Announcements list on the SharePoint site.
        Public Class Class1
            Inherits System.Workflow.ComponentModel.Activity
            Public Sub New()
                MyBase.New()
            End Sub
    
            ' Triggers when the activity is executed.
            Protected Overrides Function Execute(ByVal executionContext As System.Workflow.ComponentModel.ActivityExecutionContext) As System.Workflow.ComponentModel.ActivityExecutionStatus
                Try
                    ' Get a reference to the SharePoint site.
                    Dim site As SPSite = New SPSite(("http://" + System.Environment.MachineName))
                    Dim web As SPWeb = site.OpenWeb("/")
                    ' Reference the original Announcements list.
                    Dim aList As SPList = web.GetList("/Lists/Announcements")
                    ' If the Announcements Backup list already exists, delete it.
                    Try
                        Dim bList As SPList = web.GetList("/Lists/Announcements Backup")
                        bList.Delete()
                    Catch
                    End Try
                    ' Create a new backup Announcements list and reference it.
                    Dim newAnnID As Guid = web.Lists.Add("Announcements Backup", "A backup Announcements list.", SPListTemplateType.Announcements)
                    Dim bakList As SPList = web.Lists(newAnnID)
                    ' Copy announcements from original to backup Announcements list.
                    For Each item As SPListItem In aList.Items
                        Dim newAnnItem As SPListItem = bakList.Items.Add
                        For Each field As SPField In aList.Fields
                            If Not field.ReadOnlyField Then
                                newAnnItem(field.Id) = item(field.Id)
                            End If
                        Next
                        newAnnItem.Update()
                    Next
                    ' Put the Backup Announcements list on the QuickLaunch bar.
                    bakList.OnQuickLaunch = True
                    bakList.Update()
                Catch errx As Exception
                    System.Diagnostics.Debug.WriteLine(("Error: " + errx.ToString))
                End Try
                Return MyBase.Execute(executionContext)
            End Function
        End Class
    End Namespace
    
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using Microsoft.SharePoint;
    
    namespace AnnouncementBackup
    {
        // This custom activity will back up all of the announcements in 
        // the Announcements list on the SharePoint site.
        public class Class1 : System.Workflow.ComponentModel.Activity
            {
            public Class1()
            { }
    
            // Triggers when the activity is executed.
            protected override System.Workflow.ComponentModel.ActivityExecutionStatus Execute(System.Workflow.ComponentModel.ActivityExecutionContext executionContext)
            {
                try
                {
                    // Get a reference to the SharePoint site.
                    SPSite site = new SPSite("http://" + System.Environment.MachineName);
                    SPWeb web = site.OpenWeb("/");
    
                    // Reference the original Announcements list.
                    SPList aList = web.GetList("/Lists/Announcements");
    
                    // If the Announcements Backup list already exists, delete it.
                    try
                    {
                        SPList bList = web.GetList("/Lists/Announcements Backup");
                        bList.Delete();
                    }
                    catch
                    { }
    
                    // Create a new backup Announcements list and reference it.
                    Guid newAnnID = web.Lists.Add("Announcements Backup", "A backup Announcements list.", SPListTemplateType.Announcements);
                    SPList bakList = web.Lists[newAnnID];
    
                    // Copy announcements from original to backup Announcements list.
                    foreach (SPListItem item in aList.Items)
                    {
                        SPListItem newAnnItem = bakList.Items.Add();
                        foreach (SPField field in aList.Fields)
                        {
                            if (!field.ReadOnlyField)
                                newAnnItem[field.Id] = item[field.Id];
                        }
                        newAnnItem.Update();
                    }
    
                    // Put the Backup Announcements list on the QuickLaunch bar.
                    bakList.OnQuickLaunch = true;
                    bakList.Update();
    
                }
    
                catch (Exception errx)
                {
                    System.Diagnostics.Debug.WriteLine("Error: " + errx.ToString());
                }
    
                return base.Execute(executionContext);
            }
    
    
        }
    }
    
  4. Сохраните проект, а затем в строке меню выберите Построение, Построить решение.

    Class1 отображается как настраиваемое действие в Панель элементов на вкладке *** компоненты AnnouncementBackup ***.

Добавление пользовательского действия в рабочий процесс сайта

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

Добавление пользовательского действия в рабочий процесс сайта

  1. Откройте рабочий процесс Workflow1 в конструкторе рабочих процессов.

  2. Перетащите Class1 с Панель элементов, чтобы оно отображается под действие onWorkflowActivated1 или открыть контекстное меню для Class1, выберите Копировать открыть контекстное меню для линии под действием onWorkflowActivated1, а затем выберите Вставить.

  3. Сохраните проект.

Тестирование пользовательского действия рабочего процесса сайта

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

Тестирование пользовательского действия рабочего процесса сайта

  1. Выберите ключ F5 для запуска проекта и его развертывания на сервере SharePoint.

  2. На панели быстрого Запуска, выберите ссылку Списки для отображения всех списков, доступные на сайте SharePoint.Обратите внимание, что имеется только один список объявлений с именем Announcements.

  3. В верхней части веб-страницы SharePoint выберите ссылку *** Размещение рабочих процессов ***.

  4. С началом новый раздел рабочего процесса, выберите ссылку AnnouncementBackup – Workflow1.При этом запустится рабочий процесс сайта и выполнится код в пользовательском действии.

  5. На панели быстрого Запуска, выберите ссылку *** объявления резервные ***.Обратите внимание, что в этот список скопированы все объявления, содержавшиеся в списке Announcements.

См. также

Задачи

Практическое руководство. Создание приемника событий

Другие ресурсы

Разработка решений SharePoint