1 / 27

Tworzenie aplikacji wykorzystujących Workflow Foundation oraz Windows Presentation Foundation

Tworzenie aplikacji wykorzystujących Workflow Foundation oraz Windows Presentation Foundation. Tomasz Kopacz. Plan. Omówienie k luczow ych cech .NET 3.0 ( WF + WPF ) Budowa systemu do przyjmowania zgłoszeń i ich obsługi Logika w WF Hosting jako usługa Web Klienci napisani w WPF.

Download Presentation

Tworzenie aplikacji wykorzystujących Workflow Foundation oraz Windows Presentation Foundation

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Tworzenie aplikacji wykorzystujących Workflow Foundation oraz Windows Presentation Foundation Tomasz Kopacz

  2. Plan • Omówienie kluczowych cech .NET 3.0 (WF + WPF) • Budowa systemu do przyjmowania zgłoszeń i ich obsługi • Logika w WF • Hosting jako usługa Web • Klienci napisani w WPF

  3. Używane technologie • .NET 3.0, „następca” Win32, przeznaczony tylko dla kodu zarządzalnego: • (dawniej WinFX) • Windows Workflow Foundation (WF) • Maszyna stanów + sekwencje + DESIGNER • Windows Presentation Foundation (WPF) • „Wektorowe” Windows Forms • Deklaratywny UI; XAML; inna filozofia i architektura

  4. Windows Workflow Foundation (WF) (Szybki) przegląd kluczowych cech

  5. Windows Workflow Foundation • Jedna technologia workflow na Windows • Łatwo rozszerzalna • Framework zarówno do budowy systemowych (automatycznych) przepływów jak i tych sterowanych przez człowieka (wybór; UI itp.) • Nie jest to serwer - framework, API, DLL • Serwer można zbudować  • Przykład: SharePoint 3.0 + klient Office 2007 • W środku: • „Tylko” maszyna stanu + sekwencje • +Designer (też do osadzenia we własnej aplikacji) • Lub XAML • +Usługi

  6. WF – podstawowe pojęcia Diagram stanów…. • Activity (Aktywność) • Wykonywana operacja w danym systemie • EscalateToManager • CheckInventory • Gotowe: Wywołaj kod, usługę Web,… • 2 typy definicji przepływów: • Orkiestracja (Diagram przepływów) • Diagram stanów + zdarzenia • Modele można łączyć/mieszać • Reguła (Rule) – parametryzuje • Host - uruchamia przepływ • Używa usług (Runtime Services) • „Zaplecze” usługowe: transakcje, stan… • Przepływ działa w ODDZIELNYM wątku • Specjalna komunikacja Diagram przepływów….

  7. Przepływ = Kod Tylko znaczniki Znaczniki + kod Tylko kod XAML XAML C#/VB C#/VB Tylko znaczniki Kompilator przepływu XAML Drzewo obiektów Kompilator C#/VB Instancja przepływu Assembly

  8. Usługi Workflow • Gotowe: • Zapis stanu (SqlWorkflowPersistenceService) • Śledzenie (SqlTrackingService) • Scheduler (DefaultWorkflowSchedulerService) • Punkty zachowania/transakcje • WorkflowCommitWorkBatchService • SharedConnectionWorkflowCommitWorkBatchService • Schematy bazy: C:\WINDOWS\Microsoft.NET\Framework\v3.0\Windows Workflow Foundation\SQL\EN • Dodawanie „usługi” z której workflow może skorzystać • workflowRuntime.AddService(instancja) • Też własne – np. wymiana zdarzeń • Z poziomu aktywności: • executionContext.GetService<typ>()

  9. Duże DEMO Obsługa zgłoszeń serwisowych Obsługa i wykorzystanie przepływu

  10. Scenariusz • System zgłoszeń serwisowych • Świadczone usługi • Klient ma pewien kredyt • Zgłoszenie to: • Tytuł/opis • Priorytet • Używany do wyliczenia opłaty • Ostatecznie będzie (albo): • Zaakceptowane • Przetworzone • Odrzucone • Proces • (przyjęcie) • Weryfikacja środków • Rezerwacja • Akceptacja/Odrzucenie • Kategoryzacja • Przekazanie do serwisanta • Wizyta lub • Raport postępów przy pracy zdalnej • Wycena (zdjęcie środków; zwolnienie rezerwacji) • Zakończenie

  11. Diagram

  12. Kilka pytań • Jak i gdzie uruchamiać przepływ? • Jak się z przepływem komunikować? • Co jeżeli nagle motor „padnie” a zgłoszenie już zdążyło zarezerwować środki? • Jak pobrać „wyliczoną” kwotę do akceptacji? • I jak tą kwotę wyliczyć? I jak to wszystko testować…

  13. Prosty hosting • Interfejs: IAdd, int Add(int a, int b); • Przepływ • WebServiceInputActivity – używa sygnatury Add • <operacje> • WebServiceOutputActivity – wynik • „Publish As Web Service” • Klient – dodaje referencje do usługi Web • DEMO

  14. Problemy • Hosting – wolę mieć pełną kontrolę • W tym przypadku: Własne ASP.NET • W środku uruchamiane Runtime • Komunikacja z klientem • WS (naturalny wybór) • Komunikacja Workflow – host • Interfejs z potrzebnymi operacjami • Z poziomu przepływu: • HandleExternalEvent • Zdarzenie zgłaszane, zmiana stanu, akceptacja • CallExternalMethod • Gdy Workflow ma o czymś poinformować hosta (wyliczona kwota) • Z poziomu hosta: • Implementacja interfejsu i rejestracja go jako usługi

  15. Uwagi o konstrukcji przepływu • DependencyProperty • Część modelu komponentu w .NET 3.0 • Kontekst, „rozpoznawanie wartości” • Validacja, powiadamianie itp. • „Doklejanie” do obiektu • WPF: • Potem łatwe związywanie z parametrem w designerze • Transakcja a kompensacja • Punkty zapisu • Przerywanie przepływu • Abort (da się wznowić) • Terminate (kasuje) • Zasada liczenia kwoty • Policy + reguły • (to się NA PEWNO będzie często zmieniać)

  16. DEMO Analiza przepływu

  17. Hosting (I) - DEMO Hosting + Testowanie przepływu

  18. Projekt i organizacja UI Windows Presentation Foundation

  19. Projekt i organizacja UI • Założenie: używamy WPF, ale piszemy „jak w WinForms” • Dwie aplikacje • Administrator (używa tylko WS) • lista aktywnych przepływów + lista zdarzeń • User (WS + normalne bindowanie do tabelki) • Dodanie nowego • Mamy coś w WinForms i chcemy to użyć • Przyciski do zmiany stanu • Odpytywanie WS o „aktualny stan” • Blokowanie/odblokowywanie kontrolek

  20. Rozdzielona „definicja UI” i obsługa XAML + code behind Ale – przekształcane do CS/VB.NET XAML: Szybsze niż GDI+ (logiczne a wizualne drzewo) Dużo nowych możliwości Obiekty 2D i 3D, kontrolki, okna, pojemniki automatycznie „rozkładające” zawartość Transformacje 2D/3D (skalowania/obroty) XPS Animacje; wideo (transformacje itp.) Rozmiary metryczne Pixel w WPF = 1/96 cala Nie ma wszędzie „uchwytu okna” Wiele wątków! DispatcherObject.VerifyAccess Kontrolka: model MVC Wizualizator określa JAK wygląda Style RoutedEventHandler WPF Podstawy podstaw <Window x:Class="obiekt" … <Button Name ="button1" Click="bC”>Kliknij</Button> … private voidbC(Objectsender, RoutedEventArgs e) {…} …

  21. Data Binding Składnia w XAML {Binding Source={StaticResource my}, Path=ColorName} Text="{Binding Path=Title}" Ręcznie kontekst Kontrola kiedy zmiany są propagowane <ValidationRules> DataTemplate – jak prezentować rekord ListBox itp. Specjalizacje (ListView) <DataTemplate x:Key="MyItemTempl"> <Grid> <Grid.ColumnDefinitions> <ColumnDefinition Width=… <Grid.ColumnDefinitions> <TextBlock Text= "{Binding Path=Title}" Grid.Column="0" FontWei…/> <TextBlock Text="{Binding Path=FirstName}" Grid.Column="1" /> <TextBlock Text="{Binding Path=LastName}" Grid.Column="2" />

  22. WPF a Windows Forms <WindowsFormsHost Name="wfHost" DockPanel.Dock="Top" Height="300"> <mcl: AddRequest1 Name="mc"/> </WindowsFormsHost> … AddRequest r = new AddRequest(); r.uxClient.DataSource = dt; wfHost.Child = r; • Przekazywanie zdarzeń, kontekstu bindingu • Ustawianie globalnych „cech” z poziomu pojemnika • Wielkość czcionki itp • Nie zapomnieć o referencji: • WindowsFormIntegration WinFormw w oknie WPF ctrlHost = new ElementHost(); ctrlHost.Dock = DockStyle.Fill; panel1.Controls.Add(ctrlHost); avAddressCtrl = new MyControls.Page1(); avAddressCtrl.InitializeComponent(); ctrlHost.Controls.Add(avAddressCtrl); avAddressCtrl.OnButtonClick += ... WPF w oknie WinForms

  23. Interfejs administratora Interfejs użytkownika Hostowanie WinForms w WPF DEMO

  24. DEMO Zmiana – po zakończeniu prac zdalnych, ma być wizyta a potem weryfikacja

  25. Podsumowanie • Workflow Foundation – REWELACJA • Ale – trzeba pamiętać że to ODDZIELNY proces • Komunikacja, synchronizacja itp. • Duża elastyczność • Łatwe modyfikacje logiki • Trochę trudniejsze pisanie UI • Nie należy „przesadzić” z uniwersalnością UI – czas/elastyczność • WPF • Duże możliwości • Ale trzeba wymyślić jak użyć • Ale można „pisać” podobnie jak w WinForms • Łatwiej niż w WinForms można „generować” odpowiednie struktury • Automatyczne rozkładanie zawartości, pojemniki, sensowny routing zdarzeń…

  26. Uwagi o programowaniu i problemach • DTC lokalny musi działać • SharedConnectionWorkflowTransactionService • Uwagi końcowe • TO TYLKO PRZYKŁAD • Dlaczego w ogóle klient komunikuje się z bazą danych? • Obsługa błędów • Nie analizować FXCOP  • ... • Skąd informacje: • Blogi, grupy dyskusyjne, wyszukiwarka

  27. Dziękuję za uwagę Tomasz Kopacz,tkopacz@tomaszkopacz.com

More Related