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

L'attività Interop è un'attività di .NET Framework 4.6.1 (WF 4.5) 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.6.1. L'attività di WF 3 può essere una singola attività foglia o un intero 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.6.1 in esecuzione.

Nota

L'attività Interop non viene visualizzata nella casella degli strumenti della finestra di progettazione flussi di lavoro a meno che Framework di destinazione non sia impostato su .NET Framework 4.5 per il progetto del flusso di lavoro.

Criteri per l'uso 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:

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 usata 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, usato 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.5 analoga. Per altre, è invece dovuto al fatto che la funzionalità dell'attività non è supportata. Molte attività di WF 3 fornite dal sistema possono essere usate 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 usati in un'attività Interop.

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

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

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

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

Per quanto riguarda l'uso 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.5 non esiste alcuna fase di inizializzazione di un'istanza del flusso di lavoro precedente alla relativa esecuzione.

  2. Il runtime di WF 4.5 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.5 come oggetti InteropTrackingRecord. InteropTrackingRecord è un derivato di CustomTrackingRecord.

  4. Un'attività personalizzata di WF 3 può accedere ai dati usando 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.