Пошаговое руководство. Создание рабочего процесса с формами связывания и запуска
В этом пошаговом руководстве демонстрируется создание простейшего последовательного рабочего процесса, в котором используются формы связывания и запуска.Это ASPX-формы, позволяющие добавлять в рабочий процесс параметры, когда администратор SharePoint впервые выполняет его связывание (форма связывания) и когда пользователь запускает рабочий процесс (форма запуска).
В этом пошаговом руководстве рассматривается сценарий, в котором пользователю требуется создать рабочий процесс утверждения отчетов по затратам с учетом следующих требований.
Когда рабочий процесс связывается со списком, администратору отображается форма связывания, в которой требуется ввести денежный лимит для отчетов о расходах.
Сотрудники загружают свои отчеты о затратах в список "Общие документы", запускают рабочий процесс и вводят общую сумму затрат в форме запуска рабочего процесса.
Если общая сумма затрат в отчете сотрудника превышает лимит, заданный администратором, для руководителя этого сотрудника создается задача по утверждению отчета.Впрочем, если общая сумма затрат не превышает заданный лимит, в списке журнала рабочего процесса создается запись об автоматическом утверждении.
В данном пошаговом руководстве рассмотрены следующие задачи:
Создание проекта определения списка последовательного рабочего процесса SharePoint в Visual Studio.
Создание расписания рабочего процесса.
Обработка событий действий рабочего процесса.
Создание форм связывания и запуска рабочего процесса.
Связывание рабочего процесса.
Запуск рабочего процесса вручную.
![]() |
---|
В этом руководстве рассматривается проект последовательного рабочего процесса, однако инструкции для рабочего процесса конечного автомата аналогичны. Кроме того, отображаемые на компьютере имена и расположения некоторых элементов пользовательского интерфейса Visual Studio могут отличаться от указанных в следующих инструкциях.Эти элементы определяются используемой версией и параметрами настройки Visual Studio.Дополнительные сведения см. в разделе Параметры Visual Studio. |
Обязательные компоненты
Ниже приведены компоненты, необходимые для выполнения данного пошагового руководства.
Поддерживаемые выпуски Microsoft Windows и SharePoint.Дополнительные сведения см. в разделе Требования по разработке решений SharePoint;
Visual Studio.
Создание проекта последовательного рабочего процесса SharePoint
Сначала необходимо создать проект последовательного рабочего процесса в Visual Studio.Последовательный рабочий процесс представляет собой последовательность действий, выполняемых поочередно до завершения последнего действия.В этой процедуре демонстрируется создание рабочего процесса, применяемого к списку "Общие документы" в SharePoint.Мастер настройки рабочего процесса позволяет связать рабочий процесс либо с определением сайта, либо с определением списка, а также определить точку начала его выполнения.
Создание проекта последовательного рабочего процесса SharePoint
В строке меню выберите Файл, Создать, Проект для отображения диалогового окна Создать проект.
Разверните узел SharePoint под или *** Visual C# *** или Visual Basic, а затем выберите узел 2010.
В панели Шаблоны выберите шаблон проекта Проект SharePoint 2010.
В окне Имя введите ExpenseReport, а затем кнопку ОК.
Появится окно Мастер настройки SharePoint.
На странице Укажите сайт и уровень безопасности для отладки выберите переключатель Развернуть как решение фермы, а затем нажмите кнопку Готово для принятия уровень доверия и по умолчанию сайт.
На этом этапе для решения также задается уровень доверия "решение фермы" — единственно возможный вариант для проектов рабочего процесса.
В Обозреватель решений выберите узел проекта.
В строке меню выберите Проект, Добавление нового элемента.
В группе или *** Visual C# *** или Visual Basic разверните узел SharePoint, а затем выберите узел 2010.
В панели Шаблоны выберите шаблон *** Последовательный рабочий процесс (решение фермы) ***, а затем нажмите кнопку Добавить.
Появится окно Мастер настройки SharePoint.
На странице Имя рабочего процесса для отладки нажмите кнопку "Далее", чтобы принять имя по умолчанию (ExpenseReport - Workflow1).Для типа шаблона рабочего процесса оставьте значение по умолчанию (Рабочий процесс списка).Нажмите кнопку Далее.
На странице Будет ли Visual Studio автоматически связывать рабочий процесс в сеансе отладки? снимите флажок, который автоматически связывает шаблон рабочего процесса, если установлен.
В результате можно будет вручную связать рабочий процесс со списком "Общие документы" на более позднем этапе (при этом откроется форма связывания рабочего процесса).
Нажмите кнопку Готово.
Добавление формы связывания в рабочий процесс
Теперь создайте форму связывания (ASPX-файл), отображаемую, когда администратор сайта SharePoint впервые связывает рабочий процесс с документом отчета о затратах.
Добавление формы связывания в рабочий процесс
Выберите узел Workflow1 в Обозреватель решений.
В строке меню выберите Проект, Добавление нового элемента для отображения диалогового окна Добавление нового элемента.
В представлении в виде дерева диалогового окна или *** Visual C# *** или Visual Basic (в зависимости от языка проекта) разверните узел SharePoint, а затем выберите узел 2010.
В списке шаблонов выберите шаблон Форма сопоставления рабочего процесса.
В текстовом поле Имя введите ExpenseReportAssocForm.aspx.
Нажмите кнопку Добавить, чтобы добавить форму в проект.
Разработка и программирование формы связывания
В этой процедуре показана реализация функциональных возможностей формы с помощью элементов управления и кода.
Разработка и программирование формы связывания
В форме связывания (файл ExpenseReportAssocForm.aspx) найдите элемент asp:Content с ID="Main".
После первой строки этого элемента содержимого добавьте следующий код, обеспечивающий создание метки и вывод текстового поля, в котором запрашивается лимит утверждаемой суммы затрат (AutoApproveLimit):
<asp:Label ID="lblAutoApproveLimit" Text="Auto Approval Limit:" runat="server" /> <asp:TextBox ID="AutoApproveLimit" runat="server" /> <br /><br />
Разверните файл ExpenseReportAssocForm.aspx в обозревателе решений, чтобы отобразить для него список зависимых файлов.
Примечание
Если проект в Visual Basic, то нужно выбрать кнопку *** Чтобы Просмотреть все файлы *** выполнить этот шаг.
Открыть контекстное меню, и выберите Перейти к коду файл ExpenseReportAssocForm.aspx.
Замените метод GetAssociationData следующим кодом.
Private Function GetAssociationData() As String ' TODO: Return a string that contains the association data that ' will be passed to the workflow. Typically, this is in XML ' format. Return Me.AutoApproveLimit.Text End Function
private string GetAssociationData() { // TODO: Return a string that contains the association data that // will be passed to the workflow. Typically, this is in XML // format. return this.AutoApproveLimit.Text; }
Добавление формы запуска в рабочий процесс
Теперь необходимо создать форму запуска, отображаемую, когда пользователь запускает рабочий процесс для отчета о затратах.
Создание формы запуска
Выберите узел Workflow1 в Обозреватель решений.
В строке меню выберите Проект, отображение Добавление нового элемента диалоговое окно Добавление нового элемента.
В представлении в виде дерева диалогового окна или *** Visual C# *** или Visual Basic (в зависимости от языка проекта) разверните узел SharePoint, а затем выберите узел 2010.
В списке шаблонов выберите шаблон Форма запуска рабочего процесса.
В текстовом поле Имя введите ExpenseReportInitForm.aspx.
Нажмите кнопку Добавить, чтобы добавить форму в проект.
Разработка и программирование формы запуска
Теперь необходимо реализовать функциональные возможности формы запуска, добавив в нее элементы управления и код.
Написание кода для формы запуска
В форме инициализации (ExpenseReportInitForm.aspx) найдите элемент asp:Content, содержащий ID="Main".
После первой строки этого элемента содержимого добавьте следующий код, обеспечивающий создание метки и вывод текстового поля, в котором отображается лимит утверждаемой суммы (AutoApproveLimit), указанный в форме связывания, и еще одну метку и текстовое поле, в котором запрашивается ввод общей суммы расходов (ExpenseTotal):
<asp:Label ID="lblAutoApproveLimit" Text="Auto Approval Limit:" runat="server" /> <asp:TextBox ID="AutoApproveLimit" ReadOnly="true" runat="server" /> <br /><br /> <asp:Label ID="lblExpenseTotal" Text="Expense Total:" runat="server" /> <asp:TextBox ID="ExpenseTotal" runat="server" /> <br /><br />
Разверните файл ExpenseReportInitForm.aspx в обозревателе решений, чтобы отобразить для него список зависимых файлов.
Открыть контекстное меню, и выберите Перейти к коду файл ExpenseReportInitForm.aspx.
Замените метод Page_Load кодом из следующего примера.
Protected Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs) Handles Me.Load InitializeParams() Me.AutoApproveLimit.Text = workflowList.WorkflowAssociations(New Guid(associationGuid)).AssociationData ' Optionally, add code here to pre-populate your form fields. End Sub
protected void Page_Load(object sender, EventArgs e) { InitializeParams(); this.AutoApproveLimit.Text = workflowList.WorkflowAssociations[new Guid(associationGuid)].AssociationData; }
Замените метод GetInitiationData кодом из следующего примера.
' This method is called when the user clicks the button to start the workflow. Private Function GetInitiationData() As String Return Me.ExpenseTotal.Text ' TODO: Return a string that contains the initiation data that ' will be passed to the workflow. Typically, this is in XML ' format. Return String.Empty End Function
// This method is called when the user clicks the button to start the workflow. private string GetInitiationData() { // TODO: Return a string that contains the initiation data that // will be passed to the workflow. Typically, this is in XML // format. return this.ExpenseTotal.Text; }
Настройка рабочего процесса
Теперь необходимо настроить рабочий процесс.В дальнейшем предстоит связать с ним две формы.
Настройка рабочего процесса
Отобразить рабочий процесс в конструкторе рабочих процессов, открыв Workflow1 в проекте.
В Панель элементов разверните узел *** рабочий процесс v3.0 окон *** и найдите действие IfElse.
Добавьте это действие в рабочий процесс, выполнив одно из следующих действий:
Открыть контекстное меню для действия IfElse выберите Копировать открыть контекстное меню для *** onWorkflowActivated1 *** линии под действием в конструкторе рабочих процессов, а затем выберите Вставить.
Перетащите действие IfElse из Панель элементов и подключите его к *** onWorkflowActiviated1 *** линии под действием в конструкторе рабочих процессов.
На панели элементов разверните узел Рабочий процесс SharePoint и найдите действие CreateTask.
Добавьте это действие в рабочий процесс, выполнив одно из следующих действий:
Открыть контекстное меню для действия CreateTask выберите Копировать открыть контекстное меню для одной из областей *** Действия в *** 2 в действии IfElseActivity1 в конструкторе рабочих процессов, а затем выберите Вставить.
Перетащите действие CreateTask из Панель элементов в одну из областей *** Действия в *** 2 в действии IfElseActivity1.
В окне Свойства задайте свойству CorrelationToken значение taskToken.
Разверните свойство CorrelationToken, выбрав знак плюса (
) рядом с ним.
Нажмите стрелку раскрывающегося меню на свойстве sub OwnerActivityName и задайте значение Workflow1.
Выберите свойство TaskId, а затем нажмите кнопку с многоточием (
) для отображения диалогового окна *** свойство привязки ***.
Выберите вкладку *** Привязка к новому члену *** выберите переключатель *** Создать поле ***, а затем нажмите кнопку ОК.
выберите свойство TaskProperties, а затем нажмите кнопку с многоточием (
) для отображения диалогового окна *** свойство привязки ***.
Выберите вкладку *** Привязка к новому члену *** выберите переключатель *** Создать поле ***, а затем нажмите кнопку ОК.
В Панель элементов разверните узел Рабочий процесс SharePoint и найдите действие LogToHistoryListActivity.
Добавьте это действие в рабочий процесс, выполнив одно из следующих действий:
Открыть контекстное меню для действия LogToHistoryListActivity выберите Копировать открыть контекстное меню для другой области *** Действия в *** в действии IfElseActivity1 в конструкторе рабочих процессов, а затем выберите Вставить.
Перетащите действие LogToHistoryListActivity из Панель элементов и удалите его в другую область *** Действия в *** в действии IfElseActivity1.
Добавление кода в рабочий процесс
Теперь добавьте в рабочий процесс код, реализующий функциональные возможности.
Добавление кода в рабочий процесс
Открыть контекстное меню для действия в конструкторе рабочих процессов createTask1, а затем выберите Перейти к коду.
Добавьте следующий метод:
Private Sub createTask1_MethodInvoking(ByVal sender As System.Object, ByVal e As System.EventArgs) createTask1_TaskId1 = Guid.NewGuid createTask1_TaskProperties1.AssignedTo = "somedomain\\someuser" createTask1_TaskProperties1.Description = "Please approve the expense report" createTask1_TaskProperties1.Title = "Expense Report Approval Needed" End Sub
private void createTask1_MethodInvoking(object sender, EventArgs e) { createTask1_TaskId1 = Guid.NewGuid(); createTask1_TaskProperties1.AssignedTo = "somedomain\\someuser"; createTask1_TaskProperties1.Description = "Please approve the expense report"; createTask1_TaskProperties1.Title = "Expense Report Approval Needed"; }
Примечание
В этом коде замените somedomain\\someuser на имя домена и пользователя, для которых создается задача, например Office\\JoeSch.Для тестирования проще всего использовать учетную запись, используемую при разработке.
Добавьте следующий пример кода после метода MethodInvoking:
Private Sub checkApprovalNeeded(ByVal sender As Object, ByVal e As ConditionalEventArgs) Dim approval As Boolean = False If (Convert.ToInt32(workflowProperties.InitiationData) > Convert.ToInt32(workflowProperties.AssociationData)) Then approval = True End If e.Result = approval End Sub
private void checkApprovalNeeded(object sender, ConditionalEventArgs e) { bool approval = false; if (Convert.ToInt32(workflowProperties.InitiationData) > Convert.ToInt32(workflowProperties.AssociationData)) { approval = true; } e.Result = approval; }
В конструкторе рабочих процессов, выберите действие ifElseBranchActivity1.
В окне Свойства выберите стрелку раскрывающегося меню свойства Условие, а затем установите значение Code Condition.
Разверните свойство Условие, выбрав знак плюса (
) рядом с ним и задайте ему значение checkApprovalNeeded.
В конструкторе рабочих процессов, открыть контекстное меню для действия logToHistoryListActivity1, а затем выберите *** Создание обработчиков событий ***, чтобы создать пустой метод для события MethodInvoking.
Замените код MethodInvoking следующим.
Private Sub logToHistoryListActivity1_MethodInvoking(ByVal sender As System.Object, ByVal e As System.EventArgs) Me.logToHistoryListActivity1.HistoryOutcome = ("Expense was auto approved for " + workflowProperties.InitiationData) End Sub
private void logToHistoryListActivity1_MethodInvoking(object sender, EventArgs e) { this.logToHistoryListActivity1.HistoryOutcome = "Expense was auto approved for " + workflowProperties.InitiationData; }
Выберите ключ F5 для отладки программы.
Для приложения будет выполнена компиляция, затем развертывание, активация его компонентов, утилизация пула приложений IIS и запуск веб-браузера, в котором откроется адрес, заданный в свойстве URL-адрес сайта.
Связывание рабочего процесса со списком документов
Затем откройте форму связывания рабочего процесса, связав его со списком Общиедокументы на сайте SharePoint.
Связывание рабочего процесса
Выберите ссылку Общие документы на панели быстрого Запуска.
Выберите ссылку Библиотека на вкладке *** средства библиотеки *** а затем нажмите кнопку *** параметры библиотеки *** ленты.
В разделе *** Разрешения и управление ими *** выберите ссылку *** параметры рабочего процесса *** а затем выберите ссылку *** добавьте рабочий процесс *** на странице Рабочие процессы.
В верхнем списке в области параметры рабочего процесса, вызовите выберите шаблон *** ExpenseReport - Workflow1 ***.
В следующем поле введите ExpenseReportWorkflow а затем кнопку Далее.
Рабочий процесс будет связан со списком Общие документы, и отобразится форма связывания рабочего процесса.
В текстовом поле *** ограничение автоутверждения *** введите 1200, а затем нажмите кнопку *** Связывание рабочего процесса ***.
Запуск рабочего процесса
Теперь необходимо связать рабочий процесс с одним из документов в списке Общие документы, чтобы открыть форму запуска рабочего процесса.
Запуск рабочего процесса
На странице SharePoint, нажмите кнопку Главная.
Выберите ссылку Общие документы на панели быстрого Запуска для отображения списка Общие документы.
Выберите ссылку Документы на вкладке *** средства библиотеки *** вверху страницы, а затем нажмите кнопку Отправить документ на ленте для передачи нового документа в список Общие документы.
В диалоговом окне Отправить документ, нажмите кнопку Обзор выберите любой файл документа, нажмите кнопку Открыть, а затем нажмите кнопку ОК.
Можно изменить параметры для документа в этом диалоговом окне, но оставить их на значения по умолчанию с помощью кнопки Сохранить.
Выберите документ передается нажмите стрелку вниз, которая появляется, а затем выберите элемент Рабочие процессы.
Выберите изображение рядом с ExpenseReportWorkflow.
Откроется форма запуска рабочего процесса.(Обратите внимание, что значение в поле Лимит автоматического утверждения доступно только для чтения, поскольку оно введено в форме связывания.)
В текстовом поле *** Сумма затрат ***, введите 1600, а затем выберите кнопку *** Запустить рабочий процесс ***.
Снова откроется список Общие документы.В элемент, только что запущенный рабочим процессом, добавится столбец ExpenseReportWorkflow со значением Выполнен.
Нажмите стрелку раскрывающегося меню рядом с переданным документом, а затем выберите элемент Рабочие процессы, чтобы отобразить страницу состояния рабочего процесса.Выберите значение Завершено в *** завершенные рабочие процессы ***.Задача указывается в разделе Задачи.
Выберите название задачи отобразить его данные задачи.
Вернитесь к списку Общиедокументы и перезапустите рабочий процесс, используя тот же документ или любой другой.
Введите число на странице инициализации, меньше или равно количеству введенное на страницу ассоциации (1200).
При этом вместо задачи будет создана запись в списке журнала.Она отображается на странице состояния рабочего процесса в разделе Журнал рабочего процесса.Обратите внимание на сообщение в столбце Выходной результат в событии журнала.В ней содержится текст, введенный в событии logToHistoryListActivity1.MethodInvoking, в котором указана автоматически утвержденная сумма.
Следующие действия
Дополнительные сведения о создании шаблонов рабочих процессов см. в следующих разделах:
- Дополнительные сведения о рабочих процессах SharePoint см. в разделе Рабочие процессы в службах Windows SharePoint Services.
См. также
Задачи
Пошаговое руководство. Добавление страницы приложения в рабочий процесс