Создание последовательного рабочего процесса SharePoint с помощью настраиваемого поля утверждения задачи

Аннотация:  в этой статье описывается программное создание и тестирование последовательного рабочего процесса SharePoint.

Дата последнего изменения: 8 июня 2015 г.

Применимо к: Business Connectivity Services | Open XML | SharePoint Designer 2010 | SharePoint Foundation 2010 | SharePoint Online | SharePoint Server 2010 | Visual Studio

В этой статье
Общие сведения о последовательных рабочих процессах
Создание нового семейства веб-сайтов
Создание столбцов и типов контента
Создание последовательного рабочего процесса SharePoint в Visual Studio
Тестирование последовательного рабочего процесса
Заключение
Дополнительные материалы

Применимо к:  Microsoft SharePoint Server 2010 | Microsoft Visual Studio 2010

Автор:  Джастин Джойс (Justin Joyce) из компании LANtek Computer Services (Возможно, на английском языке)

Содержание

  • Общие сведения о последовательных рабочих процессах

  • Создание нового семейства веб-сайтов

  • Создание столбцов и типов контента

  • Создание последовательного рабочего процесса SharePoint в Visual Studio

  • Тестирование последовательного рабочего процесса

  • Заключение

  • Дополнительные материалы

Общие сведения о последовательных рабочих процессах

Последовательные рабочие процессы Microsoft SharePoint Server 2010, разработанные в Microsoft Visual Studio 2010, позволяют создавать мощные средства оптимизации бизнес-процессов и утверждений задач. Ключевым компонентом проектирования эффективного и производительного рабочего процесса с целью приведения его как можно ближе к бизнес-процессу является расширение, как с точки зрения логической функциональности, так и взаимодействия с пользователями. Центральное место в этом занимает использование языка и проверки входных данных, которые точно отражают последовательную процедуру и соответствуют ожиданиям конечных пользователей.

Для иллюстрации такого типа функциональности в этой статье демонстрируется создание последовательного рабочего процесса SharePoint 2010 в Visual Studio 2010, который останавливает выполнение задач до того, как текст в поле элемента списка превысит 100 символов. Кроме того, этот рабочий процесс использует настраиваемое поле утверждения в задаче рабочего процесса. Вместо стандартного текста Примечание начато, Завершено или Выполняется, содержащегося во встроенном поле Состояние, задача добавляет поле Бизнес-утверждение, содержащее текст Утверждено или НЕ утверждено. Рабочий процесс программно устанавливает в поле Состояние значение Завершено, когда элемент и задача удовлетворяют необходимым условиям. Если поле описания не заполнено должным образом, то задача возвращается в состояние Выполняется, и рабочий процесс вносит в список журнала запись, что необходимое поле отсутствует.

Создание нового семейства веб-сайтов

На следующем этапе будет создано новое семейство веб-сайтов.

ЗаметкаПримечание

Более подробные инструкции см. в статье Создание семейства сайтов.

Создание нового семейства веб-сайтов

  1. Откройте центр администрирования и щелкните ссылку Управление приложениями в левой области навигации. Откроется домашняя страница управления приложениями.

  2. В разделе Семейства веб-сайтов выберите пункт Создание семейств веб-сайтов.

  3. На странице Создание семейств веб-сайтов убедитесь, что в желтом поле в правом верхнем углу страницы (под кнопками ОК и Отмена) отображается имя нового веб-приложения, созданного на шаге 1.

  4. После выбора правильного веб-приложения введите заголовок. При желании можно оставить поле описания пустым.

  5. В поле Адрес веб-сайта выберите правильный адрес и зафиксируйте его для последующего использования в проекте Visual Studio 2010. Пример правильного адреса — http://имя_сервера:порт/.

  6. В разделе выбора шаблона в поле Выбор шаблона перейдите на вкладку Публикация, а затем выберите пункт Портал публикации. На рисунке 1 показано поле Выбор шаблона.

    Рис. 1. Выбор шаблона сайта

    Выбор шаблона сайта

    Можно использовать и другие типы шаблонов сайтов, но портал публикации поставляется с уже подготовленным списком задач рабочего процесса. Если в вашем экземпляре SharePoint отсутствует шаблон "Портал публикации", можно использовать шаблон "Сайт группы" и подготовить список задач рабочего процесса.

  7. В разделе Главный администратор семейства веб-сайтов введите имя учетной записи Active Directory главного администратора семейства. При желании можно также указать дополнительного администратора семейства веб-сайтов в следующем поле. В параметре Шаблон квоты оставьте значение Без квоты.

  8. Проверьте правильность всех параметров и нажмите кнопку ОК.

Создание столбцов и типов контента

На следующем этапе будут создаваться настраиваемые столбцы, типы контента, настраиваемый список и список задач рабочего процесса.

Создание настраиваемых столбцов

  1. Перейдите в только что созданное семейство веб-сайтов и убедитесь, что сайт существует и запущен.

  2. Когда сайт загрузится, выберите в меню Действия сайта, расположенном в левом верхнем углу, пункт Параметры сайта.

  3. В разделе Коллекции выберите пункт Столбцы сайта.

  4. В левом верхнем углу страницы Столбцы сайта нажмите кнопку Создать, чтобы создать новый столбец вариантов, и присвойте ему имя Бизнес-утверждение.

  5. С точки зрения формата этот столбец должен стать раскрывающимся списком со следующими значениями:

    • Не решено (значение по умолчанию)

    • Утверждено

    • НЕ утверждено

    Значением по умолчанию должно остаться Не решено (значение по умолчанию), в качестве группы должно быть выбрано Настраиваемые столбцы, поле описания заполнять не требуется.

  6. Теперь создайте другой столбец сайта, который будет использоваться в качестве поля описания, которое должно быть заполнено для продолжения работы рабочего процесса. Назовите это поле Описание запроса; в качестве его формата должно быть указано многострочное текстовое поле.

  7. Чтобы конечному пользователю было понятнее, введите в этом поле описание, указывающее, что оно должно быть длиннее 100 символов.

Теперь, после создания полей, необходимо создать два типа контента, которые будут использоваться во время выполнения рабочего процесса. В следующем разделе будут создаваться нестандартные типы контента.

Создание нестандартных типов контента

  1. В меню Действия сайта выберите пункт Параметры сайта.

  2. В разделе Коллекции нажмите кнопку Типы контента сайта .

  3. Нажмите кнопку Создать в левом верхнем углу страницы, чтобы создать новый тип контента и назовите его Исходный запрос.

  4. В разделе Родительский тип контента в поле Выберите родительский тип контента установите значение Типы контента списка, а в поле Родительский тип контента установите значение Элемент, как показано на рисунке 2.

    Рис. 2. Создание нового типа контента

    Создание нового типа контента

  5. В разделе Размещать этот тип контента сайта в выберите Настраиваемые типы контента и нажмите кнопку ОК. Появится окно управления типами контента.

  6. Выберите параметр Добавить из существующих столбцов сайта, чтобы добавить поле "Описание запроса" в тип контента "Исходный запрос".

  7. После добавления поля "Описание запроса" щелкните его заголовок в разделе Столбцы окна управления типами контента. Появится окно Изменение столбца типов контента; пометьте этот столбец как скрытый, как показано на рисунке 3.

    Рис. 3. Пометка столбца как скрытого

    Пометка столбца как скрытый

  8. Используя приведенные выше действия, создайте второй тип контента с именем "Запрос" и обеспечьте наличие в нем тех же полей. Поскольку столбец "Описание запроса" проверяется с помощью рабочего процесса, сделайте его обязательным полем, чтобы конечному пользователю было понятнее.

  9. Вместо значения "Элемент" в качестве родительского типа контента выберите значение "Исходный запрос".

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

Создание настраиваемого списка

  1. Вернитесь в меню Действия сайта и выберите команду Просмотреть весь контент сайта.

  2. Нажмите кнопку Создать в левом верхнем углу страницы, чтобы открыть диалоговое окно создания.

  3. Найдите шаблон настраиваемого списка (см. рисунок 4) и назовите его Запросы.

    Рис. 4. Поиск шаблона настраиваемого списка

    Поиск настраиваемого шаблона списка

  4. После создания списка добавьте в него настраиваемые типы контента, нажав кнопку Параметры списка на ленте. В разделе Общие параметры выберите пункт Дополнительные параметры.

  5. Для параметра Разрешить управление типами контента установите значение Да, а затем нажмите кнопку ОК, чтобы сохранить изменения.

  6. Чтобы добавить в список типы контента запросов, в разделе Типы контента щелкните ссылку Добавить из существующих типов контента сайта. Найдите типы контента "Исходный запрос" и "Запрос" и добавьте их. Нажмите кнопку ОК, чтобы сохранить изменения.

  7. В разделе Типы контента выберите тип Элемент, а затем щелкните Удалить этот тип контента, чтобы удалить его из списка. Останутся только два настраиваемых типа контента.

  8. Наконец, выберите пункт Изменить порядок новых кнопок и типа контента по умолчанию и снимите флажок Видимый рядом с типом контента "Запрос", как показано на рисунке 5. Это действие ограничивает пользователей созданием только типа "Исходный запрос" при добавлении новых элементов списка.

    Рис. 5. Задание для списка типа контента по умолчанию

    Указание типа контента по умолчанию для списка

На следующем этапе будет создаваться список задач рабочего процесса. Если выбран шаблон, отличный от портала публикации, необходимо создать на сайте список задач рабочего процесса. Если используется шаблон портала публикации, можно перейти к разделу Создание последовательного рабочего процесса SharePoint в Visual Studio.

Создание списка задач рабочего процесса

  1. Вернитесь в меню Действия сайта и выберите команду Просмотреть весь контент сайта.

  2. Нажмите кнопку Создать в левом верхнем углу страницы и найдите шаблон задач, как показано на рисунке 6.

    Рис. 6. Поиск шаблона списка "Задачи"

    Поиск шаблона списка "Задачи"

  3. Дайте новому списку имя Задачи рабочего процесса и нажмите кнопку Создать в правом столбце (см. рисунок 7).

    Рис. 7. Присвоение имени и создание списка задач рабочего процесса

    Создание списка "Задачи рабочих процессов" и присвоение ему имени

Создание последовательного рабочего процесса SharePoint в Visual Studio

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

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

  1. Запустите Visual Studio 2010. В левом верхнем углу начальной страницы нажмите кнопку Создать проект.

  2. В разделе Visual C# дерева Установленные шаблоны выберите SharePoint.

  3. В списке типов проектов выберите пункт Последовательный рабочий процесс.

  4. Создайте для решения новый каталог и назовите его CustomTaskApproval, как показано на рисунке 8.

    Рис. 8. Создание нового проекта последовательного рабочего процесса SharePoint

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

  5. После создания проекта отображается мастер настройки SharePoint. На первой странице используйте URL-адрес ранее созданного семейства веб-сайтов в качестве локального сайта для отладки. Убедитесь, что установлено развертывание решения в качестве решения фермы (см. рисунок 9), а затем нажмите кнопку Далее.

    Рис. 9. Запуск мастера настройки SharePoint

    Запуск мастера настройки SharePoint

  6. На следующей странице мастера настройки SharePoint введите имя рабочего процесса; в данном случае укажите CustomTaskApproval - Workflow1, как показано на рисунке 10.

    Рис. 10. Выбор имени и типа рабочего процесса

    Выбор имени и типа рабочего процесса

  7. В качестве типа шаблона выберите Рабочий процесс списка и нажмите кнопку Далее.

  8. На следующей странице мастера настройки SharePoint Visual Studio 2010 автоматически связывает рабочий процесс со списком "Запросы" (см. рисунок 11). Оставьте значения по умолчанию для списка журнала и списка задач.

    Рис. 11. Настройка целевого списка, а также списков задач и журнала для рабочего процесса

    Настройка целевого списка и задания и списка журнала

  9. На последней странице настройки убедитесь, что выбран только параметр Рабочий процесс запускается автоматически при создании элемента, как показано на рисунке 12.

    Рис. 12. Выбор параметров запуска рабочего процесса

    Выбор параметров запуска рабочего процесса

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

    ЗаметкаПримечание

    По умолчанию Visual Studio добавляет в рабочую область конструирования событие onWorkflowActivated1. Это событие не используется в данном примере, однако его можно оставить в рабочей области конструирования.

    Перетащите с панели инструментов в рабочую область конструирования следующие действия.

    • Code. Назовите это действие InitializeItem. Действие Code отвечает за изменения и проверки элемента при его первоначальном появлении в рабочем процессе.

    • CreateTask. Назовите это действие createRequestTask. Действие CreateTask отвечает за задание некоторых свойств при первоначальном создании задачи, например за описание, какому пользователю назначена эта задача, и т. п.

    • While. Это действие содержит другое действие, которое следит за изменением задачи. Зависит от условия кода (об этом чуть позже).

    • OnTaskChanged. Назовите это действие onRequestTaskChanged. Действие OnTaskChanged отвечает за мониторинг задачи и следит, чтобы любое изменение, внесенное пользователем в задачу, удовлетворяло правилам проверки — в данном случае, чтобы описание содержало более 100 символов, и чтобы настраиваемое поле утверждения было установлено правильно.

    • CompleteTask. Назовите это действие completeRequestTask. Разместите его непосредственно после действия While. Это действие отвечает за обработку фактического завершения задачи, т. е. за установку значения Завершено во встроенном поле состояния.

    После размещения всех этих действий рабочая область конструирования должна выглядеть так, как показано на рисунке 13.

    Рис. 13. Действия рабочего процесса в рабочей области конструирования

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

  11. Теперь создайте свойства для действий и маркеры корреляции привязки. Свойства сначала необходимо создать в коде программной части следующим образом:

    public Guid workflowId = default(System.Guid);
    public SPWorkflowActivationProperties workflowProperties = new SPWorkflowActivationProperties();
    
    // these properties are for the workflow task that will be created.
    public SPWorkflowTaskProperties RequestTaskProperties = new SPWorkflowTaskProperties();
    public SPWorkflowTaskProperties RequestTaskBeforeProperties = new SPWorkflowTaskProperties();
    public Guid RequestApproveTaskId = default(Guid);
    public int RequestApproveTaskItemId;
    public bool RequestApproveComplete = false;
    

Теперь сопоставьте маркеры корреляции с соответствующими действиями, выполнив следующие шаги.

Сопоставление маркеров корреляции с соответствующими действиями

  1. Для действия onWorkflowActivated1 создайте новый маркер корреляции с именем workflowToken. Установите для этого маркера корреляции действие-владелец Workflow1. В более сложном проекте этот маркер может использоваться для гораздо большего числа действий и событий в рабочей области конструирования, но в данном случае он используется только для этого действия. Действия задачи должны совместно использовать свои собственные маркеры корреляции, чтобы гарантировать, что они работают в рамках одной задачи.

  2. Для действий createRequestTask, onRequestTaskChanged и completeRequestTask создайте маркер корреляции с именем RequestTaskToken и действием OwnerActivity рабочего процесса Workflow1. Это можно сделать, введя его в поле CorrelationToken области свойств для первого события задачи, а затем выбрав его для других действий.

    На рисунке 14 показывается, как выглядит область свойств для действия createRequestTask.

    Рис. 14. Задание свойств действия

    Определение свойств действия

  3. Назначьте правильные общие члены из кода программной части полям ListItemId, TaskId и TaskProperties, щелкнув действие в рабочей области конструирования, а затем выбрав имя свойства в области свойств. Щелкнув многоточие (), выберите член на вкладке Привязка к существующему члену, а затем нажмите кнопку ОК.

    Это придется сделать для каждого действия задачи в рабочей области конструирования, чтобы все они имели один и тот же маркер корреляции и правильно назначенные общие члены. Общие члены несколько отличаются для каждого из событий задачи. Например, onRequestTaskChanged добавляет атрибут BeforeProperties, а для completeRequestTask требуется только TaskId (см. рисунок 15).

    Рис. 15. Привязка свойства действия к существующему члену

    Связывание свойства действия с существующим членом

Теперь, после соответствующей установки всех маркеров корреляции и свойств, необходимо выполнить генерацию связанных методов.

Генерация подписей методов и добавление кода

  1. Дважды щелкните каждое действие в рабочей области конструирования. Visual Studio 2010 автоматически отображает код и создает подпись метода, необходимую для каждого из действий. Исключением является действие While — этот метод следует создать вручную.

  2. Создайте связанный метод для действия While, добавив следующий код:

    private void notRequestTaskApproved(object sender, ConditionalEventArgs e)
    {
        e.Result = !RequestApproveComplete;
    }
    

    В области свойств для действия While установите для атрибута Condition значение Условие кода, а для атрибута Condition, содержащегося в нем, значение notRequestTaskApproved, как показано на рисунке 16. В результате действие While будет продолжать выполняться в цикле, пока метод не возвратит соответствующий ответ.

    Рис. 16. Задание свойства "Условие кода" для действия While

    Присвоение свойства Code Condition для whileActivity

  3. Теперь добавьте следующие два вспомогательных метода:

    private void ResestTask(SPListItem task, SPListItem currentItem, string message)
    {
        LogComment(message + currentItem.Title);
    
        // This line is very important. It keeps you from receiving 
        // the error "This task is currently locked by a running workflow."
        task[SPBuiltInFieldId.WorkflowVersion] = 1;
        task["Status"] = "In Progress";
        task["Business Approval"] = "Undecided";
        task.Update();
    }
    
    private void LogComment(string logMessage)
    {
        SPWorkflow.CreateHistoryEvent(workflowProperties.Web, this.WorkflowInstanceId, 0, workflowProperties.Web.CurrentUser, new TimeSpan(), "Update", logMessage, string.Empty);
    }
    

    Первый вспомогательный метод, ResetTask, вызывается только в том случае, когда задача должна вернуться в состояние In Progress, например, когда пользователь пытается завершить ее до заполнения обязательного поля описания в элементе списка. Этот метод отката необходим в решении рабочего процесса, чтобы предотвратить ошибку Эта задача сейчас заблокирована выполняющимся рабочим процессом, которая возникает, когда задача откатывается в состояние In Progress посредством кода, если пользователь снова пытается изменить ее позднее. Данное сообщение об ошибке относится к версии рабочего процесса в элементе задачи; следовательно, явно установите свойство WorkflowVersion в значение 1.

    Второй метод — это простая функция ведения журнала, которая вводит обновления в список Workflow History.

  4. После соответствующей настройки проекта рабочего процесса можно начать заполнение логики для связанных методов в файле кода программной части. Добавьте в метод InitializeItem_ExecuteCode следующий код:

    private void InitializeItem_ExecuteCode(object sender, EventArgs e)
    {
        // Change the content type from Initial Request to simply Request.
    
        // This change makes Request Description a required field.
        SPListItem currentItem = workflowProperties.Item;
    
        currentItem["ContentTypeId"] = workflowProperties.List.ContentTypes["Request"].Id;
        currentItem.Update();
    }
    

    После ввода запроса он принимается рабочим процессом на этапе создания элемента. Список настроен таким образом, что пользователям разрешено вводить запросы только с типом контента Исходный запрос, и теперь рабочий процесс может изменить тип контента элемента на Запрос. Изменение типа элемента на Запрос позволяет отображать поле Описание запроса в форме изменения как обязательное поле.

  5. Теперь добавьте следующий код в метод createRequestTask_MethodInvoking. В этом фрагменте устанавливаются все применимые свойства для задачи рабочего процесса.

    private void createRequestTask_MethodInvoking(object sender, EventArgs e)
    {
        // Now create the approval task.
        SPListItem currentItem = workflowProperties.Item;
    
        // Set up some of the properties.
        RequestApproveTaskId = Guid.NewGuid();
        RequestTaskProperties.Title = workflowProperties.Item["Title"].ToString() + " is ready for review";
        RequestTaskProperties.Description = "Please review the request and ensure it is valid.  If it is valid, then please select 'I Approve' on this task and save it.";
        LogComment("Request Task Created.");
    }
    
  6. Теперь добавьте следующий код в метод onRequestTaskChanged_Invoked:

    private void onRequestTaskChanged_Invoked(object sender, ExternalDataEventArgs e)
    {
        int tid = onRequestTaskChanged.AfterProperties.TaskItemId;
        SPListItem task = workflowProperties.Web.Lists["Workflow Tasks"] .GetItemById(RequestApproveTaskItemId);
    
        SPListItem currentItem = workflowProperties.Item;
    
        try
        {
            // Ensure the field exists on the item.
            if (task["Business Approval"] != null && currentItem["Request Description"] != null)
            {
                // Evaluate the value of the field.
                    if (task["Business Approval"].ToString() == "I Approve" || task["Business Approval"].ToString() == "I Do NOT Approve")
                        {
                            if (currentItem["Request Description"].ToString().Length >= 100)
                            {
                                RequestApproveComplete = true;
                            }
                            else
                            {
                                RequestApproveComplete = false;
                                ResestTask(task, currentItem, "Request Description is not long enough.");
                            }
                        }
                        else
                        {
                            RequestApproveComplete = false;
                            ResestTask(task, currentItem, "Business Approval is not set.");
                        }
            }
            else
            {
                // This should never happen because there is a default, but always good just in case.
                RequestApproveComplete = false;
                ResestTask(task, currentItem, "Business Approval status is null or no Request Description.");
            }
        }
        catch (Exception ex)
        {
            RequestApproveComplete = false;
            ResestTask(task, currentItem, "Exception.");
            LogComment(ex.ToString());
        }
    }
    

    Этот метод выполняет оценку элемента Request, а также проверяет правильность заполнения поля Описание запроса и пометку связанной задачи рабочего процесса правильным кодом состояния. Если все условия выполняются, то RequestApproveComplete возвращает значение True, что приводит к завершению действия While.

  7. Наконец, добавьте следующий код в действие completeRequestTaskApproved:

    private void completeRequestTask_MethodInvoking(object sender, EventArgs e)
    {
        // Grab the task item so the workflow can complete it.
        SPListItem task = workflowProperties.Web.Lists["Workflow Tasks"] .GetItemById(RequestApproveTaskItemId);
    
        // This line is very important. It keeps you from receiving 
        // the error "This task is currently locked by a running workflow."
        task[SPBuiltInFieldId.WorkflowVersion] = 1;
        task["Status"] = "Completed";
        task.SystemUpdate(false);
    
        SPListItem currentItem = workflowProperties.Item;
        if (task["Business Approval"].ToString() == "I Do NOT Approve")
        {
            string currentTitle = workflowProperties.Item["Title"].ToString();
            workflowProperties.Item["Title"] = "DECLINED: " + currentTitle;
            workflowProperties.Item.Update();
        }
        else
        {
            string currentTitle = workflowProperties.Item["Title"].ToString();
            workflowProperties.Item["Title"] = "APPROVED: " + currentTitle;
            workflowProperties.Item.Update();
        }
    }
    

    Как можно заметить, задается версия рабочего процесса, чтобы предотвратить блокирование задачи, когда обновление выполняется из кода. Рабочий процесс устанавливает встроенное поле Status в значение Completed, что завершает задачу. Затем выполняется быстрая оценка состояния задачи (утвержденная или отклоненная задача), и элемент соответствующим образом обновляется, чтобы отразить конкретное решение.

На последнем этапе процесса выполняется настройка настраиваемого поля Business Approval в типе контента Задача рабочего процесса.

Выполнение окончательной настройки сайта для настраиваемого поля утверждения задачи

  1. Перед изменением полей, связанных с задачей рабочего процесса, ее необходимо добавить в список задач рабочего процесса. Выберите в меню ОтладкаVisual Studio 2010 команду Начать отладку или нажмите клавишу F5, как показано на рисунке 17. В результате появится новое окно браузера, и отладчик будет подключен к процессу w3wp.

    Рис. 17. Запуск рабочего процесса в режиме отладки

    Запуск рабочего процесса в режиме отладки

  2. Когда сайт загрузится, перейдите в список запросов и создайте элемент. В результате тип контента Задача рабочего процесса будет автоматически добавлен в список Задачи рабочего процесса. Чтобы проверить это, в меню Действия сайта выберите команду Просмотреть весь контент сайта. Выберите список Задачи рабочего процесса, а затем выберите пункт Параметры списка.

    На странице Параметры списка должен присутствовать тип контента Задача рабочего процесса в списке типов контента, как показано на рисунке 18.

    Рис. 18. Просмотр типов контента в списке задач рабочего процесса

    Просмотр типов контента в списке "Задачи рабочих процессов"

  3. Щелкните тип контента Задача и с помощью пункта Удалить этот тип контента удалите его из списка задач рабочего процесса. Повторите эту процедуру с типом контента Суммарная задача.

  4. Теперь щелкните тип контента Задача рабочего процесса, чтобы перейти на страницу параметров.

  5. Щелкните поле Состояние и в поле Параметры столбца измените значение Необязательный на значение Скрытый. Нажмите кнопку ОК, чтобы сохранить изменения.

  6. На странице параметров для типа контента Задача рабочего процесса в разделе Столбцы выберите пункт Добавить из существующих столбцов сайта или списка.

  7. Найдите в списке столбец Бизнес-утверждение и дважды щелкните его, чтобы переместить его в список Столбцы для добавления (см. рисунок 19). Нажмите кнопку ОК, чтобы сохранить изменения.

    Рис. 19. Добавление настраиваемых столбцов в тип контента "Задача рабочего процесса"

    Добавление настраиваемых столбцов в тип "Задача рабочего процесса"

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

В этом разделе будет выполняться тестирование рабочего процесса (путем создания запроса и его последующего обновления для просмотра результатов).

Создание запроса

  1. В списке Запросы щелкните ссылку Добавить новый элемент в левом нижнем углу представления списка. Появится диалоговое окно Создание элемента, как показано на рисунке 20.

    Рис. 20. Страница создания нового элемента для списка запросов

    Экран нового элемента для списка запросов

  2. Укажите заголовок для запроса и нажмите кнопку Сохранить.

  3. Связанная задача создается рабочим процессом в списке Задачи рабочего процесса. Чтобы просмотреть эту задачу, в меню Действия сайта выберите команду Просмотреть весь контент сайта, а затем выберите список Задачи рабочего процесса в разделе Списки. Задача появится в верхней части главного представления, как показано на рисунке 21.

    Рис. 21. Представление списка созданной задачи

    Представление списка новой созданной задачи

  4. Щелкните заголовок задачи, чтобы отобразить полную форму задачи. Нажмите кнопку Изменить в левом верхнем углу формы, чтобы перевести задачу в режим изменения (см. рисунок 22).

    Рис. 22. Форма изменения задачи рабочего процесса с настраиваемым полем утверждения

    Форма редактирования задачи рабочего процесса с настраиваемым полем для утверждения

    При нажатии кнопки Сохранить со значением Не решено в поле Бизнес-утверждение встроенное поле Состояние получит значение Выполняется, и в журнал рабочего процесса будут занесены следующие сведения (см. рисунок 23).

    Рис. 23. Просмотр списка журнала рабочего процесса

    Просмотр списка журнала рабочего процесса

    Аналогично, если при попытке утвердить или отклонить задачу пропустить поле Описание запроса в элементе списка, то поле Состояние получит значение Выполняется.

  5. Теперь вернитесь в элемент Запрос и измените его. Вы увидите, что поле Описание запроса теперь отображается соответствующим образом. Введите значение длиной более 100 символов (см. рисунок 24) и сохраните изменения. Теперь можно утверждать или отклонять задачу.

    Рис. 24. Форма изменения элемента списка "Запрос"

    Форма редактирования элемента "Список запроса"

  6. Теперь, когда элемент Запрос заполнен должным образом, вернитесь в список Задача рабочего процесса, измените задачу, связанную с элементом Запрос, а затем выберите пункт НЕ утверждено в поле Бизнес-утверждение. В результате этого действия рабочий процесс установит для поля Состояние значение Завершено, как показано на рисунке 25.

    Рис. 25. Просмотр завершенной (и отклоненной) задачи в списке "Задача рабочего процесса"

    Просмотр выполненной задачи в списке задач рабочего процесса

    Изменение в заголовке для элемента Запрос можно увидеть на рисунке 26.

    Рис. 26. Изменение в заголовок, внесенное рабочим процессом для отклоненной задачи

    Изменение рабочим процессом названия отклоненной задачи

    Если задача рабочего процесса утверждена, заголовок элемента Запрос изменяется, чтобы отразить действие утверждения (см. рисунок 27).

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

    Изменение рабочим процессом названия утвержденной задачи

Заключение

Часто бизнес-процессу, с которым вы работаете, требуется более гибкое решение, которое лучше подходит к операции, предоставляемой встроенной функциональностью. В таких случаях необходимо создать свои собственные настраиваемые условия утверждения и проверки для задач в последовательных рабочих процессах SharePoint. Расширение этих методов обеспечивает мощный механизм обеспечения выполнения бизнес-правил и эффективной интеграции с существующими логическими процессами.

Дополнительные материалы

Дополнительные сведения см. в следующих источниках: