Tipi di vincoliConstraint Types

In questo esempio vengono illustrate due modalità diverse per applicare vincoli a un flusso di lavoro: uno dall'interno dell'attività (compilazione) e un altro dall'esterno (criteri).This sample shows two different ways to apply constraints to a workflow, one is from inside the activity (build) and one is from outside of it (policy). In questo scenario, un autore di attività (di una società di software di terze parti) desidera convalidare la relazione tra due argomenti.In this scenario, an activity author (from a 3rth-party software company) wants to validate the relationship between two arguments. In questo caso, il costo deve essere minore o uguale al prezzo.In this case, the cost should be smaller than or equal to the price. Si tratta di un vincolo di compilazione di convalida generale.This is a general validation build constraint.

Il proprietario di un negozio desidera aggiungere alcune convalide a questa attività generica.Then a shop owner wants to add some validation to this generic activity. In tal caso, desidera che la maggior parte dei prodotti abbia un prezzo pari ad almeno $9.99.In his case, he wants the majority of its products to be $9.99 or less. Pertanto, usa un vincolo di criteri che si trova nella parte superiore dell'attività CreateProduct.So, he uses a policy constraint that is on top of the CreateProduct activity.

Nell'esempio:In the sample:

L'autore di attività (compilazione) deve:The activity author (build) must:

  • Creare un vincolo (PriceGreaterThanCost),Create a constraint (PriceGreaterThanCost). ovvero il punto in cui far risiedere l'intera logica di convalida.This is where all the validation logic resides.

  • Eseguire l'override del metodo System.Activities.CodeActivity.OnGetConstraints() e aggiungere il vincolo (PriceGreaterThanCost) ai vincoli IList.Override System.Activities.CodeActivity.OnGetConstraints() and add the constraint (PriceGreaterThanCost) to the constraints IList.

L'autore del flusso di lavoro (criteri) deve:The workflow author (policy) must:

  • Creare un flusso di lavoro con un'istanza dell'attività da convalidare (CreateProduct).Create a workflow with an instance of the activity to validate (CreateProduct).

  • Creare un vincolo (MaxPrice),Create a constraint (MaxPrice).

  • Creare un'istanza ValidationSettings (validationSettings) e aggiungere il vincolo (MaxPrice) alla raccolta AdditionalConstraints.Create a ValidationSettings instance (validationSettings) and add the constraint (MaxPrice) to the collection AdditionalConstraints. A questo punto l'autore del flusso di lavoro può aggiungere vincoli di criteri a qualsiasi attività, ad esempio Sequence o Parallel.Here the workflow author can add policy constraints to any activity, such as a sequence or parallel.

  • Chiamare il metodo Validate, che restituisce una raccolta ValidationResults di oggetti ValidationError.Call Validate, which returns a ValidationResults collection of ValidationError objects.

  • (Facoltativo) Stampare gli oggetti ValidationError.(Optional) Print the ValidationError objects.

Per impostare, compilare ed eseguire l'esempioTo set up, build, and run the sample

  1. Aprire la soluzione di esempio ConstraintTypes.sln in Visual Studio 2010Visual Studio 2010.Open the ConstraintTypes.sln sample solution in Visual Studio 2010Visual Studio 2010.

  2. Compilare ed eseguire la soluzione.Build and run the solution.

Importante

È possibile che gli esempi siano già installati nel computer.The samples may already be installed on your machine. Verificare la directory seguente (impostazione predefinita) prima di continuare.Check for the following (default) directory before continuing.

<InstallDrive>:\WF_WCF_Samples

Se questa directory non esiste, andare al Windows Communication Foundation (WCF) e gli esempi di Windows Workflow Foundation (WF) per .NET Framework 4 per scaricare tutti i Windows Communication Foundation (WCF) e WFWF esempi.If this directory does not exist, go to Windows Communication Foundation (WCF) and Windows Workflow Foundation (WF) Samples for .NET Framework 4 to download all Windows Communication Foundation (WCF) and WFWF samples. Questo esempio si trova nella directory seguente.This sample is located in the following directory.

<InstallDrive>:\WF_WCF_Samples\WF\Scenario\Validation\ConstraintLibrary