Использование взаимодействия между рабочими процессами в SharePoint
Предоставляет сведения об использовании средств взаимодействия рабочих процессов SharePoint в конструкторе рабочих процессов Visual Studio 2012. Взаимодействие с рабочими процессами позволяет вызывать рабочий процесс SharePoint 2010 из рабочего процесса SharePoint. Это важная функция, которая позволяет повторно использовать существующие функции рабочего процесса и вызывать действия рабочих процессов, которые не интегрированы в SharePoint.
Примечание.
Поддержка рабочих процессов SharePoint 2010 для новых клиентов прекращена с 1 августа 2020 г., и они удалены из существующих клиентов 1 ноября 2020 г. Если вы используете рабочие процессы SharePoint 2010, рекомендуется перейти на Power Automate или другие поддерживаемые решения. Дополнительные сведения см. в статье Прекращение поддержки рабочего процесса SharePoint 2010.
Важно!
Сведения об использовании функций взаимодействия рабочих процессов SharePoint в SharePoint Designer 2013 см. в статье Общие сведения о действиях по координации в SharePoint Designer 2013.
Взаимодействие рабочих процессов SharePoint
Вот проблемы. У вас есть устаревшие рабочие процессы SharePoint 2010, которые вы хотите повторно использовать на платформе SharePoint. Или, что еще хуже, вы создаете новые рабочие процессы SharePoint, и вам нужно вызывать действия, доступные только на платформе SharePoint 2010. И вы не знаете, что делать. На самом деле, простое решение: использование рабочего процесса SharePoint взаимодействия.
Взаимодействие рабочих процессов SharePoint позволяет рабочим процессам SharePoint 2010 (на основе Windows Workflow Foundation 3) работать без проблем с подсистемой рабочих процессов SharePoint, которая основана на Windows Workflow Foundation 4. Хотя новый модуль выполнения Windows Workflow Foundation 4 размещается в Workflow Manager, который выполняется как внешняя служба, SharePoint по-прежнему содержит устаревший узел рабочих процессов SharePoint, который используется для обработки рабочих процессов SharePoint 2010. Взаимодействие рабочих процессов SharePoint согласовывает две среды выполнения, как показано на рис. 1.
Рис. 1. Взаимодействие рабочих процессов SharePoint в действии
Давайте рассмотрим процесс, показанный на рис. 1. Используйте буквы для опорных точек выделения на рисунке:
( A ) Экземпляр рабочего процесса SharePoint запускается в, а затем Windows Workflow Foundation 4 Workflow Manager. Обратите внимание, что Workflow Manager не находится в SharePoint, а выполняется как внешняя служба.
( B ) Вы достигаете точки в рабочем процессе SharePoint (шаг номер 3 в Workflow Manager), где вы хотите вызвать рабочий процесс SharePoint 2010. В конструкторе рабочих процессов Visual Studio 2012 это можно сделать, реализовав действие WF начала 2010 , как показано на рис. 2.
Рис. 2. Плитка этапа для запуска рабочего процесса SharePoint 2010.
С точки зрения объектной модели SharePoint это достигается с помощью метода StartWorkflow класса WorkflowInteropService .
( C ) На этом этапе рабочий процесс SharePoint 2010 начинает выполняться в узле рабочего процесса Windows Workflow Foundation 3.5 внутри SharePoint. Но возникает важное соображение. В некоторых сценариях может потребоваться, чтобы рабочий процесс 2013 года ждал завершения выполнения рабочего процесса 2010 (и, возможно, возвратить некоторые данные), прежде чем продолжить выполнение рабочего процесса 2013. В других сценариях это может не потребоваться, и оба рабочих процесса могут выполняться независимо, параллельно.
Для управления этим поведением класс WorkflowInterop , который управляет выполнением рабочих процессов в узле рабочего процесса Windows Workflow Foundation 3.5, предоставляет свойство Wait . Если задать для этого логического свойства значение " Да" (в диалоговом окне конструктора) или значение true в свойстве Wait , рабочий процесс 2013 приостанавливается до завершения выполнения в 2010 году и возвращает сообщение о завершении .
Рис. 3. Запуск диалогового окна свойств рабочего процесса.
( D ) Здесь показан практический результат выбора значения true или false для свойства Wait (или Да или Нет в диалоговом окне свойств). Если значение Wait имеет значение true, рабочий процесс 2010 передает событие WorkflowCompleted (и, при необходимости, возвращает данные в виде свойства DynamicValue ). Дополнительные сведения о динамических значениях см. в разделе Общие сведения о динамических значениях.
Конечно, если параметр Wait имеет значение false, рабочий процесс 2010 выполняется, а затем завершается нормально.
( E ) Этот шаг актуален только в том случае, если при вызове рабочего процесса 2010 указано Значение Wait=true. В этом случае рабочий процесс 2013 года получил событие WorkflowCompleted и перезапускает выполнение рабочего процесса 2013 в момент его завершения.
( F ) Затем рабочий процесс 2013 завершает выполнение и завершает работу в обычном режиме. Если Wait=false, рабочий процесс 2013 выполняется и завершается независимо от рабочего процесса 2010.
Проектирование взаимодействия рабочих процессов
Взаимодействие рабочих процессов SharePoint — это платформа обмена сообщениями, которая поддерживает сопоставление одного экземпляра между действиями рабочих процессов WF 3 и WF 4. WF 3 и WF 4 взаимодействуют через обмен сообщениями, которые упаковываются набором действий WF 4 в WorkflowInteropService .
Для поддержки взаимодействия рабочих процессов область конструктора рабочих процессов в SharePoint Designer предоставляет доступ к новому действию рабочего процесса , Запуск 2010 WF, которое является оболочкой метода StartWorkflow . Это действие позволяет запустить рабочий процесс списка или рабочий процесс сайта.
Действие на самом деле представляет собой последовательность сообщений, которые происходят между Workflow Manager и узлом рабочих процессов SharePoint 2010, работающим внутри SharePoint. Эти два являются посредниками на уровне обмена сообщениями, как показано на рис. 4. Последовательность начинается в диспетчере рабочих процессов SharePoint с вызова метода StartWorkflow . Сообщение "start" отправляется в службу рабочих процессов внутри SharePoint, где, в свою очередь, запускает рабочий процесс внутри узла рабочего процесса SharePoint 2010. После завершения выполнения рабочего процесса 2010 запускается событие, которое отправляет сообщение "завершено" через издателя событий обратно в диспетчер рабочих процессов 2013.