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


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

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

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

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

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

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

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

  • Отображение списка на панели QuickLaunch.

    Примечание.

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

Необходимые компоненты

Для выполнения этого пошагового руководства требуются следующие компоненты:

  • Поддерживаемые редакции Microsoft Windows и SharePoint.

  • Visual Studio.

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

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

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

  1. В строке меню выберите "Файл>нового проекта">, чтобы отобразить диалоговое окно "Новый проект".

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

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

  4. В поле "Имя" введите объявлениеBackup и нажмите кнопку "ОК".

    Откроется мастер настройки SharePoint.

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

    Этот шаг задает уровень доверия для решения в качестве решения фермы, единственный доступный вариант для проектов рабочих процессов.

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

  7. В разделе Visual C# или Visual Basic разверните узел SharePoint и выберите узел 2010.

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

    Откроется мастер настройки SharePoint.

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

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

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

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

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

  1. В строке меню выберите "Добавить новый элемент проекта>", чтобы отобразить диалоговое окно "Добавить новый элемент".

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

  3. Замените весь код в классе1 следующим образом:

    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. Сохраните проект, а затем в строке меню выберите "Сборка решения сборки>".

    Класс1 отображается в виде настраиваемого действия на панели элементов на вкладке "Компоненты объявления назад".

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

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

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

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

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

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

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

Затем запустите проект и запустите рабочий процесс сайта. Настраиваемое действие создает список объявлений резервного копирования и копирует содержимое из текущего списка объявлений в него. Код также проверка, существует ли список резервных копий перед созданием. Если список резервных копий уже существует, он удаляется. Код также добавляет ссылку на новый список на панели Быстрого запуска SharePoint.

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

  1. Выберите клавишу F5, чтобы запустить проект и развернуть его в SharePoint.

  2. На панели Быстрого запуска выберите ссылку "Списки" , чтобы отобразить все списки, доступные на сайте SharePoint. Обратите внимание, что существует только один список объявлений с именем "Объявления".

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

  4. В разделе "Запуск нового рабочего процесса" выберите ссылку "Объявление - Workflow1 ". Это запускает рабочий процесс сайта и запускает код в пользовательском действии.

  5. На панели Быстрого запуска выберите ссылку "Резервное копирование объявлений". Обратите внимание, что все объявления, содержащиеся в списке объявлений , были скопированы в этот новый список.