среда, 12 июня 2013 г.

Рабочие процессы SharePoint 2013

В SharePoint 2013 в части рабочих процессов (Workflow) произошли довольно важные перемены - как вы все наверное уже знаете. Постараюсь обобщить в цельную картину, кратко и без маркетингового трепа:
  1. Самое главное: SharePoint 2013 поддерживает теперь два типа Workflow: старыe (WF3) и новые (WF4). Старые крутятся внутри SharePoint как и раньше, а новые хостятся вне SharePoint, в отдельном компоненте под названием Workflow Manager. Чтобы обеспечить работоспособность новой связки, появилось Workflow Service Application, а для непосредственного взаимодействия WF с SharePoint используется механизм Apps.
  2. В новых Workflow есть циклы, переходы, вызов web-сервисов и других Workflow (что круто), но зато напрочь отсутствует куча жизненно важных Workflow Actions, таких как например "Set Approval Status" и некоторых других.
  3. Reusable Workflow в режиме WF2013 теперь нельзя цеплять к Content Type и нельзя их публиковать на всю коллекцию сайтов (кнопка "Publish Globally" задисейблена). Так что готовьтесь к копипасту :) 
  4. Impersonation Step в новых заменен на "App Step" (подробнее на MSDN). Для повышения привилегий используется тот же механизм, что в Apps.
  5. Есть interop - т.е. из новых можно вызывать старые WF. В итоге в реальных проектах вполне ожидаем следующий сценарий: основной РП пишется на WF4, а из него по мере необходимости вызываются WF3-workflow. Напоминает забивание гвоздей микроскопом, но тут уж куда деваться :)
  6. OOTB-Workflow, такие как Approval, Collect Feedback и т.д. - могут выполняться только в режиме совместимости, т.е. в режиме WF3.
  7. Custom Workflow Actions теперь декларативные: они представляют собой XOML-файлы, в которых можно использовать только ограниченный набор Workflow Activities.
  8. Custom Workflow (Code) Activity создавать всё-таки можно, хотя и через жопу сложно (т.е. в O365 уж точно так сделать не получится). Альтернативно предлагается писать веб-сервисы и вызывать веб-сервисы из Workflow. А что, вариант :)
  9. Для новых РП теперь есть очень мощное клиентское API (см. мой следующий пост про Workflow Services API).
  10. В SPD теперь есть новый Workflow Editor (только при наличии Visio на компьютере).
  11. Обладатели SharePoint Foundation остались без Workflow Manager и как следствие без WF нового типа.
Честно сказать, впечатления от нововведений неоднозначные. Для меня самый неприятный момент - это отсутствие некоторых фундаментальных WF activities в РП нового типа. Впрочем, уже есть мысли, как это можно "логически" обойти :)

P.S. Если у кого есть что добавить к моему списку, отпишитесь плиз в комменты!

Update 13.06: добавил уточнение про Impersonation Step и App Step, невозможность публиковать новые РП на всю коллекцию узлов, и ссылку на новый пост про Workflow Services.

8 комментариев:

  1. А почему это обладатели SharePoint Foundation остались без Workflow Manager? Он ставится отдельно и вполне себе работает. Коллеги из DW используют его.

    ОтветитьУдалить
    Ответы
    1. Вот те самые коллеги из DW как раз утверждали обратное раньше! :) Также в интернетах об этом писали неоднократно, например здесь. Как я понимаю, проблема заключается в cmdlet'е Register-SPWorkflowService.

      В любом случае, спасибо за информацию, я уточню этот момент у народа!

      Удалить
    2. Workflow manager это App для SharePoint, а в onprem все apps завязаны на User Profile Service для получения access token.

      Удалить
    3. В foundation нету UPS, не работает app auth и нет кода для взаимодействия с WF manager. Но никто не мешает самому написать такой код.

      Удалить
    4. Коллеги из DW сведения об использовании WFM с Foundation опровергли :)

      Удалить
  2. 1) В Workflow manager есть app-only step, аналог impersonation step. Включается фичей на уровне сайтколлекции.
    2) В workflow manager есть task process, не настолько гибкий, как в 2010 но свои задачи решает.
    3) Code activity не нужны. По умолчанию считаем что WF не работает на сервере SharePoint и все взаимодействие с SP делается через HTTP Activity. Выражения на C# вполне поддерживаются в WF, поэтому отдельные активити создавать нет смысла.
    4) Есть возможность автоматически привязывать workflow к списками в App (без кода).

    Но есть недостаток:
    Workflow, как app, имеет разрешения write, что не позволяет создавать сайты и настраивать доступы. Можно конечно руками поправить на уровне сайта, но это опять-таки требует full control. Короче геморрой.

    ОтветитьУдалить
    Ответы
    1. Я видел App step, но не понял что он делает... Спасибо за подсказку, теперь всё понятно. Подробная статья обнаружилась на MSDN.

      WF4 task process не одобрит документ автоматом, в этом проблема :( Т.е. если я хочу сделать кастомизированный аналог Approval Workflow из 2010, который бы выполнялся на новом движке WF4, без фоллбэков похоже никак?...

      Удалить
    2. ну не проблема совсем, вставить еще одну activity, которая поменяет статус по результатам task process.

      Так как в SPD теперь есть stage-gate, то можно любой процесс собрать на обычном task activity.

      Удалить

Внимание! Реклама и прочий спам будут беспощадно удаляться.