Workflow Foundation Základy a architektura

Slides:



Advertisements
Podobné prezentace
Stránka 1, © Vema, a. s.. Stránka 2, © Vema, a. s. Podnikové aplikace  Integrovaný podnikový systém (Integrated Business System):  komplex aplikací.
Advertisements

Stručný úvod do UML.
Mainstream Technologies, s.r.o.
AJAX fenomén současného internetu Dalibor Kačmář Academic Developer Evangelist Microsoft ČR host Vítek Karas Senior Software Development Engineer Microsoft.
Office Sharepoint Server 2007
Kompozitní aplikace (Office Business Applications) Michael Juřek, Software Architect Tomáš Kutěj, TSP – Office Platform Microsoft s.r.o.
HYPERTEXT PREPROCESSOR. PROGRAMOVÁNÍ. DEFINICE POJMŮ Problém Problém nevyřešený, nežádoucí stav obvykle vyžaduje nějaké řešení Neřešitelný problém Neřešitelný.
Microsoft Silverlight
Právní rámec Nařízení vlády ze dne (č.304/2001 Sb.) a zákon č.227/2000 Sb. o elektronickém podpisu Standard ISVS pro provoz elektronických podatelen.
Alternativa k MS Office leden Historie OpenSource Office Star Office –německá firma Star Division od roku 1994 OpenOffice –StarOffice přechod k.
 Informací se data a vztahy mezi nimi stávají vhodnou interpretací pro uživatele, která odhaluje uspořádání, vztahy, tendence a trendy  Existuje celá.
Modelování procesů pomocí workflow
 Vyhledání míst v programech vhodných pro optimalizaci  Sleduje se četnost volání a trvání jednotlivých částí programu JetBrains dotTrace Profiler.
Filtr významnosti jako framework pro prezentační vrstvu
C# pro začátečníky Mgr. Jaromír Osčádal
Office 2007 – klient Štěpán Bechynský Developer Evangelist Microsoft s.r.o.
Tvorba webů pomocí Web CMS Michal Neuwirth Product Manager Kentico Software s.r.o. Ondřej Výšek Samostatný konzultant Optimalizovane-it.
Gecko mbH. Rostock, SRN –  V současnosti jsou používány nezávislé systémy pro jednotlivá oddělení a centrální systém SAP IS-H* MED.
GORDIC ® + CA = vaše cesta ke zvýšení kvality a efektivity služeb DRMS FORUM Ing. Jakub Fiala vedoucí týmu CA Technologies programátor,
SAP Ing. Jiří Šilhán.
11. Trendy ve vývoji aplikací, podporujících podnikové procesy
Vývoj aplikací pro SharePoint
Modelovací jazyk UML. Jazyk UML je víceúčelový modelovací jazyk, který byl vyvinut speciálně pro účely softwarového inženýrství. Obsahuje formalizovaný.
Michael Juřek Software Architect Microsoft s.r.o.
Software Architect Forum 2006 Trendy ve vývoji aplikací Michael Juřek, Dalibor Kačmář Microsoft s.r.o.
Pokroky v technologiích (1) Od Zen reportů ke grafickému návrháři DeepSee reportů.
JIRA školení.
Roman Valeš projekt AVT. Cíl práce Obeznámení s programovacím jazykem Java Práce s vývojovými nástroji Hierarchie kódu Androidu Vytvoření Android aplikace.
C# - Úvod Centrum pro virtuální a moderní metody a formy vzdělávání na Obchodní akademii T.G. Masaryka, Kostelec nad Orlicí.
Databázové systémy Přednáška č. 6 Proces návrhu databáze.
XML Web Services: Včera, dnes a zítra Jaroslav Bengl Atlas.cz Atlas.cz.
LiveContent Univerzální Formulářové Řešení Michal Petrtýl, Marek Beneš.
B. Miniberger, BIVŠ Praha 2009
Transparentní modelování a provádění procesů Michael Juřek Software Architect Microsoft s.r.o.
Infrastruktura pro SOA – oddělení vývoje a provozu
Microsoft Office InfoPath 2003 Tomáš Kutěj Account Technology Specialist
Aleš Chudý IW BG Lead Microsoft Corporation. Lidé jsou klíčové aktivum firem Nové trendy práce Software jako platforma Strategická iniciativa (horizont.
Vize Visual Studia 2005 Podpora živého partnerského ekosystému Podpora živého partnerského ekosystému Jednoduché vytváření propojených systémů Jednoduché.
Silverlight - Tirs.NET Antonín Hofmann - Radek Špelda -
Copyright (C) 1999 VEMA počítače a projektování, spol. s r.o.
Novinky pro webovou platformu Jiří Burian, Tomáš Kutěj,
HUMUSOFT s.r.o. Konference WITNESS Setkání uživatelů programu WITNESS Hotel Valáškův Grunt, Kozov
Filtr významnosti jako framework pro prezentační vrstvu Ing. Igor Kopetschke – TUL, NTI
Robert Hernady Regional Solution Architect Microsoft.
INTERNET VE STÁTNÍ SPRÁVĚ A SAMOSPRÁVĚ 2008 © Copyright IBM Corporation 2008 Správa obsahu v podání IBM 7. – 8. dubna 2008 ibm.com/cz/public Daniel Beneš.
Vývoj helpdesků od roku 2000Již třetí verze „nativního“ helpdeskuPrvní verze HD pro MOSS v roce 2007Druhá verze HD pro MOSS v roce 2009.
ICT – Informační a komunikační technologie Ing. Libor Měsíček, Ph.D. CN460
SOA = Architektura orientovaná na služby
© Doc. Miniberger, BIVŠ UML modelování Webové služby představují sadu standardů umožňující komunikaci aplikací bez ohledu na platformu, na které jsou provozovány.
Srovnání systémů řízení projektů Vypracovala: Jitka Procházková.
Přístup do IS z mobilních zařízení Tomáš Tureček Katedra Informatiky FEI VŠB-TU Ostrava.
Sales & Consulting IGS, Czech Republic © 2005 IBM Corporation Optimalizace a sdílení informací ve státní správě Pavel Hrdlička.
14. června 2004Michal Ševčenko Architektura softwarového systému DYNAST Michal Ševčenko VIC ČVUT.
1 E - S V Ě T S E T O Č Í S T Á L E R Y C H L E J I. S T A Č Í T E M U ? Fenix II –IS na platformě.NET Michal Varga.
Protálová řešení Příklady reálných nasazení Tomáš Kutěj System Engineer Microsoft.
Prezentace diplomové práce
Visual Basic - programování
XSLT překladač Marek Běhálek Informatika a aplikovaná matematika FEI VŠB-TU Ostrava.
Aplikace vývojových technik Augmented Reality hra Bronislav Ryba, Štěpán Mračko.
YOUR SYSTEM, spol. s r. o. Ing
Now … Let’s Talk About … WORKFLOW 2013 V PRAXI Mainstream Technologies, s.r.o. ONDŘEJ SOUKUP.
Web services – když si Java sedne s M$ na kus řeči Ing. Petr Přibyl CCA Group a.s.
A jeho praktická aplikace Štěpán Vacek Univerzita Hradec Králové Liberecké informatické fórum 2010.
.NET framework platforma Jiří Pokorný
NÁZEV ŠKOLY:SOŠ Net Office, spol. s r.o. Orlová Lutyně
Team Foundation Server 2015
Entity Framework Core - vo co de?
Učíte systémy rozmlouvat
Tradiční metodiky vývoje softwaru
Desktopové aplikace na .NET Core
Transkript prezentace:

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

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

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?

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í

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ě

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

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

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

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>

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

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

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

Hello world Moje první workflow aplikace

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

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(); }

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

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

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(); }

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é

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é

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

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

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

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

Tracking – události aktivity Executing Closed Canceling Faulting Compensating

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)

Infrastrukturní služby SqlWorkflowPersistenceService SqlTrackingService

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

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í

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

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 { ... }

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

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>

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

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

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

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

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 2007-8) Biztalk Server v.Next (cca 2008)

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

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

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í http://msdn.microsoft.com /workflow Komunity Vzorový kód, nástroje, komponenty http://wf.netfx3.com

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í

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

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

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

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

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

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

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

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

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“)

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

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

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

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

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

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

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

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

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í

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

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

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

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 http://wf.netfx3.com

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.

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

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%

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

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

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

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

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

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

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

State Machine Workflow Zpracování objednávek

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

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

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

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

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

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

Hostování WF designeru Designer jako prvek WinForms

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í

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