Bài giảng Giới thiệu về Windows Workflow
lượt xem 6
download
Bài giảng Giới thiệu về Windows Workflow cung cấp cho người đọc những kiến thức tổng quan về Windows Workflow (WF). Nội dung chính của bài giảng trình bày về khái niệm workflow (luồng công việc) trong các hoạt động nghiệp vụ. Ngoài ra bài giảng này còn giới thiệu về chi tiết, kiến trúc, công cụ phát triển và một ví dụ cơ bản ban đầu về WF giúp cho người đọc làm quen với WF.
Bình luận(0) Đăng nhập để gửi bình luận!
Nội dung Text: Bài giảng Giới thiệu về Windows Workflow
- MỤC LỤC 1 Workflow là gì? ............................................................................................................................. 2 2 Giới thiệu Windows Workflow Foundation ................................................................................. 3 2.1. Lý do nên sử dụng WF................................................................................................................................... 3 2.2. Kiến trúc của Windows Workflow Foundation ............................................................................................. 4 2.2.1 Hai loại activity ................................................................................................................................. 6 2.2.2 Lưu trú ............................................................................................................................................... 6 2.2.1 Các dịch vụ chạy (runtime service) trong WF .................................................................................. 8 2.3. Mô hình xây dựng workflow ....................................................................................................................... 11 2.4. Các loại workflow trong WF ....................................................................................................................... 11 2.5. Công cụ phát triển WF ................................................................................................................................. 12 3 So sánh WF với WCF ................................................................................................................. 13 4 Bắt đầu với WF ........................................................................................................................... 13 Ví dụ đầu tiên với WF ........................................................................................................................ 14 Câu hỏi ôn tập.................................................................................................................................... 17 Tài liệu tham khảo ............................................................................................................................. 18
- Bài mở đầu GIỚI THIỆU VỀ WINDOWS WORKFLOW FOUNDATION Bài này giới thiệu tổng quan về Windows Workflow Foundation (WF). Phần đầu bàn về khái niệm workflow (luồng công việc) trong các hoạt động nghiệp vụ. Từ sự phức tạp của các luồng công việc, chúng ta thấy rằng cần có các công cụ phát triển phần mềm giúp mô hình hóa và tiến hành lập trình các ứng dụng tập trung vào các luồng công việc một cách thuận tiện và đơn giản nhất. Windows Workflow Foundation (WF) là một thành phần phần mềm như thế. Phần tiếp theo sẽ đi vào chi tiết giới thiệu WF, kiến trúc WF, công cụ phát triển và cuối cùng là một ví dụ cơ bản ban đầu về WF giúp cho người đọc làm quen với WF. 1 Workflow là gì? Một workflow (luồng công việc) là thứ tự các bước, tác vụ, sự kiện hoặc tương tác làm nên một quy trình để thực hiện một công việc nào đó. Quy trình này có thể có nhiều bộ phận, cá nhân tham gia. Nguồn gốc luồng công việc có lẽ bắt nguồn từ công tác xử lý văn bản: văn bản cần phải được di chuyển từ nơi này sang nơi khác để thực hiện các công việc khác nhau (đọc, sửa đổi, góp ý, xem lại, phê chuẩn…). Ví dụ, một luồng công việc thực hiện mua bán hàng hóa đơn giản nhất gồm một chuối các bước như sau: Đầu tiên người mua xem tính năng sản phẩm và giá, nếu cảm thấy thỏa mãn thì chọn mua sản phẩm đó, tiếp theo điền thông tin cá nhân vào phí thanh toán và cuối cùng là thanh toán đơn hàng Hình 1. Ví dụ về một quy trình công việc Thực tế cho thấy, các hệ thống quản lý thông tin chứa rất nhiều nghiệp vụ cần thực hiện như một luồng công việc. Vì vậy có rất nhiều sản phẩm workflow tự động cho phép tạo mô hình luồng công việc và các thành phần như là các form online, người dùng dùng chúng để đảm bảo tính nhất quán của công việc. Chẳng hạn như ở ví dụ trên, luồng công việc đảm bảo rằng người mua hàng phải thực hiện bước chọn sản phầm và điền thông tin khách hàng trước khi thực hiện thanh toán. Microsoft Vietnam – DPE Team | WF – Bài mở đầu: Giới thiệu về Windows Workflow Foundation 2
- 2 Giới thiệu Windows Workflow Foundation Windows Workflow Foundation (WF) là một công nghệ của Microsoft cho phép định nghĩa, thực thi và quản lý các workflow. Công nghệ này được ra đời vào tháng 11 năm 2006 như là một phần của nền tảng .NET framework 3.0 (còn gọi là WinFX). WF, không chỉ cho phép bạn phối hợp các công việc như các chương trình truyền thống, nó có có một vài điểm khác biệt quan trọng sau: WF có thể điều khiển các công việc chạy trong thời gian dài bằng cách lưu trữ (persisting) workflow vào chỗ lâu bền (trái với bộ nhớ chỉ tồn tại khi hệ điều hành chạy) như là đĩa cứng, cơ sở dữ liệu khi workflow không làm gì và nạp trở lại khi workflow tiếp tục làm việc. Thể hiện của workflow có thể được chỉnh sửa động khi đang chạy (thêm điều kiện mới, cách xử lý khác với khi nó được tạo ra). WF là mộ phương pháp lập trình khai báo (trái với lập trình viết mã lệnh) bằng cách kết nối các thành phần được định nghĩa sẵn (gọi là “hành động” - activity). WF cho phép bạn khai báo các luật nghiệp vụ, chúng tách rời mã vì vậy bạn dễ dàng sửa đổi chúng về sau. WF hỗ trợ các kiểu hệ thống khác nhau với hai loại workflow: workflow trình tự (sequential) và workflow máy trạng thái. 2.1. Lý do nên sử dụng WF Tại sao lại dùng luồng công việc (workflow): Lý do lớn nhất là vì luồng công việc cho phép bạn mô hình hóa một cách trực quan và rõ ràng các luồng điều khiển của một ứng dụng. Thay vì biểu diễn logic ứng dụng của bạn bằng một mớ mã phức tạp, thì khai báo logic đó bằng luồng công việc rõ ràng là làm đơn giản hơn. Nhờ đó, bạn có thể kiểm tra logic ứng dụng của bạn, làm trực quan hóa nó, theo vết nó khi thực thi và kể cả thay đổi nó khi đang chạy. Điều này rõ ràng là tuyệt vời. Ngoài ra workflow cho phép phối hợp làm việc giữa con người và phần mềm bằng các loại giao diện tương tác khác nhau: email, web-form, winform, instant message Tại sao nên dùng WF: WF là nền tảng cho phép các nhà phát triển xây dựng các ứng dụng có các luồng công việc trở nên đơn giản hơn. Thực tế, có rất nhiều nhà phát triển đã phát triển framework của riêng họ, điều này cho thấy sự cần thiết phải có một framework đủ tốt hỗ trợ cho các ứng dụng về luồng công việc. Sự ra đời của WF đã giải quyết được nhu cầu này. Một workflow trong WF được cấu thành từ các activity. Theo quan điểm của người lập trình thì workflow hay activity đều là các đối tượng được hình thành từ các lớp, do vậy có thể định nghĩa được các workflow hay activity tùy ý. Cũng giống winform hoặc webform có điều khiển chuẩn thì Microsoft cũng cung cấp các activity cơ bản gọi là BAL (Base Activity Library), hầu hết các workflow đều được xây dựng chỉ từ các activity này. Nhà phát triển có thể thiết kế workflow rất trực quan qua công cụ thiết kế Microsoft Vietnam – DPE Team | WF – Bài mở đầu: Giới thiệu về Windows Workflow Foundation 3
- workflow đồ họa trên (Workflow Designer) Visual Studio. Rất nhiều người thích tính trực quan và dễ dàng nắm bắt của giao diện đồ họa này nhưng cũng có người thích những dòng mã hơn, vì thế WF cho phép họ làm như thế hoặc phối hợp cả hai cách. Như vậy WF cho hiệu quả phát triển workflow luôn ở mức cao nhất, thuận tiện nhất với tất cả mọi người. Workflow được WF hỗ trợ phát triển nhanh chóng và dễ dàng như vậy nên chi phí phát triển sẽ giảm đáng kể mà chất lượng vẫn được đảm bảo. 2.2. Kiến trúc của Windows Workflow Foundation Như đã giới thiệu ở trên, WF là một thành phần nằm trong nền tảng .NET 3.0. Bên cạnh WF, .NET 3.0 còn có một số mô hình lập trình mới như là WCF, WPF, CardSpace. Hình 2. Vị trí WF trong .NET 3.0 Microsoft Vietnam – DPE Team | WF – Bài mở đầu: Giới thiệu về Windows Workflow Foundation 4
- Hình 3. Kiến trúc của WF WF là một mô hình lập trình, trang bị một cơ chế và các công cụ để xây dựng các ứng dụng thiên về luồng công việc. Như trong hình… một workflow trong WF được cấu thành từ các activity, các activity này thường là được tạo ra từ BAL - thư viện activity cơ bản của WF hoặc cũng có thể là các activity tùy biến của người dùng. Một workflow sẽ chạy trong Runtime Engine, trong Runtime Engine có thể bao gồm cả các dịch vụ chạy (Runtime Service). Đến lượt Runtime Engine lại được lưu trú ở một tiến trình của ứng dụng chủ (host process), ứng dụng chủ có thể là bất cứ loại ứng dụng nào của .NET chạy phía client hay server: winform, winservice, webform, web service. Microsoft Vietnam – DPE Team | WF – Bài mở đầu: Giới thiệu về Windows Workflow Foundation 5
- 2.2.1 Hai loại activity Hình 4. Các activity cơ bản Thư viện activity cơ bản – BAL: Frameworkf WF đóng gói hơn 30 activity trong BAL. BAL chứa các activity từ các điều khiển cơ bản cho đến các hành động phức tạp như là gọi web service. Hình 3 hiển thị tất cả các activity BAL trong Toolbox của Visual Studio Activity tùy biến: Bạn có thể dễ dàng tạo activity mới đáp ứng nghiệp vụ của bạn. Activity tùy biến có thể thực hiện chức năng nào đó, từ đơn giản chẳng hạn như câu lệnh SQL Insert dữ liệu đến phức tạp như là tạo một đơn đặt hàng. 2.2.2 Lưu trú Vì WF không phải là một ứng dụng độc lập, nên nó cần phải được cho lưu trú lên một ứng dụng .NET khác. Ứng dụng chủ có thể là bất cứ loại ứng dụng .NET nào chẳng hạn như winform, ASP.NET, console, Windows Service hoặc web service. Mặc dù workflow là nơi hầu hết các nghiệp vụ quan trọng thực thi, nhưng ứng dụng chủ cũng rất quan trọng vì nó là nơi diễn ra vòng đời thi hành của workflow. Ứng dụng chủ là nơi workflow khởi hành và thường là nơi người dùng tương tác. Microsoft Vietnam – DPE Team | WF – Bài mở đầu: Giới thiệu về Windows Workflow Foundation 6
- Mô hình có ứng dụng chủ này rất phù hợp vì cho phép WF tập trung vào xử lý nghiệp vụ, còn các tương tác có thể được giao phó cho bất cứ loại ứng dụng nào khác trong .NET. Việc tương tác giữa WF với ứng dụng chủ ra sao? Tất nhiên WF không thể thực thi một mình, nó cần có tương tác với môi trường bên ngoài chính là ứng dụng chủ. WF cung cấp cơ chế cho phép bạn dễ dàng và nhanh chóng truyền dữ liệu vào ra workflow, ngoài ra các phương thức có thể điều khiển sự kiện để tương tác với bên ngoài. Để dùng tham số giao tiếp giữa workflow và ứng dụng chủ, trong đoạn mã tạo workflow bằng phương thức CreateWorkflow của lớp WorkflowRuntime, bạn có thể truyền đối tượng Dictionary chứa các thành phần tham số cần thiết cho workflow. Dạng giao tiếp khác của workflow là dịch vụ giao tiếp nội tại (local communication services), dạng giao tiếp này được thực hiện giữa các lớp thông qua các sự kiện và phương thức. Ứng dụng chủ có thể “nói chuyện” với workflow bằng cách kích hoạt các sự kiện mà được xử lý ở bên trong workflow. Workflow cũng có thể giao tiếp với ứng dụng chủ bằng cách gọi các phương thức. Đây là dạng thông dụng của giao tiếp vì nó dùng khái các niệm đã quen thuộc đối với các nhà phát triển. Dùng dịch vụ giao tiếp nội tại rất đơn giản. Đầu tiên bạn cần phát triển một .NET Interface định nghĩa các sự kiện và phương thức dùng để giao tiếp, ví dụ [ExternalDataExchangeAttribute] public interface ITalkWithMe { void TellSomethingToTheHost(string message); event EventHandler NotifyTheWorkflow; } Sau đó tạo lớp triển khai interface trên như sau: public class TalkWithMeService : ITalkWithMe { public void TellSomethingToTheHost(string message) { System.Windows.Forms.MessageBox("The workflow told me: " + message); } public event EventHandler NotifyTheWorkflow; public void SendAnEventToTheWorkflow() { Microsoft Vietnam – DPE Team | WF – Bài mở đầu: Giới thiệu về Windows Workflow Foundation 7
- NotifyTheWorkflow(this, new ExternalDataEventArgs(WorkflowEnvironment.WorkflowInstanceId)); } } Chú ý rằng interface ITalkWithMe có attribute ExternalDataExchange, nó giúp cho WF biết rằng interface này là một dịch vụ giao tiếp nội tại. Tại lớp triển khai của interface này, phương thức TellSomethingToTheHost được gọi từ một thể hiện của workflow và cho phép truyền message tới dịch vụ. Phương thức SendAnEventToTheWorkflow dùng để ứng ụng chủ sinh sự kiện NotifyTheWorkflow 2.2.1 Các dịch vụ chạy (runtime service) trong WF Hình 5. Dịch vụ chạy trong WF Các dịch vụ chạy trong WF chứa các lớp chuẩn và lớp người dùng tùy biến cần thiết cho engine của workflow runtime trong quá trình thi hành (hình 5). Các dịch vụ này thực hiện các tác vụ liên quan đến thực thi và bảo trì workflow. Sau đây là một số dịch vụ: Tên dịch vụ Mô tả Các lớp liên quan Là dịch vụ giúp bạn bảo đảm tính toàn vẹn của ứng dụng workflow. Transaction được định nghĩa là một DefaultWorkflowTransactionService nhóm các activity phải được thực thi thành công toàn (mặc định) Transaction bộ. Nếu một activity trong chuỗi mà bị lỗi, các hành (giao tác): động đã thực hiện phải được quay lui. Tuy nhiên các SharedConnectionWorkflow transaction mà thực thi trong thời gian dài không phải -TransactionService lúc nào cũng có thể quay lui, thay vào đó nó một số Microsoft Vietnam – DPE Team | WF – Bài mở đầu: Giới thiệu về Windows Workflow Foundation 8
- logic được triển khai để đảm bảo trạng thái ổn định của workflow. Kiến trúc dịch vụ transaction trong WF hỗ trợ hai loại transaction là transaction ACID (Atomic – nguyên tử, Consistency – nhất quán, Isolate – phân tách và Durable – lâu bền) và transaction chạy lâu dài (long-running). Transaction chạy lâu dài khác với ACID ở chỗ nó không có tính Isolate, bởi vì có các activity nhất định không thể quay lui. Ví dụ trong transaction nào đó có giao tiếp với khách hàn, khi hành động gửi email tới khách hàng đã thực thi, nếu sau đó có activity nào đó bị lỗi thì cũng không thể lấy lại được email đã gửi, lúc này cách tốt nhất để đảm bảo transaction vẫn thực thi tốt là đợi khách hàng gửi lại email báo là họ đã lỗi. Lịch vụ này cho phép bạn theo dõi và ghi lại sự thực thi của workflow. Dịch vụ tracking dùng khái niệm tracking profiles và tracking channels để xác định SqlTrackingService Tracking activity nào cần theo dõi và loại phương tiện lưu trữ là (theo dõi): gì. Lớp trừu tượng TrackingService dùng để quản lý các profile và channel cho workflow runtime. Thông thường, người ta hay lưu thông tin đó vào SQL Server. Một trong những nguyên tắc của workflow là nó cần phải lưu được trạng thái và có thể chạy trong thời gian dài. Nguyên tắc này quan trọng vì workflow phải tương tác với các tác nhân ngoài như người dùng và ứng dụng khác, các nghiệp vụ này có thể thực hiện trong khoảng thời gian dài và có những lúc không làm gì cả do các tác nhân này có thể đang thực hiện lại quay ra làm việc khác rồi mới tiếp tục quay trở lại với Persistence SqlWorkflowPersistenceService workflow. Những lúc workflow không làm gì cả trong khoảng thời gian dài mà nó vẫn tồn tại trong bộ nhớ sẽ làm tốn tài nguyên máy tính, do vậy WF hỗ trợ cơ chế cho phép tháo workflow ra khỏi bộ nhớ và lưu ra phương tiện lưu trữ lâu dài chẳng hạn như cơ sở dữ liệu. Cơ chế như vậy được gọi là persistence, sẽ được trình bày kỹ trong bài 6. Microsoft Vietnam – DPE Team | WF – Bài mở đầu: Giới thiệu về Windows Workflow Foundation 9
- Cho phép bạn định nghĩa cách workflow thi hành trong mối quan hệ với các thread thế nào. Mặc định WF chạy các workflow theo cơ schế không đồng bộn, thức là khi workflow khởi động từ ứng dụng chủ, nó chạy trong một thread riêng biệt và trả về điều khiển cho ứng dụng chủ ngay lập tức. Điều này rất tốt cho ứng dụng như winform vì nó làm cho giao diện không DefaultWorkflowScheduler Service, bị “đơ”. Tuy nhiên với các ứng dụng web form hay ManualWorkflow SchedulerService Scheduling web service chạy trên server, thì tốt hơn là khóa thread của ứng dụng chủ lại đợi cho workflow trả về điều khiển vì nếu không ứng dụng chủ mà hồi đáp cho client ngay thì không có giá trị gì hết. Tất cả việc điều khiển cơ chế thread như vậy được thực hiện bằng dịch vụ scheduling. Workflow Cho phép tạo thể hiện của workflow khi gọi phương DefaultWorkflow LoaderService Loader thức CreateWorkflow Data Quản lý các dịch vụ truyền thông tùy biến Exchange Tuy các dịch vụ được cung cấp sẵn có chứa rất nhiều dịch vụ nhưng luôn nảy sinh nhu cầu dùng các dịch vụ đặc trưng, chẳng hạn lập trình viên nào đó có thể Dịch vụ tùy yêu cầu workflow theo dõi dữ liệu gửi qua web Thừa kế từ lớp biến (của service có bị lỗi hay không. WF cho phép người dùng WorkflowRuntimeService người dùng) định nghĩa các dịch vụ của riêng họ và được sử dụng như các dịch vụ chuẩn được cung cấp sẵn trong frame work Để dùng một dịch vụ, bạn cần khai báo và “Add” nó vào thể hiện của workflow runtime trước khi chạy workflow. Đoạn mã sau đây cho ta một ví dụ về dùng dịch vụ Tracking: private void RunWorkflow() { WorkflowRuntime wr = new WorkflowRuntime(); string connectionstring = "Initial Catalog=Tracking;Data Source=localhost; Integrated Security=SSPI;"; //Out of the Box Tracking Service Microsoft Vietnam – DPE Team | WF – Bài mở đầu: Giới thiệu về Windows Workflow Foundation 10
- wr.AddService(new SqlTrackingService(connectionstring)); wr.CreateWorkflow(typeof(SimpleWorkflow)).Start(); } 2.3. Mô hình xây dựng workflow Để xây dựng workflow trong WF, người ta có thể tạo “khai báo” workflow bằng một ngôn ngữ dựa trên XML gọi là XAML, hoặc có thể dùng mã lập trình C# hoặc VB, hoặc kết hợp cả hai cách đó. Sau khi đã xây dựng được workflow cần biên dịch chúng thành .NET assembly để có thể thực thi được trong môi trường .NET runtime. Quá trình biên dịch gồm hai công đoạn: Dịch từ mã khai báo hoặc mã lập trình thành các đoạn mã C#/VB thuần túy bằng công cụ Workflow Compiler (file wfc.exe). Dịch từ mã C#/VB sang .NET assembly giống như các ứng dụng .NET truyền thống. Hình 6. Mô hình xây dựng workflow trong WF 2.4. Các loại workflow trong WF Windows Workflow Foundation cung cấp hai loại workflow: trình tự (sequential) và máy trạng thái (state-machine). Mỗi loại có đặc điểm và tập các activity riêng. Workflow trình tự là loại thông dụng hơn và là ví dụ mà người ta hay nghĩ khi nói đến workflow. Loại workflow này mô tả một tiến trình có điểm khởi đầu, sau đó thực thi một số các activity theo thứ tự được định sẵn rồi cuối cùng đi đến điểm kết thúc. Trong workflow trình tự bạn có thể dùng các logic điều khiển tương tự các ứng dụng truyền thống: if-then, vòng lặp while, điểm khác biệt ở đây là các logic điều khiển này có thể được thể hiện trực quan và được khai báo chứ không cần lập trình. Microsoft Vietnam – DPE Team | WF – Bài mở đầu: Giới thiệu về Windows Workflow Foundation 11
- Workflow máy trạng thái khác với workflow trình tự ở chỗ nó là sự chuyển đổi linh hoạt giữa các trạng thái chứ không phải là sự thi hành theo thứ tự định trước. Việc chuyển đổi gây ra bởi các sự kiện. Workflow loại này bao giờ cũng bắt đầu ở trạng thái khởi đầu, sau đó hoạt động di chuyển trạng thái và có thể đạt đến trạng thái kết thúc. Workflow máy trạng thái sẽ được trình bày cụ thể riêng ở bài bảy. 2.5. Công cụ phát triển WF Hiện tại, WF được tích hợp như là một thành phần (component) phần mềm nằm trong Microsoft.NET 3.0 Người dùng có thể phát triển các ứng dụng WF bằng Visual studio 2008 hoặc Visual studio 2005 có tích hợp bộ Visutal Studio 2005 Extensions for Windows workflow Foundation. Trong Visual Studio có thể tạo một dự án loại Workflow bằng ngôn ngữ lập trình C# hoặc VB. Trong dự án workflow chúng ta có thể thiết kế workflow trực quan bằng công cụ Workflow Designer (hình 7): có của sổ Toolbox chứa các Activity tương tự như là Toolbox chứa các điều khiển khi làm việc trong dự án Winform hay Webform. Chúng ta có thể kéo thả, thiết lập các thuộc tính, mối liên hệ giữa các activity bằgn công cụ này. Các công cụ đi kèm với WF: - Wca.exe: Công cụ dòng lệnh để sinh file mã cho các Activity HandleExternalEventActivity và Activity CallExternalMethodActivity chứa một hoặc nhiều giao diện ExternalDataExchangeService. Với mỗi phương thức và sự kiện interface, một Activity được tao ra với thuộc tính tương ứng với các đối số của phưong thức/sự kiện. - Wfc.exe: là trình biên dịch dạng dòng lệnh đuợc dùng để dịch cả các luồng công việc và các activity của nó. Nó dùng đầu vào là file đánh dấu workflow (.xoml) và các file nguồn C# và Visual Basic, kiểm chứng các luồng công việc và các activity và sau đó sinh ra các assembly và các file khả thi. Để biết các tùy chọn của công cụ này hãy chạy wfc.exe với đối số /?. Trình biên dịch luồng công việc thực thi qua một tiến trình gồm hai bước. Bước đầu tiên, trình dịch sinh ra một assembly tạm với tùy chọn /debug và sùng assembly này để kiểm tra kiểu. Trong bước thứ 2, trình dịch tạo ra các assembly đầu ra thực. Assembly ra có thể ở dạng debug hoặc retail, tùy thuộc vào tùy chọn nào được được dùng, mặc định là debug (/debug). Nếu muốn tạo ra bản dịch retail, hãy dùng tùy chọn /debug-. Microsoft Vietnam – DPE Team | WF – Bài mở đầu: Giới thiệu về Windows Workflow Foundation 12
- Hình 7. Workflow designer 3 So sánh WF với WCF Về phương diện truyền thông, WF cung cấp cho chúng ta một vài công cụ cơ bản để làm việc qua web service với XML. Dùng WF chúng ta có thể xuất một workflow như là một web service, và mọi người có thể dùng web service này dễ dàng. Phải chăng tính năng này giống với WCF. WCF là công nghệ nền tảng nhằm thống nhất nhiều mô hình lập trình giao tiếp được hỗ trợ trong .NET 3.0 thành một mô hình duy nhất. Đúng là WCF cung cấp cho chúng ta các công cụ để có thể cài đặt và sử dụng web service, nhưng WCF mạnh mẽ hơn so với WF rất nhiều. Mục đích chính của WCF là thống nhất tất cả các mô hình lập trình cho tất cả các tiến trình giao truyền thông, nó cho phép chúng ta xây dựng các kết nối dựa trên kiến trúc hướng dịch vụ (SOAs). Với SOAs, các phần mềm chuyển từ gọi phương thức sang việc dùng các dịch vụ. Trong các hệ thống phần mềm lớn thì các tiến trình gọi dịch vụ này rất phức tạp và tốn kém. Tóm lại, WF mạnh về mặt hỗ trợ thiết lập các luồng công việc nhưng không mạnh về mặt truyền thông giao tiếp hướng dịch vụ như WCF. 4 Bắt đầu với WF Nếu bạn đang sử dụng Visual Studio 2008 thì bạn không cần thiết lập hay cài đặt gì để có thể làm việc với WF. Còn nếu sử dụng Visual Studio 2005, bạn làm theo các bước: Microsoft Vietnam – DPE Team | WF – Bài mở đầu: Giới thiệu về Windows Workflow Foundation 13
- - Download các file tại các địa chỉ sau: o NET Framework 3.0 runtime components (file: dotnetfx3setup.exe): http://www.microsoft.com/downloads/details.aspx?familyid=10CC340B-F857-4A14-83F5-25634C3BF043&displaylang=en. Nếu bạn đang sử dụng Windows Vista thì máy đã có sẵn .NET Framework 3.0, không cần file này nữa. o Visual Studio extensions for workflow (file: Visual Studio 2005 Extensions forWindows Workflow Foundation (EN).exe): http://www.microsoft.com/downloads/details.aspx?familyid=5D61409E-1FA3-48CF-8023- E8F38E709BA6&displaylang=en - Cài đặt các gói phần mềm này theo thứ tự sau: o Cài đặt .NET frame work 3.0: Click đúp vào dotnetfx3setup.exe file to để bắt đầu quá trình cài đặt. Theo tuần tự các bước của wizard chúng ta sẽ có .NET 3.0 trên máy. o Chạy file Visual Studio 2005 Extensions for Windows Workflow Foundation (EN).exe để cài đặt các thành phần Windows Worflow Foundation Ví dụ đầu tiên với WF Cũng giống như việc làm quen với các ngôn ngữ lập trình hay frame work khác, chúng ta cùng làm quen với workflow thông qua ví dụ đơn giản nhất“Hello World”. Trong ví dụ này, chương trình chủ sẽ nhận tên người dùng rồi truyền cho workflow, workflow in ra lời chào. Ví dụ này không nhằm để minh họa tất cả khả năng của nền tảng WF nhưng cho chúng ta những trải nghiệm và cảm nhận ban đầu về xây dựng một workflow với WF. Đầu tiên, khởi động Visual Studio 2008, tạo một dự án mới có project type là Visual C# Workflow, template kiểu Sequential Workflow Console Application, đặt tên project là HelloWorld. Hình 8. Tạo project HelloWorld Microsoft Vietnam – DPE Team | WF – Bài mở đầu: Giới thiệu về Windows Workflow Foundation 14
- Quan sát project vừa được tạo bởi Visual Studio, chúng ta thấy có hai file quan trọng: file chương trình chủ programs.cs và file định nghĩa workflow Workflow1.cs. Như vậy, chúng ta đã được Visual Studio tạo giúp cho workflow tên là Workflow1, công việc bây giờ là thiết kế nó. Hãy click chuột vào file Workflow1.cs để chuyến sang màn hình thiết kế workflow. Workflow được cấu tạo từ các activity, ở ví dụ này chúng ta chỉ làm công viẹc hết sức đơn giản là in ra lời chào do vậy chỉ cần dùng một activity Code là đủ. Kéo activity tên là Code ở ToolBox vào giữa điểm khởi đầu (mũi tên xanh) và điểm kết thúc (vuông màu đỏ). Đặt lại tên cho activity này là sayHello (hình 9). Hình 9. Thiết kế giao diện workflow HelloWorld Quan sát màn hình thiết kế workflow chúng ta thấy activity sayHello có một dấu cảnh báo màu đỏ ở góc trên bên trái, đó là do trình thiết kế muốn nhắc chúng ta là activity này chưa hoàn thiệt, cần bổ sung giá trị cho các thuộc tính của nó. Hãy click đúp chuột vào activity sayHello để thiết lập thuộc tính ExecuteCode và sinh ra một phương thức được gọi khi workflow này thực thi đến activity sayHello. Kết quả là trình visual Studio sinh cho chúng ta một khung phương thức tên là sayHello_ExecuteCode. Phương thức này có nhiệm vụ in ra lời chào. Hãy viết lại phương thức đó như sau: private void sayHello_ExecuteCode(object sender, EventArgs e) { System.Console.WriteLine("Hello " + _FullName); } Ta thấy ở phương thức này dùng một thuộc tính _FullName, ta cần thêm thuộc tính này cho workflow. Thuộc tính này sẽ được chương trình chủ truyền giá trị (tên người nhập vào) vào workflow. Đoạn mã định nghĩa thuộc tính như sau: private string _FullName; public string FullName { set { _FullName = value; } } Microsoft Vietnam – DPE Team | WF – Bài mở đầu: Giới thiệu về Windows Workflow Foundation 15
- Tiếp theo chúng ta cần sửa mã của ứng dụng chủ (file Program.cs) để nó cho phép người dùng nhập tên vào rồi truyền tên đó như một tham số đầu vào (tới thuộc tính FullName) của Workflow1. Sửa hàm Main như sau: static void Main(string[] args) { using(WorkflowRuntime workflowRuntime = new WorkflowRuntime()) { System.Console.Write("Please input your name:"); String inputName = System.Console.ReadLine(); // create a dictionary for input parameters Dictionary inParms = new Dictionary(); // add a first name to the parms list inParms.Add("Name", inputName); WorkflowInstance instance = workflowRuntime.CreateWorkflow(typeof(HelloWorld.Workflow1), inParms); instance.Start(); AutoResetEvent waitHandle = new AutoResetEvent(false); waitHandle.WaitOne(5000); } } Như vậy chúng ta đã hoàn thành project workflow đầu tiên, hãy biên dịch và chạy (ấn F5 trong Visual Studio) để kiểm nghiệm kết quả. Kết quả chạy tương tự như hình 10: Hình 10. Kết quả chạy workflow HelloWorld Microsoft Vietnam – DPE Team | WF – Bài mở đầu: Giới thiệu về Windows Workflow Foundation 16
- Câu hỏi ôn tập 1. WF là gì? WF, viết tắt của Windows Workflow Foundation là một phần của .NET 3.0 framework. Một trong những tính năng thú vị nhất của WF là nó giúp tách rời giữa tiến trình nghiệp vụ và mã thực thi nghiệp vụ đó. Trước khi có WF, nhà phát triển thường trộn lẫn mã logic nghiệp vụ và mã thực thi với nhau trong các ngôn ngữ .NET như C# hay Visual Basic.NET. Với việc ra đời của WF, việc điều khiển các logic nghiệp vụ được định nghĩa trong các luồng công việc và nhà phát triển phần mềm chỉ cài đặt các đoạn mã thực thi nghiệp vụ bằng C#, Visual Basic.NET hay bất kỳ một ngôn ngữ .NET nào đó. Vì vậy có thể nói là luồng công việc đã chỉ ra cái gì cần làm còn làm thế nào là việc của mã lập trình truyền thống. 2. Dịch vụ chạy (Runtime Service) trong WF là gì? Khi thi hành workflow trong WF, các activity tượng thực hiện các tác vụ và có luôn có những yêu cầu nào đó cần phải được cung cấp. Kiến trúc WF đã thiết kế cho phép cung cấp các tính năng cho workflow runtime dưới dạng các dịch vụ, đây là một cơ chế rất mềm dèo và có khả năng mở rộng.Bên cạnh các dịch vụ trong thư viện chuẩn của WF, người dùng có thể định nghĩa các dịch vụ của riêng mình rồi thêm vào workflow runtime. 3. WF (Windows Presentation Foundation) – công nghệ của Micrcosoft được giới thiệu lần đầu trong: A. .NET Framework 1.1 B. .NET Framework 2.0 C. .NET Framework 3.0 D. .NET Framework 3.5 Câu trả lời C 4. Một workflow đã được dịch, nó có thể được chạy bên trong loại ứng dụng nào sau đây A. Ứng dụng lệnh B. Ứng dụng Winform C. Windows Services D. Web services. E. Tất cả Câu trả lời E 5. Phát biểu nào sau đây sai về WF: Microsoft Vietnam – DPE Team | WF – Bài mở đầu: Giới thiệu về Windows Workflow Foundation 17
- A. Extensible Application Markup Language - XAML có thể được dùng để định nghĩa workflow. B. Sequential Workflow và State Machine Workflow là hai loại cơ bản của workflow. C. Workflow có thể được chứa ở SQL server bằng cach dụng Persistence Provider được cung cấp sẵn D. Workflow Runtime không thể chạy trên ứng dụng Windows. Câu trả lời D Tài liệu tham khảo 1. K. Scott Allen, Programming Windows Workflow Foundation, Packt Publishing Ltd. December 2006 ISBN 1-904811-21-3 2. Kenn Scribner, Microsoft Windows Workflow Foundation step by step, Microsoft press 2007 3. Microsoft, Windows Workflow Foundation, URL: http://msdn2.microsoft.com/en- us/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 – Bài mở đầu: Giới thiệu về Windows Workflow Foundation 18
CÓ THỂ BẠN MUỐN DOWNLOAD
-
Bài giảng Giới thiệu mạng neuron nhân tạo - Tô Hoài Việt
30 p | 134 | 29
-
Bài giảng Giới thiệu về E-Learning và hệ quản trị đào tạo (LMS) nguồn mở Moodle
34 p | 208 | 24
-
Bài giảng Giới thiệu học máy - Mô hình Naive Bayes (Tô Hoài Việt)
30 p | 146 | 23
-
Bài giảng Giới thiệu về Fire Wall
16 p | 146 | 20
-
Bài giảng Giới thiệu về docker - Đặng Tiền Hải
39 p | 113 | 12
-
Bài giảng Giới thiệu UML (Unified Modeling Language) - Trương Vĩnh Hảo
26 p | 110 | 10
-
Bài giảng Giới thiệu về JavaScript
61 p | 70 | 10
-
Bài giảng Bài 3: Giới thiệu về máy tính - Ths Lê Đức Long, Nguyễn Khắc Văn
20 p | 163 | 9
-
Bài giảng Bài 1: Giới thiệu về Scilab - ĐH Bách Khoa Hà Nội
34 p | 203 | 8
-
Bài giảng Giới thiệu LINQ - Phan Hiền
8 p | 76 | 8
-
Bài giảng Giới thiệu lập trình: Giới thiệu lập trình C ++ - TS. Lê Nguyên Khôi
54 p | 89 | 7
-
Bài giảng Giới thiệu chung về mạng - GV. Lê Bá Thi
26 p | 88 | 6
-
Bài giảng Giới thiệu về Microsoft Access - Trần Quang
17 p | 23 | 6
-
Bài giảng Giới thiệu Hibernate 4 - Nguyễn Hoàng Anh
17 p | 79 | 4
-
Bài giảng Giới thiệu chung về mạng (tt) - GV. Lê Bá Thi
12 p | 73 | 4
-
Bài giảng Giới thiệu lập trình: Thông tin môn học - TS. Lê Nguyên Khôi
6 p | 71 | 2
-
Bài giảng Giới thiệu lập trình: Giới thiệu - TS. Lê Nguyên Khôi
31 p | 63 | 2
Chịu trách nhiệm nội dung:
Nguyễn Công Hà - Giám đốc Công ty TNHH TÀI LIỆU TRỰC TUYẾN VI NA
LIÊN HỆ
Địa chỉ: P402, 54A Nơ Trang Long, Phường 14, Q.Bình Thạnh, TP.HCM
Hotline: 093 303 0098
Email: support@tailieu.vn