Главная SharePoint, Без рубрики, Новое Основы рабочих процессов SharePoint 2010. Часть 2
  • Основы рабочих процессов SharePoint 2010. Часть 2

    sp_designerТрехэтапный рабочий процесс основывается на простом шаблоне и может использоваться с библиотеками или списками. Но все же его недостаточно для реальной автоматизации бизнес-процессов. Поэтому пора поговорить о продукте SharePoint Designer, который дает возможность, создавать без программирования, основанные на правилах рабочие процессы.

     

    Существует три типа рабочих процессов, которые возможно создать через SharePoint Designer:

    1. Рабочие процессы списка. Так же известные как рабочие процессы контента. Создаются для автоматизации задач, связанных с документами, хранящимися в списках и библиотеках.

    2. Рабочие процессы сайта. Это рабочие процессы не связаны с объектами SharePoint, запускаются вручную на уровне сайта.

    3. Многоразовые рабочие процессы. Шаблоны этих рабочих процессов впоследствии могут быть добавлены в библиотеку или список сайта. Изначально вы создаете многоразовые рабочие процессы, ориентируя их на тип содержимого. После чего они публикуются в глобальный каталог рабочих процессов, который делает их доступным в каждом сайте коллекции и видным всем пользователям. Только многоразовые рабочие процессы уровня коллекции сайтов могут публиковаться в глобальный каталог.

    Чтобы создать рабочий процесс, используя SharePoint Designer, вы должны установить .NET Framework 3.5 на ваш компьютер. Если не использовать сервер для разработки процессов, то вам понадобится компьютер с операционной системой Windows 7, Windows Vista или Windows XP. Только Windows 7 имеет установленный изначально .NET Framework 3.5, для других ОС его придется скачивать и устанавливать.

    При создании рабочего процесса с помощью SharePoint Designer вам доступно две страницы настройки:

    Первая – «Параметры рабочего процесса». Используется для просмотра и изменений настроек процесса. Состоит из классической «ленты» и «сердцевины» с настройками.

     

    pic1

    pic2

     

    Сведения о рабочем процессе. Содержит информацию об имени, описании и типе процесса. (процесс списка, сайта или многоразовый). Если при создании был выбран рабочий процесс списка, то в данном блоке так же отображается имя библиотеки или списка, к которой он привязан. Когда создается многоразовый процесс, область отображает тип контента, для которого он создан.

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

    Параметры. Используйте эту область для выбора списков задач и истории, используемых процессом. Для процессов списка и сайта доступна опция визуализации процесса в браузере. К сожалению, в редакции SharePoint Foundation эта опция недоступна, поэтому можно ее не трогать.

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

    Формы. Здесь отображаются страницы, которые SharePoint Designer автоматически создает в процессе публикации. В зависимости от типа рабочего процесса и параметров запуска количество страниц может меняться. Всякий раз, когда рабочий процесс запускается ручками создается начальная страница. Когда вы используете задачи для сбора данных от пользователей, создается специальная страница задач.

     

    Вторая страница – «Редактор рабочего процесса». Эта страница позволяет создавать и изменять рабочий процесс. Каждый рабочий процесс состоит из условий и действий, которые сгруппированы в шаги. Поскольку рабочий процесс может быть довольно большой шаг является объединением нескольких действий и своеобразной вехой.

     

    pic3

     

    «Сохранить\Опубликовать\Поиск ошибок» – данные опции нужны для проверки созданного процесса на наличие ошибок в логике, сохранения его на сайт без возможности использовать конечному пользователю. Публикация так же изначально сохраняет рабочий процесс, но кроме всего прочего делает его доступным для использования.

    «Изменение» – блок опций по удалению, перемещению условий и шагов, а так же их изменению. Действия могут быть перемещены между шагами и в рамках одного шага, а условия можно поднимать и опускать, меняя порядок. Блок условий всегда начинается с оператора «ЕСЛИ», последующие условия в блоке начинаются с операторов «И» или «ИЛИ». Вы не можете копировать и вставлять шаги, условия или действия в рамках рабочего процесса или между рабочими процессами.

    «Вставка» – группа команд позволяющих добавлять условия, действия и шаги. Используйте “Ветвь Else If” для добавления еще одного блока условий, которое должно проверяться, в случае если первое условие не выполняется. (не равно истине) Блок параллельных вычислений необходим, когда вы хотите, чтобы действия выполнялись одновременно, а не поочередно. Параллельные действия не могут быть выполнены абсолютно одновременно. Точный порядок не может быть указан и может изменяться каждый раз, когда рабочий процесс выполняется. И последняя фишка в этом блоке – «Шаг олицетворения», команда добавляет специальный шаг условия, и действия которого выполняются от привилегий автора рабочего процесса.

    «Управление». Группа содержит три команды, первая «Глобальная публикация» публикует «Многоразовый» рабочий процесс в глобальный каталог рабочих процессов. Следующая команда – экспорт в формате Visio (.vwi). И заключительная опция – «Переключения на параметры рабочего процесса», те параметры, которые мы с вами достаточно подробно разбирали в самом начале.

    «Переменные». Переменные – это временные данные, которые сохраняются в течение выполнения процесса. При запуске рабочего процесса вручную «Параметры форм связи и запуска» собирают данные, после чего они могут использоваться рабочим процессом. Эти данные будут доступны только в процессе выполнения конкретного рабочего процесса. Локальные переменные передают значения от одного условия или действия другому условию или действию. Например: Сохранить идентификатора задачи, созданный одним действием так, чтобы последующие действия могли использовать это значение и определить какой человек приступил к задаче. Столбцы связи – команда для многоразового или рабочих процессов списка, используется для добавления столбцов в список или библиотеку, с которой связан рабочий процесс. Просмотрите существующие колонки сайта, прежде чем создавать новую через эту опцию.

     

    Использование условий и действий.

    Каждый рабочий процесс это комбинация условий и действий. Условия используются для создания правил, которые изображают логику рабочего процесса. Действия же это работа выполняемая рабочим процессом. Когда условие срабатывает (Например: Документ, добавленный в библиотеку больше 1 мегабайта), все действия связанные с этим условием начинают выполняться. Чтобы помочь вам наглядно увидеть, какие действия, связаны с какими условиями, редактор рабочих процессов объединяет условия и связанные с ними действия серым прямоугольником. Условие «Если» и «Ветвь Else-If» не могут распространяться на несколько шагов и должны быть завершены в одном действии.

    pic18

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

    SharePoint Designer делит встроенные условия на две категории:

    Общие условия.

    1. Если значение поля текущего элемента равно указанному значению.
    2. Если любое значение равно указанному значению.

    Другие условия.

    1. Изменен в конкретном диапазоне дат.
    2. Изменен конкретным пользователем.
    3. Название содержит ключевые слова.
    4. Пользователь является допустимым пользователем SharePoint
    5. Размер файла находится в конкретном диапазоне килобайт
    6. Создан в конкретном диапазоне дат.
    7. Создан конкретным пользователем.
    8. Файл имеет конкретный тип.

    Достаточно подробное описание всех условий на английском языке можно взять по ссылке: http://office.microsoft.com/en-us/sharepoint-designer-help/workflow-conditions-in-sharepoint-designer-2010-a-quick-reference-guide-HA010376962.aspx

    Действия так же разбиты на категории согласно их области применения в рабочем процессе. Так, действия, влияющие на поведение элементов, принадлежат к категории «Действия со списками», действия, относящиеся к наборам документов, — к категории «Действия с наборами документов», а настраиваемые действия рабочего процесса — к категории «Настраиваемые действия». Категории действий перечислены ниже.

    Основные действия.

    1. Действия с наборами документов, отображаются только в том случае, если рабочий процесс связан с библиотекой или типом контента документов.
    2. Действия со списками.
    3. Действия с отношениями, отображаются только в том случае, если сайт SharePoint работает с сервером SharePoint Server 2010.
    4. Действия с задачами, отображаются только в том случае, если сайт SharePoint работает с сервером SharePoint Server 2010.
    5. Действия управления задачами, отображаются только при настройке задач в предварительно настроенных действиях рабочего процесса, таких как Начать процесс утверждения и Начать процесс сбора отзывов.
    6. Вспомогательные действия.

    Подробное описание всех действий на русском языке можно взять по ссылке: http://office.microsoft.com/ru-ru/sharepoint-designer-help/HA010376961.aspx?CTT=1

     

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

    image

    Сценарий следующий. Необходимо создать несколько списков.

    Teams – настраиваемый список содержащий информацию о департаментах компании. (Таких как IT, Help Desk, HR и.т.д.) Колонка название содержит имя департамента, колонка People содержим имя руководителя.

    Holiday Allowance – настраиваемый список, состоит из 5-и колонок. Первая Team Member в которой можно выбрать пользователя, вторая Team колонка департамента, берется из первого списка Team, определяет членство пользователя в департаменте. Третья – Allowance или количество разрешенных отгулов. Стандартное значение 20, минимальное 0, максимальное 50. Четвертый – Holiday Taken – количество выбранных отгулов, минимальное значение 0, максимальное 50, стандартное значение 0. Последняя колонка – Holiday Remaining – вычисляемое значение, формула проста [Allowance]-[Holiday Taken].

    Holiday Request – список созданный на основе шаблона Календарь с утверждение контента, содержит две дополнительные колонки: Days Absent – цифровая колонка, значение по умолчанию 1, минимальное значение 1.

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

    Список Teams:

    image

    Список Holiday Allowance:

    image

    Когда сотрудник хочет взять отгул, он должен ввести следующие данные (в список Holiday Request ):

    1. Категорию запроса выходной.
    2. Дату начала
    3. Доту окончания отгула
    4. Количество дней, которое он хочет отгулять

    Вы можете усовершенствовать решение, используя проверку заполнения ячеек списка, проверяя в списке Holiday Request [End Time] > [Start Time]

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

    1. Через меню SharePoint Designer создаем новый рабочий процесс для списка Holliday Request.

    pic7

    2. Имя рабочего процесса – «Holiday Request Approval»

    pic8

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

    Использование общих условий.

    Как вы уже знаете, в SharePoint Designer существует два общих условия: Если значение поля текущего элемента равно указанному значению (If Current Item Field Equals Value) и Если любое значение равно указанному значению (If Any Value Equals Value).

    Последнее условие позволяет сравнивать два значения, где значением может быть:

    1. Значение метаданных элемента списка или файла который обрабатывается рабочий процесс.
    2. Значение метаданных элемента списка или файла или библиотеки, где рабочий процесс еще не был запущен.
    3. Переменные рабочего процесса или параметры
    4. Контекст рабочего процесса, такой как имя шаблона процесса, URL сайта или текущий пользователь.
    5. Значение, хранимое в задачах процесса или истории.

    Когда значение не находится в текущем элементе, вам необходимо представить рабочему процессу логику получения этого значения. Но когда в сравнении участвует текущий элемент нужно задействовать первое общее условие (If Current Item Field Equals Value) :

    1. Добавьте условие «Если значение поля текущего элемента равно указанному значению»

    pic9

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

     

    pic10

    Итак, было создано условие. Если кто то добавит в список “Holliday Request” элемент и скажет, что его категория “Праздник”, то данное условие сработает.

     

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

    SharePoint Designer не предоставляет никаких диагностических и отладочных средств. Когда рабочий процесс не может выполняться до конца, то единственный способ отслеживания работы условий или действий это список истории. Что бы сделать это, необходимо добавить под условием новое действие из группы «Основные» – Записать в журнал.

    pic11

    Далее формируем текст диагностического сообщения, нажимаем на ссылку «сообщение» и видим появившуюся строку.

    pic12

    В этой строке нажимает на троеточие, тем самым вызывая «Построитель строк» в котом можно ввести текст вместе с данными полученными от SharePoint. Пишем в появившемся окне текст, что то вроде «Запрос сформирован», а далее нажимаем «Добавить или изменить подстановку» и говорим, что нам необходимо получить имя, того, кто создал событие в календаре. (Де-факто отгул)

    pic13

    Надеюсь по картинке достаточно понятно, как получить такой результат:

    pic14

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

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

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

    1. В текущем шаге добавьте еще одно действие – Вычислить.
    2. В переменной вычисление выберите «Создать новую переменную»
    3. Переменную назовем «Total Holidays» и определим, что она хранит целое число.

    pic15

         4.  Далее переключаемся на первое слагаемое и для текущего элемента получаем значение “Days Absent”

    pic16

       5. Нажимаем на второе слагаемое и получаем данные из списка “Holiday Allowance”, а именно количество дней уже отгулянных человеком создавшим новый запрос.

    pic17

    В конце SharePoint Designer ругнется на то, что не может гарантировать вывод только одного значения, на самом деле множественные значения, в данном случае это “Holidays Remaining” возможны только в случае создания в списке Holiday Allowance нескольких записей для каждого сотрудника. На текущем шаге мы создали переменную «Total Holidays», в нее рабочий процесс положит сумму уже выбранных отгулов и тех,= которые пользователь пытается получить сейчас.

    Использование переменных для сравнения данных из нескольких списков.

    Следующими действиями, в рамках первого шага рабочего процесса, мы проверим, а укладывается ли значение «Total Holidays» в рамки разрешенного количества отгулов для данного сотрудника.

    1. Добавьте в самый низ первого шага новое условие – «Если любое значение равно указанному значению»

    2. Нажмите на первое значение и из переменных выберите «Total Holidays»

    pic19

    3. В действии выберите «Меньше либо равно»

    4. Кликайти на второе значение и говорите, что хотите взять данные из списка «Holiday Allowance», причем конкретно значение «Allowance» для члена департамента, создавшего элемент. «Team Member»

    pic20

    Итак, еще одно условие, а именно проверка «не много ли отдыхает» наш сотрудник создана.

    Назначение задачи пользователям или группе.

    В процессе выполнения рабочего процесса, вам придется взаимодействовать с другими пользователями, для этого предусмотрены действия, устанавливающие задачи. А именно можно использовать: Назначить задание, Назначить форму группе, Получить данные от пользователя. Если вы включаете одно из этих действий, рабочий процесс замирает до тех пор, пока задача не будет выполнена. Эти действия такие же, как они были с Windows SharePoint Services 3.0 и SharePoint Designer 2007, а также являются единственными, доступными в группе в случае использования SharePoint Foundation 2010.

    Три новых действия с задачами были введены в SharePoint Server 2010. Это «Начать процесс утверждения», «Начать процесс сбора информации» и «Custom Task Process».

    Подробное сравнение трех действий с задачами есть по ссылке: http://office.microsoft.com/en-us/sharepoint-designer-help/assign-a-to-do-item-in-a-workflow-HA010233623.aspx Написано для SharePoint Designer 2007, но справедливо и для версии 2010.

    Ближе к делу, создаем задачу для руководителя подразделения, чей сотрудник создал запрос на выходной:

    1. Под вторым условием «Если» вставьте действие «Назначить задачу»
    2. Нажмите на задание, тем самым запустив «мастер создания задач»
    3. В имени задачи введите «Holiday Approval» и нажмите «Finish»

    pic21

         4. Далее жмем на поле люди. Выбираем «поиск рабочего процесса для пользователя». В качестве источника данных список «Teams» с полем «People». Не знаю, почему он у меня так назван, вообще это столбец  «Team Leader» с начальниками отделов. Вернуть «email».

    pic22

    В поиске элемента, говорим по полю «ИД», а вот в значении указываем источник «HolidayAllowance», с полем “Team” и поиск по полю Team Member со значением «Кем создано». Вот так вот путано, но результате мы вышли на руководителя департамента, конкретного сотрудника.

    Добавление ветви «Else If»

    1. Поставьте курсор, под вторым условием «если»
    2. Добавьте ветвь «Else If»
    3. В действии укажите отправить почту.
    4. Нажмите на ссылке «пользователи» и в появившемся шаблоне, укажите следующие данные. Тема – «Holiday Request Denied». Кому – «Пользователь, создавший текущий элемент». Текст – произвольный. С текстом можно поиграться, если вы внимательно провешивали все действия, то думаю, вам нетрудно будет, используя следующую картинку сделать интеллектуальное формирование письма.

    pic23

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

    Проверка и публикация рабочего процесса

    Финишная прямая – нажимаем «Поиск ошибок», если все сделано правильно на экран выскочит сообщение «Ошибок не обнаружено». Далее сохраняем процесс и публикуем на сайте SharePoint. После чего рабочий процесс помещается в скрытую библиотеку рабочих процессов.

    image

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

     

    P.S Данная статья и первая ее часть не создавались как “эпический мануал” по рабочим процессам и даже не являются детальным описанием решение конкретного бизнес-процесса. Как минимум потому, что у автора данной статьи (а если быть честным перевода 10-й главы книги Microsoft SharePoint Foundation 2010 Inside Out) каша в голове еще очень серьезная.  Но в то же время, я попытался описать те вещи и некоторые приемы, которые нужно знать, чтобы начать разрабатывать рабочие процессы. Своеобразная  смесь “теории раб. процессов” и “How to” по примитивным операциям. Что бы что то извлечь из данных статей, нужно читать их неспешно с SharePoint Foundation 2010 и SharePoint Designer 2010 перед глазами, в противном случае получается “белый шум”.

    Скачать статью в PDF

    Sharepoint2010 copy

     

    MCT/MVP Илья Рудь

Комментарии

  1. Здраствуйте Илья.
    Спасибо за статью.

    Если можно обясните от чего могут испртитца Workwlow и как найти причину.
    В Истории Workwlow пищет
    An error occured in WorkwlowName и дальше не могу нечего сделать.

    Еще бывают такие ситуации.
    WorkFlow блокируютца. Инагда блокировка спустя 2 – 10 секунды снимаетца а
    иногда совсем не снимаетца, так и остаетца workflow заблакировнным.

  2. В свое время начинал писать воркфлоу для 2007, в голове каша и т.п., но потом сначала первый, потом второй и потихоньку становится понятна логика. Я для отладки использовал обычно отправляемое уведомление на почту после каждого шага, имхо проще и быстрее. Самый большой факап всех этих рабочих процессов, то, что они не могут запускаться по расписанию…

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

  3. Как ни странно, после прочтения второй части статьи все встало на свои места, в том числе и “непонятная” первая часть 🙂 (до этого в голове было смутновато, т.к. с шариком до этого не работал).

  4. Спасибо за статью – всё хорошо описано!
    Но есть вопросы по запуску рабочих процессов!
    Задача:
    Необходимо в библиотеке, созданному пользовательскому свойству “Название статьи” присвоить значение внутреннего системного столбца “Имя”. Простой подстановкой в свойствах нового столбца “Название статьи” это сделать не удаётся – пишет, что формула ссылается на несуществующее поле.
    Собрал рабочий процесс который успешно присвавает нужное значение. При изменениии элемента в библиотеке всё ОК, а вот при создании – возникает ошибка, что элемент уже только что изменён пользователем. Это возниает если в свойствах рабочего процесса я ставлю галку “Автоматически запускать рабочий процесс при создании….”. Если её не ставить ошибки не возникает, но, естественно, и при создании нового элемента не приоисходит присваивание значений!
    Как быть???

  5. Добрый день! Спасибо за ваши статьи, все читал и учился у вас тут.
    не могу решить 1 вопрос, может тут кто сможет помочь, у меня есть рабочий процесс согласование в 1 этап с выбором согласовывающего лица (на ШП это в форме через получение данных от пользователя).

    под пользователями с админ-правами процесс работает корректно, а под простым пользователем если запускать – выдает ошибка: Обновить элемент в рабочем процессе не удалось, возможно потому, что в одном или нескольких столбцах для этого элемента должны содержаться данные другого типа, ИД=системная учетная запись, результат=нет прав.

    но права у пользователя есть на списки с редактированием, даже ситемного пользователя добавил – но не помогает, по прежнему сбой идет и в canceled статус вылетает.

    причем это происходит на шаге
    Получить данные у пользователя с выводом в переменную идЗадачи, все как у вас в статье и там ломаться нечему

  6. Если не сложно – прошу помочь со следующим вопросом: Можно ли без разработки и ковыряния кода форм, написания “костылей” на ява-скрипте, си шарпе или павершеле выполнить следующие функции:
    1. Выполнение рабочего процесса для ВСЕХ элементов списка в заданое время. В принципе для этой цели павершел был бы весьма кстати. Ну или евентресивер. Хотя возможно я просто не нашел эту возможность в стандартном функционале 🙂
    2. При запросе информации у пользователя при выполнении созданого мной workflow дизайнер создает форму без возможности вложения. При попытке откорректировать форму в InfoPath столкнулся с тем, что возможные способы изменения сильно урезаны, вплоть до того что я не могу вставлять элемент “Вставка файла”, точнее вставить могу, но вложение в форме не сохраняется. Так же я не могу встраивать в форму код, просто не доступны возможности редактирования в визуал студии. Вопрос в том, могу ли я поправить шаблон в самом дизайнере (он наверняка криейтит эти формы по определенному шаблону) и добавить на риббон кнопку вложения, или же есть более рациональные варианты рещения ?

  7. Первый вопрос уже не актуален, а вот второй мегаактуален. Много вариантов решений, но все жутко идиотские =/

  8. Нуждаюсь в совете.

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

    Вопрос, как сделать чтобы сбор отзывов и утверждение запускались паралельно, а не последовательно?

  9. Ваш комментарий

  10. Добрый день! Создала рабочий процесс такой же. Но когда дошла до п.5 в “Создание в рабочем процессе переменных и высчитываемых значений”, не получается вторая согласная , т.е. количество дней уже отгулянных человеком создавшим новый запрос. Непонятно какое значение выбирать: Пользователь, создавший текущий элемент или Поиск рабочего процесса для пользователя… ?