Programmazione.it v6.4
Ciao, per farti riconoscere devi fare il login. Non ti sei ancora iscritto? Che aspetti, registrati adesso!
Info Pubblicità Collabora Autori Sottoscrizioni Preferiti Bozze Scheda personale Privacy Archivio Libri Corsi per principianti Forum
Greenpeace
State machine in WF 4.0: conditional transition (1/2)
Scritto da Fabio Carucci il 24-06-2010 ore 08:26
Intel Cluster Studio XE
La tipologia di base di una transizione di stato, in una state machine, è la conditional transition, eseguita soltanto quando il trigger associato ha completato la sua specifica funzionalità e quindi la condizione è verificata.

L'esempio riportato in questo contributo implementa una state machine, in cui sono contenuti due stati oltre a quello iniziale e finale; il workflow giunge al primo stato e alla ricezione di un messaggio WCF; se la condizione soddisfa un certo criterio, avviene la transizione allo stato finale. Tornando al primo stato, se viene inviato un messaggio WCF e la condizione soddisfa un ulteriore differente criterio, avviene la transizione al secondo stato, parte un trigger che contiene una DelayActivity di 5 secondi e la transizione giunge anch'essa allo stato finale.

La prima operazione da fare, dopo aver ovviamente creato un'applicazione di tipo WorkflowConsoleApplication e aver inserito in essa una StateMachine, è di creare una variabile — selezionando l'apposito tab Variables in basso a sinistra nel designer del workflow — di tipo string avente come scope la state machine; essa servirà per valutare la condizione di transizione che verrà inserita più tardi.

La seconda operazione è l'aggiunta di un primo State e una linea di transizione tra quest'ultimo e lo stato finale del workflow; fate doppio clic sulla transizione e nel trigger inserite una activity di tipo Receive, dando un nome all'OperationName senza aggiungere nulla al Content, poiché non interessa, per gli scopi dell'argomento trattato, definire tecnicamente l'activity Receive. Inserite la condizione che dovrà soddisfare la transizione: se ad esempio la variabile che avete creato in precedenza si chiama target, allora scrivete target = "final state" e nella action della transizione aggiungete una WriteLine con un testo che confermerà, in fase di esecuzione, l'effettiva transizione allo stato finale.

Ora create un secondo State e tirate una linea di transizione tra il primo stato e il secondo; nel trigger relativo aggiungete una SendActivity, anch'essa tecnicamente fittizia per il precedente motivo; nella Condition inserite target = "state 2" e nella action una WriteLine, che confermerà la transizione al secondo state. Nella seconda parte trovate la conclusione della descrizione dell'esempio nonché il relativo codice sorgente.
Precedente: Guida alla programmazione in Perl: reference e subroutine (2/4)
Successiva: L’algoritmo GOALIE per la biologia cellulare
Copyright Programmazione.it™ 1999-2013. Alcuni diritti riservati. Testata giornalistica iscritta col n. 569 presso il Tribunale di Milano in data 14/10/2002. Pagina generata in 0.288 secondi.