Prezentace se nahrává, počkejte prosím

Prezentace se nahrává, počkejte prosím

Workflow Foundation Základy a architektura

Podobné prezentace


Prezentace na téma: "Workflow Foundation Základy a architektura"— Transkript prezentace:

1 Workflow Foundation Základy a architektura
Michael Juřek Software Architect Microsoft s.r.o.

2 Agenda Proč Workflow Foundation? Základní pojmy Hostování workflow
Vlastní workflow aktivity Různé

3 Není kód jako kód... Každý blok kódu má jinou pravděpodobnost změny
Faktoriál vs. výpočet daně z příjmu Transformace od definice procesu ke kódu je jednosměrná, nevratná, neopakovatelná Jak „pochopit“ proces z kódu? Jak snadno upravit kód, když se změní proces? Jak držet definici procesu i kód v souladu?

4 Proč workflow? Produktivita vývojáře Řešení technologických problémů:
Workflow je pohodlná abstrakce pro popis problémů reálného světa Řešení technologických problémů: Procesy běží často dlouho a musí si uchovávat stav Procesy vyžadují flexibilní kontrolu toku Procesy by měly být transparentní

5 Proč Workflow Foundation?
Jednotná workflow technologie Dostupná všem zákazníkům jako součást platformy Vhodná pro všechny scénáře Používána dalšími Microsoft produkty, např. pro workflow v Office 2007 a WSS 3.0 Rozšiřitelný framework a API pro vytváření vlastních řešení Relativně snadný přechod pro vývojáře na .NET platformě

6 Agenda Proč Workflow Foundation? Základní pojmy Hostování workflow
Vlastní workflow aktivity Různé

7 Workflow Foundation Základní koncepce: Komponenty: Workflow Activity
Visual Designer Základní koncepce: Workflow je soubor aktivit Workflow Workflow běží uvnitř nějakého hostitele (aplikace nebo služby) Vývojáři mohou vytvářet vlastní knihovny aktivit Activity Custom Activity Library Komponenty: Workflow Foundation Base Activity Library: Základní aktivity, základ pro tvorbu vlastních Base Activity Library Runtime Engine: Provádění workflow Runtime Engine Runtime Services: Hostování, infrastruktura, komunikace Runtime Services Visual Designer: Vytváření workflow grafickým modelováním a/nebo v kódu Host Process

8 ZkontrolujDostupnost
Co je to workflow? Soubor aktivit koordinujících lidské nebo softwarové účastníky Například: InformujNadrizeneho ZkontrolujDostupnost … v nějaké formě určující tok provádění ... jako vývojový diagram ... jako stavový diagram

9 Co je to workflow? Workflow může být zapsáno v C# / VB.NET...
using System.Workflow.Activities; public class MyWorkflow : SequentialWorkflow { } ... a/nebo jako XML (formát XAML) <SequentialWorkflowActivity x:Class="WorkflowConsoleApplication1.Workflow2" x:Name="Workflow2„ xmlns:x=„http://schemas.microsoft.com/winfx/2006/xaml“ xmlns="http://schemas.microsoft.com/winfx/2006/xaml/workflow"> <CodeActivity x:Name="codeActivity1" /> </SequentialWorkflowActivity>

10 Způsoby vytváření workflow
Pouze deklarativně XML definuje strukturu logiky workflow a tok dat XAML Deklarativně + kód XML definuje workflow, kód (Code-beside) určuje dodatečnou logiku XAML C#/VB Pouze kód Workflow vytváří svou strukturu (strom aktivit) v konstruktoru C#/VB Generování v aplikaci XAML C#/VB Vytvoření stromu aktivit a serializace Kompilátor workflow wfc.exe Standardní .NET assembly Workflow Runtime Workflow Loader Kompilátor C#/VB

11 Co je to aktivita? Aktivita je jeden krok v provádění workflow
Má vlastnosti a události, ke kterým můžete přistupovat z kódu Má metody (např. Execute), které volá workflow runtime (vy byste je volat neměli) Analogie s Form / Control ve WinForms Activity / Control Workflow / Form Workflow dědí z Activity / Form dědí z Control Dvě základní kategorie Basic – „dělají skutečnou práci“ Composite – spravují sadu jiných aktivit

12 Base Activity Library WF obsahuje sadu základních aktivit:
Kontrola toku: IfElse, Delay, While, ... Komunikace InvokeWebService, CallExternalMethod, ... Vytvořeny stejným postupem a proti stejným API, jaká používají vývojáři pro vývoj svých aktivit

13 Hello world Moje první workflow aplikace

14 Agenda Proč Workflow Foundation? Základní pojmy Hostování workflow
Vlastní workflow aktivity Různé

15 Hostování WF v aplikaci
3 snadné kroky Vytvořit instanci workflow runtime Vytvořit instanci workflow Spustit workflow private void StartMyWorkflow() { WorkflowRuntime wr = new WorkflowRuntime(); WorkflowInstance instance = wr.CreateWorkflow(typeof(MyWorkflow)); instance.Start(); }

16 Infrastrukturní služby
Host Application App Domain PersistenceService (0-1) slouží k uložení stavu workflow Runtime K dispozici jsou implementace pro MS SQL Server Services TrackingService (0-n) sbírá informace o průběhu a spravuje profily určující co se ukládá PersistenceService TrackingService SchedulerService (1) „dodává“ workflow vlákna k provádění a stará se o časovače SchedulerService CommitWorkBatchService CommitWorkBatchService (1) „dodává“ workflow transakce

17 Nabízené implementace Podtržené služby jsou standardně zapnuty
DefaultWorkflowSchedulerService Asynchronní provádění, používá se vlákno získané ze thread pool zásoby ManualWorkflowSchedulerService Synchronní provádění, používá se vlákno, ze kterého byla instance workflow spuštěna DefaultWorkflow-CommitWorkBatchService Používá .NET transakce (potenciálně povýšené na distribuované transakce MSDTC) SharedConnectionWorkflow-CommitWorkBatchService Používá lokální transakce nad spojením do MS SQL serveru SqlWorkflowPersistenceService Stav běžících instancí včetně časovačů se ukládá v MS SQL serveru SqlTrackingService Informace o sledovaném průběhu workflow se ukládají v MS SQL serveru

18 Příklad přidání služby
Přidání persistence do databáze SQL Vytvořit instanci služby Nastavit potřebné parametry Zavolat WorkflowRuntime.AddService() Alternativně: Vytvořit sekci v konfiguračním souboru Předat jméno konfigurace při vytváření WF runtime private void StartMyWorkflow () { WorkflowRuntime wr = new WorkflowRuntime(); string connectionstring = "Initial Catalog=Persistence;DataSource=localhost;Integrated Security=SSPI;"; wr.AddService(new SqlWorkflowPersistenceService(connectionstring)); WorkflowInstance instance = wr.CreateWorkflow(typeof(MyWorkflow)); instance.Start(); }

19 SchedulerService „Dodává“ workflow potřebná vlákna kódu a spravuje časovače Dvě implementace ve WF: Asynchronní (Default) WF běží na vláknu dodaném ze ThreadPool Vhodné pro stavové aplikace (WinForms, Win32 služba apod.) Synchronní (Manual) WF běží na vláknu, jež ho spustilo Vhodné pro bezstavové aplikace (ASP.NET) Vytváření vlastní implementace je silně nepravděpodobné

20 CommitWorkBatchService
Podpora synchronizace zdrojů mezi hostitelem, workflow runtime a aktivitami pomocí ACID transakcí Dvě implementace ve WF: 2-fázové distribuované transakce (Default) – MS DTC 1-fázové databázové transakce (SharedConnection) O něco rychlejší, nevyžaduje MS DTC, ale může pracovat pouze s jedinou databázovou instancí Transakčnost se nastavuje atributem na úrovni aktivity, transakce je pak sdílena všemi aktivitami vnořenými do aktivity TransactionScope Workflow se nemůže připojit k transakci vytvořené hostitelem, naopak to možné je (hostitel implementuje IPendingWork) Vytváření vlastní implementace je silně nepravděpodobné

21 PersistenceService Zajišťuje průběžné ukládání stavu workflow do trvalého úložiště Umožňuje obnovení běhu po restartu Podmínka pro práci ve farmě serverů Implementace ve WF pro SQL 2000/2005 Skript pro vytvoření tabulek je v instalaci WF Vytvoření vlastní implementace je možné, chcete-li trvalé workflow bez závislosti na MS SQL (souborový systém, jiná databáze, apod.)

22 TrackingService Dostává informace o průběhu workflow a provádění aktivit Scénáře: logování, monitorování, auditing, ... Implementace ve WF pro SQL 2000/2005 Skript pro vytvoření tabulek je v instalaci WF API pro dotazování do dat Vytvoření vlastní implementace bude poměrně časté Odvoďte třídu z TrackingChannel Odvoďte třídu z TrackingService Volitelně implementujte IProfileNotification

23 Tracking – objektový model
Spuštění instance workflow Get Tracking Profile Runtime Tracking Service Tracking Profile Reporty Tracking Channel Dotaz Úložiště Hostitel

24 Tracking – události workflow
Created Suspended Changed Resumed Started Idle Persisted Unloaded Loaded Completed Terminated Aborted Exception

25 Tracking – události aktivity
Executing Closed Canceling Faulting Compensating

26 Tracking - možnosti Profil – XML předpis nebo strom objektů určující jaké události posílat do kanálu: Změna vlastnosti aktivity nebo workflow Změna stavu aktivity nebo workflow Profil lze měnit i za běhu – pokud služba implementuje IProfileNotification WorkflowRuntime (nikoliv sama instance workflow!) nabízí události pro změnu stavu workflow instancí WorkflowID předáno jako parametr Váš kód může generovat události voláním Activity.TrackData(string,object)

27 Infrastrukturní služby
SqlWorkflowPersistenceService SqlTrackingService

28 Agenda Proč Workflow Foundation? Základní pojmy Hostování workflow
Vlastní workflow aktivity Různé

29 Aktivity - základy Aktivity jsou stavební kameny workflow
Jednotka provádění, znovuvyužitelnosti kódu a kompozice Základní aktivity jsou elementární kroky v provádění Kompozitní aktivity jsou kontejnery s jinými aktivitami Workflow je samo rovněž kompozitní aktivita Aktivity jsou .NET třídy Mají vlastnosti a události, které definuje autor aktivity, jsou přístupné v rámci běžícího workflow Autor aktivity přepisuje metody abstraktních předků – zejména Execute(), tyto jsou volány z workflow runtime (nelze z hostitele) Mohou být součástí workflow assembly anebo mohou fungovat jako knihovny aktivit pro opakované použití

30 Stavový diagram aktivity
Faulting Chybou Canceling (-- poslední přechod) Initialized Executing Closed Compensating Přechod vyvolán Zásahem WF runtime Aktivitou

31 Aktivity – metadata Doprovodné třídy: Chování: [SupportsTransaction]
[Designer(typeof(MyDesigner))] [Validator(typeof(MyValidator))] [CodeGenerator(typeof(MyCodeGen))] [Serializer(typeof(MySerializer))] [ToolboxItem(typeof(MyToolboxItem))] Designer Validator Serializer Code Generator ToolboxItem Chování: [SupportsTransaction] [SupportsExceptionHandlers] Transactions public class MyActivity: Activity { ... }

32 Kompozitní aktivity Aktivity, jež mohou obsahovat vnořené aktivity
Odvozené ze třídy CompositeActivity Workflow je samo též kompozitní aktivita Používá se „grey box“ model Obsah vložené již naplněné kompozitní aktivity lze vidět, ale nelze jej měnit Výjimkou jsou vlastnosti přístupné přes DependencyProperty

33 Speciální rysy vlastností
DependencyProperty Podporuje deklarativní vazbu na data s notifikací o změně vlastnosti Navenek zabalena do klasické .NET vlastnosti pro pohodlný programový přístup Fyzicky uloženy v Dictionary třídě, která je použita pro serializaci a správu stavu Property Promotion Umožňuje kompozitní aktivity „Děti“ libovolně hluboko v kompozitní aktivitě mohou zpřístupnit své události a vlastnosti: Umožňují konzumentovi kompozitní aktivity ovlivňovat její chování, aniž by znal její vnitřní logiku So in order to do some of these scenarios what we do is we have a concept of property promotion. So imagine now that I have my composite activity, I have children in it, and the children's behavior is going to depend on some properties that have been set on the parent. Well, how do I influence, or how do I set those properties. You can do that using a feature called property promotion, where you essentially promote the properties of that child to the parent. And when you set them on the parent they get passed through to the child. And that's supported through the custom activity designer. Let me show you a demo of how that works. <NEXT SLIDE>

34 Vlastní aktivity Jednoduchá aktivita (dědičnost) Kompozitní aktivita
DependencyProperty / Promotion

35 Agenda Proč Workflow Foundation? Základní pojmy Hostování workflow
Vlastní workflow aktivity Různé

36 Dostupnost Jedna z nových částí .NET Frameworku 3.0
B1 B2 V1 RTM Q1 2005 Q2 Q3 Q4 Q1 2006 Q2 Q3 Q4 Jedna z nových částí .NET Frameworku 3.0 Součást Windows Vista a Windows Server „Longhorn“ Bezplatně ke stažení pro Windows XP SP2 a Windows Server 2003 SP1 RTM koncem roku 2006

37 Visual Studio Designer
WF vs. BizTalk Server Messaging Design Tools Business Activity Monitor And Admin Orchestration Transformation Adapters BizTalk Server Accelerators Plnohodnotný procesní server: Pro workflow mezi aplikacemi Scénáře BPM, B2B, EAI Konfigurace, administrace Robustnost, škálovatelnost Workflow Budoucí verze bude používat pro řízení procesu WF .NET Framework 3.0 Visual Studio Designer Windows Workflow Foundation Workflow Foundation Součást .NET framework 3.0 Framework k vytváření řešení Scénáře: workflow v rámci aplikace ** Re-emphasize point that same engine as SharePoint. BizTalk Server is a business process and integration server; It delivers value added services such as Application to Application integration Business to Business integration with complex mapping and communication tools Business Process Automation that integrates applications, trading partners, and touches employees Deployment, management and monitoring tools for the IT Professional Real time business process visibility

38 WF a další MS produkty Office System 2007: Podnikové aplikace Dynamics
Workflow pro masy koncových uživatelů Hostované ve WSS 3.0 Spouštěné z kancelářských aplikací Office 2007 Notifikace uživatelům v Outlooku Navržené v SharePoint Designeru 2007 (ex-FrontPage) Podnikové aplikace Dynamics Speech Server 2007 Identity Integration Server (cca 2007) System Center Service Desk (cca ) Biztalk Server v.Next (cca 2008)

39 WF – další produktové úvahy
Projekt „Silver“ Add-on do Visual Studia pro generování WF aktivit z popisu WCF endpointů a zpřístupnění WF jako WCF endpointy Pravděpodobně jako CTP a poté ve Visual Studiu „Orcas“ „Page workflow“ Řízení toku ASP.NET stránek pomocí WF Nástupce UIP aplikačního bloku Buď v ASP.NET „Orcas“ anebo jako samostatně stažitelný doplněk

40 Vybraná pokročilá témata
Budou zpracována formou webcastu Slidy připojeny za touto prezentací Komunikace WF s hostitelem Komunikace WF s okolím Korelace Ošetření chyb Používání oddělených pravidel State Machine Workflow Modifikace WF za běhu Vložení WF designeru do aplikace

41 Další zdroje k WF MSDN® Workflow centrum Komunity Ke stažení:
.NET Framework 3.0 RC Extenze do Visual Studia 10 praktických cvičení /workflow Komunity Vzorový kód, nástroje, komponenty

42 Závěrem - proč WF? Zvyšuje produktivitu vývojáře
Řeší technologické problémy Nabízí transparentní procesy Jednotná workflow technologie zdarma pro Windows XP a vyšší Vhodná pro široké spektrum scénářů Kompletně rozšiřitelné API pro vytváření vlastních řešení

43 © 2004 Microsoft Corporation. All rights reserved.
This presentation is for informational purposes only. MICROSOFT MAKES NO WARRANTIES, EXPRESS OR IMPLIED, IN THIS SUMMARY.

44 Workflow Foundation Vybraná pokročilá témata
Michael Juřek Software Architect Microsoft s.r.o.

45 Agenda Komunikace WF s hostitelem Komunikace WF s okolím Korelace
Ošetření chyb Používání oddělených pravidel State Machine Workflow Modifikace WF za běhu Vložení WF designeru do aplikace

46 Způsob 1 - parametry Workflow lze při startu jednorázově předat vstupní parametry: Vytvořte Dictionary<string, object> Naplňte pojmenovanými parametry Předejte v CreateWorkflow() Workflow musí mít definované vlastnosti: Stejného jména jako je klíč Kompatibilního typu S accessorem set s přístupností public Uvnitř workflow se pracuje s těmito vlastnostmi obvyklým způsobem

47 Způsob 2 – volání metod Workflow může volat metody hostitele, opačně nelze Definujte rozhraní s atributem [ExternalDataExchange] a metodami Implementujte jej v některé své třídě Vytvořte ExternalDataExchangeService a přidejte do něj svou třídu pomocí AddService() Přidejte jej do WorkflowRuntime přes AddService() Metodu zavolejte z workflow pomocí aktivity CallExternalMethod s nastavenými parametry

48 Způsob 3 – události Hostitel vyvolává události, na které workflow může čekat Definujte třídu odvozenou z ExternalDataEventArgs Vytvořte rozhraní jako ve způsobu 2 Do rozhraní přidejte událost EventHandler<VaseEventArgs> Implementujte rozhraní, přidejte do WorkflowRuntime jako ve způsobu 2 Na událost čekejte ve workflow pomocí aktivity HandleExternalEvent, argumenty navažte na privátní pole kompatibilního typu ve vašem workflow

49 Komunikace s hostitelem
Parametry Volání metody Čekání na událost

50 Agenda Komunikace WF s hostitelem Komunikace WF s okolím Korelace
Ošetření chyb Používání oddělených pravidel State Machine Workflow Modifikace WF za běhu Vložení WF designeru do aplikace

51 Možnosti komunikace Z kódu ve workflow třídě můžete používat v zásadě libovolný přístupný způsob komunikace s okolím Nadstandardní komfort pro: Volání webové služby z workflow Zpřístupnění workflow jako ASMX webová služba Do budoucna: ještě komfortnější vazba na Windows Communications Foundation (Visual Studio „Orcas“)

52 Volání WS z workflow Vygenerujte proxy třídu pro volání WS
Klasické Add Web Reference Přidejte aktivitu InvokeWebService Nastavte jméno proxy třídy a metody Vstupní/výstupní parametry navažte na privátní pole kompatibilního typu ve vašem workflow

53 Zpřístupnění workflow jako WS
Definujte rozhraní, které bude navenek přístupné Přidejte aktivity WebServiceInput / Output / (volitelně Fault) do workflow Nastavte rozhraní a metodu na Input aktivitě Nastavte odpovídající Input aktivitu na Output aktivitě (volitelně též na Fault aktivitě) Vstupní/výstupní/chybové parametry navažte na privátní pole kompatibilního typu ve vašem workflow Zvolte z nabídky Publish as Web Service Vygeneruje web site včetně config souboru

54 Workflow a WS Volání WS z workflow Zpřístupnění workflow jako WS

55 Agenda Komunikace WF s hostitelem Komunikace WF s okolím Korelace
Ošetření chyb Používání oddělených pravidel State Machine Workflow Modifikace WF za běhu Vložení WF designeru do aplikace

56 Korelace Čeká-li instance workflow na tutéž událost vícekrát, je nutné je rozlišit K rozhraní s atributem [ExternalDataExchange] přidejte [CorrelationParameter(name)] K první volané metodě přidejte [CorrelationInitializer] K dalším použitým metodám a událostem přidejte [CorrelationAlias] U aktivit CallExternalMethod a HandleExternalEvent nastavte vlastnost CorrelationToken

57 Korelace Rozlišení dvou různých volání

58 Agenda Komunikace WF s hostitelem Komunikace WF s okolím Korelace
Ošetření chyb Používání oddělených pravidel State Machine Workflow Modifikace WF za běhu Vložení WF designeru do aplikace

59 Obsluha výjimek Silná analogie s try/catch konceptem Vznik výjimky:
Chybou v code-behind anebo volaném kódu Explicitním použitím aktivity Throw Ošetření výjimky: Kompozitní aktivity mohou mít jeden a více tzv. Fault Handlers Určují posloupnost aktivit prováděných při zachycení specifikované výjimky Výjimka probublává nahoru stromem aktivity a může být ošetřena výše Není-li výjimka ošetřena, WF runtime ukončí provádění instance a vyvolá příslušnou událost

60 Kompenzace transakcí Jsou-li transakce nebo jiné operace již dokončeny a poté dojde k chybě, je možnost provést kompenzující akce (stornovat fakturu, zrušit objednávku apod.) Aktivita TransactionScope může mít tzv. CompensationHandler, který je volán v případě neošetřené chyby vzniklé po dokončení transakce Je-li více TransactionScope, jejich kompenzace jsou volány v opačném pořadí než byly prováděny Při ošetření chyby nebo ošetření zrušení aktivy lze použít aktivitu Compensate pro modifikaci výchozího chování

61 Ošetření chyb Rollback ACID transakce při chybě
Kompenzace dokončené transakce

62 Agenda Komunikace WF s hostitelem Komunikace WF s okolím Korelace
Ošetření chyb Používání oddělených pravidel State Machine Workflow Modifikace WF za běhu Vložení WF designeru do aplikace

63 Podmínky v aktivitách Řada aktivit vyžaduje pro své fungování vyhodnocení podmínky: IfElse, While, Replicator, CAG, ... Dvě možnosti realizace podmínky: Code Condition – odkaz na delegáta: public void Podminka(object sender, ConditionalEventArgs e) { e.Result = (...doplň výraz vracející boolean...); } Declarative Rule Condition Odkaz na deklarativně vyjádřenou podmínku v XML souboru <JmenoWorkflow>.rules

64 Proč oddělit pravidla? Pravidla = složitá rozhodovací logika
Modelování místo kódování Transparentnost Velká pravděpodobnost změny v čase Snadnost změny Ideální je možnost změny pravidel bez rekompilace workflow: Základní WF implementace neobsahuje External Ruleset Toolkit – vzorový kód

65 Terminologie Podmínka (Condition) Pravidlo (Rule)
Výraz, který se vyhodnotí jako True/False Pravidlo (Rule) Modelováno jako: IF<podmínka> THEN<akce> ELSE<akce> Soubor pravidel (RuleSet) Soubor pravidel spolu s nastavením parametrů provádění Politika (Policy) – aktivita spouštějící soubor pravidel <NEXT SLIDE> 8 Okay. So let's jump into workflow foundation and rules capabilities. We'll start first with just a little bit of terminology, to kind of get us on the same page. So first a condition, simply a Boolean expression that operates over my workflow data state. A rule then takes a condition and based on the result of that condition will execute either a set of then actions or a set of else actions. And then a rule set is a collection of these rules with a set of execution semantics over the top of that collection.

66 Algoritmus provádění Vybere se soubor pravidel, jejichž podmínky jsou splněny Začnou se provádět podle klesající nastavené priority Chaining – znovuzařazení pravidla: Implicitní - pokud pravidlo změní platnost podmínky jiného pravidla Explicitní - pokud pravidlo volá příkaz Update Kontrola: Příkaz Halt (zastaví další provádění) RuleSet Chaining Behavior Full (výchozí), Explicit Update only, None Rule Reevaluation Behavior Always (výchozí), Never

67 Forward Chaining - příklad
Sada Pravidel Pořadí provádění Pravidlo 1 (P0) If Total > $50 & < $100 Then Discount = 10% Pravidlo 2 (P0) If Total >= $100 Then Discount = 15% Pravidlo 3 (P0) If Amount > $0 Then Total = Total + Amount Pravidlo 1 Pravidlo 3 Pravidlo 2 Amount = $25 Total = $80 Discount <NEXT SLIDE> 21 But first, I want to talk a little bit more just around execution semantics of a rule set. So, I mentioned forward chaining before. Those of you familiar with rules technology are very familiar with what this means, but a lot of people have heard a bit about rules and aren't really quite sure what some of these things mean. So, a simple example around forward chaining and some of the power that it provides. So, I have an example here where I have three rules defined. My first rule, and by the way I haven't added any priorities onto these, rules so, I, as a developer, have not made any explicit declaration of how to execute these rules. These are really just atomic statements. The first one says, if the total property on my activity is between $50 and $100, give the customer a 10 percent discount. The second one says, well, if that total is greater than $100, I want to up that discount up to 15 percent. And the third one is a rule that says, well if the amount field on the property on the order is greater than zero, then I need to add that into this total, this might be an order line amount, et cetera. So, let's just step through this in order and see what the execution will look like. <NEXT TRANSITION> So, if I had an activity that came in with an amount of $25 and a total $80, I would evaluate rule1, rule1 evaluates to true, and so I will set my discount equal to 10 percent. <NEXT TRANSITION> I would evaluate rule2, which is false at this point, and then I would evaluate rule3, which would evaluate true, and I would increase my total amount. Now, clearly, I'm in sort of an inconsistent state at this point from a logic standpoint, right? This was not my business intent in terms of my end outcome. So, what happens is via forward chaining that the engine can identify that changes have been made to the data state, more specifically to the activity properties, that the actions of one rule have touched activity properties that are used in the conditions of other rules. So, we'll actually come back in and reevaluate the impacted rules, and we'll look again at rule1, which uses that total field, it evaluates to false this time. <NEXT TRANSITION> Rule2, this time, evaluates to true, and so I will change my discount amount from 10 percent to 15 percent, which again is really the intent that I had when I modeled these rules, but you can see I, as a rule modeler, didn't make any kind of statement in terms of what are the dependencies among these rules, and that's just a simple example of how forward chaining can really kind of put some richer semantics on top of a rule set. $105 = 10% 15%

68 Vyhodnocení pravidel Použití Policy pro výpočet slevy

69 Agenda Komunikace WF s hostitelem Komunikace WF s okolím Korelace
Ošetření chyb Používání oddělených pravidel State Machine Workflow Modifikace WF za běhu Vložení WF designeru do aplikace

70 Kdy použít State Machine?
Ve většině případů budete používat Sequential Workflow Přesto se State Machine Workflow může hodit když: V procesu jsou interakce s člověkem Workflow je řízeno externími událostmi Velké množství cest toku procesu Těžko předvídatelné ad hoc přechody v procesu 70

71 Základní koncepce Stavový stroj se skládá z množiny stavů
V každém stavu může být přijata sada událostí Na základě obdržené události je provedena akce V rámci akce může dojít k přechodu do jiného stavu S1 S2 S3 S4 S5

72 Příklad kompozice stavů
Order Changed On Order Changed On Order Completed Waiting to Create Order On Order Created Order Created On Order Processed Order Processed On Order Completed On Order Shipped On Order Shipped Order Shipped Order Completed On Order Completed 72

73 Hlavní používané aktivity
State – reprezentuje stav procesu, obsahuje: Max. jednu StateInitialization sekvence Max. jednu StateFinalization sekvence Libovolný počet EventDriven sekvencí reagujících na události Libovolný počet vnořených stavů (podstavů) EventDriven Sekvence spouštěná událostí (typicky Delay anebo HandleExternalEvent) SetState Přechod do jiného stavu

74 Ilustrace struktury workflow
State Event Driven Event Driven State State Event Driven Set State Event Driven Set State Set State Event Driven Set State State Event Driven Set State 74

75 State Machine Workflow
Zpracování objednávek

76 Agenda Komunikace WF s hostitelem Komunikace WF s okolím Korelace
Ošetření chyb Používání oddělených pravidel State Machine Workflow Modifikace WF za běhu Vložení WF designeru do aplikace

77 Proč měnit WF za běhu? Instance workflow již běží, ale je potřeba ji změnit – bez rekompilace anebo nového nasazení Přidat dodatečnou úroveň schválení v závažné situaci Odstranit některý krok v urgentních případech Vyvolat speciální pravidla v určité situaci Zvýšit povolenou dobu pro určitý krok z důvodu nepřítomnosti účastníka Reakce na nepředvídanou vnější událost Účastník workflow potřebuje mít možnost rozhodnout, jaký bude následný krok

78 Změny – pravidla, omezení
Navrhované změny musí být validovány dotčenými aktivitami Změny se provádí jenom na konkrétní instanci, neovlivní třídu workflow Provádí-li se změny zvenčí (z hostitele), je potřeba provést Suspend() instance Lze změnit pouze věci zapsatelné v XAML notaci bez ohledu na to jak je workflow vytvořeno, například: Přidat / odebrat aktivity Změnit deklarativní podmínky a soubory pravidel

79 Změna WF instance Změna prováděná zevnitř instance Změna prováděná z hostitele

80 Agenda Komunikace WF s hostitelem Komunikace WF s okolím Korelace
Ošetření chyb Používání oddělených pravidel State Machine Workflow Modifikace WF za běhu Vložení WF designeru do aplikace

81 Hostování WF designeru
Vložení WF designeru do vaší desktopové aplikace je licenčně i technicky možné Nicméně není zcela snadné, vyžaduje nemalé množství kódu a implementaci řady rozhraní Doporučení: vyjděte z příkladů dostupných na Internetu

82 Hostování WF designeru
Designer jako prvek WinForms

83 Závěrem - proč WF? Zvyšuje produktivitu vývojáře
Řeší technologické problémy Nabízí transparentní procesy Jednotná workflow technologie zdarma pro Windows XP a vyšší Vhodná pro široké spektrum scénářů Kompletně rozšiřitelné API pro vytváření vlastních řešení

84 © 2004 Microsoft Corporation. All rights reserved.
This presentation is for informational purposes only. MICROSOFT MAKES NO WARRANTIES, EXPRESS OR IMPLIED, IN THIS SUMMARY.


Stáhnout ppt "Workflow Foundation Základy a architektura"

Podobné prezentace


Reklamy Google