บทความนี้จะแนะนำให้คุณรู้จักกับแอปพลิเคชันที่เกี่ยวข้องของ Windows Workflow 4.0 ใน Visual Studio 2010 ฉันหวังว่าบทความสั้น ๆ นี้จะช่วยคุณพัฒนา Workflow 4.0 ได้
เพิ่งติดตั้ง Visual Studio 2010 ในเครื่องเสมือน อินเทอร์เฟซเป็นแบบ WPF และการใช้งาน CPU และหน่วยความจำไม่ได้เกินจริง เมื่อคุณเปิดโครงการแล็บที่แนบมาแบบธรรมดา การใช้งาน CPU โดยทั่วไปจะน้อยกว่า 20% และการใช้งานหน่วยความจำจะน้อยกว่า 800M
ใกล้บ้านมากขึ้น มาแนะนำ Windows Workflow 4.0 กันดีกว่า
โมเดลเวิร์กโฟลว์มีการเปลี่ยนแปลงมากเมื่อเทียบกับ 3.5
เรารู้ว่าเวิร์กโฟลว์ใน 3.5 โฮสต์อยู่ใน WorkflowRuntime และอินสแตนซ์เวิร์กโฟลว์ถูกสร้างขึ้นและดำเนินการผ่าน WorkflowRuntime ไม่มีคลาส WorkflowRuntime ใน 4.0 ดังนั้นคุณสามารถสร้างอินสแตนซ์ WorkflowInstance และดำเนินการเวิร์กโฟลว์ได้โดยตรง รหัสใน Lab มีดังนี้:
WorkflowInstance myInstance = WorkflowInstance ใหม่ (SayHello ใหม่ ()
ใหม่ SayHelloInArgs(ชื่อผู้ใช้));
myInstance.OnCompleted = ผู้รับมอบสิทธิ์ (WorkflowCompletedEventArgs e)
-
Console.WriteLine("*** ผู้รับมอบสิทธิ์ OnCompleted ทำงานบนเธรด {0} ***",
Thread.CurrentThread.ManagedThreadId);
SayHelloOutArgs outArgs = ใหม่ SayHelloOutArgs(e.Outputs);
ทักทาย = outArgs.Greeting;
syncEvent.Set();
-
myInstance.OnUnhandledException = ผู้รับมอบสิทธิ์ (WorkflowUnhandledExceptionEventArgs e)
-
Console.WriteLine(e.UnhandledException.ToString());
กลับ UnhandledExceptionAction.Terminate;
-
myInstance.OnAborted = ผู้รับมอบสิทธิ์ (WorkflowAbortedEventArgs e)
-
Console.WriteLine (e.เหตุผล);
syncEvent.Set();
-
myInstance.Run();
มีคลาส WorkflowInviver ใน 4.0 คลาสนี้ยังสามารถดำเนินการเวิร์กโฟลว์ได้ แต่คลาสนี้ใช้เพื่อทดสอบเวิร์กโฟลว์ ซึ่งช่วยปรับปรุงความยากในการทดสอบเวิร์กโฟลว์ในเวอร์ชันก่อนหน้าอย่างมาก
[วิธีทดสอบ]
โมฆะสาธารณะควรกลับมาทักทายด้วยชื่อ ()
-
พจนานุกรม <string, object> input = พจนานุกรมใหม่
<สตริง วัตถุ>()
-
{"ชื่อผู้ใช้", "ทดสอบ"}
-
IDictionary<string, object> เอาท์พุต;
เอาท์พุท = WorkflowInviver.Inrigg (ใหม่ SayHello (), อินพุต);
Assert.AreEqual("สวัสดี ทดสอบจากเวิร์กโฟลว์ 4", เอาต์พุต ["คำทักทาย"]);
-
กิจกรรมใน 3.5 เป็นคลาสพื้นฐานของกิจกรรมทั้งหมด หากต้องการนำกิจกรรมที่กำหนดเองไปใช้ คุณจะต้องแทนที่วิธีการ Execute() ของกิจกรรมใน 4.0 กิจกรรมทั้งหมดได้มาจากคลาสนามธรรม WorkflowElement และได้รับการปรับแต่งตามค่าเริ่มต้นใน Visual Studio กิจกรรมได้รับการสืบทอดมาจาก CodeActivity หรือ CodeActivity<T> ในทำนองเดียวกัน Execute() ก็จำเป็นต้องเขียนใหม่เพื่อใช้ตรรกะการดำเนินการแบบกำหนดเอง
MyActivity1 คลาสสาธารณะ: CodeActivity
-
การป้องกันการแทนที่ถือเป็นโมฆะดำเนินการ (บริบท CodeActivityContext)
-
//โค้ดการใช้งานของคุณ
-
-
แน่นอน คุณยังคงสามารถรับกิจกรรมที่กำหนดเองได้จากกิจกรรม แต่จะแตกต่างจากรุ่น 3.5 มาก
คลาสสาธารณะ SayHelloInCode : กิจกรรม
-
ป้องกันแทนที่ WorkflowElement CreateBody ()
-
กลับลำดับใหม่ ()
-
กิจกรรม =
-
ใหม่WriteLine()
-
ข้อความ = "สวัสดีเวิร์กโฟลว์ 4 ในโค้ด"
-
-
-
-
-
ฟังก์ชันบริการเวิร์กโฟลว์ที่เพิ่มใหม่ใน 4.0 สามารถเผยแพร่เวิร์กโฟลว์เป็นบริการ WCF ได้โดยตรง แน่นอนว่าเวิร์กโฟลว์จะต้องได้รับการออกแบบด้วยฟังก์ชันตอบสนอง WCF ด้วย 4.0 มีกิจกรรมที่เกี่ยวข้องกับ WCF สี่กิจกรรม: รับ รับตอบกลับ ส่ง และส่งตอบกลับ ด้วยกิจกรรมเหล่านี้ การดำเนินการบริการ WCF สามารถกำหนดเป็นภาพได้
โมเดลพื้นฐานของตัวออกแบบเวิร์กโฟลว์ถูกนำมาใช้ใน 4.0 และตัวออกแบบแบบกำหนดเองสามารถนำไปใช้ได้อย่างง่ายดาย