Настройка вызываемого рабочим процессом кода

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

Теперь вам нужно описать код, который будет вызываться для действий CallExternal­Method. Вспомните, что при настройке этих элементов вы добавили в рабочий процесс ин­терфейсы. Здесь вы будете реализовывать эти интерфейсы, а затем добавите экземпляр ва­шего нового класса в исполняющую среду рабочих процессов:

1.   Создайте файл нового класса и назовите его UserProfile.

2.   Внутри этого класса реализуйте интерфейс lUserProf ile.

3.   Добавьте простое средство для определения того факта, является ли пользователь ме­неджером (помните, что это просто тестовый код). Вот пример:

using System;

using System.Collections.Generic; using System.Linq;

1    using System.Text;

using System.Workflow.Activities;

namespace TravelRequestWf {

// Реализация интерфейса рабочего процесса в хосте public class UserProfile : IUserProfile {

public bool IsUserManager(string userid) {

// Тестовый код для возврата значения true

// в зависимости от длины идентификатора пользователя

return (userid.Length > 6);

}

}

}

4.   Добавьте в библиотеку еще один класс и назовите его Notification.

5.   Реализуйте в этом новом классе интерфейс iNotification.

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

using System;

using System.Collections.Generic;

using System.Linq; using System.Text; using System.Workflow.Activities;

namespace TravelRequestWf {

// Реализация интерфейса рабочего процесса в хосте class Notification : INotification {

// Примечание: это просто тестовый код

public void NotifyPendingApproval(string userid) {

Console.WriteLine("Approval pending. Userid: " + userid);

}

public void RejectTravel(string userid, int travelld) {

Console.WriteLine("User travel rejected. Userid: " + userid

+ " Travelld: " + travelld.ToString());

}

public void NotifyUser(

string userid, string message) {

Console.WriteLine("User travel approved. Userid: " + userid

+ " Travelld: " + message);

}

public void SendConfirmation(string userid, string confirmationNumber) {

Console.WriteLine("Travel confirmed. Userid: " + userid +

" Confirmation number: " + confirmationNumber);

}

}

}

7.   Теперь вам нужно подключить эти классы к рабочему процессу. Вспомните, что рабочий процесс настроен на работу с этим интерфейсом. Он будет проверять исполняющую сре­ду на наличие экземпляра класса, реализующего этот интерфейс. Откройте хост (Program.cs) для настройки этой связи.

Следом за созданием Workf lowRuntime создайте экземпляр ExternalDataExchangeService. Затем добавьте этот сервис в исполняющую среду, а потом — ваш класс в этот сервис. Далее показан код:

// Создать объект обмена данными ExternalDataExchangeService exchangeServ =

new ExternalDataExchangeService(); workflowRuntime.AddService(exchangeServ);

// Настроить связь CallExternalMethod exchangeServ.AddService(new UserProfile()); exchangeServ.AddService(new Notification());

Хост настроен для того, чтобы рабочий процесс мог его вызывать. Теперь вам нужно убе­диться в том, что хост может вызывать события рабочего процесса.

Создание событий из клиента
Выполнение вашего рабочего процесса
Рабочий процесс типа конечного автомата
Создание рабочего процесса типа конечного автомата
Создание состояния Submitted

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


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

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