Freigeben über


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.

Ee264173.note(de-de,VS.100).gif 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 nicht abstract 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:

  1. Das Send-Objekt und das Receive-Objekt können nicht in einer Interop-Aktivität verwendet werden.

  2. Die Objekte WebServiceInputActivity, WebServiceOutputActivity und WebServiceFaultActivity können nicht in einer Interop-Aktivität verwendet werden.

  3. Das InvokeWorkflowActivity-Objekt kann nicht in einer Interop-Aktivität verwendet werden.

  4. Das SuspendActivity-Objekt kann nicht in einer Interop-Aktivität verwendet werden.

  5. 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:

  1. 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.

  2. 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.

  3. 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.

  4. 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.

Siehe auch

Aufgaben

Verwenden einer .NET Framework 3.0- oder .NET Framework 3.5-Aktivität in einem .NET Framework 4-Workflow