Ritorna alla Home Page della Biblioteca di Microsoft .NET

Paginazione :   1 2 3 4 [5] 6 7 8 9 10 

 

Ora andiamo a creare in modalità grafica il workflow trascinando uno ad uno le attività descritte nel disegno riportato di seguito e quindi inseriamo CallExternalMethod, HandleExternalEvent  e IfElse.

 

 

Per inserire il nome ad ogni attività accediamo al pannello delle proprietà e nel campo (Name) inseriamo il corrispettivo riportato sul disegno. Per il momento tralasciamo le altre proprietà.

 

Non preoccupiamoci degli errori (punti esclamativi all’interno di cerchi rossi) che verranno mostrati sull’editor e concentriamoci sul progetto WorkflowInterface.

 

Teniamo sempre in considerazione che l’elemento di colore Azzurro definisce una CallExternalMethod mentre l’elemento di colore verde definisce  una HandleExternalEvent.


Come noterete dal nome, le Attività di tipo CallExternalMethod verranno utilizzate per inviare al log dell’applicazione il punto esatto nel quale si trova il flusso ad eccezione di StartWorking che permetterà al Workflow di inviare all’applicazione i dati necessari per il completamento dell’elaborazione (Sezione 3 dell’interfaccia grafica : Working).

 

Definiamo quindi le seguenti attività di tipo CallExternalMethod con nomi SendInizialize, SendSolve, SendClose, SendRejected, SendEnd e infine StartWorking.


Gli eventi che verranno generati verso il Workflow HandleExternalEvent permetteranno all’applicazione di inviare il valore degli Switch che verranno utilizzati dal Workflow per instradare il flusso.

 

Per il momento tralasciamo la libreria Workflow e apriamo il progetto WorkflowInterface.

Creiamo tre nuove classi con il nome di:
IWorkflowInterface.vb : Conterrà l’interfaccia utilizzata dal Workflow e dall’applicazione per interfacciarsi
WorkflowValue.vb : Classe nella quale vengono immagazzinati i dati gestiti dal Workflow e dall’applicazione
WorkflowService.vb : Classe del Servizio Workflow utilizzata dall’applicazione

 

Nella classe denominata WorkflowValue inseriamo il codice riportato qua sotto

 

 

 

Imports System.Workflow.Activities

 

<Serializable()> Public Class WorkflowValue

    Inherits ExternalDataEventArgs

 

    Public Guid As Guid

    Public Message As String

    Public OperatorName As String

    Public Tipology As String

    Public ValidateState As ValidateStateEnum

    Public WorkState As WorkStateEnum

 

    Public Enum ValidateStateEnum

        Validate = 1

        Reject = 2

    End Enum

    Public Enum WorkStateEnum

        Corrupt = 1

        Close = 2

    End Enum

 

    Public Sub New(ByVal ArgsGuid As Guid, _

                   Optional ByVal ArgsMessage As String = "", _

                   Optional ByVal ArgsOperatorName As String = "", _

                   Optional ByVal ArgsTipology As String = "", _

                   Optional ByVal ArgsValidateState As ValidateStateEnum = 0, _

                   Optional ByVal ArgsWorkStateEnum As WorkStateEnum = 0)

        MyBase.New(ArgsGuid)

        Guid = ArgsGuid

        Message = ArgsMessage

        OperatorName = ArgsOperatorName

        Tipology = ArgsTipology

        ValidateState = ArgsValidateState

        WorkState = ArgsWorkStateEnum

    End Sub

End Class

 

 

Questa classe dovrà essere marcata come <Serializable()>, sarà una classe detta di Comunicazione che conterrà le informazioni basilari che dovranno essere scambiate tra l’applicazione e il Workflow.


Noteremo che tale classe eredita le funzionalità da ExternalDataEventArgs e possiede un costruttore al quale verrà passato l’identificativo GUID che identificherà unicamente l’istanza della classe ExternalDataEventArgs alla quale si allaccerà ogni singolo Workflow e i parametri OperatorName e Tipology fondamentali per il funzionamento del Workflow.

 

Le due Enumeration presenti all’interno della classe permetteranno di definire lo switch ValidateState o lo switch WorkState che serviranno a determinare in che punto si troverà l’elaborazione.