Рабочие процессы одна из наиболее продвинутых, но малоиспользуемых (видимо в силу сложности настойки) функций SharePoint, но рабочие процессы приносят столько пользы, что я не могу не написать о том, как их создавать и использовать.
В настоящей статье я распишу один из самых востребованных процессов — двухэтапное согласование документа, например рядовой бухгалтер (user1) делает отчет, который передается на согласование непосредственному руководителю (user2), и если user2 дает согласие документ передается к user3, который также может принять либо отклонить документ.
Если user2 одобряет документ, уведомляются user1 и user4 (user4 это предполагаемый руководитель user3).
Если user2 отклоняет документ, уведомляется только user4.
Если user3 одобряет документ, уведомляются user2 и user4, если отклоняет, уведомляется user2.
Схема нехитрая, интуитивно понятная и годится практически для любого предприятия. Тем не менее, это демо, и для реального внедрения нужно добавлять и корректировать некоторые факторы.
Я не буду использовать готовые шаблоны SharePoint Enterprise, т.к. это не даст ни универсальности применения, ни полного понимания.
Использовать я буду SharePoint Designer и писать только руками. Объяснения я сделаю максимально лаконичными, отвечающими на вопрос «Как?», а теоретическую часть Вы всегда можете найти в открытых источниках. Visual Studio я не использую, т.к. для поставленной цели SharePoint Designer подходит более чем.
В качестве тестовой среды я буду использовать как Office 365 на платформе 2010, так и SharePoint 2013 Enterprise для того чтобы показать как можно больше. Описание нового в построении процессов на платформе SharePoint 2013 выходит за рамки данной статьи т.к. заслуживает отдельной, которую я рано или поздно напишу.
Итак, создадим новый повторно используемый процесс, назовем его test1 и будем использовать для любого типа контента:
В качестве условия первого шага будет добавление / изменение документа в библиотеке, к которой мы привяжем процесс. Также условием может быть ручной запуск процесса, и именно так я буду проводить демо.
В качестве действия для первого шага будем получать решение от user2 с выводом в новую переменную Решение user2 (var):
Решение будем делать с помощью Мастера создания задач:
В качестве задачи у нас будет «Выбор из меню»:
..и «Многострочный текст»:
Для корректной передачи информации на следующий шаг, создадим Действие «Задать переменную рабочего процесса».
Для первого значения создадим новую переменную «Рецензия User2» c типом «Идентификатор элементов списка»:
В качестве второго значения будем использовать такую функцию:
Теперь переходим ко второму шагу и создадим Условие «Если любое значение равно указанному значению», и в качестве первого значения укажем такую функцию:
.. а в качестве равно укажем «Одобряю»:
В качестве первого Действия выполним отправку почты:
Затем выполним действие получения решения от User3, по аналогии с получением решения от User2. Также сделаем и с переменной:
.. Но если решение User2 буде отрицательным, мы должны будем отправить письмо-уведомление User4, для этого добавим к условию ветвь Else If :
Перейдем к последнему, третьему шагу на котором в зависимости от решения User3 будут отправлены соответствующие уведомления.
Добавим Условие если любое значение равно указанному значению и в качестве первого значения введем такую функцию:
А в качестве второго значения «Одобряю». Действие будет отправка письма User2 и User4.
Добавим к условию альтернативную ветвь Else If , а в качестве действия отправка письма User2.
Таким образом, весь процесс выглядит вот так:
Проверим, сохраним и опубликуем рабочий процесс. Даже если проверка прошла успешно, публикация может не состояться, обратите внимание на связи веток Else If, они должны быть такие же как на моем скриншете.
Затем залогинимся на наш портал с правами администратора и добавим процесс к библиотеке, введем приемлемое имя, созададим новый список задач и журнал :
Затем настроим параметры запуска, для теста не буду ничего автоматизировать:
Теперь зайдем на портал под User1 и начнем отработку сценария с запуска рабочего процесса вручную:
Заглянем в почтовый ящик User2 и убедимся что пришло уведомление:
Откроем задачу, примем решение, напишем комментарий и завершим задачу:
.. после чего зайдем на почту User3 и убедимся что он получил подтверждение о том что User2 дал положительный ответ и вторым письмом получил приглашение дать свою рецензию:
Предположим что User3 отправляет документ на доработку:
Как и планировалось, об этом получает уведомление User2:
Предположим что User4 хочет посмотреть как выполняется процесс, для этого он заходит в нужную библиотеку и кликает на состояние рабочего процесса:
.. где видит подробную информацию о выполненных действиях:
Например нажав на Решение User3 можно будет увидеть:
Таким образом, мы убедились что наш процесс работает должным образом.
В следующей статье я расскажу как автоматизировать отчеты, визуализировать стадии и назначить сроки 😉
7 thoughts on “Рабочие процессы SharePoint — двухэтапное согласование документа.”