Пошаговое руководство. Создание пользовательского действия рабочего процесса сайта
В этом пошаговом руководстве показано, как создать пользовательское действие для рабочего процесса на уровне сайта с помощью Visual Studio.(Рабочие процессы на уровне сайта действуют для всего сайта, а не для определенного списка на сайте.) Пользовательское действие создает резервную копию списка Announcements и копирует в него содержимое списка Announcements.
В этом пошаговом руководстве показано выполнение следующих задач.
Создание рабочего процесса на уровне сайта.
Создание пользовательского действия рабочего процесса.
Создание и удаление списка SharePoint.
Копирование элементов из одного списка в другой.
Отображение списка на панели быстрого запуска.
Примечание |
---|
На вашем компьютере названия некоторых элементов интерфейса пользователя Visual Studio или их расположение могут отличаться от указанных в нижеследующих инструкциях. Это зависит от имеющегося выпуска Visual Studio и используемых параметров. Дополнительные сведения см. в разделе Параметры Visual Studio. |
Обязательные компоненты
Ниже приведены компоненты, необходимые для выполнения данного пошагового руководства.
Поддерживаемые выпуски Microsoft Windows и SharePoint.Дополнительные сведения см. в разделе Требования по разработке решений SharePoint;
Visual Studio.
Создание проекта пользовательского действия рабочего процесса сайта
Сначала создайте проект, в котором предстоит разместить и протестировать пользовательское действие рабочего процесса.
Создание проекта пользовательского действия рабочего процесса сайта
В строке меню выберите Файл, Создать, Проект для отображения диалогового окна Создать проект.
Разверните узел SharePoint под или *** Visual C# *** или Visual Basic, а затем выберите узел 2010.
В панели Шаблоны выберите шаблон Проект SharePoint 2010.
В окне Имя введите AnnouncementBackup, а затем кнопку ОК.
Появится окно Мастер настройки SharePoint.
На странице Укажите сайт и уровень безопасности для отладки выберите переключатель Развернуть как решение фермы, а затем нажмите кнопку Готово для принятия уровень доверия и по умолчанию сайт.
На этом этапе для решения задается уровень доверия "решение фермы" — единственно возможный вариант для проектов рабочего процесса.
В Обозреватель решений выберите узел проекта, а затем в строке меню выберите Проект, Добавление нового элемента.
В группе или *** Visual C# *** или Visual Basic разверните узел SharePoint, а затем выберите узел 2010.
В панели Шаблоны выберите шаблон Последовательный рабочий процесс (только для решения фермы), а затем нажмите кнопку Добавить.
Появится окно Мастер настройки SharePoint.
На странице Укажите имя рабочего процесса для отладки примите имя по умолчанию (AnnouncementBackup - Workflow1).Измените тип шаблона рабочего процесса в Рабочий процесс сайта, а затем нажмите кнопку Далее.
Нажмите кнопку Готово, чтобы принять остальные параметры по умолчанию.
Добавление класса пользовательского действия рабочего процесса
Теперь добавьте в проект класс, в котором будет содержаться код для пользовательского действия рабочего процесса.
Добавление класса пользовательского действия рабочего процесса
В строке меню выберите Проект, Добавление нового элемента для отображения диалогового окна Добавление нового элемента.
В представлении в виде дерева Установленные шаблоны выберите узел Код, а затем выберите шаблон Класс в списке шаблонов элементов проектов.Используйте имя по умолчанию (Class1).Нажмите кнопку Добавить.
Удалите весь код в шаблоне 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); } } }
Сохраните проект, а затем в строке меню выберите Построение, Построить решение.
Class1 отображается как настраиваемое действие в Панель элементов на вкладке *** компоненты AnnouncementBackup ***.
Добавление пользовательского действия в рабочий процесс сайта
Теперь добавьте в рабочий процесс действие, в котором будет содержаться пользовательский код.
Добавление пользовательского действия в рабочий процесс сайта
Откройте рабочий процесс Workflow1 в конструкторе рабочих процессов.
Перетащите Class1 с Панель элементов, чтобы оно отображается под действие onWorkflowActivated1 или открыть контекстное меню для Class1, выберите Копировать открыть контекстное меню для линии под действием onWorkflowActivated1, а затем выберите Вставить.
Сохраните проект.
Тестирование пользовательского действия рабочего процесса сайта
Теперь запустите проект и начните рабочий процесс сайта.Пользовательское действие создает резервную копию списка Announcements и копирует в него содержимое текущего списка Announcements.Перед созданием резервной копии списка проверяется наличие существующей резервной копии.Если резервная копия существует, она удаляется.Кроме того, на панель быстрого запуска сайта SharePoint добавляется ссылка на новый список.
Тестирование пользовательского действия рабочего процесса сайта
Выберите ключ F5 для запуска проекта и его развертывания на сервере SharePoint.
На панели быстрого Запуска, выберите ссылку Списки для отображения всех списков, доступные на сайте SharePoint.Обратите внимание, что имеется только один список объявлений с именем Announcements.
В верхней части веб-страницы SharePoint выберите ссылку *** Размещение рабочих процессов ***.
С началом новый раздел рабочего процесса, выберите ссылку AnnouncementBackup – Workflow1.При этом запустится рабочий процесс сайта и выполнится код в пользовательском действии.
На панели быстрого Запуска, выберите ссылку *** объявления резервные ***.Обратите внимание, что в этот список скопированы все объявления, содержавшиеся в списке Announcements.
См. также
Задачи
Практическое руководство. Создание приемника событий