WF Lesson 2

You might also like

Download as pdf or txt
Download as pdf or txt
You are on page 1of 23

MC LC

1.

M hnh lp trnh WF ................................................................................................................... 2 1.1. Cc Activitiy .....................................................................................................................................2 1.2. T chc chy WF ..............................................................................................................................4 1.3. Cng vic ca nh pht trin WF ......................................................................................................6 1.3.1 1.3.2 Thit k workflow vi s tr gip ca Workflow Designer .................................................6 Phn loi cc lp trnh vin lin quan n WF .....................................................................7

2.

Cc cch vit WF ......................................................................................................................... 7 2.1. Xy dng cc workflow ch s dng m lp trnh ............................................................................9 2.2. Xy dng cc worklow s dng m XAML ...................................................................................18 2.3. Kt lun ...........................................................................................................................................22

3. 4.

Cu hi n tp .............................................................................................................................22 Ti liu tham kho ......................................................................................................................23

Bi hai XY DNG WORKFLOW


Bi ny trnh by tn quan cc khi nim lin quan n xy dng workflow bao gm: m hnh, file ngun, cch bin dch v cu trc workflow. Sau , s c hai v d xy dng hai workflow tng t nhau nhng theo cc phng php khc nhau bng Visual Studio bn c c th nm r quy trnh lm vic vi WF.

1. M hnh lp trnh WF
Workflow trong WF rt mm do v c ng. Cng vi cng c Visual Studio, cc lp trnh vin c th to, sa i workflow mt cch d dng v nng sut. l nh workflow c cu thnh t cc thnh phn c bn gi l cc activity (hnh ng), lp trnh vin ch cn chn cc activity ph hp, ko th, cu hnh, kt ni chng trn mi trng Designer trc quan ca Visual Studio. C th ngh n vic xy dng mt workflow cng ging nh vic chn cc thit b lp rp nn mt chic tnh hon thin. Hn na workflow tn ti phm vi rt rng v tuy n khng sng c lp nh mt ng dng c nhng n c th c tr (host) ln bt c loi ng dng no trn nn Microsoft .NET

1.1. Cc Activitiy
Trc ht chng ta cng tm hiu v activity, l n v thc thi c bn ca chng trnh WF. Mt activity trong mt chng trnh WF biu din mt khi ca chng trnh, mt chc nng ri rc. V d c nhng activity thc hin gi thc thi mt phng thc no (CodeActivity), c cc activity dng cho cu trc iu khin (IfElse, While ). i vi nhng lp trnh vin quen thuc vi lp trnh Winform th c th tng tng vai tr ca activity trong WF cng ging nh vai tr ca cc control trong Winform. Trong WF, tt c cc Activity u tha k t lp System.Workflow.ComponentModel.Activity. Phng thc Excecute ca n c override nh ngha logic thc thi, phng thc ny c ci t th no th s quy nh tnh nng ca activity . Cc activity phn lm hai loi: activity c cung cp sn (out-of-the-box) nm trong th vin chun BAL (Base Activity Library) v activity ty bin ca ngi dng (custom). Do ngi dng c th t nh ngha cc activity ca mnh nn workflow rt mm do, hu nh c th lm bt c chuyn g tng t nh phong cch lp trnh truyn thng (vit m lnh).
Microsoft Vietnam DPE Team | WF Bi 2: Xy dng Workflow 2

Khi ngi dng nh ngha mt activity, WF cho php hai la chn: Activity c bn: ch tha k t lp Activity v override phng thc Execute.

on m v d sau y nh ngha mt activity c bn


using System; using System.Workflow.ComponentModel; public class Empty : Activity { protected override ActivityExecutionStatus Execute( ActivityExecutionContext context) { return ActivityExecutionStatus.Closed; } }

Activity phc hp: cha cc activity khc. Visual Studio tr gip cho chng ta

nh ngha activity d dng. C th thit k Activity rt trc quan (hnh 1).

Hnh 1. V y l m ca activity hnh 1:


public partial class CompositeActivity { #region Designer generated code

Activity phc hp

[System.Diagnostics.DebuggerNonUserCode] private void InitializeComponent() { Microsoft Vietnam DPE Team | WF Bi 2: Xy dng Workflow 3

this.CanModifyActivities = true; this.codeActivity1 = new System.Workflow.Activities.CodeActivity(); // // codeActivity1 // this.codeActivity1.Name = "codeActivity1"; // // CompositeActivity // this.Activities.Add(this.codeActivity1); this.Name = "CompositeActivity"; this.CanModifyActivities = false; } #endregion private CodeActivity codeActivity1; }

1.2. T chc chy WF


Nh gii thiu trong bi 1, kin trc ca WF quy nh mi WF u phi chy trn mi trng WF runtime (hnh 2), l th vin to mi trng thc thi cho WF. Thc cht cc WF khng th t n chy c lp ging nh cc ng dng *.exe c in c m n phi c t chc chy trn mt phm vi ng dng nn CLR no nh l winform, web form. WF runtime thc thi cc workflow v qun l trng thi ca WF trong sut thi gian sng ca WF .

Hnh 2.

Kin trc ca WF
4

Microsoft Vietnam DPE Team | WF Bi 2: Xy dng Workflow

hiu su hn ti sao WF runtime ch c th chy trn mt ng dng no gi l ng dng ch (host application), chng ta hy nh n c tnh c bn ca workflow: n c th chy trong thi gian di. Bi v mt workflow c th chy trong nhiu gi, nhiu ngy thm ch nhiu tun, WF runtime s t ng tt mt workflow ang lm vic v lu trng thi ca n nu n khng active trong mt khong thi gian di. lu trng thi vo a cng, WF runtime li ph thuc vo mt dch v lu tr lu di no c cung cp cng vi tin trnh ch, v d ng dng ch kiu ASP.NET m t chc chy WF dng SQL Server lu. Cc ng dng ch khc c th lu cc workflow ng cc cng ngh khc nh l mt c s d liu no c dng cng vi ng dng ca nh cung cp phn mm. L do na Microsoft thit k cho php workflow chy trn ng dng khc l v nh c th workflow c th chy tt c cc loi ng dng .NET, workflow ch quan tm x l nghip v bn trong, khng quan tm n giao din vi ngi dng v cc ng dng khc. V c bn, lu tr (host) chng trnh ca ca WF ln ng dng .NET no rt n gin, v d nh on m sau y lu tr workflow ExampleWorkflow ln ng dng Example host:
using System.Workflow.Runtime; class ExampleHost { static void Main() { ... WorkflowRuntime runtime = new WorkflowRuntime(); WorkflowInstance instance = runtime.CreateWorkflow(typeof(ExampleWorkflow)); instance.Start(); ... } }

Trong v d ny, mi trng runtime ch l mt lp (ExampleHost). Mt khi th hin ca lp ny c to, n khi to v gi phng thc StartRuntime ca workflow, v nh thc thi workflow. Tin trnh ch l thnh phn c bn ca mi trng t chc chy workflow. V mi trng runtime c th c t trong cc tin trnh Windows khc nhau, cc workflow WF c th c dng rt nhiu cc ng cnh.

Microsoft Vietnam DPE Team | WF Bi 2: Xy dng Workflow

1.3. Cng vic ca nh pht trin WF


1.3.1 Thit k workflow vi s tr gip ca Workflow Designer

Cch n gin nht to v sa cc workflow WF l bng trnh thit k Workflow (Workflow Designer). Mc nh trnh thit k ny nm trong Visual Studio cha cc mu project to cc workflow dng tun t hoc my trng thi Bng cch ko th cc activity vo vng thit k v thit lp c thuc tnh ca chng, cc nh pht trin c th to v sa workflow mt cch d dng. Cch tip cn ny tng t nh khi chng ta lm cc ng dng Windows Forms hay Windows Presentation Foundation, cc nh pht trin th cc iu khin vo form v to ra cc giao din ngi dng. Vi trnh thit k Workflow, cc activity c th vo workflow to ra logic nghip v. Trong c hai trng hp trn, mc ch hng ti l nh nhau: nng cao nng sut pht trin phn mm. Dng WF lm phn mm, cc nh pht trin phn mm s thay i hn phng php lm phn mm i vi cc ng dng nng v lung cng vic. Gi y khng ch cc giao din ngi dng khng cn phi vit m na m cc logic nghip v (lung cng vic) cng c th c to ra theo cch nh vy thit k bng cng c trc quan. l nh vic trc quan ha s hot ng ca cc lung cng vic, tng thnh phn v s kt ni gia cc thnh phn c th hin trc quan bng cng c lp trnh tch hp (nh Visual Studio). (hinh 3).

` Hnh 3. Thit k workflow bng Workflow Designer trong Visual Studio

Microsoft Vietnam DPE Team | WF Bi 2: Xy dng Workflow

Gi y cng vic ca h khi pht lm phn mm l: thit k lung cng vic bng cng c trc quan (trc y h phi vit m lnh cho cc vic nh th ny cng vic rt nhm chn v rt kh kim th xem c tun theo c t hay khng, do cc c t u th hin di dng k php trc quan), v ch phi vit m lnh cho cc on x l hnh ng c th. 1.3.2 Phn loi cc lp trnh vin lin quan n WF

Hnh 4.

Nhng lp trnh vin lin quan n WF

Trong mi trng lp trnh chuyn nghip, c nhng nhm lp trnh vin c

phn cng ch tp trung lm nhng lnh vc nh, ri mi ghp cc sn phm t cc nhm vi nhau thnh h thng ln. Vi WF, chng ta c th phn ra ba loi nhm lp trnh vin (hnh 4): Lp trnh vin chuyn pht trin cc ng dng ch, y l cc ng dng truyn thng trn nn .NET, v th lp trnh vin khng cn c hiu bit su sc v khng cn thao tc trc tip vi WF. workflow. Workflow Developer: Gn kt cc activity vi nhau, cu hnh chng to nn workflow hon thin. Nhm lp trnh vin ny khng phi dng nhiu n m lp trnh m ch yu tng tc vi trnh Workflow Designer. Lp trnh vin chuyn to ra cc Activity: nhim v to ra cc vin gch cho

2. Cc cch vit WF
to ra cc workflow trong WF chng ta c th s dng m lnh ca ngn ng C#, VB.NET hoc dng ngn ng khai bo XAML (c l zammel [zml]). Thng thng chng ta c hay kt hp c hai cch trn (hnh 5).
Microsoft Vietnam DPE Team | WF Bi 2: Xy dng Workflow 7

XAML l thut ng vit tt ca Extensible Application Markup Language l mt ngn ng khai bo c dng trong Windows Framework uc gii thiu cng vi .NET Framework 3.0. XAML l s m u ca m hnh lp trnh khai bo (i lp vi m hnh c dng m lnh). Trong WF, cc workflows c th c to ra bng m lp trnh hoc bng XAML u tng ng vi nhau. Thm ch chng ta c th khai bo workflow bng XAML, khng cn bin dch m ch cn load vo workflow runtime v chy trc tip.

Hnh 5.

Quy trnh xy dng workflow trong WF

thy c s khc nhau ca hai phng php ny v c th a ra nhng cm nhn so snh v hai phng php, trong bi ny chng ti a ra hai v d xy dng workflow bng hai phng php vi cng mt bi ton ht sc n gin: m t 0 n 10 v hin th s l chn hay l. Logic ca bi ton trn th hin bng m chng trnh bnh thng nh sau:
int counter =0; while (counter != 10) { if (counter % 2 == 0) Console.WriteLine(Convert.ToString(counter) + " is an even number!"); else Console.WriteLine(Convert.ToString(counter) + " is an odd number!"); }

Microsoft Vietnam DPE Team | WF Bi 2: Xy dng Workflow

2.1. Xy dng cc workflow ch s dng m lp trnh


Khi ng Visual Studio, to mt d n mi chn ngn ng Visual C# vi

workflow v chn template l Sequential Workflow Console Application. t tn d n l FirstCodeWFApplication.

Hnh 6.

To project FirstCodeWFApplication

Mc nh Visual Studio to cho chng ta mt workflow tn l workflow1 v

ngn ng ca n l lnh C# (Workflow1.cs xem trong Solution Explorer). Visual Studio cng to sn file program.cs l WF runtime ca workflow1. Nu ai tng lm vic vi cc ng dng vWinform hay vWebform trong Visual Studio hn s rt quen thuc vi phong cch code behide hay partial file ca workflow, lp Workflow1 c nh ngha bng 2 file Workflow1.cs v Workflow1.designer.cs. M Toolbox (Ctrl+W, X), ko activity while vo vng thit k ca workflow, t gia im khi u (mu xanh) v im kt thc (mu ), chng ta thy workflow c hnh nh sau:

Microsoft Vietnam DPE Team | WF Bi 2: Xy dng Workflow

Hnh 7.

Thit k workflow

Bn c th thy hnh du chm than , l Visual Studio bo cho chng ta

rng activity vwhile ca chng ta cha hp l v cha c thit lp iu kin lp. By gi hy thm mt thuc tnh private cho lp workflow trc :
namespace FirstCodeWFApplication { public sealed partial class Workflow1: SequentialWorkflowActivity { public Int32 counter; public Workflow1() { InitializeComponent(); } } }

Hy tr li ca s thit k v click chut vo whileActivity1, bm F4 hin th

cc thuc tnh ca n, hy chn Condition gi tr l Declarative Rule Condition t combobox, m du + Condition, ri dng ConditionName hy n vo nt hin th hp chn lut nh hnh 8:

Microsoft Vietnam DPE Team | WF Bi 2: Xy dng Workflow

10

Hnh 8.

Hp thoi chn lut cho activity While

Click vo nt New vo hp thoi 'Rule Condition Editor' v son iu kin

kt thc cho vng while ging nh hnh 9.

. Hnh 9. Son lut


11

Microsoft Vietnam DPE Team | WF Bi 2: Xy dng Workflow

Chn OK hai ln, chng ta thit lp xong vng while. Hy xem trnh thit k

lm g cho chng ta? Mt on m khai bo workflow c sinh ra trong file Workflow1.designer.cs nh sau (ch khng nn sa file ny):
namespace FirstCodeWFApplication { partial class Workflow1 { #region Designer generated code /// <summary> /// Required method for Designer support - do not modify /// the contents of this method with the code editor. /// </summary> [System.Diagnostics.DebuggerNonUserCode] private void InitializeComponent() { this.CanModifyActivities = true; System.Workflow.Activities.Rules.RuleConditionReference ruleconditionreference1 = new System.Workflow.Activities.Rules.RuleConditionReference(); this.whileActivity1 = new System.Workflow.Activities.WhileActivity(); // // whileActivity1 // ruleconditionreference1.ConditionName = "Condition1"; this.whileActivity1.Condition = ruleconditionreference1; this.whileActivity1.Name = "whileActivity1"; // // Workflow1 // this.Activities.Add(this.whileActivity1); this.Name = "Workflow1"; this.CanModifyActivities = false; } #endregion private WhileActivity whileActivity1; Microsoft Vietnam DPE Team | WF Bi 2: Xy dng Workflow 12

} }

Tip tc tr li vi mn hnh thit k workflow, hy thm mt activity dng

IfElse vo trong whileActivity1, sau thm hai Code activity vo hai nhnh ca IfElse. Gi y workflow ca chng ta th hin nh sau hnh 10:

Hnh 10.

Workflow hon thin vi cc activity ca n

Tng t nh activity while, activity IfElse cng cn thit lp cc iu kin.

Chng ta li thm lut v gn cho nhnh bn tri ca IfElse (t ca s Properties chn Condition Rule Condition Editor) (hnh 11).

Microsoft Vietnam DPE Team | WF Bi 2: Xy dng Workflow

13

Hnh 11.

Lut cho nhnh bn phi ca activity IfElse

Vic tip theo ca chng ta l vit m cho cc codeActivity1 v codeActivity2.

Hy click p chut vo cc code Activity v thm cc on m nh sau:


private void codeActivity1_ExecuteCode(object sender, EventArgs e) { System.Console.WriteLine(counter.ToString() + " is an event number"); counter++; } private void codeActivity2_ExecuteCode(object sender, EventArgs e) { System.Console.WriteLine(counter.ToString() + " is an odd number"); counter++; }

By

gi

hy

xem

li

nh

ngha

Workflow1

trong

file

Workflow1.designer.cs:

Microsoft Vietnam DPE Team | WF Bi 2: Xy dng Workflow

14

namespace FirstCodeWFApplication { partial class Workflow1 { #region Designer generated code /// <summary> /// Required method for Designer support - do not modify /// the contents of this method with the code editor. /// </summary> [System.Diagnostics.DebuggerNonUserCode] private void InitializeComponent() { this.CanModifyActivities = true; System.Workflow.Activities.Rules.RuleConditionReference ruleconditionreference1 = new System.Workflow.Activities.Rules.RuleConditionReference(); System.Workflow.Activities.Rules.RuleConditionReference ruleconditionreference2 = new System.Workflow.Activities.Rules.RuleConditionReference(); this.codeActivity2 = new System.Workflow.Activities.CodeActivity(); this.codeActivity1 = new System.Workflow.Activities.CodeActivity(); this.ifElseBranchActivity2 = new System.Workflow.Activities.IfElseBranchActivity(); this.ifElseBranchActivity1 = new System.Workflow.Activities.IfElseBranchActivity(); this.ifElseActivity1 = new System.Workflow.Activities.IfElseActivity(); this.whileActivity1 = new System.Workflow.Activities.WhileActivity(); // // codeActivity2 // this.codeActivity2.Name = "codeActivity2"; // // codeActivity1 // this.codeActivity1.Name = "codeActivity1"; // Microsoft Vietnam DPE Team | WF Bi 2: Xy dng Workflow 15

// ifElseBranchActivity2 // this.ifElseBranchActivity2.Activities.Add(this.codeActivity2); this.ifElseBranchActivity2.Name = "ifElseBranchActivity2"; // // ifElseBranchActivity1 // this.ifElseBranchActivity1.Activities.Add(this.codeActivity1); ruleconditionreference1.ConditionName = "Condition2"; this.ifElseBranchActivity1.Condition = ruleconditionreference1; this.ifElseBranchActivity1.Name = "ifElseBranchActivity1"; // // ifElseActivity1 // this.ifElseActivity1.Activities.Add(this.ifElseBranchActivity1); this.ifElseActivity1.Activities.Add(this.ifElseBranchActivity2); this.ifElseActivity1.Name = "ifElseActivity1"; // // whileActivity1 // this.whileActivity1.Activities.Add(this.ifElseActivity1); ruleconditionreference2.ConditionName = "Condition1"; this.whileActivity1.Condition = ruleconditionreference2; this.whileActivity1.Name = "whileActivity1"; // // Workflow1 // this.Activities.Add(this.whileActivity1); this.Name = "Workflow1"; this.CanModifyActivities = false; } #endregion private CodeActivity codeActivity2; private CodeActivity codeActivity1; Microsoft Vietnam DPE Team | WF Bi 2: Xy dng Workflow 16

private IfElseBranchActivity ifElseBranchActivity2; private IfElseBranchActivity ifElseBranchActivity1; private IfElseActivity ifElseActivity1; private WhileActivity whileActivity1; } }

V cui cng, sa mt cht file Program.cs chng ta c th xem c kt qu

hot ng ca workflow. Thm dng System.Console.Read(); vo cui hm Main.


namespace FirstCodeWFApplication { class Program { static void Main(string[] args) { using(WorkflowRuntime workflowRuntime = new WorkflowRuntime()) { AutoResetEvent waitHandle = new AutoResetEvent(false); workflowRuntime.WorkflowCompleted += delegate(object sender, WorkflowCompletedEventArgs e) {waitHandle.Set();}; workflowRuntime.WorkflowTerminated += delegate(object sender, WorkflowTerminatedEventArgs e) { Console.WriteLine(e.Exception.Message); waitHandle.Set(); }; WorkflowInstance instance = workflowRuntime.CreateWorkflow(typeof(FirstCodeWFApplication.Workflow1)); instance.Start(); waitHandle.WaitOne(); System.Console.Read(); } } } }

Microsoft Vietnam DPE Team | WF Bi 2: Xy dng Workflow

17

Gi xong, hy n F5 xem thnh qu, chng trnh s th hin nh sau:

Hnh 12.

Kt qu chy workflow

2.2. Xy dng cc worklow s dng m XAML


Trong Visual Studio, hy to mt d n mi, phn thit lp, tng t nh ng

dng bng m phn 2.1, chn template l Sequential Workflow Console Application, t tn d n l FirstXAMLWFApplication.

Hnh 13.

To project FirstXAMLWFApplication
18

Microsoft Vietnam DPE Team | WF Bi 2: Xy dng Workflow

Mc nh, d n Workflow bao gm file m ngun nh ngha workflow, v

chng ta mun lm viv vi XAML, hy xa file workflow1 i. Sau thay th bng file nh nha workflow bng XAML: chut phi vo Solution Explorer, chn 'Add New Item' sau chn 'Sequential Workflow with Code Separation' file. 'Code Separation'.

Hnh 14.

To workflow vi m XAML

Hy sa tn file va to ra thnh MyWorkflow.xoml. Cn phi ch l file *.oml chnh l file nh ngha workflow bng XAML. Thit k workflow tng t nh phn 1.2 trn:

Microsoft Vietnam DPE Team | WF Bi 2: Xy dng Workflow

19

Hnh 15.

Thit k workflow MyWorkflow

Hy m file MyWorkflow.xoml, chng ta thy bn cht n l 1 file XAML, mi

thnh phn ca workflow u c th c vit bng ngn ng xml, kh n gin k c cho nhng ngi khng chuyn v k thut lp trnh.
<SequentialWorkflowActivity x:Class="FirstXAMLWFApplication.MyWorkflow" x:Name="MyWorkflow" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/workflow"> <WhileActivity x:Name="whileActivity1"> <WhileActivity.Condition> <RuleConditionReference ConditionName="Condition1" /> </WhileActivity.Condition> <IfElseActivity x:Name="ifElseActivity1"> <IfElseBranchActivity x:Name="ifElseBranchActivity1"> <IfElseBranchActivity.Condition> <RuleConditionReference ConditionName="Condition2" /> </IfElseBranchActivity.Condition> <CodeActivity x:Name="codeActivity1" ExecuteCode="codeActivity1_ExecuteCode" /> </IfElseBranchActivity> Microsoft Vietnam DPE Team | WF Bi 2: Xy dng Workflow 20

<IfElseBranchActivity x:Name="ifElseBranchActivity2"> <CodeActivity x:Name="codeActivity2" ExecuteCode="codeActivity2_ExecuteCode" /> </IfElseBranchActivity> </IfElseActivity> </WhileActivity> </SequentialWorkflowActivity>

Sau , tng t nh phn 2.1, hy thit lp cc lut v cho cc activiy While Sa li file ch Program.cs nh sau gi workflow chy:

v IfElse, xong. Thit lp m cho cc activity Code1 v Code2.

class Program { static void Main(string[] args) { using(WorkflowRuntime workflowRuntime = new WorkflowRuntime()) { AutoResetEvent waitHandle = new AutoResetEvent(false); workflowRuntime.WorkflowCompleted += delegate(object sender, WorkflowCompletedEventArgs e) {waitHandle.Set();}; workflowRuntime.WorkflowTerminated += delegate(object sender, WorkflowTerminatedEventArgs e) { Console.WriteLine(e.Exception.Message); waitHandle.Set(); }; WorkflowInstance instance = workflowRuntime.CreateWorkflow(typeof(FirstXAMLWFApplication.Workflow1)); instance.Start(); waitHandle.WaitOne(); System.Console.Read(); } } }

Kt qu chy hon ton tng t phn 2.1

Microsoft Vietnam DPE Team | WF Bi 2: Xy dng Workflow

21

2.3. Kt lun
Nh vy chng ta thy l vic to cc workflow bng m lp trnh v XAML u tng ng nhau. XAML c u im v bn cht n l ngn ng xml, n gin d vit bng bt c trnh son tho text n gin no v khng cn bin dch chy. Ngi khng quen vi vic lp trnh cng c th to ra cc workflow ca mnh vi cc file XAML. i vi nhng ngi xa nay quen lm vic vi cc ngn ng lp trnh nh C#, Visual Basic th vn c th lm cc workflow bng ngn ng quen thuc ca h m khng cn quan tm n dng lp trnh khai bo nh XAML. Tm li l ty thuc vo i tng ngi dng h chn phng php no thit k workflow ca h u mang li hiu qu nh nhau. Tuy nhin xu hng lp trnh khai bo vi XAML c l s tr thnh mt phong tro trong thi gian sp ti.

3. Cu hi n tp
1. Trong cc workflow, Activity l g Cc Activity (hnh ng ) l n v c bn ca chng trnh WF. Mt activity trong mt chng trnh WF biu din mt khi ca chng trnh, mt chc nng ri rc (vng lp, r nhnh, on m) 2. XOML l g? XOML (Extensible Object Markup Language) l ngn ng c t dng XML dng nh dng tun t ha cho cc i tng WF. Thc t, XOML l mt dng ca XAML, ch khc l XOML c dng lm phn m rng ca cc file nh ngha cc workflow. Khi to mt workflow vi VS.NET, n cho php ty chn nh ngha workflow bng lnh lp trnh hoc XAML, nu chn dng XAML, trnh IDE s to 2 file cho bn, 1 dng xoml (cha cch b tr workflow v cc ci t) v mt dng file m lp trnh .cs/.vb (cha m nh ngha cho cc hnh ng c th code activity trong workflow). 3. C th s dng cch no lm workflow trong WF: A. B. C. D. Cu tr li C 4. Phn m rng ca file XAML nh ngha workflow l:
Microsoft Vietnam DPE Team | WF Bi 2: Xy dng Workflow 22

S dng XAML S dng m lp trnh (C#, Visual Basic) A v B Khng c cch no trong cc cch trn

A. B. C. D. E. Cu tr li B

xaml xoml xml cs Tt c

4. Ti liu tham kho


1. K. Scott Allen, Programming Windows Workflow Foundation, Packt Publishing Ltd. December
2006 ISBN 1-904811-21-3

2. Dharma Shukla and Bob Schmidt, Essential Windows Workflow Foundation, Addison Wesley Professional 2006 3. Microsoft, Windows Workflow Foundation, URL: http://msdn2.microsoft.com/enus/netframework/aa663328.aspx
4. Microsoft, Windows Workflow Foundation Overview, URL: http://msdn.microsoft.com/en-

us/library/ms734631.aspx 5. Microsoft, MSDN (Windows Workflow Foundation (WF)), URL: http://msdn.microsoft.com/en-us/netframework/aa663328.aspx

Microsoft Vietnam DPE Team | WF Bi 2: Xy dng Workflow

23

You might also like