Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Windows Workflow Foundation (WF) in .NET Framework 4.5 führt viele neue Features ein, z. B. neue Aktivitäten, Designerfunktionen und Workflowentwicklungsmodelle. Viele, aber nicht alle, die neuen Workflowfeatures, die in .NET Framework 4.5 eingeführt wurden, werden im neu gehosteten Workflow-Designer unterstützt. Weitere Informationen zu den neuen Features, die unterstützt werden, finden Sie unter Support für neue Workflow Foundation 4.5-Features im rehostierten Workflow-Designer. Weitere Informationen zum Migrieren von .NET Framework 3.0- und .NET Framework 3.5-Workflowanwendungen zur Verwendung der neuesten Version finden Sie unter Migrationsleitfaden. Dieser Artikel enthält eine Übersicht über die neuen Workflowfeatures, die in .NET Framework 4.5 eingeführt wurden.
Warnung
Die in .NET Framework 4.5 eingeführten neuen Windows Workflow Foundation-Features sind für Projekte, die auf frühere Versionen des Frameworks abzielen, nicht verfügbar. Wenn ein Projekt, das auf .NET Framework 4.5 abzielt, auf eine frühere Version des Frameworks umgeleitet wird, können mehrere Probleme auftreten.
- C#-Ausdrücke werden im Designer durch den Nachrichtenwert ersetzt, der in XAML festgelegt wurde.
- Viele Buildfehler treten auf, einschließlich des folgenden Fehlers.
Das Dateiformat ist nicht mit dem aktuellen Zielframework kompatibel. Um das Dateiformat zu konvertieren, speichern Sie die Datei explizit. Diese Fehlermeldung wird entfernt, nachdem Sie die Datei gespeichert und den Designer erneut geöffnet haben.
Workflowversionierung
.NET Framework 4.5 hat mehrere neue Versionsverwaltungsfeatures eingeführt, die auf der neuen WorkflowIdentity Klasse basieren. WorkflowIdentity stellt Workflowanwendungsautoren einen Mechanismus zum Zuordnen einer dauerhaften Workflowinstanz mit ihrer Definition bereit.
Entwickler, die WorkflowApplication Hosting verwenden, können WorkflowIdentity nutzen, um mehrere Versionen eines Workflows nebeneinander bereitzustellen. Persistierte Workflow-Instanzen können mithilfe der neuen WorkflowApplicationInstance-Klasse geladen werden, und der Host kann dann DefinitionIdentity verwenden, um die korrekte Version der Workflow-Definition bereitzustellen, wenn er die WorkflowApplication instanziiert. Weitere Informationen finden Sie unter Verwenden von WorkflowIdentity und Versionsverwaltung undVorgehensweise: Hosten mehrerer Versionen eines Workflows nebeneinander.
WorkflowServiceHost ist jetzt ein Host mit mehreren Versionen. Wenn eine neue Version eines Workflowdiensts bereitgestellt wird, werden neue Instanzen mit dem neuen Dienst erstellt, vorhandene Instanzen werden jedoch mit der vorherigen Version abgeschlossen. Weitere Informationen finden Sie unter Side by Side Versioning in WorkflowServiceHost.
Es wird ein dynamisches Update eingeführt, das einen Mechanismus zum Aktualisieren der Definition einer dauerhaften Workflowinstanz bereitstellt. Weitere Informationen finden Sie unter "Dynamisches Update " und "How to: Update the Definition of a Running Workflow Instance".
Es wird ein Datenbankskript „SqlWorkflowInstanceStoreSchemaUpgrade.sql“ bereitgestellt, um ein Upgrade für Persistenzdatenbanken durchzuführen, die mit .NET Framework 4-Datenbankskripts erstellt wurden. Dieses Skript aktualisiert .NET Framework 4 Persistenzdatenbanken, um die neuen Versionsverwaltungsfunktionen zu unterstützen, die in .NET Framework 4.5 eingeführt wurden. Die beibehaltenen Workflowinstanzen in der Datenbank erhalten Standardmäßige Versionsverwaltungswerte und können an der parallelen Ausführung und dynamischen Aktualisierung teilnehmen. Weitere Informationen finden Sie unter Aktualisieren von .NET Framework 4-Persistenzdatenbanken zur Unterstützung der Workflowversionsverwaltung.
Aktivitäten
Die integrierte Aktivitätsbibliothek enthält neue Aktivitäten und neue Features für vorhandene Aktivitäten.
Nicht-Persistenz-Bereich
NoPersistScope ist eine neue Containeraktivität, die verhindert, dass ein Workflow beibehalten wird, wenn die untergeordneten Aktivitäten von NoPersistScope ausgeführt werden. Dies ist in Szenarien hilfreich, in denen der Workflow nicht beibehalten werden kann, z. B. wenn der Workflow computerspezifische Ressourcen verwendet, z. B. Dateihandles oder während Datenbanktransaktionen. Um zu verhindern, dass während der Ausführung einer Aktivität Persistenz auftritt, benötigte man eine benutzerdefinierte NativeActivity, die ein NoPersistHandle verwendete.
Neue Flussdiagrammfunktionen
Flussdiagramme werden für .NET Framework 4.5 aktualisiert und verfügen über die folgenden neuen Funktionen:
Die Eigenschaft von
DisplayName, FlowSwitch<T> oder FlowDecision-Aktivität kann bearbeitet werden. Dadurch kann der Aktivitäts-Designer weitere Informationen zum Zweck der Aktivität anzeigen.Flussdiagramme haben eine neue Eigenschaft genannt ValidateUnconnectedNodes; der Standardwert für diese Eigenschaft ist
False. Wenn diese Eigenschaft aufTruefestgelegt ist, führen nicht verbundene Flussdiagrammknoten zu Validierungsfehlern.
Unterstützung für partielle Vertrauensstellung
Workflows in .NET Framework 4 erfordern eine voll vertrauenswürdige Anwendungsdomäne. In .NET Framework 4.5 können Workflows in einer teilweise vertrauenswürdigen Umgebung ausgeführt werden. In einer teilweise vertrauenswürdigen Umgebung können Komponenten von Drittanbietern verwendet werden, ohne ihnen vollständigen Zugriff auf die Ressourcen des Hosts zu gewähren. Einige Bedenken hinsichtlich der Ausführung von Workflows in teilweiser Vertrauensstellung sind wie folgt:
Die Verwendung von Legacykomponenten (einschließlich Regeln), die in der Interop Aktivität enthalten sind, wird nicht unter teilweiser Vertrauensstellung unterstützt.
Das Ausführen von Workflows in einem Modus teilweise Vertrauensstellung in WorkflowServiceHost wird nicht unterstützt.
Das Beibehalten von Ausnahmen in einem teilweise vertrauenswürdigen Szenario ist eine potenzielle Sicherheitsbedrohung. Um das Beibehalten von Ausnahmen zu deaktivieren, muss dem Projekt eine Erweiterung des Typs ExceptionPersistenceExtension hinzugefügt werden, um das Beibehalten von Ausnahmen zu deaktivieren. Im folgenden Codebeispiel wird veranschaulicht, wie dieser Typ implementiert wird.
public class ExceptionPersistenceExtension { public ExceptionPersistenceExtension() { this.PersistExceptions = false; } public bool PersistExceptions { get; set; } }Stellen Sie sicher, dass Ausnahmen in einem NoPersistScope verwendet werden, wenn sie nicht serialisiert werden sollen.
Aktivitätsautoren sollten CacheMetadata überschreiben, um zu vermeiden, dass die Workflow-Laufzeit automatisch Reflexionen auf den Typ ausführt. Argumente und untergeordnete Aktivitäten müssen nicht null sein und Bind explizit aufgerufen werden. Weitere Informationen zum Überschreiben von CacheMetadata finden Sie unter Verfügbarmachen von Daten mit CacheMetadata. Darüber hinaus müssen Instanzen von Argumenten eines Typs, der
internaloder privat ist, explizit in CacheMetadata erstellt werden, um zu vermeiden, dass sie durch Reflexion erstellt werden.Typen verwenden ISerializable oder SerializableAttribute nicht für die Serialisierung; Typen, die serialisiert werden sollen, müssen DataContractSerializer unterstützen.
Ausdrücke, die LambdaValue<TResult> verwenden, erfordern RestrictedMemberAccess und funktionieren daher nicht unter teilweiser Vertrauensstellung. Workflows, die LambdaValue<TResult> verwenden, sollten so geändert werden, dass sie Ausdrücke durch Aktivitäten ersetzen, die von CodeActivity<TResult> abgeleitet sind. .
Ausdrücke können nicht mit TextExpressionCompiler oder vom von Visual Basic gehosteten Compiler in teilweiser Vertrauensstellung kompiliert werden, aber zuvor kompilierte Ausdrücke können ausgeführt werden.
Eine einzelne Assembly, die Level 2-Transparenz verwendet, kann nicht im vollständigen Vertrauen in .NET Framework 4, im vollständigen Vertrauen in .NET Framework 4.6.1 und im teilweisen Vertrauen in .NET Framework 4.6.1 verwendet werden.
Neue Designerfunktionen
Designersuche
Um größere Workflows besser zu verwalten, können Workflows jetzt nach Schlüsselwort durchsucht werden. Dieses Feature ist nur in Visual Studio verfügbar. Dieses Feature ist in einem neu gehosteten Designer nicht verfügbar. Es stehen zwei Arten von Suchvorgängen zur Verfügung:
Schnellsuche, initiiert mit STRG+F oder Bearbeiten, Suchen und Ersetzen, Schnellsuche.
Suchen In Dateien, initiiert mit STRG+UMSCHALT+F oder Bearbeiten, Suchen und Ersetzen, Suchen in Dateien.
Beachten Sie, dass "Ersetzen" nicht unterstützt wird.
Schnellsuche
Schlüsselwörter, die in Workflows durchsucht werden, entsprechen den folgenden Designerelementen:
Eigenschaften von Activity Objekten, FlowNode Objekten, State Objekten, Transition Objekten und anderen benutzerdefinierten Flusssteuerungselementen.
Variablen
Argumente
Ausdrücke
Die Schnellsuche wird auf der Struktur des ModelItem Designers ausgeführt. Die Schnellsuche sucht keine namespaces, die in der Workflowdefinition importiert wurden.
In Dateien suchen
Schlüsselwörter, die in Workflows durchsucht werden, entsprechen dem tatsächlichen Inhalt der Workflowdateien. Die Suchergebnisse werden im Ansichtsbereich "Ergebnisse suchen" in Visual Studio angezeigt. Durch Doppelklicken auf das Ergebniselement wird zu der Aktivität navigiert, die die Übereinstimmung im Workflow-Designer enthält.
Löschen eines Kontextmenüelements im Variablen- und Argument-Designer
In .NET Framework 4 konnten Variablen und Argumente nur mithilfe der Tastatur im Designer gelöscht werden. Ab .NET Framework 4.5 können Variablen und Argumente mithilfe des Kontextmenüs gelöscht werden.
Der folgende Screenshot zeigt das Kontextmenü des Variablen- und Argument-Designers.
Automatisches Umschließen mit Sequenz
Da ein Workflow oder bestimmte Containeraktivitäten (z. B. NoPersistScope) nur eine einzelne Hauptaktivität enthalten können, musste der Entwickler, um eine zweite Aktivität hinzuzufügen, zunächst die erste Aktivität löschen, dann eine Sequence-Aktivität hinzufügen und schließlich beide Aktivitäten zur Sequenzaktivität hinzufügen. Ab .NET Framework 4.5 wird beim Hinzufügen einer zweiten Aktivität zur Designeroberfläche automatisch eine Sequence Aktivität erstellt, um beide Aktivitäten umzuschließen.
Die folgende Bildschirmaufnahme zeigt eine WriteLine-Aktivität in Body von NoPersistScope.
Die folgende Bildschirmaufnahme zeigt die automatisch erstellte Sequence-Aktivität in Body, wenn eine zweite WriteLine-Komponente unterhalb der ersten abgelegt wird.
Schwenkmodus
Um einen großen Workflow im Designer einfacher zu navigieren, kann der Verschiebungsmodus aktiviert werden, sodass der Entwickler klicken und ziehen kann, um den sichtbaren Teil des Workflows zu verschieben, anstatt die Bildlaufleisten zu verwenden. Die Schaltfläche zum Aktivieren des Schwenkmodus befindet sich rechts unten im Designer.
Der folgende Screenshot zeigt die Schaltfläche "Schwenken", die sich in der unteren rechten Ecke des Workflow-Designers befindet.
Die mittlere Maustaste oder Leertaste kann auch zum Verschieben des Workflow-Designers verwendet werden.
Mehrfachauswahl
Mehrere Aktivitäten können gleichzeitig ausgewählt werden, indem sie entweder ein Rechteck um sie herum ziehen (wenn der Schwenkmodus nicht aktiviert ist), oder indem Sie STRG gedrückt halten und auf die gewünschten Aktivitäten einzeln klicken.
Mehrere ausgewählte Aktivitäten können auch im Designer gezogen und abgelegt und über das Kontextmenü bearbeitet werden.
Gliederungsansicht von Workflowelementen
Damit hierarchische Workflows leichter navigierbar sind, werden die Komponenten eines Workflows in einer Baumansicht dargestellt. Die Gliederungsansicht wird in der Dokumentgliederungsansicht angezeigt. Um diese Ansicht zu öffnen, wählen Sie im oberen Menü "Ansicht", "Andere Fenster", " Dokumentgliederung" aus, oder drücken Sie STRG W,U. Wenn Sie in der Gliederungsansicht auf einen Knoten klicken, wird zu der entsprechenden Aktivität im Workflow-Designer navigiert, und die Gliederungsansicht wird aktualisiert, um Aktivitäten anzuzeigen, die im Designer ausgewählt sind.
Der folgende Screenshot des abgeschlossenen Workflows aus dem Lernprogramm "Erste Schritte " zeigt die Gliederungsansicht mit einem sequenziellen Workflow.
C#-Ausdrücke
Vor .NET Framework 4.5 konnten alle Ausdrücke in Workflows nur in Visual Basic geschrieben werden. In .NET Framework 4.5 werden Visual Basic-Ausdrücke nur für Projekte verwendet, die mit Visual Basic erstellt wurden. Visual C#-Projekte verwenden jetzt C# für Ausdrücke. Ein voll funktionsfähiger C#-Ausdrucks-Editor wird bereitgestellt, der Funktionen wie Syntaxhervorhebung und IntelliSense verfügbar macht. C#-Workflowprojekte, die in früheren Versionen erstellt wurden, die Visual Basic-Ausdrücke verwenden, funktionieren weiterhin.
C#-Ausdrücke werden zur Entwurfszeit überprüft. Fehler in C#-Ausdrücken werden mit einer roten wellenförmigen Unterstreichung gekennzeichnet.
Weitere Informationen zu C#-Ausdrücken finden Sie unter C#-Ausdrücke.
Bessere Kontrolle über die Sichtbarkeit der Shellleiste und Headerelemente
In einem neu gehosteten Designer haben einige der standardmäßigen UI-Steuerelemente möglicherweise keine Bedeutung für einen bestimmten Workflow und können deaktiviert werden. In .NET Framework 4 wird diese Anpassung nur von der Shellleiste unten im Designer unterstützt. In .NET Framework 4.5 kann die Sichtbarkeit der Shellheaderelemente am oberen Rand des Designers angepasst werden, indem WorkflowShellHeaderItemsVisibility auf den entsprechenden ShellHeaderItemsVisibility-Wert festgelegt wird.
Automatisches Verbinden und Einfügen in Flussdiagramm- und Zustandsautomatworkflows
In .NET Framework 4 mussten Verbindungen zwischen Knoten in einem Flussdiagrammworkflow manuell hinzugefügt werden. In .NET Framework 4.5 verfügen Flussdiagramm- und Zustandsautomatenknoten über automatische Verbindungspunkte, die sichtbar werden, wenn eine Aktivität von der Toolbox auf die Designeroberfläche gezogen wird. Durch Ablegen einer Aktivität auf einem dieser Punkte wird die Aktivität automatisch zusammen mit der erforderlichen Verbindung hinzugefügt.
Der folgende Screenshot zeigt die Anschlusspunkte, die sichtbar werden, wenn eine Aktivität aus der Toolbox gezogen wird.
Aktivitäten können auch auf Verbindungen zwischen Flussdiagrammknoten und -zuständen gezogen werden, um den Knoten automatisch zwischen zwei anderen Knoten einzufügen. Der folgende Screenshot zeigt die hervorgehobene Verbindungslinie, in der Aktivitäten aus der Toolbox gezogen und gelöscht werden können.
Designeranmerkungen
Um die Entwicklung größerer Workflows zu erleichtern, unterstützt der Designer jetzt das Hinzufügen von Anmerkungen, um den Entwurfsprozess nachzuverfolgen. Anmerkungen können Aktivitäten, Zuständen, Flussdiagrammknoten, Variablen und Argumenten hinzugefügt werden. Der folgende Screenshot zeigt das Kontextmenü, das zum Hinzufügen von Anmerkungen zum Designer verwendet wird.
Debuggingzustände
In .NET Framework 4 konnten Nichtaktivitätselemente keine Debug-Haltepunkte unterstützen, da sie keine Ausführungseinheiten waren. Diese Version bietet einen Mechanismus zum Hinzufügen von Haltepunkten zu State Objekten. Wenn ein Haltepunkt auf einem State festgelegt ist, wird die Ausführung unterbrochen, wenn auf den Zustand umgeschaltet wird, bevor die Eintrittsaktivitäten oder Auslöser angesetzt werden.
Definieren und Verwenden von ActivityDelegate-Objekten im Designer
Aktivitäten in .NET Framework 4 verwendeten ActivityDelegate Objekte, um Ausführungspunkte verfügbar zu machen, in denen andere Teile des Workflows mit der Ausführung eines Workflows interagieren konnten, die Verwendung dieser Ausführungspunkte erforderte jedoch in der Regel eine faire Menge an Code. In dieser Version können Entwickler Aktivitätsdelegats mithilfe des Workflow-Designers definieren und nutzen. Weitere Informationen finden Sie unter So definieren und verwenden Sie Aktivitätsdelegaten im Workflow Designer.
Validierung zur Buildzeit
In .NET Framework 4 wurden Workflowüberprüfungsfehler während des Builds eines Workflowprojekts nicht als Buildfehler gezählt. Dies bedeutete, dass das Erstellen eines Workflowprojekts auch dann erfolgreich sein konnte, wenn Fehler bei der Workflowüberprüfung aufgetreten sind. In .NET Framework 4.5 führen Workflowüberprüfungsfehler dazu, dass der Build fehlschlägt.
Hintergrundvalidierung zur Entwurfszeit
In .NET Framework 4 wurden Workflows als Vordergrundprozess überprüft, wodurch die Benutzeroberfläche bei komplexen oder zeitaufwendigen Validierungsprozessen möglicherweise blockiert werden kann. Die Workflowüberprüfung erfolgt jetzt in einem Hintergrundthread, sodass die Benutzeroberfläche nicht blockiert wird.
Der Ansichtszustand wird an einem separaten Ort in XAML-Dateien gespeichert
In .NET Framework 4 werden die Ansichtsstatusinformationen für einen Workflow an vielen verschiedenen Speicherorten in der XAML-Datei gespeichert. Dies ist unannelich für Entwickler, die XAML direkt lesen oder Code schreiben möchten, um die Ansichtsstatusinformationen zu entfernen. In .NET Framework 4.5 werden die Ansichtsstatusinformationen in der XAML-Datei als separates Element in der XAML-Datei serialisiert. Entwickler können die Ansichtsstatusinformationen einer Aktivität ganz einfach suchen und bearbeiten oder den Ansichtszustand vollständig entfernen.
Erweiterbarkeit von Ausdrücken
In .NET Framework 4.5 bieten wir Entwicklern eine Möglichkeit, eigene Ausdrucks- und Ausdruckserstellungsfunktionen zu erstellen, die an den Workflow-Designer angeschlossen werden können.
Anmelden für Workflow 4.5-Features im neu gehosteten Designer
Um die Abwärtskompatibilität beizubehalten, sind einige neue Features, die in .NET Framework 4.5 enthalten sind, nicht standardmäßig im neu gehosteten Designer aktiviert. Dadurch wird sichergestellt, dass vorhandene Anwendungen, die den neu gehosteten Designer verwenden, nicht unterbrochen werden, indem Sie auf die neueste Version aktualisieren. Um neue Features im neu gehosteten Designer zu aktivieren, setzen Sie TargetFrameworkName entweder auf ".NET Framework 4.5" oder legen Sie einzelne Mitglieder von DesignerConfigurationService fest, um einzelne Features zu aktivieren.
Neue Workflowentwicklungsmodelle
Zusätzlich zu den Entwicklungsmodellen für sequenzielle oder Flussdiagramm-Workflows umfasst dieses Release Zustandsautomatworkflows und Vertrag zuerst-Workflowdienste.
Zustandsautomatworkflows
Zustandsmaschinen-Workflows wurden als Teil von .NET Framework 4, Version 4.0.1, im Microsoft .NET Framework 4 Platform Update 1 eingeführt. Dieses Update enthielt mehrere neue Klassen und Aktivitäten, mit denen Entwickler Zustandsautomaten-Workflows erstellen können. Diese Klassen und Aktivitäten wurden für .NET Framework 4.5 aktualisiert. Die Aktualisierungen umfassen:
Festlegen von Haltepunkten für Zustände
Die Möglichkeit zum Kopieren und Einfügen von Übergängen im Workflow-Designer
Designerunterstützung für das Erstellen von freigegebenen Triggerübergängen
Aktivitäten, die zum Erstellen von Zustandsautomatworkflows verwendet werden, darunter: StateMachine, State und Transition
Der folgende Screenshot zeigt den abgeschlossenen Zustandsautomaten-Workflow aus dem Leitfaden "Erste Schritte", Schritt "Wie erstelle ich einen Zustandsautomaten-Workflow".
Weitere Informationen zum Erstellen von Zustandsmaschinen-Workflows finden Sie unter Zustandsmaschinen-Workflows.
Vertragsorientierte Workflow-Entwicklung
Das Contract-First-Workflow-Entwicklungstool ermöglicht es dem Entwickler, zuerst einen Vertrag im Code zu gestalten und dann mit nur wenigen Klicks in Visual Studio automatisch eine Aktivitätsschablone in der Toolbox zu generieren, die für jeden Vorgang steht. Diese Aktivitäten werden dann verwendet, um einen Workflow zu erstellen, der die vom Vertrag definierten Vorgänge implementiert. Der Workflow-Designer überprüft den Workflowdienst, um sicherzustellen, dass diese Vorgänge implementiert werden und die Signatur des Workflows mit der Vertragssignatur übereinstimmt. Der Entwickler kann einen Workflowdienst auch einer Sammlung implementierter Verträge zuordnen. Weitere Informationen zur Entwicklung eines Workflow-Dienstes nach dem Vertrags-First-Ansatz finden Sie im Abschnitt „So erstellen Sie einen Workflowdienst, der einen vorhandenen Dienstvertrag nutzt“.