Создание настраиваемого рабочего процесса (службы Master Data Services)
Master Data Services использует бизнес-правила для создания таких базовых решений рабочего процесса, как автоматическое обновление и проверка данных, а также отправка уведомлений по электронной почте с учетом заданных условий. Когда требуется более сложная обработка, чем та, которую обеспечивают действия встроенного рабочего процесса, используйте пользовательский рабочий процесс. Пользовательский рабочий процесс ― это создаваемая вами сборка .NET. При вызове вашей сборки рабочего процесса код может выполнять любые действия, которые требуются в данной ситуации. Если рабочему процессу требуется сложная обработка событий, например многоуровневые утверждения или сложные деревья принятия решений, можно настроить Master Data Services на запуск пользовательского рабочего процесса, который анализирует данные и определяет, куда их отправить для утверждения.
Как обрабатываются пользовательские рабочие процессы
В обработке пользовательских рабочих процессов участвуют три основных компонента: веб-приложение Диспетчер основных данных, служба SQL Server MDS Workflow Integration Service и сборка обработчика рабочего процесса. Эти компоненты обрабатывают пользовательский рабочий процесс следующим образом:
Веб-приложение Диспетчер основных данных используется для проверки сущности, которая запускает рабочий процесс.
Веб-приложение Диспетчер основных данных отправляет элементы, которые удовлетворяют условиям бизнес-правила, в очередь компонента Service Broker в базе данных Master Data Services.
Служба SQL Server MDS Workflow Integration Service через регулярные интервалы обращается к хранимой процедуре в базе данных Master Data Services.
Когда хранимая процедура находит записи в очереди компонента Service Broker, она возвращает их службе SQL Server MDS Workflow Integration Service.
Служба SQL Server Службы Integration Services MDS направляет данные в сборку обработчика рабочих процессов.
![]() |
---|
Примечание. Служба SQL Server MDS Workflow Integration Service предназначена для запуска простых процессов. Если пользовательскому коду требуется сложная обработка, ее следует выполнить либо в отдельном потоке, либо за пределами обработки рабочего процесса. |
Настройка служб Master Data Services для пользовательских рабочих процессов
Для создания пользовательского рабочего процесса потребуется написать определенный объем пользовательского кода и настроить веб-приложение Master Data Services на передачу данных рабочего процесса используемому обработчику рабочих процессов. Выполните следующие действия, чтобы включить обработку пользовательских рабочих процессов.
Создайте сборку .NET, которая реализует Microsoft.MasterDataServices.WorkflowTypeExtender.IWorkflowTypeExtender.
Настройте службу SQL Server MDS Workflow Integration Service для соединения с базой данных Master Data Services, а также для связи тега с используемым обработчиком рабочих процессов.
Запустите службу SQL Server MDS Workflow Integration Service.
Создайте бизнес-правило в веб-приложении Диспетчер основных данных, которое запускает рабочий процесс, обозначенный именем используемого обработчика рабочих процессов.
Примените бизнес-правило к элементу, который запускает пользовательский рабочий процесс.
Создание сборки обработчика рабочих процессов
Пользовательский рабочий процесс представляет собой сборку библиотеки классов .NET, которая реализует интерфейс Microsoft.MasterDataServices.WorkflowTypeExtender.IWorkflowTypeExtender. Служба SQL Server MDS Workflow Integration Service обращается к методу StartWorkflow для выполнения кода. Пример кода, который реализует StartWorkflow, см. в разделе Пример настраиваемого рабочего процесса (службы Master Data Services).
Выполните следующие действия, чтобы создать с помощью Visual Studio 2010 сборку, которую сможет вызывать служба SQL Server MDS Workflow Integration Service для обработки пользовательского рабочего процесса:
В Visual Studio 2010 создайте новый проект Библиотека классов, в котором будет использоваться язык по выбору. Чтобы создать библиотеку классов C#, выберите типы проектов Visual C#\Windows и шаблон Библиотека классов. Введите имя проекта, например MDSWorkflowTest, и нажмите кнопку OK.
Добавьте ссылку на файл Microsoft.MasterDataServices.WorkflowTypeExtender.dll. Эта сборка может находиться в каталоге <установочная папка>\Master Data Services\WebApplication\bin.
Добавьте строку «using Microsoft.MasterDataServices.Core.Workflow;» в файл с кодом C#.
В объявлении класса установите наследование от Microsoft.MasterDataServices.WorkflowTypeExtender.IWorkflowTypeExtender. Объявление класса должно выглядеть примерно так: ‘public class WorkflowTester : IWorkflowTypeExtender’.
Реализуйте интерфейс Microsoft.MasterDataServices.WorkflowTypeExtender.IWorkflowTypeExtender. Метод StartWorkflow вызывается службами SQL Server MDS Workflow Integration Service для запуска рабочего процесса.
Скопируйте сборку в папку, в которой находится исполняемый файл SQL Server MDS Workflow Integration Service с именем Microsoft.MasterDataServices.Workflow.exe, в папку <установочная папка>\Master Data Services\WebApplication\bin.
Настройка службы Configure SQL Server MDS Workflow Integration Service
Измените файл конфигурации Master Data Services, включив в него данные соединения для базы данных Master Data Services, и свяжите тег со сборкой обработчика рабочих процессов, выполнив следующие действия.
Найдите файл Microsoft.MasterDataServices.Workflow.exe.config в каталоге <установочная папка>\Master Data Services\WebApplication\bin.
Добавьте данные соединения с базой данных Master Data Services в параметр «ConnectionString». Если в установке SQL Server используются параметры сортировки, учитывающие регистр, то имя базы данных следует ввести в том же регистре, который используется в базе данных. Например, полный тег параметра может выглядеть следующим образом:
<setting name="ConnectionString" serializeAs="String"> <value>Server=myServer;Database=myDatabase;Integrated Security=True</value> </setting>
Под параметром «ConnectionString» добавьте параметр «WorkflowTypeExtenders», чтобы связать имя тега с используемой сборкой обработчика рабочих процессов. Например.
<setting name="WorkflowTypeExtenders" serializeAs="String"> <value>TEST=MDSWorkflowTestLib.WorkflowTester, MDSWorkflowTestLib</value> </setting>
Текст внутри тега <значение> имеет следующую форму: <Тег рабочего процесса>=<имя типа рабочего процесса, подходящего для сборки>. <Тег рабочего процесса> ― это имя, которое используется для определения сборки обработчика рабочего процесса при создании бизнес-правила в веб-приложении Диспетчер основных данных. <Имя типа рабочего процесса, подходящего для сборки> ― это имя класса рабочего процесса, которое квалифицировано пространством имен, за которым следует запятая, за которой в свою очередь следует отображаемое имя сборки. Если сборка имеет строгое имя, то также необходимо указать данные о версии и ее PublicKeyToken. Если вы создали несколько обработчиков рабочих процессов для разных типов этих процессов, то в файл можно включить несколько тегов <setting>.
![]() |
---|
В зависимости от конфигурации сервера при попытке сохранить файл Microsoft.MasterDataServices.Workflow.exe.config на экране может появиться сообщение об ошибке «В доступе отказано». В этом случае временно отключите контроль учетных записей на сервере. Для этого откройте панель управления и выберите пункт Система и безопасность. В разделе Центр поддержки щелкните Изменить параметры контроля учетных записей. В диалоговом окне Параметры контроля учетных записей передвиньте ползунок в самый низ для того, чтобы не получать никаких уведомлений. Перезагрузите компьютер и повторите описанные ранее действия для изменения файла конфигурации. После сохранения файла, сбросьте параметры контроля учетных записей пользователей на значения по умолчанию. |
Запуск службы SQL Server MDS Workflow Integration Service
По умолчанию служба SQL Server MDS Workflow Integration Service не установлена. Чтобы использовать эту службу, ее сначала необходимо установить. Для обеспечения наибольшей безопасности создайте локального пользователя для этой службы и предоставьте этому пользователю только те разрешения, которые необходимы для выполнения операций рабочего процесса. Чтобы создать пользователя, установите службу, запустите ее и выполните следующие действия.
С помощью диспетчера локальных пользователей и групп создайте локального пользователя с именем, например, mds_workflow_service.
С помощью среды SQL Server Management Studio предоставьте пользователю mds_workflow_service разрешение на выполнение хранимой процедуры [mdm].[udpExternalActionsGet]. Для этого создайте новое имя входа для учетной записи mds_workflow_service, создайте нового пользователя в базе данных Master Data Services, сопоставьте этого пользователя с именем входа mds_workflow_service и предоставьте ему разрешение EXECUTE для хранимой процедуры [mdm].[udpExternalActionsGet].
Предоставьте пользователю mds_workflow_service разрешение на выполнение сборки обработчика рабочих процессов. Для этого добавьте пользователя службы mds_workflow_service на вкладку Безопасность диалогового окна Свойства сборки обработчика рабочих процессов и предоставьте пользователю службы mds_workflow_service разрешение READ и EXECUTE.
Предоставьте пользователю службы mds_workflow_service разрешение на выполнение исполняемого файла службы SQL Server MDS Workflow Integration Service. Для этого добавьте пользователя службы mds_workflow_service на вкладку Безопасность диалогового окна Свойства файла Microsoft.MasterDataServices.Workflow.exe, который расположен в папке <установочная папка>\Master Data Services\WebApplication\bin, и предоставьте пользователю разрешение READ и EXECUTE.
Установите службу SQL Server MDS Workflow Integration Service с помощью программы установки .NET с именем InstallUtil.exe. Программа InstallUtil.exe может находиться в установочной папке платформы .NET, например, C:\Windows\Microsoft.NET\Framework\v4.0.30319\. Установите службу SQL Server MDS Workflow Integration Service, введя в командной строке следующую команду:
C:\Windows\Microsoft.NET\Framework\v4.0.30319\InstallUtil Microsoft.MasterDataServices.Workflow.exe
При запросе во время установки укажите пользователя mds_workflow_service.
Запустите службу SQL Server MDS Workflow Integration Service с помощью оснастки «Службы». Для этого найдите службу SQL Server MDS Workflow Integration Service в оснастке «Службы», выделите ее и щелкните ссылку Пуск.
Создание бизнес-правила рабочего процесса
С помощью веб-приложения Диспетчер основных данных создайте и опубликуйте бизнес-правило, которое при его применении будет запускать рабочий процесс. Бизнес-правило должно содержать действия, которые изменяют значения атрибутов таким образом, чтобы после его применения правило не могло быть применено еще раз. Например, критерии бизнес-правила должны быть соблюдены, когда значение атрибута «Price» больше 500, а значение атрибута «Approved» не задано. Правило может тогда включать 2 действия: одно, чтобы задать атрибуту Approved значение Pending, и еще одно для запуска рабочего процесса. Также можно создать правило, в котором будет использоваться условие «изменилось», и добавить атрибуты в группы отслеживания изменений. Дополнительные сведения о бизнес-правилах см. в разделе Бизнес-правила (службы Master Data Services).
Создайте бизнес-правило, которое будет запускать пользовательский рабочий процесс в Диспетчер основных данных, выполнив следующие действия.
В редакторе бизнес-правил веб-приложения Диспетчер основных данных, указав условия для нового бизнес-правила, перетащите действие Запуск рабочего процесса из списка Внешние действия на ярлык Действие панели THEN.
На панели Изменение действия в поле Тип рабочего процесса введите тег, который обозначает сборку обработчика рабочего процесса. Это тег, который был задан в файле конфигурации сборки, например, TEST.
При необходимости установите флажок Включить данные элемента. Этот параметр устанавливается для того, чтобы включать имена атрибутов и значения из XML-файла, который передается обработчику рабочего процесса.
В поле Сайт рабочего процесса введите имя веб-сайта. Для пользовательского рабочего процесса это может и не применяться, но может быть использовано для формирования дополнительного контекста.
В поле Имя рабочего процесса введите имя рабочего процесса, которое указано в Visual Studio. Для пользовательского рабочего процесса это может и не применяться, но может быть использовано для формирования дополнительного контекста.
Сохраните и опубликуйте бизнес-правило.
Применение бизнес-правила к запуску рабочего процесса
Примените бизнес-правило к данным, чтобы запустить рабочий процесс. Для этого с помощью веб-приложения Диспетчер основных данных измените запись, содержащую элементы, которые требуется проверить. Нажмите кнопку Применить бизнес-правила. В ответ на бизнес-правило веб-приложение Диспетчер основных данных заполняет очередь компонента Service Broker базы данных Master Data Services. Когда служба SQL Server MDS Workflow Integration Service проверяет очередь, она отправляет данные указанной сборке обработчика рабочего процесса и очищает очередь. Сборка обработчика рабочего процесса выполняет те действия, которые были запрограммированы.
Устранение неполадок пользовательских рабочих процессов
Если сборка обработчика рабочего процесса не получает данные, можно попробовать выполнить отладку службы SQL Server MDS Workflow Integration Service или просмотреть очередь компонента Service Broker.
Отладка службы SQL Server MDS Workflow Integration Service
Для отладки службы SQL Server Workflow Integration Service выполните следующие действия.
С помощью оснастки «Службы» остановите службу.
Откройте командную строку, перейдите в каталог, где находится служба, и запустите службу в консольном режиме вводом следующей команды: Microsoft.MasterDataServices.Workflow.exe -console.
В веб-приложении Диспетчер основных данных обновите элемент и примените бизнес-правило еще раз. В окне консоли будут отображены подробные записи журнала.
Просмотр очереди компонента Service Broker
Очередь компонента Service Broker, который содержит основные данные, переданные в ходе рабочего процесса: mdm.microsoft/mdm/queue/externalaction. В Обозревателе объектов среды SQL Management Studio очереди находятся в узле компонента Service Broker базы данных Master Data Services. Имейте в виду, что если служба должным образом очистила очередь, она будет пуста.
См. также
Основные понятия
Пример настраиваемого рабочего процесса (службы Master Data Services)
Описание XML настраиваемого рабочего процесса (службы Master Data Services)