Инструкции созданию настраиваемого действия в Workflow Manager 1.0

 

Опубликовано: Июль 2016

Действия — это основная единица поведения в WF. Они являются стандартными блоками, с помощью которых разработчики создают рабочие процессы. В Диспетчер рабочих процессов 1.0 настраиваемые действия и рабочие процессы состоят из типов в Надежная контактная зона Workflow Manager 1.0, которая представляет собой набор надежных типов и действий, доступных для создания действий и рабочих процессов. На этом шаге в Workflow Manager 1.0 — учебник для начала работы создается настраиваемое действие, которое возвращает продукты из примера базы данных «Борей», размещенного по адресу http://services.odata.org/Northwind/Northwind.svc. Это действие используется для выполнения следующих шагов учебника.

Примечание

Чтобы просмотреть пошаговое видеоруководство или загрузить начальный набор файлов и полную версию учебника, см. статью Workflow Manager 1.0 Getting Started Tutorial (Workflow Manager 1.0 — учебник для начала работы).

На этом шаге учебника

  • Создание решения Visual Studio и проекта библиотеки действий

  • Создание действия GetProducts

Создание решения Visual Studio и проекта библиотеки действий

  1. Откройте Visual Studio 2012 и последовательно выберите пункты Создать и Проект в меню Файл.

    Разверните узел Другие типы проектов в списке Установлено, Шаблоны и выберите пункт Решения Visual Studio.

  2. Выберите пункт Новое решение в списке Решения Visual Studio. Убедитесь, что в раскрывающемся списке версий .NET Framework выбран пункт .NET Framework 4.5. Введите WFMgrGettingStarted в поле Имя и нажмите кнопку ОК.

  3. Щелкните правой кнопкой мыши WFMgrGettingStarted в обозревателе решений и выберите пункты Добавить, Новый проект.

    Совет

    Если окно Обозреватель решений не отображается, выберите пункт Обозреватель решений в меню Вид.

  4. В узле Установлено последовательно выберите пункты Visual C#, Рабочий процесс. Убедитесь, что в раскрывающемся списке версий выбран пункт .NET Framework 4.5.NET Framework. Выберите пункт Библиотека действий в списке Рабочий процесс. Введите GetProductsActivities в поле Имя и нажмите кнопку ОК.

    Примечание

    В зависимости от основного языка программирования, используемого в Visual Studio, узел Visual C# может располагаться в узле Другие языки под узлом Установлено.

  5. В обозревателе решений щелкните правой кнопкой мыши файл Activity1.xaml и выберите пункт Удалить. Для подтверждения нажмите кнопку ОК.

  6. Щелкните правой кнопкой мыши элемент GetProductsActivities в обозревателе решений и выберите пункт Добавить ссылку.

  7. Нажмите кнопку Обзор и перейдите в папку C:\Program Files\Reference Assemblies\Microsoft\Workflow Manager\1.0

  8. Выберите файл Microsoft.Activities.dll, нажмите кнопку Добавить и нажмите кнопку ОК.

  9. В обозревателе решений разверните пункт Свойства в проекте GetProductsActivities и дважды щелкните файл AssemblyInfo.cs, чтобы просмотреть код.

  10. Добавьте следующий оператор using в верхней части файла вместе с другими операторами using (Фрагмент 1).

    using System.Windows.Markup;
    

    Совет

    Для учебника предоставляются файлы фрагментов. Чтобы воспользоваться ими, загрузите начальный набор файлов для учебника на странице Workflow Manager 1.0 - Getting Started Tutorial (Workflow Manager 1.0 — учебник для начала работы). В среде Visual Studio выберите пункт Диспетчер фрагментов кода в меню Сервис. Выберите пункт Visual C# в раскрывающимся списке Язык, а затем нажмите кнопку Добавить. Перейдите к папке, в которую извлечен начальный набор файлов, и выберите папку Assets\WFMgrGettingStarted. Нажмите кнопку Выбор папки и нажмите кнопку ОК. В файле с кодом щелкните правой кнопкой мыши место, где необходимо вставить фрагмент, и выберите пункт Вставить фрагмент. Прокрутите список и дважды щелкните элемент WFMgrGettingStarted, а затем дважды щелкните необходимый фрагмент.

  11. Добавьте следующую строку кода в конце файла (Фрагмент 2).

    [assembly: XmlnsDefinition("wf://workflow.windows.net/$Current/$Activities", "GetProductsActivities")]
    

    Важно!

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

    System.Xaml.XamlObjectWriterException: нельзя создать неизвестный тип "{clr-namespace:GetProductsActivities}GetProducts".

  12. Нажмите клавиши CTRL+SHIFT+B для построения решения.

Создание действия GetProducts

В данном разделе создается настраиваемое действие GetProducts. Действие GetProducts использует действие HttpSend для отправки запроса в службу Northwind oData, расположенную по адресу http://services.odata.org/Northwind/Northwind.svc, и преобразовывает результаты из службы в DynamicValue. После этого действие GetProducts детализируется до возвращенного значения DynamicValue и использует действие GetDynamicValueProperty<T>, чтобы вернуть результаты поиска по ключевому слову.

  1. Щелкните правой кнопкой мыши элемент GetProductsActivities в обозревателе решений и выберите пункты Добавить и Новый элемент.

  2. Последовательно выберите узел Установлено, узел Элементы Visual C# и элемент Рабочий процесс. В списке Рабочий процесс выберите пункт Действие.

  3. Введите GetProducts в поле Имя и нажмите кнопку Добавить.

  4. Дважды щелкните файл GetProducts.xaml в обозревателе решений, чтобы он отобразился в конструкторе, если он еще не отображается.

  5. В левом нижнем углу конструктора действий нажмите кнопку Аргументы для отображения панели Аргументы.

  6. Нажмите кнопку Создать аргумент.

  7. Введите SearchKeyword в поле Имя, выберите пункт В в раскрывающемся списке Направление и пункт Строка в раскрывающемся списке Тип аргумента, а затем нажмите клавишу ВВОД, чтобы сохранить аргумент.

  8. Нажмите кнопку Создать аргумент.

  9. Введите ProductsData в поле Имя под только что добавленным аргументом SearchKeyword, выберите пункт Из в раскрывающемся списке Направление, а затем выберите пункт Выбор типов в раскрывающемся списке Тип аргумента.

  10. Введите DynamicValue в поле Имя типа, выберите пункт DynamicValue в списке результатов и нажмите кнопку ОК.

    Совет

    Если DynamicValue не отображается в результатах поиска, убедитесь, что вы добавили ссылку на файл Microsoft.Activities.dll, как описано в разделе Создание решения Visual Studio и проекта библиотеки действий.

  11. Перетащите действие Sequence из области Поток управления на панели элементов и переместите его на подпись Перетащить сюда действие в конструкторе действий GetProducts.

    Совет

    Если окно Панель элементов не отображается, выберите пункт Панель элементов в меню Вид.

  12. Перетащите действие HttpSend из области Обмен сообщениями на панели элементов на подпись Перетащите сюда действие для действия Sequence.

    Совет

    Вместо поиска действий на панели элементов можно также ввести имя необходимого действия в поле Поиск по панели элементов в верхней части панели элементов.

  13. В конструкторе рабочих процессов щелкните действие HttpSend, чтобы его выбрать, и задайте следующие свойства в окне Свойства.

    Свойство

    Значение

    Метод

    GET

    Uri

    "http://services.odata.org/Northwind/Northwind.svc/Products?$format=application/json;odata=verbose&$filter=substringof('" + SearchKeyword + "', ProductName) eq true"

    ResponseContent

    ProductsData

    Совет

    Если окно Свойства не отображается, выберите пункт Окно свойств в меню Вид.

  14. Перетащите действие GetDynamicValueProperty<T> из области DynamicValue в панели элементов на действие Sequence, расположив его после действия HttpSend.

    В окне Выбор тип, которое отображается после перетаскивания действия, выберите в раскрывающемся списке значение Microsoft.Activities.DynamicValue. Если DynamicValue нет в списке, выберите пункт Выбор типов, введите DynamicValue в поле Имя типа, выберите значение DynamicValue в списке результатов и нажмите кнопку ОК. После выбора значения DynamicValue в раскрывающемся списке нажмите кнопку ОК.

  15. В конструкторе рабочих процессов щелкните действие GetDynamicValueProperty<T>, чтобы его выбрать, и задайте следующие свойства в окне Свойства.

    Свойство

    Значение

    PropertyName

    "d/results"

    Результат

    ProductsData

    Источник

    ProductsData

  16. Нажмите клавиши CTRL+SHIFT+B для построения решения.

    Чтобы просмотреть действие полностью и ознакомиться с пошаговым видеоруководством для этого шага в учебнике, см. статью Workflow Manager 1.0 - Getting Started Tutorial (Workflow Manager 1.0 — учебник для начала работы).

Инструкции по созданию рабочего процесса с помощью этого действия см. в описании следующего шага учебника Инструкции созданию рабочего процесса в Workflow Manager 1.0.

См. также

Workflow Manager 1.0 — учебник для начала работы