Verwenden von .NET Framework 3.0-WF-Aktivitäten unter .NET Framework 4 mit der Interop-Aktivität
Dieses Thema gilt für Windows Workflow Foundation 4.
Die Interop-Aktivität ist eine .NET Framework 4 (WF 4)-Aktivität, die eine .NET Framework 3.5 (WF 3.5)-Aktivität in einem .NET Framework 4-Workflow umschließt. Die WF 3-Aktivität kann eine einzelne Blattaktivität oder eine ganze Aktivitätsstruktur darstellen. Die Ausführung (einschließlich Abbruch und Ausnahmebehandlung) und die Persistenz der .NET Framework 3.5-Aktivität treten im Kontext der .NET Framework 4 Workflowinstanz auf, die ausgeführt wird.
Hinweis: zu Visual Basic |
---|
Die Interop-Aktivität wird nur in der Toolbox des Workflow-Designers angezeigt, wenn für das Projekt des Workflows die Einstellung Zielframework auf .NET Framework 4 festgelegt wurde. |
Kriterien für die Verwendung einer WF 3-Aktivität mit einer Interop-Aktivität
Damit eine WF 3-Aktivität innerhalb einer Interop-Aktivität erfolgreich ausgeführt werden kann, müssen die folgenden Kriterien erfüllt werden:
Die WF 3-Aktivität muss von System.Workflow.ComponentModel.Activity abgeleitet sein.
Die WF 3-Aktivität muss als
public
deklariert werden und darf nichtabstract
sein.Die WF 3-Aktivität muss über einen öffentlichen Standardkonstruktor verfügen.
Aufgrund von Einschränkungen bei den Schnittstellentypen, die die Interop-Aktivität unterstützen kann, können das HandleExternalEventActivity-Objekt und das CallExternalMethodActivity-Objekt nicht direkt verwendet werden. Abgeleitete Aktivitäten, die mit dem Tool für Workflow-Kommunikationsaktivitäten (WCA.exe) erstellt wurden, können jedoch verwendet werden. Informationen dazu finden Sie unter Windows Workflow Foundation – Tools.
Konfigurieren einer WF 3-Aktivität innerhalb einer Interop-Aktivität
Um Daten zu konfigurieren und in bzw. aus einer WF 3-Aktivität über die Grenzen der Interoperation zu übergeben, werden die Eigenschaften und die Metadateneigenschaften der WF 3-Aktivität von der Interop-Aktivität verfügbar gemacht. Die Metadateneigenschaften der WF 3-Aktivität (z. B. Name) werden über die ActivityMetaProperties-Auflistung verfügbar gemacht. Dies ist eine Auflistung von Name-Wert-Paaren, mit denen die Werte für die Metadateneigenschaften der WF 3-Aktivität definiert werden. Eine Metadateneigenschaft ist eine Eigenschaft, die von der Abhängigkeitseigenschaft unterstützt wird, für die das Metadata-Kennzeichen festgelegt ist.
Die Eigenschaften der WF 3-Aktivität werden über die ActivityProperties-Auflistung verfügbar gemacht. Dies ist ein Satz von Name-Wert-Paaren, wobei jeder Wert ein Argument-Objekt ist, mit dem Argumente für die Eigenschaften der WF 3-Aktivität definiert werden. Da die Richtung der Eigenschaft einer WF 3-Aktivität nicht abgeleitet werden kann, wird jede Eigenschaft mit einem OutArgument-InArgument-Paar versehen. Abhängig von der Verwendung der Aktivitätseigenschaft empfiehlt es sich, einen InArgument-Eintrag, einen OutArgument-Eintrag oder beides bereitzustellen. Der erwartete Name des InArgument-Eintrags in der Auflistung entspricht dem Namen der Eigenschaft, wie sie für die WF 3-Aktivität definiert wurde. Der erwartete Name des OutArgument-Eintrags in der Auflistung ist eine Verkettung aus dem Namen der Eigenschaft und der Zeichenfolge "Out".
Einschränkungen bei der Verwendung einer WF 3-Aktivität innerhalb einer Interop-Aktivität
Die vom System bereitgestellten WF 3-Aktivitäten können nicht direkt in einer Interop-Aktivität umschlossen werden. Bei einigen WF 3-Aktivitäten ist der Grund hierfür, dass es eine analoge WF 4-Aktivität wie z. B. DelayActivity gibt. Bei anderen rührt dies daher, dass die Funktionalität der Aktivität nicht unterstützt wird. Viele vom System bereitgestellte WF 3-Aktivitäten können in Workflows verwendet werden, die von der Interop-Aktivität umschlossen werden, jedoch mit folgenden Einschränkungen:
Das Send-Objekt und das Receive-Objekt können nicht in einer Interop-Aktivität verwendet werden.
Die Objekte WebServiceInputActivity, WebServiceOutputActivity und WebServiceFaultActivity können nicht in einer Interop-Aktivität verwendet werden.
Das InvokeWorkflowActivity-Objekt kann nicht in einer Interop-Aktivität verwendet werden.
Das SuspendActivity-Objekt kann nicht in einer Interop-Aktivität verwendet werden.
Kompensationsbezogene Aktivitäten können nicht in einer Interop-Aktivität verwendet werden.
Es gibt auch einige bestimmte Verhaltensmerkmale bezüglich der Verwendung von WF 3-Aktivitäten in der Interop-Aktivität:
In einer Interop-Aktivität enthaltene WF 3-Aktivitäten werden initialisiert, wenn die Interop-Aktivität ausgeführt wird. In WF 4 gibt es vor der Ausführung keine Initialisierungsphase für eine Workflowinstanz.
Die WF 4-Laufzeit setzt unabhängig davon, wo diese Transaktion beginnt (innerhalb oder außerhalb einer Interop-Aktivität), keinen Prüfpunkt für den Workflowinstanzzustand, wenn eine Transaktion beginnt.
WF 3-Überwachungsdatensätze für Aktivitäten in einer Interop-Aktivität werden für WF 4-Nachverfolgungsteilnehmer in Form von InteropTrackingRecord-Objekten bereitgestellt. Das InteropTrackingRecord-Objekt ist eine Ableitung vom CustomTrackingRecord-Objekt.
Eine benutzerdefinierte WF 3-Aktivität kann über Workflowwarteschlangen in der Interoperationsumgebung auf Daten zugreifen, wie dies auch innerhalb der WF 3-Workflowlaufzeit möglich ist. Es sind keine benutzerdefinierten Änderungen an Aktivitätscode erforderlich. Auf dem Host werden Daten in eine WF 3-Workflowwarteschlange eingereiht, indem ein Bookmark-Objekt wieder aufgenommen wird. Der Name des Lesezeichens entspricht dem Workflow-Warteschlangennamen des IComparable-Objekts in Form einer Zeichenfolge.