Настройка действий CallExternalMethod

Оценить
(0 голоса)

Для начала вы настроите все действия CallExternalMethod. Это делается одинаково. После того как вы настроите одно из них, вы сможете настроить и все остальные.

Для настройки вызова внешнего кода из рабочего процесса вы должны сначала описать ин­терфейс, помеченный атрибутом ExternalDataExchangeAttribute. Рабочий процесс бу­дет настроен на вызов этого интерфейса. Затем этот же самый интерфейс будет реализован в хост-приложении в виде класса, после чего хост зарегистрирует экземпляр реализации в исполняющей среде. Далее исполняющая среда будет вызывать этот экземпляр. Хост и кли­ента мы скоро рассмотрим. Пока же давайте опишем интерфейсы и настроим действия:

1.   Добавьте в проект рабочего процесса интерфейс (при помощи диалога Add Item) и назо­вите его iuserProfile. В нем будет определена сигнатура метода isUserManager, ко­торый принимает строку userid. Ваш код должен выглядеть примерно так:

using System;

using System.Collections.Generic;

using System.Linq;

using System. Text;

using System.Workflow.Activities; Описание: image548

namespace TravelRequestWf {

[ExternalDataExchange] public interface IUserProfile {

bool IsUserManager(string userid);

}

}

2.   Добавьте в проект рабочего процесса еще один интерфейс и назовите его iNotification. В нем будут определены сигнатуры различных методов уведомления. Код должен выглядеть примерно так:

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Workflow.Activities;

namespace TravelRequestWf {

[Exte rnalDataExchange] public interface INotification {

i

void NotifyPendingApproval(string userid); void RejectTravel(string userid, int travelld); void NotifyUser(string userid, string message);

void SendConfirmation(string userid, string confirmationNumber);

}

}

3.   Откройте рабочий процесс в визуальном конструкторе. Выделите действие Getuser Prof ile и просмотрите его свойства. Нажмите кнопку с многоточием у свойст­ва InterfaceType. При этом появится диалоговое окно Browsfe and Select a .NET Type, позволяющее вам выбрать интерфейс, который этот метод будет вызывать. Пример по­казан на рис. 20.10. Выберите только что созданный вами интерфейс IUserProfile.

4.   Затем выберите в выпадающем списке MethodName. Выберите IsUserManager.

5.   Теперь вы должны увидеть в панели Properties два дополнительных свойства: userid и ReturnValue. userid — это параметр метода IsUserManager. Нажмите кнопку с много­точием рядом с параметром для того, чтобы получить диалоговое окно (рис. 20.11). Здесь вы можете выбрать свойства, которые ранее описали для вашего объекта. Выдели­те TravelRequestor. Вспомните, что это свойство будет настраиваться при первом запус­ке рабочего процесса.

6.   Затем вам нужно сделать то же самое для того, чтобы отобразить результат (ReturnValue) вызова метода IsUserManager на локальное свойство. Сначала добавьте

в рабочий процесс новое свойство (при помощи файла выделенного кода) типа Boolean. Назовите его IsUserManager. Выделите свойство ReturnValue в панели свойств Prop­erties и выберите действие привязки свойства в нижней части страницы. После этого появится диалог привязки свойства. Выберите здесь свойство IsUserManager. Описание: image549

Обратите внимание, что значка с красным восклицательным знаком в действии больше нет. Это означает, что действие было настроено без ошибок. Вам нужно будет повторить эти шаги для других действий HandleExternalMethod: NotifyManager, NotifyManager2, SendConf imation и SendRejectionNotice. Вот подсказки для этого:

□    предполагаем, что метод NotifyPendingApproval принимает идентификатор запра­шивающего пользователя и ищет менеджера;

□    при использовании метода NotifyUser просто введите строковый литерал в качестве свойства сообщения;

□    создайте в рабочем процессе новое свойство для хранения номера подтверждения бро­нирования, возвращенного Web-сервисом поставщика транспортных услуг. Его можно привязать к параметру conf irmationNumber метода SendConf irmation.

Настройка действия CodeActivity
Настройка действий IfElse и использование редактора RuleConditionEditor
Настройка действия InvokeWebService
Настройка действий HandleExternalEvent
Клиент

Добавить комментарий


Защитный код
Обновить

© 2018 www.visualstudios.ru. Все права защищены.