Condizioni e regole in Windows Workflow Foundation
di Giuseppe Marchi, in Windows Workflow Foundation, 27 gennaio 2009
Rule Conditions
Le rule condition sono invece differenti dal tipo di condizioni appena visto, in quanto permettono la scrittura della logica propria della nostra condizione all'interno del designer offerto da Visual Studio, potendosi così avvalere del meccanismo dell'intellisense per la composizione della condizione stessa ed evitando la stesura di codice C# o VB.NET in favore di un linguaggio booleano di alto livello, quindi di facile comprensione.
L'unico vincolo, ormai ovvio anche ai nostri occhi, è quello che la composizione sintattica della nostra condizione deve ritornare un valore di verità o di falso, altrimenti l'attività che si basa su tale condizione non potrà effettuarne la valutazione e portare avanti il flusso di operazioni di base. In ogni caso, l'utente sarà comunque avvisato dal designer riguardo eventuali errori sintattici o logici.
In figura possiamo vedere l'utilizzo di una rule condition all'interno di una WhileActivity:

e la stesura di una banale condizione all'interno dell'interfaccia offerta da Visual Studio 2008:

Una volta che abbiamo creato la nostra prima rule condition, possiamo notare che all'interno del "Solution Explorer" è stato creato un nuovo file (con estensione .rules) inserito direttamente sotto al file contenente la definizione del nostro workflow.
Tale file non è altro che la serializzazione in XML del RuleSet contenente tutte le regole che l'utente ha definito all'interno del relativo workflow e che possono essere utilizzate singolarmente da un'istanza di una delle quattro attività condizionali (in realtà viene utilizzata internamente, una classe speciale che serializza le regole in sintassi XAML). Vediamo, quindi, come la nostra semplice regola viene salvata all'interno del file .rules:
<RuleDefinitions xmlns="http://schemas.microsoft.com/winfx/2006/xaml/workflow"> <RuleDefinitions.Conditions> <RuleExpressionCondition Name="Conto fino a 10"> <RuleExpressionCondition.Expression> <ns0:CodeBinaryOperatorExpression Operator="LessThanOrEqual" xmlns:ns0="clr-namespace:System.CodeDom;Assembly=System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> <ns0:CodeBinaryOperatorExpression.Left> <ns0:CodePropertyReferenceExpression PropertyName="Count"> <ns0:CodePropertyReferenceExpression.TargetObject> <ns0:CodeThisReferenceExpression /> </ns0:CodePropertyReferenceExpression.TargetObject> </ns0:CodePropertyReferenceExpression> </ns0:CodeBinaryOperatorExpression.Left> <ns0:CodeBinaryOperatorExpression.Right> <ns0:CodePrimitiveExpression> <ns0:CodePrimitiveExpression.Value> <ns1:Int32 xmlns:ns1="clr-namespace:System;Assembly=mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">10</ns1:Int32> </ns0:CodePrimitiveExpression.Value> </ns0:CodePrimitiveExpression> </ns0:CodeBinaryOperatorExpression.Right> </ns0:CodeBinaryOperatorExpression> </RuleExpressionCondition.Expression> </RuleExpressionCondition> </RuleDefinitions.Conditions> </RuleDefinitions>
La lettura di questo file è sicuramente complicata, ma è molto importante capirne l'essenza, in quanto un file .rules può essere utilizzato facilmente all'esterno di un workflow per effettuare la valutazione di una o più condizioni su oggetti custom.
Attenzione: Questo articolo contiene un allegato
Contenuti dell'articolo
- Pagina 2
- Pagina 3
- Pagina 4
- Pagina 5
Sullo stesso argomento
-
Mostrare le camere di sorveglianza tramite il .NET Micro Framework
-
La piattaforma Microsoft per il cloud computing: Windows Azure
-
Interoperabilità con WCF: invocare servizi da PHP e Flash
-
Le novità di Windows 7 per gli sviluppatori
-
Le problematiche più comuni di un'architettura M-V-VM con WPF
-
Costruire una chat per Silverlight con il PollingDuplexHttpBinding
-
Introduzione a .NET RIA Services
-
Architettura Model-View-ViewModel in un'applicazione WPF
-
Utilizzare Message Queuing per scalare le applicazioni

















Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.