Condividi tramite


Utilizzo delle attività WF di .NET Framework 3.0 in .NET Framework 4 con l'attività Interop

Le informazioni contenute in questo argomento sono valide per Windows Workflow Foundation 4.

L'attività Interop è un'attività di .NET Framework 4 (WF 4) che esegue il wrapping di un'attività di .NET Framework 3.5 (WF 3.5) all'interno di un flusso di lavoro di .NET Framework 4. L'attività di WF 3 può essere una singola attività foglia o un'intera struttura ad albero di attività. L'esecuzione (annullamento e gestione delle eccezioni inclusi) e la persistenza dell'attività di .NET Framework 3.5 si verificano all'interno del contesto dell'istanza del flusso di lavoro di .NET Framework 4 in esecuzione.

Ee264173.note(it-it,VS.100).gif Visual Basic - Nota:
L'attività Interop non viene visualizzata nella casella degli strumenti dell'utilità di progettazione del flusso di lavoro a meno che Versione .NET Framework di destinazione non sia impostato su .NET Framework 4 per il progetto del flusso di lavoro.

Criteri per l'utilizzo di un'attività di WF 3 con un'attività di interoperabilità

Affinché un'attività di WF 3 venga eseguita correttamente all'interno di un'attività Interop, devono essere soddisfatti i seguenti criteri:

  • L'attività di WF 3 deve derivare dall'oggetto System.Workflow.ComponentModel.Activity.

  • L'attività di WF 3 deve essere dichiarata come public e non può essere abstract.

  • L'attività di WF 3 deve disporre di un costruttore predefinito pubblico.

  • A causa delle limitazioni nei tipi di interfaccia che possono essere supportati dall'attività Interop, gli oggetti HandleExternalEventActivity e CallExternalMethodActivity non possono essere utilizzati direttamente, tuttavia è possibile utilizzare attività derivative create utilizzando lo strumento relativo alle attività di comunicazione del flusso di lavoro (WCA.exe). Per dettagli, vedere Strumenti di Windows Workflow Foundation.

Configurazione di un'attività di WF 3 all'interno di un'attività di interoperabilità

Per configurare e passare dati all'interno e all'esterno di un'attività di WF 3, nel limite dell'interazione, le proprietà dei metadati e quelle dell'attività di WF 3 sono esposte dall'attività Interop. Le proprietà dei metadati dell'attività di WF 3 (ad esempio Name) sono esposte tramite la raccolta ActivityMetaProperties. Si tratta di una raccolta di coppie nome-valore utilizzata per definire i valori delle proprietà dei metadati dell'attività di WF 3. Una proprietà dei metadati è una proprietà supportata dalla proprietà di dipendenza per la quale viene impostato il flag Metadata.

Le proprietà dei metadati dell'attività di WF 3 sono esposte tramite la raccolta ActivityProperties. Si tratta di un set di coppie nome-valore, in cui ogni valore è un oggetto Argument, utilizzato per definire gli argomenti per le proprietà dell'attività di WF 3. Dal momento che è impossibile dedurre la direzione di una proprietà dell'attività di WF 3, ogni proprietà emerge come coppia InArgument/OutArgument. A seconda dell'utilizzo dell'attività della proprietà, è possibile fornire una voce InArgument, una voce OutArgument o entrambe. Il nome previsto della voce InArgument nella raccolta è il nome della proprietà come definito nell'attività di WF 3. Il nome previsto della voce OutArgument nella raccolta è una concatenazione del nome della proprietà e della stringa "Out".

Limitazioni sull'utilizzo di un'attività di WF 3 all'interno di un'attività di interoperabilità

Le attività di WF 3 fornite dal sistema non possono essere sottoposte a wrapping direttamente in un'attività Interop. Per alcune attività di WF 3, ad esempio DelayActivity, ciò è dovuto alla presenza di un'attività di WF 4 analoga. Per altre, è invece dovuto al fatto che la funzionalità dell'attività non è supportata. Molte attività di WF 3 fornite dal sistema possono essere utilizzate all'interno di flussi di lavoro sottoposti a wrapping dall'attività Interop, soggette alle seguenti restrizioni:

  1. Gli oggetti Send e Receive non possono essere utilizzati in un'attività Interop.

  2. Gli oggetti WebServiceInputActivity, WebServiceOutputActivity e WebServiceFaultActivity non possono essere utilizzati all'interno di un'attività Interop.

  3. L'oggetto InvokeWorkflowActivity non può essere utilizzato all'interno di un'attività Interop.

  4. L'oggetto SuspendActivity non può essere utilizzato all'interno di un'attività Interop.

  5. Le attività correlate alla compensazione non possono essere utilizzate all'interno di un'attività Interop.

Per quanto riguarda l'utilizzo delle attività di WF 3 all'interno dell'attività Interop è necessario comprendere alcune specifiche di comportamento:

  1. Le attività di WF 3 contenute all'interno di un'attività Interop vengono inizializzate quando viene eseguita l'attività Interop. In WF 4 non esiste alcuna fase di inizializzazione di un'istanza del flusso di lavoro precedente alla relativa esecuzione.

  2. Il runtime di WF 4 non esegue il checkpoint dello stato dell'istanza del flusso di lavoro quando inizia una transazione, indipendentemente dal punto in cui inizia quella transazione (all'interno o all'esterno di un'attività Interop).

  3. I record di rilevamento WF 3 per attività all'interno di un'attività Interop vengono forniti ai partecipanti del rilevamento WF 4 come oggetti InteropTrackingRecord. L'oggetto InteropTrackingRecord è un derivato dell'oggetto CustomTrackingRecord.

  4. Un'attività personalizzata di WF 3 può accedere ai dati utilizzando le code del flusso di lavoro all'interno dell'ambiente di interazione, esattamente come avviene all'interno del runtime del flusso di lavoro WF 3. Non è richiesta alcuna modifica al codice di attività personalizzata. Sull'host, i dati vengono accodati a una coda del flusso di lavoro WF 3 riprendendo un oggetto Bookmark. Il nome del segnalibro è il formato di stringa del nome della coda del flusso di lavoro IComparable.

Vedere anche

Attività

Utilizzo di un'attività di .NET Framework 3.0 o .NET Framework 3.5 in un flusso di lavoro di .NET Framework 4