procesy biznesowe

83
Procesy biznesowe Windows Workflow Foundation

Upload: christmas

Post on 25-Feb-2016

57 views

Category:

Documents


2 download

DESCRIPTION

Procesy biznesowe. Windows Workflow Foundation. Proces Biznesowy. PB jest zbiorem jednej lub wielu powiązanych ze sobą procedur lub aktywności, których wykonanie prowadzi do osiągnięcia celu biznesowego. PB jest inicjowany przez pewne zdarzenie biznesowe. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Procesy biznesowe

Procesy biznesowe

Windows Workflow Foundation

Page 2: Procesy biznesowe

Proces Biznesowy PB jest zbiorem jednej lub wielu powiązanych ze sobą

procedur lub aktywności, których wykonanie prowadzi do osiągnięcia celu biznesowego.

PB jest inicjowany przez pewne zdarzenie biznesowe. W czasie wykonywania PB wykorzystywane są zasoby

organizacji oraz dostarczane są produkty (wyniki biznesowe) do wszystkich zainteresowanych stron (pracownicy, klienci, dostawcy, właściciele organizacji, itd.).

PB posiada mierniki efektywności, dzięki czemu proces można oceniać, porównywać z innymi procesami i w dalszej konsekwencji ulepszać.

Page 3: Procesy biznesowe

Pojęcia

Model vs. instancja Aktywność Środowisko uruchomieniowe

Dostępne zasoby Brak wolnych zasobów

Zgłoszenie zapotrzebowania

Rezerwacja zasobów

Zamówienie zasobów

Pobranie zasobów

Page 4: Procesy biznesowe

Business Process Execution Language for Web Services Język opisu opracowany przez BEA Systems,

IBM, Microsoft, SAP AG, Siebel Syst Wspiera wykorzystywanie usług sieciowych

kontrolując ich wywoływanie i koordynację Jest interpretowany i wykonywany przez silnik

(ang. Workflow Engine) Wspiera wykonywanie długich transakcji (dni,

tygodnie, miesiące) Zapewnia obsługę wyjątków pojawiających się w

takcie wykonywania procesu

Page 5: Procesy biznesowe

Business Process Execution Language for Web Services Język BPEL4WS jest oparty na XML Do korzystania z BPEL4WS stworzono

narzędzia graficzne. Podstawowe elementy, które wykorzystuje się

podczas modelowania to: Punkty graniczne procesu (inaczej porty) – miejsca, w

których proces biznesowy styka się z systemami za pośrednictwem wywoływanych usług sieciowych

Wiadomości – informacje przesyłane pomiędzy poszczególnymi portami

Aktywności – elementy, które mają wpływ na sposób przepływu wiadomości pomiędzy portami.

Page 6: Procesy biznesowe

Business Process Modelling Notation Standard stworzony przez Business Process

Management Initiative - BPMI, obecnie rozwijany przez Object Managament Group

Notacja, która byłaby zrozumiała dla wszystkich użytkowników: od analityków biznesowych, poprzez programistów, aż po osoby odpowiedzialne za monitorowanie procesów

Prezentacja modelu (np. BPEL4WS) użytkownikom biznesowym.

Etap pośredni pomiędzy modelowaniem i implementacją. Graficzne narzędzia dostępne wraz z WF przedstawiają

procesy biznesowe w odmienny sposób, zapewniając większą ilość szczegółowych informacji dla programisty.

Page 7: Procesy biznesowe

Microsoft BizTalk Server integracja aplikacji w ramach organizacji – EAI (ang.

Enterprise Application Integration) integracja aplikacji między różnymi organizacjami – B2B

(ang. Business to Business)

Wykorzystanie specjalizowanego serwera uruchamieniowego dla procesów biznesowych pozwala tworzyć skalowalne i odporne na awarie rozwiązania.

Wszystkie moduły wchodzące w skład produktu mogą być uruchamiane na wielu fizycznych maszynach realizujących ten sam, logiczny proces biznesowy.

Page 8: Procesy biznesowe

Microsoft BizTalk Server

Orchestration Designer BizTalk Schema Editor BizTalk Mapper Adapter Framework oraz zestaw gotowych

adapterów Środowisko uruchomieniowe

Page 9: Procesy biznesowe

Orchestration Designer Graficzne modelowanie PB Dostępny jako plugin do MSVisio lub

uruchamianiy z VS Stała grupa aktywności m.in.:

przygotowanie komunikatu (construct message) przypisanie komunikatu (message assignment) transformacja komunikatu (transform).

Model procesu może obejmować również elementy odpowiedzialne za monitorowanie zdarzeń ważnych z punktu widzenia biznesu

Page 10: Procesy biznesowe

Orchestration Designer

Page 11: Procesy biznesowe

BizTalk Schema Editor

Tworzenie schematów XML (XSD) definiujących komunikaty przetwarzane przez orkiestrację

Na tej podstawie komunikat może być stworzony np. poprzez aktywność przypisania komunikatu.

Page 12: Procesy biznesowe

BizTalk Schema Editor

Page 13: Procesy biznesowe

BizTalk Mapper

definiowania mapowania wykorzystywanego przez aktywność transformacji

Aktywność transformacji zmienia komunikat na inny (dokument XML -> dokument XML)

Na tej podstawie komunikat może być stworzony np. poprzez aktywność przypisania komunikatu.

Page 14: Procesy biznesowe

BizTalk Mapper

Page 15: Procesy biznesowe

Integracja Biztalka Komunikacja pomiędzy różnymi systemami za

odbywa się za pomocą różnych protokołów komunikacyjnych

Porty używane w orkiestracjach wykorzystują elementy zwane adapterami

Adaptery: predefiniowane (m.in. Adapter Web Services, Adapter

plików, Adapter HTTP/SMTP/POP3, Adapter SQL ) dedykowane do konkretnych aplikacji (m.in. Adapter

WebSphere MQ lub Adapter Windows SharePoint Services)

dostarczone przez fimy zewnętrzne stworzone z wykorzystaniem Adapter Framework

Page 16: Procesy biznesowe

Środowisko uruchomieniowe Elementy wchodzące w skład orkiestracji są

kompilowane do postaci bibliotek DLL. Procesy przed uruchomieniem należy umieścić

(ang. deploy) na serwerze BizTalk Server oraz połączyć z odpowiednimi portami.

Porty są tworzone na serwerze (np. np. BizTalk Administration Console) jako oddzielne elementy - niezależność procesu biznesowego od zewnętrznych systemów.

Page 17: Procesy biznesowe

Business Rules Engine Definiowanie i obliczanie reguł logicznych

wykorzystywanych do odpowiedniego przetwarzania procesów biznesowych.

Przydatny zwłaszcza, gdy podczas implementowania procesu należy brać pod uwagę dużą ilość parametrów mających wpływ na przebieg procesu.

Możliwość modyfikacji reguł bez konieczności zmieniania orkiestracji, (tj. bez zmiany modelu, rekompilacji oraz wdrażania).

Do modyfikacji reguł można używać narzędzia Business Rule Composer.

Page 18: Procesy biznesowe

BizTalk Administration Console Podstawowe narzędzie służące do zarządzania

silnikiem BizTalk Server. Informacje przydatne do monitorowania działania

wszystkich składników serwera. Konfiguracja i wdrażanie wszystkich elementów (tj.

m.in. procesy biznesowe, porty, powiązania pomiędzy portami i orkiestracjami oraz wymagane biblioteki DLL), np.: ustawianie adresu URL dla portu wykorzystującego adapter HTTP - Logika działania procesu jest niezależna od środowiska wykonywania.

Page 19: Procesy biznesowe

Business Activity Monitoring Śledzenie informacji ważnych z punktu widzenia

użytkowników biznesowych. Orkiestracje muszą udostępniać odpowiednie dane i

zdarzenia (musi to być uwzględnione na etapie implementacji procesu).

Odpowiednio przygotowana orkiestracja w trakcie wykonywania, zapisuje dane w bazie danych (ang. tracking database),

Businnes Activity Monitoring może być wykorzystany do monitorowania zdarzeń nie tylko orkiestracji ale także dowolnych aplikacji stworzonych w oparciu o platformę .NET.

Page 20: Procesy biznesowe

IBM WebSphere WebSphere Business Modeler:

graficzny edytor umożliwiający modelowanie PB możliwość przeprowadzenia symulacji stworzonego PB i jego

analizy za pomocą stworzonych wskaźników biznesowych. WebSphere Integration Developer

implementacja modelu PB. wykorzystanie wizualnych elementów, odpowiadających

elementom znanym z języka BPEL możliwość zaimplementowania maszyny stanów (ang. state

machine). WebSphere Process Server

serwer aplikacji oraz silnik odpowiedzialny za uruchamianie procesów biznesowych oparty o Enterprise Service Bus

wspiera dynamiczne modyfikowanie reguł biznesowych wykorzystywanych przez procesy.

WebSphere Business Monitor

Page 21: Procesy biznesowe

Inne rozwiazania Jboss i Flux Oracle:

workflow package, WF_Engine wraz z Java API

Page 22: Procesy biznesowe

Dziedziny zastosowań Szybka zmiennosc wymagań (np. plany taryfowe

oeratorów t. Komórkowych) Duże zindywidualizowanie wymagań – planowanie obsługi

klientów, sposobów przetwarzania danych itd. Powtarzalność definicji

Page 23: Procesy biznesowe

.NET Framework 3.x

Workflow Foundation – pierwsze wydanie

.NET Framework 4.x Workflow Foundation – zupełnie

zmieniona implementacja

Page 24: Procesy biznesowe

Windows Workflow Foundation Rodzaje przepływów

Proces sekwencyjnyProces stanowy

Aktywności Środowisko uruchomieniowe

Page 25: Procesy biznesowe

Proces sekwencyjny Proces sekwencyjny składa się z punktu wejscia, punktu

wyjścia oraz kolejnych aktywności wykonywanych jedna po drugiej.

Klasa definiująca ten typ procesu dziedziczy po klasie SequentialWorkflowActivity.

Na przebieg wykonania procesu mają wpływ aktywności zmieniające przepływ procesu.

Przebieg procesu może zostać zmieniony w wyniku wystąpienia wyjątków, które mogą być przechwytywane na poziomie pojedynczej aktywności lub całego procesu.

Page 26: Procesy biznesowe

Proces sekwencyjnyPrzykład

Page 27: Procesy biznesowe

Aktywności kontrolujące przepływ

IfElseActivity IfElseBranchActivity

Page 28: Procesy biznesowe

Aktywności kontrolujące przepływ

WhileActivity

Page 29: Procesy biznesowe

Aktywności kontrolujące przepływ

SequenceActivity ParallelActivity

Page 30: Procesy biznesowe

Proces stanowy Zaniechany w WF 4.0/ ponownie udostepniony w WF 4.5 Proces stanowy jest procesem, który można porównać

do skończonej maszyny stanowej. Składa się z specjalnych aktywności typu StateActivity, które reprezentują

stan procesu połączeń określających możliwe przejścia między stanami.

Spośród aktywności odpowiadających stanom można wyróżnić aktywność początkową oraz opcjonalną aktywność, która symbolizuje zakończenie procesu.

Proces stanowy jest realizowany jako klasa dziedzicząca po StateMachineWorkflowActivity.

Page 31: Procesy biznesowe

Proces stanowy. Przykład

Page 32: Procesy biznesowe

Środowisko uruchomienioweAplikacja

Środowisko uruchomieniowe

Usługi

Instancja procesu

Page 33: Procesy biznesowe

WF4.0 Wszystko jest aktywnością

Workflow jest również aktywnością

Activity

CodeActivity

AsyncCodeActivity

NativeActivity

DynamicActivity

Page 34: Procesy biznesowe

Dynamiczne aktywności WF4.0

<Activity x:Class=“Foo" > <x:Members> <x:Property Name="argument1“ Type="InArgument(x:String)" /> <x:Property Name="argument2” Type="InArgument(x:String)" /> </x:Members>

Foo.dll

C# (DynamicActivity)

Activity x = ActivityXamlServices.Load(xamlFile);WorkflowInvoker.Invoke(x, new Dictionary … );

Compile via XAML Build Task

Execute withDynamicActivity

Page 35: Procesy biznesowe

Foo

WorkflowInvoker WF4.0

WorkflowInvoker.Invoke(new foo)

Page 36: Procesy biznesowe

WorkflowApplication WF 4.0

var wa = new WorkflowApplication(new Foo)

FooFoo

Foo

wa.Run()wa.Persist()wa.Cancel()wa.ResumeBookmark()wa.Unload()

Page 37: Procesy biznesowe

Otoczenie procesu WF4.0WorkflowServiceHost

FooFoo

Foo

Page 38: Procesy biznesowe

HostWorkflowApplication

WF Persistence WF 4.0

Idle

wa.Persist()

Page 39: Procesy biznesowe

Tracking Participant

Workflow EventsWorkflow Runtime

Scheduler

raises events

Tracking Provider

Application Host

Tracking Profileadd

notify

Tooling

Monitoring Data

Page 40: Procesy biznesowe

Tworzenie WF WF jest aktywnością

może być napisany w postaci kodu lub zdefiniowany w XAML – lub dowolnym innym formacie (np w jęz. dynamicznym)

Aktywność może zawierać inne aktywności Aktywność może mieć argumenty we i wy (jak również zmienne) Aktywności zwracajace warość mają oddzielne klasy bazowe

n.p. CodeActivity<TResult>, NativeActivity<TResult> WF jest definicją, wg której można utworzyć wiele

instancji Każda instancja ma indywidualne środowisko (zmienne,

argumenty) InArgument

Page 41: Procesy biznesowe

Wykonanie WF runtime „widzi” aktywności, aktywności,

aktywności (nie Sequence, Parallel, Recurrence) WF runtime jest „sędzią” pilnuje reguł CacheMetadata sposób auto-opisu aktywności

WF runtime „wie” o zakończeniu aktywności Aktywność może zlecić wykonanie aktywności

potomnej (i. ew. poczekać na jej zakończenie) Mozliwych jest wiele różnych działań (“pulses of work”)

dla jednej aktywności Możliwe jest wyrażenie dowolnych, złożonych

rodzajów przepływów (control flow) Możliwe jest wiele scieżek wykonania…

Page 42: Procesy biznesowe

Scheduler

WorkItem 1WorkItem 2WorkItem 3WorkItem 4

WF Runtime

External Code

Activity Code

while !EmptyList Execute(next WorkItem)

Work items are executed one at a time within a

single workflow instance

POPSome work items are added to the front of the list,

others to the back

ADD

PUSH

ENQUEUE

while !EmptyList Execute(next WorkItem) DoBookkeeping()

while !EmptyList Execute(next WorkItem) DoBookkeeping()

Page 43: Procesy biznesowe

PARALLEL

“1”

“2”

“3”

“4”

Parallel.Execute

SEQUENCE1

SEQUENCE2

Sequence1.ExecuteWrite(“1”).ExecuteSequence1.ContinueWrite(“2”).ExecuteSequence1.ContinueParallel.Continue

Sequence2.Execute

Sequence2.ExecuteWrite(“3”).ExecuteSequence2.ContinueWrite(“4”).ExecuteSequence2.ContinueParallel.Continue

[ scheduler example ]

Workflow Instance Complete!

Page 44: Procesy biznesowe

Scheduler Jedna instancja Scheduler-a na proces Zarządza uporządkowana listą zadań

jednostkowych Zadania mogą być dodwane przez aktywności ale

również przez hosta lub zewnętrzny kod Niektóre zdania sa dodawane na poczatek inne na

koniec kolejki Wykonywane jest jedno zadnie na raz

Zadania nie sa przerywane Pomiędzy zadaniami mogą być realizowane różne

operacje np. tracking, persistence

Page 45: Procesy biznesowe

Threading Model Dla pojedynczej instancji programu jest wykorzystywany

jeden wątek na raz Upraszcza model programowania aktywności Do poszczegolnych zadań mogą zostać przypisane rózne wątki

(jeden na raz)w ramach tej samej instancji WF runtime korzysta z dostarczonego przez hosta

SynchronizationContext System.Threading.SynchronizationContext Można wykorzystać dla utworzenia własnych mechanizmów zarzadzania

wątkami Nie mozna wykorzystać TLS dla WF

WF Execution Properties – nazwane własciwośc i widoczne dla poddrzewa WF

WF runetime odpowiada za dołączanie / odłaczanie środowiska brzed/po wykonaniu zadania

Aktywności nie powinny blokować wątku WF programs coordinate work

Page 46: Procesy biznesowe

Asynchroniczne Aktywności

WF Runtime

AsyncActivity I/O code

BeginExecute BeginWrite

EndExecute EndWrite

AsyncWorkCompletionCallback

WorkItem

WorkItem

WorkItemWorkItemWorkItem

Page 47: Procesy biznesowe

Parallel + asynchroniczne a. = równoległość

Parallel p = new Parallel{ Branches = { new WriteToFile { FileName = "a", Bytes = … }, new WriteToFile { FileName = "b", Bytes = … } }};WorkflowInvoker.Invoke(p);

Page 48: Procesy biznesowe

Bookmarks Co się dzieje gdy program musi czekać (i czekac

i czekać) na wejście? Być może czeka również 1000 innych instancji

Potrzebny nieobciążajacy systemu WaitForInput() Zakładka!

Nazwany punkt wznowienia w WF Wznowienie wskazuje metodę zwrotną aktywności WF runtime zarządza wznowieniem – instancja nie

musi być w pamięci Gotowa do użycia aktywność WCF Receive

Page 49: Procesy biznesowe

Bookmark Resumption

“pizza”

“Please deliver [data] to instance [id] at bookmark

[name]”

WF Runtime

External Code

Activity Code RESUME

CREATE

Work item 1Work item 2Work item 3Work item 4

ENQUEUE

Page 50: Procesy biznesowe

Persystencja Persystencja pozwala wstrzymywać instancję WF,

zapisać ją „gdzieś” i wznowić później Zachowana instancja nie jest związana z konkretnym WF hostem,

komputerem, CLR, wątkiem czy procesem Zalety skalowalność, odporność na upadki

Instancje WF są serializowalne Stos CLR nie jest serializowalny, ale instancja WF ma stos tylko w

trakcie wykonania pojedynczego zadania Czasem nie chcemy możliwości persystencji - “no persist

zone” Automatyczne założenie podczas asynchronicznych aktywności

Szczegóły implementacji persystencji są niezależne od silnika WF

Page 51: Procesy biznesowe

Co jest w utrwalonej instancji Zserializowana instancja zawiera:

Listę zadań (pustą jeśli instyancja jest wolna) Bookmark-i Dane (argumenty and zmienne)

Środowisko dla wszystkich aktualnie wykonywanych aktywności

Informacje o instancji (callbacks, execution props) Dodatkowe dane od uczestników procesu persystencji

Nie zawiera definicji WF Milion instancji może współdzielic tą samą definicję Zarządzanie definicjami leży w gestii hosta

Page 52: Procesy biznesowe

[ Przykład: zserializowana instancja WF ]

PARALLEL

DateTime dint n

string s

private int index private int index

Page 53: Procesy biznesowe

[ Przykład: zserializowana instancja WF ]

PARALLEL

INPUT

DateTime dint n

string s

private int index private int index

“hello”

3

Bookmark:“x”

Page 54: Procesy biznesowe

Aktywności kontrolujące przepływ Definiują sposób wykonania dla złożonych

aktywności Dowolna aktywność może być rdzeniem Aktywności można zagłębiać

Activity 1

Activity 2

Activity 3

A

B

C

D

Parallel

Activity 4

Activity 1

Activity 2

Activity 3

Delay (TimeOut)Approve

Action A

Reject

Action B

PickBranch PickBranch PickBranch

Action C

Page 55: Procesy biznesowe

Przegląd aktywności

Assign Compensate Persist ReceiveMessage SendMessage

Throw TryCatch

Flowchart

DoWhile While ForEach

If Pick Switch

Sequence Parallel

Page 56: Procesy biznesowe

Przepływ sekwencyjn

Page 57: Procesy biznesowe

Przepływ typu Workflow

Page 58: Procesy biznesowe

Rrozszerzanie WF Tworzy mechanizm pozwalający

wstrzykiwać zewnętrzną logike w predefiniowane miejsca głównego WF

WF są rozszerzane w naturalny sposób przez kolejne WF

Process Order

Receive Order

Reserve Inventory

Ship Order

Approval Payment

Page 59: Procesy biznesowe

Tworzenie i uruchamianie WF

Tworzenie WF:new MyVeryImportantWorkflow()ActivityXamlServices.Load(“MyVeryImportant

Workflow.xaml") Uruchamianie WF:

WorkflowInvoker.Invoke(wf);WorkflowApplication app =

new WorkflowApplication(a); app.Run();

Page 60: Procesy biznesowe

Hierarchia aktywności WF

AsyncCodeActivity

Activity

CodeActivity

Activity<TResult>

NativeActivity

NativeActivity

<Tresult>

CodeActivity

<TResult>

AsyncCodeActivity

<TResult>

Page 61: Procesy biznesowe

Aktywność WF

Należy przeciążyć Execute

public class SayHelloInCode : CodeActivity { protected override void Execute(CodeActivityContext context) { Console.WriteLine("Hello Workflow 4 in code"); } }

Page 62: Procesy biznesowe

Asynchroniczna Aktywność WF

Należy przeciążyć BeginExecute i EndExecute

public class SayHelloInAsyncWay : AsyncCodeActivity { protected override IAsyncResult BeginExecute(

AsyncCodeActivityContext context, AsyncCallback callback, object state)

{ ... return stream.BeginWrite(bytes,0,bytes.Length,callback,state); } protected override void EndExecute(AsyncCodeActivityContext context,

IAsyncResult result) { ... FileStream stream = (FileStream)context.UserState; stream.EndWrite(result); }}

Page 63: Procesy biznesowe

Zakładki WF

Bookmark wskazuje na f. aktywności

public class ReadLine : NativeActivity<string>{ protected override void Execute(NativeActivityContext context) { context.CreateBookmark("ReadLine",

new BookmarkCallback(BookmarkResumed)); } private void BookmarkResumed(NativeActivityContext context, Bookmark bk, object state) { Result.Set(context, state); }}

Page 64: Procesy biznesowe

Aktywacja zakładki

WorkflowApplication app = newWorkflowApplication(MyWorkflow);

app.Run();app.ResumeBookmark(" ReadLine", "... something ...");

Page 65: Procesy biznesowe

Hostowanie WF

Dedykowany proces Workflow services Windows Application Server (codename

„Dublin”) + IIS

Page 66: Procesy biznesowe

WorkflowService

Page 67: Procesy biznesowe

Windows Application Service

Page 68: Procesy biznesowe

ASP.NET vs WorkflowService

Page 69: Procesy biznesowe

ASP.NET vs WorkflowServices / Dublin

Page 70: Procesy biznesowe

WF Service – data kontrakt

[DataContract]public class ExpenseReport{ [DataMember] public DateTime FirstDateOfTravel { get; set; } [DataMember] public double TotalAmount { get; set; } [DataMember] public string EmployeeName { get; set; }}

Page 71: Procesy biznesowe

WF Service - Konfiguracja aktyw.

Page 72: Procesy biznesowe

WF Service - podgląd serwisu

Page 73: Procesy biznesowe

WF Service - host

WorkflowServiceHost host = new WorkflowServiceHost(XamlServices.Load("ExpenseReportService.xamlx"),new Uri("http://localhost:9897/Services/Expense") );

host.AddDefaultEndpoints();host.Description.Behaviors.Add(

new ServiceMetadataBehavior { HttpGetEnabled = true });

//dodatkowy end pointWorkflowControlEndpoint wce = new WorkflowControlEndpoint(

new NetNamedPipeBinding(),new EndpointAddress("net.pipe://localhost/Expense/WCE"));

host.Open();Console.WriteLine("Host is open");Console.ReadLine();

Page 74: Procesy biznesowe

Persystencja - baza

Przygotowanie bazy 1. %windir%\Microsoft.NET\Framework\

v4.0.21006\sql\<language> 2. SqlWorkflowInstanceStoreSchema.sql 3. SqlWorkflowInstanceStoreLogic.sql

Page 75: Procesy biznesowe

Persystencja – konfiguracja providera

WorkflowApplication application = new WorkflowApplication(activity);InstanceStore instanceStore = new SqlWorkflowInstanceStore( @"Data Source=.\SQLEXPRESS;Integrated Security=True");InstanceView view = instanceStore.Execute( instanceStore.CreateInstanceHandle(),

new CreateWorkflowOwnerCommand(),TimeSpan.FromSeconds(30));

instanceStore.DefaultInstanceOwner = view.InstanceOwner;application.InstanceStore = instanceStore;

Page 76: Procesy biznesowe

Persystencja

WorkflowApplication application = new WorkflowApplication(activity);InstanceStore instanceStore = new SqlWorkflowInstanceStore( @"Data Source=.\SQLEXPRESS;Integrated Security=True");InstanceView view = instanceStore.Execute( instanceStore.CreateInstanceHandle(),

new CreateWorkflowOwnerCommand(),TimeSpan.FromSeconds(30));

instanceStore.DefaultInstanceOwner = view.InstanceOwner;application.InstanceStore = instanceStore;

wf.PersistableIdle = (waie) => PersistableIdleAction.Persist

Konfiguracja providera

Wymuszanie utrwalania workflow-u

Page 77: Procesy biznesowe

WF Tracking

Po zakończeniu WF jest likwidowany – oczywiscie można zareagować na odpowiednie zdarzenie ...

Tracking:TrackingParticipant (standardowo dostępny

EtwTrackingParticipant ETW = Enterprise Trace for Windows ))

TrackingProfile

Page 78: Procesy biznesowe

Tracking profile ActivityStateQuery WorkflowInstanceQuery CustomTrackingQuery TrackingProfile profile = new TrackingProfile

{ Name = "SimpleProfile", Queries = { new WorkflowInstanceQuery { States = { "*" } }, new ActivityStateQuery { ActivityName = "WriteLine", States={ "*" }, Variables = {"Text" } } }};

Page 79: Procesy biznesowe

Activity Designer Kontrolki WPF:

ActivityDesigner WorkflowItemPresenter WorkflowItemsPresenter ExpressionTextBox

Page 80: Procesy biznesowe

WF: Model programowy

Activity wf = new Sequence { Activities = {

new WriteLine { Text = "Hello" }, new WriteLine { Text = "World." }

} }; WorkflowInvoker.Invoke(wf);

Page 81: Procesy biznesowe

WF: ZmienneSequence wf = new Sequence {

Variables = {new Variable<string>{ Default = "Hello", Name =

"greeting"},new Variable<string> { Default = "Bill", Name = "name" }

},Activities = { new WriteLine {

Text = new VisualBasicValue<string>("greeting“) }, new WriteLine {

Text = new VisualBasicValue<string>("name + \"Gates\"")} }}

};WorkflowInvoker.Invoke(wf);

Page 82: Procesy biznesowe

WF: Przekazywanie parametrówIDictionary<string, object> results = WorkflowInvoker.Invoke(wf,

new Dictionary<string,object> { {"name", "Bill" } }

);

string outValue = results["fullGreeting"].ToString();

Page 83: Procesy biznesowe

WF: Przekazywanie parametrówIDictionary<string, object> results = WorkflowInvoker.Invoke(wf,

new Dictionary<string,object> { {"name", "Bill" } }

);

string outValue = results["fullGreeting"].ToString();

//{…// public InArgument<string> Name {get; set;}

//