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.