Condividi tramite


Attività ExternalizedPolicy in .NET Framework 4.5

L'esempio Rules-ExternalizedPolicy4 illustra come l'attività ExternalizedPolicy4 consenta l'esecuzione diretta di oggetti RuleSet esistenti di Windows Workflow Foundation per .NET Framework 3.5 (WF 3.5) in Windows Workflow Foundation per .NET Framework 4.6.1 (WF 4.5) usando il motore regole disponibile nella versione 3.5. Usando questa attività, è possibile aprire ed eseguire un oggetto RuleSet esistente di WF 3.5. Per altre informazioni sul motore regole incluso in Windows Workflow Foundation per .NET Framework 3.5, vedere Introduzione al motore regole di Windows Workflow Foundation. Per altre informazioni sulla migrazione delle regole a Windows Workflow Foundation in .NET Framework 4.6.1, vedere Indicazioni sulla migrazione.

Progetti di questo esempio

Nome progetto Descrizione File principali
ExternalizedPolicy4 Contiene l'attività ExternalizedPolicy4 e la relativa finestra di progettazione di WF 4.5. ExternalizedPolicy4.cs: definizione dell'attività.

ExternalizedPolicy4Designer.xaml: finestra di progettazione personalizzata per l'attività ExternalizedPolicy4. Usa l'editor delle regole (RuleSetDialog) dal motore per le regole di WF 3.5.
ImperativeCodeClientSample Applicazione client di esempio che configura ed esegue un flusso di lavoro tramite un'applicazione ExternalizedPolicy4 e il codice C# imperativo (non viene usata alcuna finestra di progettazione). ApplyDiscount.rules: file con definizioni delle regole di Windows Workflow Foundation.

Order.cs: tipo che rappresenta un ordine del cliente. Le regole vengono applicate agli oggetti di questo tipo.

Program.cs: configura ed esegue un flusso di lavoro che dispone di un'attività Policy4 per applicare le regole definite in ApplyDiscount.rules alle istanze di oggetti Order.

App.config: file di configurazione con il percorso del file delle regole.
DesignerClientSample Applicazione client di esempio che configura ed esegue un flusso di lavoro tramite un'applicazione ExternalPolicy4 nella finestra di progettazione di Windows Workflow Foundation. Sequence1.xaml: flusso di lavoro sequenziale che usa un'attività Policy4 per eseguire valutazioni delle regole.

Program.cs: esegue un'istanza del flusso di lavoro definito in Sequence1.xaml.

Attività ExternalizedPolicy4

L'attività ExternalizedPolicy4 è un oggetto NativeActivity che consente l'esecuzione degli oggetti RuleSet di WF 3.5 all'interno dei flussi di lavoro di WF 4.5. L'esempio seguente è una definizione semplificata del modello a oggetti pubblico dell'attività.

public class ExternalizedPolicy4Activity<TResult>: CodeActivity
{
    public string RulesFilePath

    public string RuleSetName

    [RequiredArgument]
    public InArgument<T> TargetObject

    [RequiredArgument]
    public OutArgument<T> ResultObject

    public OutArgument<ValidationErrorCollection> ValidationErrors
}
Proprietà Descrizione
RuleSetFilePath Percorso del file RuleSet di .NET Framework 3.5 da valutare quando viene eseguita l'attività.
RuleSetName Nome dell'oggetto RuleSet da usare all'interno del file con estensione rules.
TargetObject Oggetto nel quale gli oggetti Rule vengono valutati rispetto all'oggetto RuleSet.
ResultObject Oggetto risultante dopo aver applicato le regole (ad esempio le regole vengono applicate rispetto all'argomento di input e il risultato viene archiviato nell'argomento Result).
ValidationError Elenco di errori di convalida restituiti dal motore per le regole di WF 3.5 quando si convalida l'oggetto RuleSet rispetto all'oggetto di destinazione prima dell'esecuzione.

ActivityDesigner di ExternalizedPolicy4

La finestra di progettazione ExternalizedPolicy4 consente di configurare un'attività per usare un oggetto RuleSet esistente senza scrivere codice. È sufficiente impostare il percorso in cui si trova il file con estensione rules e specificare il nome dell'oggetto RuleSet che si desidera usare. Consente inoltre di modificare l'oggetto RuleSet. Dopo aver compilato la soluzione, è disponibile nella casella degli strumenti nella sezione Microsoft.Samples.Activities.Rules. La finestra di progettazione consente di selezionare un file con estensione rules e un oggetto RuleSet. Quando si fa clic sul pulsante Modifica set di regole, viene visualizzato l'oggetto RuleSetDialog di Windows Workflow Foundation per .NET Framework 3.5. Questa finestra di dialogo è l'editor delle regole di WF 3.5 rieseguito nell'host e viene usata per visualizzare e modificare le regole eseguite dall'attività ExternalizedPolicy4.

Policy4 e ExternalPolicy4

L'attività Policy consente di creare ed eseguire un set di regole di .NET Framework 3.5 in un flusso di lavoro di Windows Workflow Foundation per .NET Framework 4.5. L'oggetto RuleSet è serializzato inline nella definizione XML dell'attività Policy4. Nell'esempio ExternalizedPolicy4 viene illustrato come usare un oggetto RuleSet esterno esistente (contenuto in un file con estensione rules).

Usare l'esempio

Per eseguire questo esempio non è necessaria alcuna configurazione particolare. Aprire la soluzione in Visual Studio e premere F5 per eseguire l'applicazione.

In questo esempio sono contenute due applicazioni client: ImperativeCodeClientSample e DesignerClientSample. Nel client ImperativeCodeClientSample viene illustrato come configurare ed eseguire l'attività ExternalizedPolicy4 tramite il codice imperativo C#. In DesignerClientSample viene illustrato come configurare ed eseguire l'attività ExternalizedPolicy4 tramite la finestra di progettazione.

Eseguire l'applicazione ImperativeCodeClientSample

  1. In Visual Studio aprire il file della soluzione Policy4sample.sln.

  2. In Esplora soluzioni fare clic con il pulsante destro del mouse sul progetto ImperativeCodeClientSample, quindi scegliere Imposta come progetto di avvio.

  3. Per eseguire il progetto, premere CTRL+F5.

Eseguire l'applicazione DesignerClientSample

  1. In Visual Studio aprire il file della soluzione Policy4sample.sln.

  2. In Esplora soluzioni fare clic con il pulsante destro del mouse sul progetto DesignerClientSample, quindi scegliere Imposta come progetto di avvio.

  3. Premere CTRL+MAIUSC+B per compilare il progetto.

  4. Premere CTRL+F5 per eseguire il progetto.