Creazione di attività personalizzate

Per creare un'attività personalizzata di base è necessario ereditare dalla classe Activity o da un tipo derivato. Per creare un'attività personalizzata composita è necessario ereditare dalla classe CompositeActivity o da un tipo derivato.

Nota

La creazione di un'attività personalizzata che eredita da un'attività personalizzata contenente attività figlio non è supportata.

La classe dell'attività personalizzata creata ne definisce proprietà, eventi e logica di esecuzione.

Proprietà

Nell'attività personalizzata è possibile utilizzare due tipi di proprietà di attività: le metaproprietà e le proprietà di istanza. Le metaproprietà non cambiano in seguito alla creazione di un'istanza di proprietà al momento dell'esecuzione, pertanto la proprietà deve essere impostata in fase di progettazione su un valore letterale. Una proprietà di istanza può essere impostata in fase di progettazione oppure è possibile associare la proprietà ai dati di istanza. In tal caso, il valore effettivo viene determinato solo in fase di esecuzione. Le proprietà di istanza possono inoltre essere modificate direttamente durante l'esecuzione del flusso di lavoro.

Per ulteriori informazioni sulle proprietà di attività, vedere Utilizzo delle proprietà dell'attività.

Logica di esecuzione

Quando si crea un'attività personalizzata, la relativa logica di esecuzione deve essere gestita in modo esplicito tramite il metodo Execute. Per soddisfare i requisiti specifici dell'attività è possibile eseguire l'override dei metodi aggiuntivi dell'elemento Activity.

Attributi

L'attività personalizzata può essere decorata con vari attributi per configurare vari parametri, fra cui l'ActivityDesigner da caricare e la modalità di convalida da utilizzare per l'attività. Nella tabella seguente sono elencati tutti gli attributi utilizzabili per decorare l'attività personalizzata.

Attributo Descrizione

ActivityCodeGeneratorAttribute

Indica quale classe derivata dalla classe ActivityCodeGenerator verrà utilizzata per generare il codice della fase di compilazione dell'attività personalizzata.

ActivityValidatorAttribute

Indica quale classe derivata dalla classe ActivityValidator verrà utilizzata per convalidare l'attività personalizzata.

AlternateFlowActivityAttribute

Indica che l'attività supporta un flusso alternativo.

ContentPropertyAttribute

Indica che il nome di una determinata proprietà dell'attività personalizzata non verrà serializzato.

DefaultEventAttribute

Indica l'evento predefinito dell'attività personalizzata.

DesignerAttribute

Indica quale classe derivata dalla classe ActivityDesigner verrà utilizzata per implementare servizi in fase di progettazione nell'attività personalizzata.

DesignerCategoryAttribute

Indica che la finestra di progettazione dell'attività personalizzata appartiene a una determinata categoria.

DesignerSerializerAttribute

Indica quale serializzatore (ActivityMarkupSerializer, ActivityCodeDomSerializer, ActivityTypeCodeDomSerializer, CompositeActivityMarkupSerializer o un derivato di essi) verrà utilizzato per serializzare l'attività personalizzata.

PersistOnCloseAttribute

Indica che l'istanza del flusso di lavoro corrente deve rimanere invariata quando l'attività provvista di attributi completa l'esecuzione.

RuntimeNamePropertyAttribute

Indica il nome di runtime dell'attività personalizzata.

ToolboxBitmapAttribute

Indica l'icona da utilizzare per rappresentare l'attività personalizzata in un contenitore, ad esempio un'utilità personalizzata di progettazione dei flussi di lavoro.

ToolboxItemAttribute

Indica quale classe derivata dalla classe ActivityToolboxItem verrà utilizzata con l'attività personalizzata in un contenitore, ad esempio un'utilità personalizzata di progettazione dei flussi di lavoro.

ToolboxItemFilterAttribute

Indica la stringa e il tipo di filtro da utilizzare per l'attività personalizzata quando viene utilizzata in un contenitore, ad esempio un'utilità personalizzata di progettazione dei flussi di lavoro.

Avviso

Se l'attività personalizzata utilizza l'attributo PersistOnCloseAttribute, il flusso di lavoro che utilizza l'attività personalizzata deve specificare un servizio di persistenza da utilizzare. In caso contrario, quando il flusso di lavoro viene avviato, il sistema genera un'eccezione.

L'override di attributi può essere eseguito nel senso che se si decora l'attività personalizzata con attributi utilizzati dall'attività di base, i valori sottoposti a override vengono utilizzati nell'attività personalizzata. Si supponga ad esempio che occorra creare una bitmap personalizzata nella casella degli strumenti dell'attività personalizzata, utilizzando tuttavia il serializzatore e la convalida di attività predefiniti dell'attività di base. In questo caso è sufficiente decorare l'attività personalizzata con l'attributo ToolboxItemAttribute e impostare il valore di conseguenza.

Creazione di attività personalizzate a partire da attività predefinite di Windows Workflow Foundation

È possibile derivare attività personalizzate dai tipi di attività seguenti:

Tipo attività Descrizione

Activity

Tipo di base da cui derivano tutte le attività.

CallExternalMethodActivity

Chiama metodi di un host durante la comunicazione locale.

CompositeActivity

Tutte le attività composite derivano da questo tipo.

HandleExternalEventActivity

Gestisce gli eventi in entrata generati da un host durante la comunicazione locale.

SequenceActivity

Consente di creare attività composite personalizzate che presentano attività figlio eseguite in sequenza.

SequentialWorkflowActivity

Consente di creare flussi di lavoro sequenziali.

StateActivity

Utilizzata nei flussi di lavoro di macchine a stati per gestire eventi o l'inizializzazione di un determinato stato.

StateMachineWorkflowActivity

Consente di creare flussi di lavoro di macchine a stati.

Personalizzazione di attività

È possibile personalizzare la logica predefinita di un'attività personalizzata utilizzando un insieme di classi correlate che incapsulano componenti specifici di funzionalità.

Nelle sezioni seguenti vengono fornite informazioni più dettagliate su questi argomenti:

Creazione di attività composte personalizzate

Serializzazione di attività personalizzate

Come generare codice utilizzando attività personalizzate

Vedere anche

Riferimenti

Activity
CompositeActivity
ActivityBind

Concetti

Utilizzo delle proprietà dell'attività
Panoramica sulla logica di convalida delle attività
Creazione di un ActivityDesigner personalizzato

Altre risorse

Sviluppo di attività flusso di lavoro

Footer image

Copyright © 2007 Microsoft Corporation. Tutti i diritti riservati.