Pobieranie prezentacji. Proszę czekać

Pobieranie prezentacji. Proszę czekać

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

Podobne prezentacje


Prezentacja na temat: "Tworzenie aplikacji wykorzystujących Workflow Foundation oraz Windows Presentation Foundation Tomasz Kopacz."— Zapis prezentacji:

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 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 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 stanów…. Diagram przepływów….

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

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

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) 2. Weryfikacja środków 1. Rezerwacja Akceptacja/Odrzucenie 4. Kategoryzacja Przekazanie do serwisanta Wizyta lub Raport postępów przy pracy zdalnej 6. Wycena (zdjęcie środków; zwolnienie rezerwacji) 7. 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 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 Windows Presentation Foundation Projekt i organizacja UI

19 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 WPF Podstawy podstaw 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

21 Wizualizatory i wzorce Styl Do typu lub nazwany Lub cecha obiektu Ustawia właściwości Czcionka, kolory - wszystko Kontekst! Template – przepis na rysowanie … … …

22 Data Binding Składnia w XAML {Binding Source={StaticResource my}, Path=ColorName} Text="{Binding Path=Title}" Ręcznie kontekst Kontrola kiedy zmiany są propagowane DataTemplate – jak prezentować rekord ListBox itp. Specjalizacje (ListView)

23 WPF a Windows Forms Przekazywanie zdarzeń, kontekstu bindingu Ustawianie globalnych cech z poziomu pojemnika Wielkość czcionki itp Nie zapomnieć o referencji: WindowsFormIntegration … AddRequest r = new AddRequest(); r.uxClient.DataSource = dt; wfHost.Child = r; ctrlHost = new ElementHost(); ctrlHost.Dock = DockStyle.Fill; panel1.Controls.Add(ctrlHost); avAddressCtrl = new MyControls.Page1(); avAddressCtrl.InitializeComponent(); ctrlHost.Controls.Add(avAddressCtrl); avAddressCtrl.OnButtonClick +=... WinFormw w oknie WPF WPF w oknie WinForms

24 DEMO Interfejs administratora Interfejs użytkownika Hostowanie WinForms w WPF

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

26 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ń…

27 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

28 Dziękuję za uwagę Tomasz Kopacz,


Pobierz ppt "Tworzenie aplikacji wykorzystujących Workflow Foundation oraz Windows Presentation Foundation Tomasz Kopacz."

Podobne prezentacje


Reklamy Google