Настройка состояния Submitted

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

Описание: image557

Конструирование eventDrivenApproval еще не совсем закончено. Сначала нам необхо­димо настроить шаблон обмена для отправки сообщений в рабочий процесс (при помощи события). Это позволит вам завершить настройку waitMgrApproval действия HandleEx­ternalEvent.

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

Для настройки обмена рабочего процесса с этим событием сделайте следующее:

1.   Создайте новый файл кода Visual Basic и назовите его IApproval.vb.

2.   В новом файле создайте новый класс, который наследует от ExternalDataEventArgs. Назовите этот класс ApprovalEventArgs. Добавьте в этот класс свойство с названием isApproved (типа Boolean). Это свойство будет хранить утверждение.

3.   Добавьте интерфейс для события, которое будет порождаться для рабочего процесса. Назовите этот интерфейс lApproval. Это событие должно быть типа EventHandler<T>. Вы должны ввести его как новый класс аргументов события.

Ваш код должен выглядеть следующим образом:

Imports System.Workflow.Activities

<ExternalDataExchange()> _

Public Interface lApproval

Event Approval As EventHandler(Of ApprovalEventArgs)

End Interface

<Serializable()> _

Public Class ApprovalEventArgs Inherits ExternalDataEventArgs Public Sub New(ByVal instanceld As Guid)

MyBase.New(instanceld)

End Sub

Private _isApproved As Boolean Public Property IsApproved() As Boolean Get

Return _isApproved End Get

Set(ByVal value As Boolean)

_isApproved = value End Set End Property End Class

4.   Вернитесь в рабочий процесс и откройте его файл выделенного кода. Добавьте свойство, которое будет привязано к аргументам события, посланным в действие HandleExter-

nalEvent. Назовите это свойство ApprovalEventArg. Ваше свойство должно выглядеть следующим образом:

Private _approvalEventArgs As ApprovalEventArgs Public Property ApprovalEventArg() As ApprovalEventArgs Get

Return _approvalEventArgs End Get

Set(ByVal value As ApprovalEventArgs)

_approvalEveritArgs = value End Set End Property

5.   Вернитесь в визуальный конструктор рабочего процесса для действия eventDrivenApproval состояния Submitted. Перейдите в окно свойств для настройки в HandleExternalEvent действия waitMgrApproval на использование этого нового ин­терфейса. Настройте свойства InterfaceType, EventName и спроецируйте аргумент со­бытия е на только что созданное вами новое свойство. Ваша конфигурация должна вы­глядеть подобно показанной на рис. 20.20.

Рис. 20.20. Настройка действия waitMgrApproval

6.   Последний шаг для настройки действий состояния Submitted— это настройка ветвей условия IfElse. Выделите левую ветвь (isApproved). В окне свойств укажите, что Con­dition имеет значение Declarative Rule Condition. В свойстве ConditionName от­кройте менеджер правил условия. Описание: image558 Настройте в Rule Condition вычисление содержимого свойства ApprovalEventArg (к которому вы только что привязались). Это условие должно выглядеть так:

this._approvalEventArgs.IsApproved

7.   Назовите условие ApprovedCondition. Это завершает состояние Submitted. Вернитесь в главный экран рабочего процесса конечного автомата. Описание: image559

Теперь вы должны увидеть линии, идущие от Submitted к Approved и к Rejected. Они пред­ставляют собой переходы (рис. 20.21). Теперь вам нужно настроить остальные состояния.

Конструирование и настройка состояния Approved

Состояние Approved (Утверждено) аналогично состоянию Submitted. Вам необходимо до­бавить в состояние Statelnitialization и действие EventDriven. Вот шаги для этого:

1.   Добавьте действие Statelnitialization и назовите его approvedinit. Дважды щелкните по нему, чтобы открыть его визуальный конструктор.

2.   Добавьте CodeActivity с названием NotifyFinance и опять выдайте на консоль имита­цию уведомления финансовому отделу о том, что авансовый отчет готов к оплате. В ре­альной жизни это могут быть данные, отправленные в финансовую систему. Ваш код должен выглядеть следующим образом:

Private Sub NotifyFinance_ExecuteCode( _

ByVal sender As System.Object, ByVal e As System.EventArgs)

Console.WriteLine("Finance notice. Expenseld: " _

& _expenseReportId.ToString())

End Sub

3.   Вернитесь к диаграмме состояний. Добавьте действие EventDriven с названием event Dr ivenPayment. Дважды щелкните по нему для того, чтобы открыть его визуаль­ный конструктор.

4.   Добавьте действие HandleExternalEvent для ожидания уведомления об оплате из фи­нансовой системы. Назовите это действие waitForPaymentNotice.

5.   Под ним добавьте SetState с названием set Paid. Используйте окно свойств для уста­новки состояния Paid рабочего процесса (после получения оплаты).

6.   Для настройки действия HandleExternalEvent создайте новый файл кода (аналогичный созданному ранее файлу IApproval.vb). Назовите его IPaymentNotice. Этот файл будет содержать интерфейс с событием, запускаемым финансовой системой. При его запуске будет присылаться номер чека оплаты авансового отчета. Этот код должен выглядеть следующим образом:

Imports System.Workflow.Activities

<ExternalDataExchange()> _

Public Interface IPaymentNotice

Event Approval As EventHandler(Of PaymentNoticeEventArgs)

End Interface

<Serializable()> _

Public Class PaymentNoticeEventArgs Inherits ExternalDataEventArgs

Public Sub New(ByVal instanceld As Guid)

MyBase.New(instanceld)

End Sub

Private _checkNumber As Integer Public Property CheckNumber() As Integer Get

Return _checkNumber End Get

Set(ByVal value As Integer)

_checkNumber = value End Set End Property

7.   Используйте этот код для настройки действия HandleExternalEvent для действия EventDriven состояния Approved. Спроецируйте аргументы события из события е на новое свойство типа PaymentNoticeEventArgs рабочего процесса (вы можете вызвать это свойство paymentNoticeArgs). Действие состояния должно выглядеть подобно по­казанному на рис. 20.22.

Конструирование и настройка состояния Rejected

Внутри состояния Rejected (Отклонено) вы просто уведомляете пользователя об отклонении и помечаете рабочий процесс как завершенный. Вот шаги настройки состояния Rejected рабочего процесса:

1.   Начните с добавления в состояние Rejected действия Statelnitialization. Назовите его rejectlnit. Дважды щелкните по нему для того, чтобы открыть его в визуальном кон­структоре.

2.   Добавьте CodeActivity в Statelnitialization состояния Rejected и назовите его Noti- fyRejection. Добавьте обработчик для этого действия и выдайте уведомление об от­клонении в окно консоли, как это показано здесь:

Private Sub NotifyRejection_ExecuteCode( _

ByVal sender As System.Object, ByVal e As System.EventArgs)

Console.WriteLine("Expense report rejected. Expenseld: " _

& _expenseReportId.ToString()) .

End SubОписание: image560

3.   Добавьте действие SetState с названием SetComplete и установите его свойство Таг- getStateName в состояние Completed. Это покажет исполняющей среде, что рабочий процесс успешно завершился.

Конструирование и настройка состояния Paid
Описание клиента и хоста
End Class End Module
Резюме
Приложения

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


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

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