12/3/11

Workflow Foundation- Hãy vẽ lên những gì bạn muốn

Lần đầu tiên, tôi có cái nhìn như thế nào là một quy trình làm việc: quy trình mua bán hàng, quy trình bệnh nhân đi khám bệnh, quy trình quản lý sách ở thư viện, …tôi vẽ chúng trong giấy của mình những ô vuông tròn để thể hiện cho toàn bộ yêu cầu của bài tóan quy trình.
Ngay lúc đó, tôi đã từng ước phải chi máy tính có thể hiểu được những gì tôi vẽ thế này thì khỏe nhỉ! Bởi vì khi bắt tay vào phát triển bằng code, tôi không thể hình dung ra luồng công việc chạy như thế nào một cách dễ dàng với những từ khóa định luồng như: if/else, for/while, .v.v… hay phức tạp hơn là các điều kiện bắt lỗi hay chia nhánh theo một giá trị thay đổi liên tục. Sau này, tôi có nghe từ một giảng viên nói về một bước ngoặc sắp tới của các ngôn ngữ lập trình, chúng ta sẽ chỉ cần có các thiết kế theo chuẩn UML như class diagram, sequence diagram, activities diagram thì đã có thể dịch thành các thành phần chính của một chương trình, ta chỉ cần định nghĩa thêm các hàm xử lý bên trong theo ý mình.

Khi VISUAL STUDIO 2008 ra mắt, tôi tò mò lẫn thích thú nghiên cứu từng khả năng cũng như những công nghệ mới trong .Net framework3.5. Quá đỗi ngạc nhiên, như gặp một người quen chờ đợi từ rất lâu ngay khi tôi thấy một Workflow trong VISUAL STUDIO 2008 dựa trên Workflow Foundation, rất trực quan, dễ hình dung, tôi nhìn nhận được toàn bộ quy trình một cách tổng quát, và hơn hết là nó chính là những gì tôi đã từng vẽ trên giấy!
Không chỉ mang đến lợi ích tối đa cho người phát triển như tôi mà Windows Workflow Foundation của .Net Framework 3.5 đã mở ra một khả năng mới cũng như hàng loạt những giải pháp cho các yêu cầu ứng dụng có thiết kế hướng quy trình cho các giải pháp mà khách hàng doanh nghiệp đòi hỏi các phần mềm, web application. Một ví dụ thiết thực và rõ ràng nhất cho khả năng của Workflow chính là sản phẩm đang thu hút sự chú ý của các doanh nghiệp hiện nay và cũng là nền tảng mà tôi đang làm việc, phát triển – Microsoft Office Sharepoint Server 2007. Chính khả năng áp dụng số hóa quy trình doanh nghiệp này đã giúp giảm thiểu, tiết kiệm tối đa tài nguyên, nhân lực đồng thời nâng cao hiệu quả công việc cho các tổ chức ứng dụng nó, bên cạnh đó là việc góp phần chuẩn hóa các quy trình đó thành tối ưu và hợp lý nhất!
Khái niệm về workflow đã có từ khá lâu, mỗi Workflow chính là tập hợp của các activities.
Ví dụ như workflow cho một tiến trình mua bán hàng hóa trên web (mà ta hay gọi là shopping cart) đơn giản nhất thì sẽ là một chuỗi các activities sau:

Mỗi mũi tên phía trên chính là một activities. Các activities này có thể chứa nhiều thao tác, hoặc chỉ một thao tác đơn giản bên trong và ta có thể xem đó là một activity con. Trên cái nhìn của những người phát triển như tôi, workflows hay activities đều được xem xét và quy về là các đối tượng được định nghĩa từ các lớp. Điều này có nghĩa là chúng ta sẽ có khả năng phát triển hoặc tự tao riêng cho mình những workflows, activities theo ý của mình và cách thực hiện sẽ rất quen thuộc. Kiến trúc vận hành của Workflow Engine đã cho phép người phát triển tạo ra bất kì các Window process nào, từ các chương trình console đơn giản nhất cho đến các ứng dụng chạy trên desktop và các xử lý máy chủ phức tạp.
Đặc biệt của Workflow Foundation trong Visual Studio 2008, chính là Workflow Designer cung cấp cho người dùng công cụ đồ họa để có thể dễ dàng “vẽ” nên workflow mà mình mong muốn. Không gì đơn giản hơn khi bạn chỉ việc kéo thả các activity của Base Activity Library (BAL) vào, kết nối chúng lại và tạo ra hình ảnh phản ánh thực tế và chính xác những gì mà quy trình chúng ta đang số hóa. Chính khả năng thể hiện xúc tích dễ hiểu này đã nâng quan niệm về lập trình lên một mức cao hơn và hơn nữa là hỗ trợ tối đa cho người phát triển. Càng nắm rõ việc mình làm và làm trong thời gian ngắn nhất chính là 2 yếu tố tiên quyết để nâng cao chất lượng, hiệu quả của công việc.
Workflow ta có thể chia ra 2 kiểu như sau:
  • Sequential workflows, nếu nhìn lướt qua, hẳn nhiều người từng học lập trình sẽ ngỡ nhu là mình đang được bắt đầu học lại. Đúng vậy, loại này thể hiện quy trình tương tự như việc bạn vẽ ra giấy trước khi bắt tay vào gõ các dòng lệnh, nó sẽ thực thi các activities theo một trình tự được dịch sẵn. Điển hình như các mô hình trình tự (flow chart) cổ điển, một sequential workflow có thể chứa các nhánh, vòng lặp và một số cấu trúc điều khiển. Vì tính chất làm từng việc, xong việc trước rồi mới đến việc sau nên nó mới có tên gọi là sequential workflows
  • State machine workflows, loại này áp dụng phưong pháp chuyển đổi giữa các tình trạng của một đối tượng. Ví dụ activity được thực thi trong một thừoi gian xác định sẽ được quyết định bởi việc phối hợp các tình trạng hiện tại và các sự kiện mà nó nhận được.

Thông thường sequential workflow sẽ được áp dụng do sự đơn giản khi phát triển, đồng thời là tính thể hiện đơn giản, dễ hình dung và quản lý. Tuy nhiên, theo kinh nghiệm cá nhân của tôi, State machine workflows có thể giúp bạn thể hiện được các workflow phức tạp, tránh trường hợp phân nhánh quá rườm rà, đặc biệt là những trường hợp mà chúng ta không thể đóan trước được bởi vì con người tham gia vào workflow có thể dừng nó vào bất cứ lúc nào. Do đó.việc định hướng bằng sequential workflow là khả thi, nhưng mỗi bước trong đó là một nhánh: thực hiện điều này nếu workflow vẫn được thực thi, và làm điều khác khi workflow bị hủy bỏ. Còn đói với dạng state machine thì mọi chuyện đơn giản bởi vì một yêu cầu hủy chính là một sự kiên mà nó có thể được tiếp nhận và quản lý ngay thời điểm đó.


Những người làm công việc phát triển phần mềm có thể nhanh chóng và dễ dàng tạo ra các activity cho riêng mình, nhưng để giảm thiểu thời gian và ít mắc lỗi trong quy trình số. WF trong VISUAL STUDIO 2008 đã cũng cấp sẵn các activity sẵn có và thông dụng để đơn giản hóa quá trình “sáng tạo” của người phát triển mà chúng được gọi là Base Activity Library (BAL). Cho dù những người phát triển không dùng hết toàn bộ BAL cho một workflow của mình nhưng đó chính là cách mà Workflow của VISUAL STUDIO 2008 để người phát triển tự do phát huy ý tưởng và gần như không bị các trở ngại khiến họ mau nản chí. Ở đây tôi sẽ trình bày một số Activity mà tôi rất thường dùng khi làm việc:
  • IfElse: thực hiện các activities chứa trong hai hoặc nhiều khả năng dựa trên việc đáp ứng điều kiện đặt ra.
  • While: thực hiện lặp đi lặp lại một hay nhiều activities khi điều kiện còn đúng.
  • Sequence: thực hiện một nhóm các activities trong một thời điểm theo một trình tự cho trước.
  • Parallel: thực hiện hai hay nhiều nhóm các activities song song.
  • Code: thực hiệnn một đọan mã được viết.
  • Listen: đợi chờ một sự kiện đặc biệt xảy ra, sau đó thực thi một hay nhiều các activities khi nhận được sự kiện đó.
  • InvokeWebService: gọi một Web service dùng ASP.NET Web Services.
  • State: thể hiện một trạng thái trong một workflow state machine.
Đến đây, tôi nghĩ rằng Workflow Foundation trên VISUAL STUDIO 2008 không chỉ là một ngôn ngữ đặc trưng cho việc định nghĩa nên một workflow riêng biệt mà nó còn tăng sự thông dụng và dễ dàng việc tiếp cận. BAL cung cấp một “ngôn ngữ” phát triển, nhưng bất kỳ ai cũng có thể dùng Workflow để thoải mái định ra một thứ cho riêng mình.
Toàn bộ sức mạng trên của Workflow trên VISUAL STUDIO 2008 được thể hiện trực quan thông qua công cụ thiết kế workflow đồ họa - Workflow Designer. Hãy tự do tạo nên những dòng quy trình giá trị bằng cách kéo thả các activities vào bề mặt giao diện để kết nối chúng lại.

Tôi thì lúc nào cũng thích tính trực quan và dễ năm bắt bàng giao diện đồ họa như thế này, nhưng có một số bạn bè tôi lại thích những dòng code của họ hơn. Tất nhiên, Workflow Foundation của VS 2008 vẫn cho phép họ thực hiện như thế và thậm chí là hòa lẫn giữa 2 cách đó. Mục đích là để cho hiệu quả của quá trình phát triển luôn ở mức cao nhất, thuận tiện nhất. Hãy trải nghiệm cách tạo workflow bằng Workflow Designer đồng thời viết mã trực tiếp!
Workflow trên VISUAL STUDIO 2008 quả thật là một thành quả không chỉ nâng cao về mặt công nghệ mà còn là kết quả của sự trải nghiệm thực tế và nhu cầu của người dùng. Quá trình phát triển càng được hỗ trợ, nhanh chóng và dễ dàng bao nhiêu thì chi phí càng giảm bấy nhiêu mà vẫn đảm bảo chất lượng tốt nhất. Tuy vẫn chưa thể thay thế hoàn toàn code C# hay Visual Basic trong ứng dụng, nhưng công nghệ này đã phần nào mở ra một khả năng mới, một ngôn ngữ mới gần gũi với tư duy con người hơn và giảm thiểu lỗi phát sinh từ code. Công nghệ này sẽ không đơn độc một mình mà sức mạnh của nó sẽ được phát huy khi bên cạnh các công nghệ khác của nền tảng .Net hay các nền tảng ứng dụng Microsoft Window .Điển hình là Microsoft Office Sharepoint Server, khi được tích hợp Workflow của .NET Framework 3.0, đã phát huy 100% sức mạnh và hoàn toàn giải quyết được các bài toán quy trình phức tạp và tốn kem trước đây của nhiều doanh nghiệp, tổ chức. Do đó, workflow không chỉ là đối với giới phát triển, đam mê công nghệ như tôi mà ngay cả những người làm việc kinh doanh, văn phòng, chính trị, … đều cho phép chúng tôi “VẼ NÊN NHỮNG GÌ CHÚNG TÔI MUỐN”.
Bookmark and Share

0 comments:

Post a Comment

Next previous home

Cộng đồng yêu thiết kế Việt Nam Thiet ke website, danang