Sdílet prostřednictvím


Novinky ve Windows Workflow Foundation v rozhraní .NET Framework 4.5

Windows Workflow Foundation (WF) v rozhraní .NET Framework 4.5 přináší mnoho nových funkcí, jako jsou nové aktivity, možnosti návrháře a modely vývoje pracovních postupů. Mnoho nových funkcí pracovního postupu, ale ne všechny, které byly zavedeny v rozhraní .NET Framework 4.5, jsou podporovány v návrháři re-hostovaných pracovních postupů. Další informace o nových funkcích, které jsou podporovány, najdete v tématu Podpora funkcí New Workflow Foundation 4.5 v Návrháři re hostovaných pracovních postupů. Další informace o migraci aplikací pracovních postupů rozhraní .NET Framework 3.0 a .NET Framework 3.5 pro použití nejnovější verze najdete v tématu Pokyny k migraci. Tento článek obsahuje přehled nových funkcí pracovního postupu zavedených v rozhraní .NET Framework 4.5.

Upozornění

Nové funkce Windows Workflow Foundation zavedené v rozhraní .NET Framework 4.5 nejsou k dispozici pro projekty, které cílí na předchozí verze rozhraní. Pokud se projekt, který cílí na rozhraní .NET Framework 4.5, přecílí na předchozí verzi rozhraní, může dojít k několika problémům.

  • Výrazy jazyka C# budou v návrháři nahrazeny zprávou Hodnota byla nastavena v XAML.
  • Dojde k mnoha chybám sestavení, včetně následující chyby.

Formát souboru není kompatibilní s aktuální architekturou cílení. Chcete-li převést formát souboru, uložte soubor explicitně. Tato chybová zpráva zmizí po uložení souboru a opětovném otevření návrháře.

Správa verzí pracovního postupu

Rozhraní .NET Framework 4.5 zavedlo několik nových funkcí správy verzí založených na nové WorkflowIdentity třídě. WorkflowIdentity poskytuje autorům aplikací pracovního postupu mechanismus pro mapování trvalé instance pracovního postupu s její definicí.

Aktivity

Integrovaná knihovna aktivit obsahuje nové aktivity a nové funkce pro existující aktivity.

Obor NoPersist

NoPersistScope je nová aktivita kontejneru, která brání zachování pracovního postupu při provádění podřízených aktivit NoPersistScope. To je užitečné ve scénářích, kdy není vhodné pracovní postup zachovat, například když pracovní postup používá prostředky specifické pro počítač, jako jsou popisovače souborů, nebo během databázových transakcí. Dříve, aby se zabránilo trvalosti během provádění aktivity, byl vyžadován vlastní NativeActivity , který používal NoPersistHandle objekt .

Nové možnosti vývojového diagramu

Vývojové diagramy jsou aktualizované pro rozhraní .NET Framework 4.5 a mají následující nové funkce:

  • Vlastnost DisplayNameFlowSwitch<T> aktivity nebo FlowDecision je možné upravovat. Návrhář aktivity tak bude moct zobrazit další informace o účelu aktivity.

  • Vývojové diagramy mají novou vlastnost s názvem ValidateUnconnectedNodes; výchozí hodnota pro tuto vlastnost je False. Pokud je tato vlastnost nastavená na Truehodnotu , pak nepřipojené uzly vývojového diagramu způsobí chyby ověření.

Podpora částečného vztahu důvěryhodnosti

Pracovní postupy v rozhraní .NET Framework 4 vyžadovaly plně důvěryhodnou doménu aplikace. V rozhraní .NET Framework 4.5 mohou pracovní postupy fungovat v prostředí s částečnou důvěryhodností. V prostředí s částečnou důvěryhodností je možné použít komponenty třetích stran, aniž by jim byl udělen úplný přístup k prostředkům hostitele. Některé obavy ohledně spouštění pracovních postupů v částečném vztahu důvěryhodnosti jsou následující:

  1. Použití starších komponent (včetně pravidel) obsažených v aktivitě Interop není podporováno v rámci částečné důvěryhodnosti.

  2. Spouštění pracovních postupů s částečným vztahem důvěryhodnosti v WorkflowServiceHost systému se nepodporuje.

  3. Zachování výjimek ve scénáři s částečnou důvěryhodností je potenciální bezpečnostní hrozbou. Pokud chcete zakázat trvalé výjimky, musí být do projektu přidáno rozšíření typu ExceptionPersistenceExtension , aby bylo možné se z trvalých výjimek odhlásit. Následující příklad kódu ukazuje, jak tento typ implementovat.

    public class ExceptionPersistenceExtension
    {
        public ExceptionPersistenceExtension()
        {
            this.PersistExceptions = false;
        }
        public bool PersistExceptions { get; set; }
    }
    

    Pokud se výjimky nemají serializovat, ujistěte se, že se v rámci objektu NoPersistScopepoužívají výjimky.

  4. Autoři aktivit by měli přepsat CacheMetadata , aby modul runtime pracovního postupu automaticky prováděl reflexi proti typu. Argumenty a podřízené aktivity musí mít hodnotu null a Bind musí být volána explicitně. Další informace o přepsání CacheMetadatanajdete v tématu Vystavení dat pomocí CacheMetadata. Také instance argumentů, které jsou typu, který je internal nebo privátní , musí být explicitně vytvořeny v CacheMetadata , aby se zabránilo vytvoření reflexí.

  5. Typy nebudou používat ISerializable ani SerializableAttribute pro serializaci; typy, které mají být serializovány, musí podporovat DataContractSerializer.

  6. Výrazy, které používají LambdaValue<TResult> , vyžadují RestrictedMemberAccess, a proto nebudou fungovat v rámci částečné důvěryhodnosti. Pracovní postupy, které používají LambdaValue<TResult> , by měly nahradit tyto výrazy aktivitami odvozenými z CodeActivity<TResult>. .

  7. Výrazy nelze zkompilovat pomocí TextExpressionCompiler nebo hostovaného kompilátoru jazyka Visual Basic v částečné důvěryhodnosti, ale dříve zkompilované výrazy lze spustit.

  8. Jedno sestavení, které používá průhlednost úrovně 2 , nelze použít v rozhraní .NET Framework 4, .NET Framework 4.6.1 v plné důvěryhodnosti a rozhraní .NET Framework 4.6.1 v částečné důvěryhodnosti.

Nové možnosti návrháře

Hledání návrhářů

Aby bylo možné větší pracovní postupy lépe spravovat, je teď možné pracovní postupy prohledávat podle klíčových slov. Tato funkce je k dispozici pouze v sadě Visual Studio. tato funkce není k dispozici v pře hostovaném návrháři. K dispozici jsou dva druhy hledání:

  • Rychlé hledání zahájené pomocí Kombinace kláves Ctrl+F nebo Upravit, Najít a nahradit, Rychlé hledání.

  • Funkce Najít v souborech zahájená pomocí Kombinace kláves Ctrl+Shift+F nebo Upravit, Najít a nahradit, Najít v souborech.

Všimněte si, že nahradit není podporováno.

Rychlé hledání

Klíčová slova hledaná v pracovních postupech se budou shodovat s následujícími položkami návrháře:

  • Activity Vlastnosti objektů, objektů, FlowNodeState objektů, Transition objektů a dalších vlastních položek řízení toku

  • Proměnné

  • Argumenty

  • Výrazy

Rychlé hledání se provádí ve stromu návrháře ModelItem . Rychlé hledání nenajde obory názvů importované v definici pracovního postupu.

Najít v souborech

Klíčová slova hledaná v pracovních postupech se budou shodovat se skutečným obsahem souborů pracovního postupu. Výsledky hledání se zobrazí v podokně Zobrazení výsledků hledání v sadě Visual Studio. Poklikáním na výslednou položku přejdete na aktivitu, která obsahuje shodu v návrháři pracovního postupu.

Odstranění položky místní nabídky v návrháři proměnných a argumentů

V rozhraní .NET Framework 4 bylo možné proměnné a argumenty odstranit pouze v návrháři pomocí klávesnice. Počínaje rozhraním .NET Framework 4.5 lze proměnné a argumenty odstranit pomocí místní nabídky.

Následující snímek obrazovky ukazuje místní nabídku návrháře proměnných a argumentů.

Kontextová nabídka Návrháře proměnných a argumentů

Automatické ohraničení pomocí funkce Sequence

Vzhledem k tomu, že pracovní postup nebo určité aktivity kontejneru (například NoPersistScope) mohou obsahovat pouze jednu aktivitu těla, přidání druhé aktivity vyžaduje, aby vývojář odstranil první aktivitu, přidal Sequence aktivitu a pak do sekvenční aktivity přidal obě aktivity. Počínaje rozhraním .NET Framework 4.5 se při přidání druhé aktivity na plochu návrháře automaticky vytvoří aktivita, Sequence která zabalí obě aktivity.

Následující snímek obrazovky ukazuje WriteLine aktivitu v Body objektu NoPersistScope.

Aktivita WriteLine v těle aktivity NoPersistScope.

Následující snímek obrazovky ukazuje automaticky vytvořenou Sequence aktivitu v objektu Body , když se sekunda WriteLine přehodí pod první.

Automaticky vytvořená sekvence v těle NoPersistScope.

Režim posouvání

Pokud chcete snadněji procházet velký pracovní postup v návrháři, můžete povolit režim posouvání, který vývojáři umožní kliknutím a přetažením přesunout viditelnou část pracovního postupu, a nemusí používat posuvníky. Tlačítko pro aktivaci režimu posouvání je v pravém dolním rohu návrháře.

Následující snímek obrazovky ukazuje tlačítko posunu, které se nachází v pravém dolním rohu návrháře pracovního postupu.

Tlačítko posunu zvýrazněné v návrháři pracovního postupu

Prostřední tlačítko myši nebo mezerník lze použít také k posouvání návrháře pracovního postupu.

Vícenásobný výběr

Najednou je možné vybrat více aktivit, a to buď přetažením obdélníku kolem nich (pokud režim posouvání není povolený), nebo tak, že podržíte stisknutou klávesu Ctrl a po jednom kliknete na požadované aktivity.

V návrháři je také možné přetáhnout a přetáhnout více výběrů aktivit a můžete s nimi také pracovat pomocí místní nabídky.

Zobrazení osnovy položek pracovního postupu

Aby bylo možné usnadnit navigaci v hierarchických pracovních postupech, zobrazí se komponenty pracovního postupu ve stromovém zobrazení osnovy. Zobrazení osnovy se zobrazí v zobrazení Osnova dokumentu . Toto zobrazení otevřete tak, že v horní nabídce vyberete Zobrazení, Další okna, Osnova dokumentu nebo stisknete Ctrl W,U. Kliknutím na uzel v zobrazení osnovy přejdete na odpovídající aktivitu v návrháři pracovního postupu a zobrazení osnovy se aktualizuje tak, aby zobrazovala aktivity vybrané v návrháři.

Následující snímek obrazovky dokončeného pracovního postupu z kurzu Začínáme ukazuje zobrazení osnovy se sekvenčním pracovním postupem.

Snímek obrazovky se zobrazením osnovy se sekvenčním pracovním postupem v sadě Visual Studio

Výrazy C#

Před rozhraním .NET Framework 4.5 bylo možné všechny výrazy v pracovních postupech psát pouze v jazyce Visual Basic. V rozhraní .NET Framework 4.5 se výrazy jazyka Visual Basic používají pouze pro projekty vytvořené pomocí jazyka Visual Basic. Projekty Visual C# teď používají pro výrazy jazyk C#. K dispozici je plně funkční editor výrazů jazyka C# s funkcemi, jako je zvýrazňování gramatiky a intellisense. Projekty pracovních postupů jazyka C# vytvořené v předchozích verzích, které používají výrazy jazyka Visual Basic, budou dál fungovat.

Výrazy jazyka C# se ověřují v době návrhu. Chyby ve výrazech jazyka C# se označí červenou vlnovkou.

Další informace o výrazech jazyka C# najdete v tématu Výrazy jazyka C#.

Větší kontrola viditelnosti panelu prostředí a položek záhlaví

V pře hostovaném návrháři nemusí mít některé standardní ovládací prvky uživatelského rozhraní význam pro daný pracovní postup a můžou být vypnuté. V rozhraní .NET Framework 4 je toto přizpůsobení podporováno pouze panelem prostředí v dolní části návrháře. V rozhraní .NET Framework 4.5 lze viditelnost položek záhlaví prostředí v horní části návrháře upravit nastavením WorkflowShellHeaderItemsVisibility příslušné ShellHeaderItemsVisibility hodnoty.

Automatické připojení a automatické vkládání v pracovních postupech vývojového diagramu a stavového počítače

V rozhraní .NET Framework 4 bylo nutné ručně přidat připojení mezi uzly v pracovním postupu vývojového diagramu. V rozhraní .NET Framework 4.5 mají uzly vývojového diagramu a stavového počítače body automatického připojení, které se stanou viditelnými při přetažení aktivity z panelu nástrojů na plochu návrháře. Vyřazení aktivity na jeden z těchto bodů automaticky přidá aktivitu spolu s potřebným připojením.

Následující snímek obrazovky ukazuje body příloh, které se zobrazí při přetažení aktivity z panelu nástrojů.

Počáteční uzel vývojového diagramu zobrazující body automatického připojení

Aktivity lze také přetáhnout na připojení mezi uzly vývojového diagramu a stavy, aby se uzel automaticky vkládal mezi dva další uzly. Následující snímek obrazovky ukazuje zvýrazněnou spojovací čáru, kde je možné přetáhnout aktivity z panelu nástrojů a vyhodit je.

Úchyt automatického vkládání pro aktivity vyřazení

Poznámky návrháře

Aby se usnadnil vývoj rozsáhlejších pracovních postupů, návrhář teď podporuje přidávání poznámek, které pomáhají sledovat proces návrhu. Poznámku je možné přidat do aktivit, stavů, uzlů vývojových diagramů, proměnných a argumentů. Následující snímek obrazovky ukazuje místní nabídku použitou k přidání poznámek do návrháře.

Snímek obrazovky s nabídkou pro přidávání poznámek

Stavy ladění

V rozhraní .NET Framework 4 nemohly prvky bez aktivity podporovat zarážky ladění, protože nebyly jednotkami provádění. Tato verze poskytuje mechanismus pro přidávání zarážek k objektům State . Pokud je na zarážce nastavená Statezarážka, provádění se přeruší, když se stav přesune na a před naplánování jeho vstupních aktivit nebo aktivačních událostí.

Definování a využívání objektů ActivityDelegate v návrháři

Aktivity v rozhraní .NET Framework 4 používaly ActivityDelegate objekty ke zveřejnění bodů spuštění, kde jiné části pracovního postupu mohly interagovat s prováděním pracovního postupu, ale použití těchto bodů spuštění obvykle vyžadovalo poměrně velké množství kódu. V této verzi můžou vývojáři definovat a využívat delegáty aktivit pomocí návrháře pracovního postupu. Další informace najdete v tématu Postupy: Definování a využívání delegátů aktivit v Návrháři pracovního postupu.

Ověření doby sestavení

V rozhraní .NET Framework 4 se chyby ověření pracovního postupu nezapočítávaly jako chyby sestavení během sestavování projektu pracovního postupu. To znamenalo, že sestavení projektu pracovního postupu mohlo být úspěšné i v případě, že došlo k chybám ověření pracovního postupu. V rozhraní .NET Framework 4.5 chyby ověření pracovního postupu způsobují selhání sestavení.

Ověření pozadí v době návrhu

V rozhraní .NET Framework 4 byly pracovní postupy ověřeny jako proces na popředí, který by mohl potenciálně blokovat uživatelské rozhraní během složitých nebo časově náročných procesů ověřování. Ověření pracovního postupu se teď provádí na vlákně na pozadí, takže uživatelské rozhraní není zablokované.

Zobrazení stavu umístěného v samostatném umístění v souborech XAML

V rozhraní .NET Framework 4 jsou informace o stavu zobrazení pracovního postupu uloženy v souboru XAML v mnoha různých umístěních. To není vhodné pro vývojáře, kteří chtějí přímo číst XAML nebo psát kód pro odebrání informací o stavu zobrazení. V rozhraní .NET Framework 4.5 je informace o stavu zobrazení v souboru XAML serializována jako samostatný prvek v souboru XAML. Vývojáři můžou snadno vyhledat a upravit informace o stavu zobrazení aktivity nebo stav zobrazení úplně odebrat.

Rozšiřitelnost výrazů

V rozhraní .NET Framework 4.5 poskytujeme vývojářům způsob, jak vytvořit vlastní prostředí pro vytváření výrazů a výrazů, které lze zapojit do návrháře pracovního postupu.

Vyjádření souhlasu s funkcemi pracovního postupu 4.5 v návrháři rehosted

Aby se zachovala zpětná kompatibilita, některé nové funkce zahrnuté v rozhraní .NET Framework 4.5 nejsou ve výchozím nastavení povoleny v re hostovaném návrháři. Cílem je zajistit, aby stávající aplikace, které používají re hostovaného návrháře, nebyly poškozeny aktualizací na nejnovější verzi. Pokud chcete povolit nové funkce v pře hostovaném návrháři, nastavte TargetFrameworkName na ".NET Framework 4.5", nebo nastavte jednotlivé členy, aby se povolily DesignerConfigurationService jednotlivé funkce.

Nové modely vývoje pracovních postupů

Kromě vývojových diagramů a modelů sekvenčního vývoje pracovních postupů tato verze zahrnuje pracovní postupy state machine a služby pracovních postupů založených na kontraktu.

Pracovní postupy stavových počítačů

Pracovní postupy stavových počítačů byly zavedeny jako součást rozhraní .NET Framework 4 verze 4.0.1 v rozhraní Microsoft .NET Framework 4 Platform Update 1. Tato aktualizace zahrnovala několik nových tříd a aktivit, které vývojářům umožnily vytvářet pracovní postupy stavových počítačů. Tyto třídy a aktivity byly aktualizovány pro rozhraní .NET Framework 4.5. Aktualizace patří:

  1. Možnost nastavit zarážky u stavů

  2. Možnost kopírovat a vkládat přechody v návrháři pracovního postupu

  3. Podpora návrháře pro vytvoření přechodu sdíleného triggeru

  4. Aktivity používané k vytváření pracovních postupů state machine, včetně: StateMachine, Statea Transition

Následující snímek obrazovky ukazuje dokončený pracovní postup stavového počítače z Začínáme kroku kurzuPostupy: Vytvoření pracovního postupu stavového počítače.

Obrázek znázorňující dokončený pracovní postup stavového počítače

Další informace o vytváření pracovních postupů stavových počítačů najdete v tématu Pracovní postupy stavových počítačů.

Vývoj pracovních postupů založený na kontraktu

Nástroj pro vývoj pracovních postupů založený na kontraktu umožňuje vývojáři nejprve navrhnout kontrakt v kódu a pak několika kliknutími v sadě Visual Studio automaticky vygenerovat šablonu aktivity v sadě nástrojů představující jednotlivé operace. Tyto aktivity se pak používají k vytvoření pracovního postupu, který implementuje operace definované kontraktem. Návrhář pracovního postupu ověří službu pracovního postupu, aby se zajistilo, že jsou tyto operace implementované a podpis pracovního postupu odpovídá podpisu smlouvy. Vývojář může také přidružit službu pracovního postupu k kolekci implementovaných kontraktů. Další informace o vývoji služeb pracovních postupů založených na kontraktu najdete v tématu Postupy: Vytvoření služby pracovního postupu, která využívá existující kontrakt služby.