Tìm hiểu mô hình và công nghệ wf 4.0

41 899 2
Tìm hiểu mô hình và công nghệ wf 4.0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

I. Tổng quan về mô hình luồng công việc. 1. Luồng công việc: 2. Sự thực thi các LCV 3. Tầm quan trọng trong việc đưa LCV và Mô hình LCV vào ứng dụng. 4. Đặc điểm:

Window Workflow Fowdation 4.0 TRƯỜNG ĐẠI HỌC SƯ PHẠM KĨ THUẬT THÀNH PHỐ HỒ CHÍ MINH KHOA CƠNG NGHỆ THƠNG TIN BỘ MƠN CƠNG NGHỆ PHẦN MỀM TÌM HIỂU MƠ HÌNH VÀ CƠNG NGHỆ WF 4.0 GVHD: NGUYỄN MINH ĐẠO SVTH: NGUYỄN HỮU TRUNG NGUYỄN HỮU TÀI NGUYỄN HỮU THANH NGUYỄN VĂN PHONG NGUYỄN PHÚ CƯỜNG THÁNG 11/2011 07110144 07110108 07110116 07110089 07110019 Window Workflow Fowdation 4.0 Contents Ứng dụng workflow đơn giản với WF4 .14 17 2.Làm việc với Activity xây dựng sẵn 17 If Activity 19 Assign activity 20 While activity 20 Kết thu chạy ứng dụng workflow trên: 23 3.Xây dựng workflow code 23 Xây dựng ứng dụng workflow code C# 24 Expression 27 Variables .27 4.Xây dựng Flowchart workflow: .27 FlowDecision activtity .28 FlowSwitch activity 29 5.Arguments : .31 Tạo workflow project 32 Định nghĩa Arguments cho workflow 32 Một số activities namespace System.Activities.Expressions 34 Đưa Arguments vào workflow chạy workflow 37 6.Xây dựng custom activity: .38 Kế thừa từ Activity 38 Kế thừa từ CodeActivity 40 Window Workflow Fowdation 4.0 I Tổng quan mơ hình luồng cơng việc Luồng công việc: Vào năm tám mươi kỷ hai mươi, khái niệm luồng công việc (Workflow) sử dụng lần ngành công nghệ phần mềm Tuy thế, xuất luồng cơng việc mơ hình luồng cơng việc sống người hẳn từ lâu Giữa vơ vàn hoạt động sống, có nhiều cơng việc mà người lặp lặp lại nhiều lần Một số công việc lặp lại theo chu kỳ nhiều giờ, nhiều ngày, nhiều tháng v.v… xảy lúc Dựa vào kinh nghiệm đúc kết được, người vạch bước phải làm dần Window Workflow Fowdation 4.0 dần hoàn thiện chúng cho lần thực sau Nói khác hơn, dựa vào kinh nghiệm hiểu biết mình, người vạch kế hoạch; xác định thành phần người, cơng cụ cần có để thực cơng việc nhằm đạt mục đích định Các bước cần thực kế hoạch có mối quan hệ với tạo thành luồng cơng việc Luồng cơng việc tập có thứ tự công việc tuân theo quy tắc định, định sẵn cho việc thực theo đạt mục đích cơng việc đề Khái niệm luồng công việc khái niệm tương đối Cùng tham gia vào hệ thống môi trường, đối tượng với vai trị khác có luồng cơng việc khác Hình vẽ ví dụ luồng công việc hệ thống tổ chức thi tuyển sinh đại học Việt Nam Dưới góc nhìn thí sinh, luồng cơng việc thi tuyển sinh gồm việc phải làm Thực luồng cơng việc này, thí sinh đạt mục đích dự thi đại học thành cơng Dưới góc nhìn đơn vị tổ chức tuyển sinh lại khác, luồng cơng việc tổ chức thi tuyển sinh gồm có cơng việc phải làm, thực luồng cơng việc đạt mục đích tổ chức thành cơng kỳ tuyển sinh đại học Hình Luồng cơng việc Thi tuyển sinh đại học góc nhìn thí sinh Hình Luồng cơng việc Tổ chức tuyển sinh đại học góc nhìn đơn vị tổ chức tuyển sinh Sự thực thi LCV Window Workflow Fowdation 4.0 Ứng với trình thực thi LCV thể LCV Một LCV có nhiều thể khác trình thực thi khác Mỗi LCV thực thi phải tuân thủ quy tắc định Đó quy định quy trình nghiệp vụ thực tế tổ chức, doanh nghiệp tạo thực thi LCV ràng buộc tương tác với người thực công việc, ràng buộc thời gian thực thi, điều kiện cho phép xảy kiện chuyển đổi trạng thái v.v… Ngồi ra, cơng việc thành phần bên LCV có ràng buộc riêng q trình thực thi Ví dụ, cơng việc “Nhận đăng ký thi” ví dụ LCV Tổ chức tuyển sinh đại học phần trước có số ràng buộc như: ngày t kết thúc vào ngày t2; cho phép đăng ký giấy tờ hợp lệ, thí sinh đăng ký phải tốt nghiệp trung học phổ thông trước đó, v.v… Tầm quan trọng việc đưa LCV Mơ hình LCV vào ứng dụng Hiện nay, giới, có nhiều ứng dụng hỗ trợ thực thi quản lý LCV Những ứng dụng loại xem Hệ quản trị luồng công việc (HQT LCV) Các HQT LCV ngày sử dụng rộng rãi doanh nghiệp ngày trở nên quan trọng bởi:  Các ứng dụng thường hỗ trợ người dùng thực công việc Các cơng việc thường thiết kế cách tách biệt, chúng thường khơng có mối quan hệ thứ tự thực hiện, khơng có ràng buộc quan trọng liên quan đến quy luật hoạt động doanh nghiệp Trên thực tế, ứng dụng thật giúp ích cho doanh nghiệp, xét cho cùng, khơng thể quy luật kinh doanh thực tế doanh nghiệp, nên ngày khó đáp ứng nhu cầu ngày cao họ Sự xuất HQT LCV giúp giải vấn đề  HQT LCV đồng thời hỗ trợ người dùng thực cơng việc mình, theo quy luật cụ thể Trên thực tế, cơng việc hồn tất khơng độc lập với mà có mối quan hệ định Công việc phải thực trước công việc kia, để thực công việc đòi hỏi phải theo quy định Tất hoàn thành đạt mục tiêu định Chẳng hạn hoàn thành việc nhận Window Workflow Fowdation 4.0 kí hồ sơ, tổ chức thành cơng kì thi tuyển sinh đại học Nó có quy trình, LCV cụ thể ứng với mục tiêu Các LCV tách biệt có trình tự thực riêng HQT LCV giúp thực thi LCV doanh nghiệp, đảm bảo thứ tự quy tắc thực hiện, đồng thời giảm thiểu rủi ro có thực cơng việc thủ công  HQT LCV đồng thời cung cấp chức quản lý LCV hỗ trợ người quản lý doanh nghiệp nắm bắt tình hình hoạt động LCV nhanh chóng, kịp thời, nhằm đưa xử lý thích hợp, giảm thiểu tình trạng gặp rắc rối mà sớm dẫn đến công việc bị thất bại; góp phần giảm thiểu rủi ro thực thi cho doanh nghiệp Ngoài ra, theo thời gian, HQT LCV cơng ty lập trình thiết kế phát triển, mở rộng nhiều tính nên ngày phù hợp với quy luật hoạt động tự nhiên doanh nghiệp, đồng thời tăng cường tối đa hỗ trợ, nên ngày trở nên quan trọng Đặc điểm: Hiện nay, giới, có nhiều tảng công nghệ thiết kế nhằm hỗ trợ việc xây dựng sản phẩm mơ hình hóa LCV, phần mềm mã nguồn mở khác với mục đích tương tự Trong đó, Windows Workflow Foundation là nền tảng công nghệ Microsoft nghiên cứu, xây dựng đóng gói Net Framework (từ phiên 3.0 trở lên) WF cho phép người dùng định nghĩa, thực thi và quản lý LCV với điểm khác biệt so với hệ thống khác sau:  WF cho phép điều khiển công việc thực thi thời gian dài (nhiều ngày, nhiều tháng, …)  WF chỉnh sửa động thực thi  WF phương pháp lập trình khai báo kết nối thành phần định nghĩa sẵn (activity)  WF cho phép người dùng định nghĩa LCV Window Workflow Fowdation 4.0  WF hỗ trợ nhiều kiểu ứng dụng khác Đồng thời, WF có số đặc điểm ưu việt sau:  Cung cấp kiến trúc mạnh mẽ linh hoạt cho việc phát triển ứng dụng LCV  Thúc đẩy quán phát triển ứng dụng, giúp cải thiện suất việc tạo ứng dụng sửa chữa, nâng cấp ứng dụng cũ  Cung cấp dịch vụ Persistence, cho phép thực thi LCV thời gian dài  Có khả mở rộng vô hạn; nghĩa Microsoft cung cấp số điểm mở rộng cho phép sửa đổi thuộc tính mặc định LCV Chẳng hạn dịch vụ SQL Persistence nêu không đáp ứng nhu cầu chúng ta, tự xây dựng dịch vụ riêng Kiến trúc WF Kiến trúc WF gồm có thành phần chính: BAL (Base Activity Library), Runtime Engine Runtime Services; mơ tả hình sau: Window Workflow Fowdation 4.0 Hình Cấu trúc luồng cơng việc 5.1 Activity Custom Activity Một LCV WF tạo thành từ Activity, đối tượng xây dựng sẵn tương tự đối tượng quen thuộc (button, textbox…) ứng dụng dành cho Windows Mỗi đơn vị cơng việc thực tế mơ hình hóa thành đối tượng Activity Đây thành phần nhỏ mơ hình LCV định nghĩa WF Để xây dựng ứng dụng WF, Microsoft cung cấp thư viện Activity bản, gọi Base Activity Library (gọi tắt BAL) Ngoài ra, người sử dụng tự định nghĩa Activity khác nhằm phục vụ cho nhu cầu đặc trưng quy trình nghiệp vụ - gọi Custom Activity Các Activity LCV thiết Window Workflow Fowdation 4.0 kế, định nghĩa thông qua Workflow Designer tích hợp sẵn cơng cụ Visual Studio cách viết mã XAML trực tiếp 5.2 WF Runtime Cung cấp thành phần để thực thi quản lý thể LCV, cung cấp chức trả tình trạng thực thi thể hiện, đồng thời lưu trú thể LCV độc lập XAML: Ngoài cách sử dụng C# hay VB.net để định nghĩa LCV (thường được gọi là imperative definition), WF còn có khả thực thi LCV dựa declarative definition, nghĩa là định nghĩa LCV bằng ngôn ngữ Markup XML Mỗi cách đều có những lợi điểm và nhược điểm riêng của nó Việc sử dụng C#, VB.Net sẽ giúp chương trình thực thi nhanh Tuy nhiên, điểm yếu của nó chính là việc LCV phải được định nghĩa lúc buildtime Nếu có sự thay đổi tiến trình nghiệp vụ, chương trình cần được thiết kế lại, biên dịch lại Điều này khiến cho LCV trở nên thiếu linh hoạt Trong nhu cầu thay đổi LCV đối với các doanh nghiệp ngày càng cần thiết (nhất là những doanh nghiệp có tiến trình nghiệp vụ thay đổi theo thời gian) Việc sử dụng XML để định nghĩa LCV có thể giải quyết được vấn đề này Vì Workflow Runtime có thể chấp nhận gần tất cả các dạng định nghĩa LCV (phụ thuộc vào người lập trình), tức là lập trình viên chỉ cần thông dịch định nghĩa LCV được cung cấp thành định dạng mà Workflow Runtime có thể hiểu và thực thi Tuy nhiên, điều may mắn ở là WF hỗ trợ định nghĩa LCV sử dụng ngôn ngữ nền tảng xml (XML-based Workflow Definition), đó là XAML (Extensive Application Markung Language) Việc định nghĩa LCV theo cấu trúc xml giúp LCV có thể dễ dàng được sửa đổi và triển khai Thay vì phải biên dịch lại Visual Studio, người dùng chỉ cần chỉnh sửa lại file định nghĩa LCV bằng bất kì trình Editor nào (ngay cả notepad), và đưa vào Workflow Runtime trước nó tạo lại mô hình LCV XAML ban đầu được đưa vào sử dụng WPF (Windows Presentation Foundation, công nghệ được Microsoft đưa vào sử dụng từ Net Framework 3.0 trở đi, đó giao diện chương trình thiết kế bằng WPF được định nghĩa thông qua file Window Workflow Fowdation 4.0 XAML) Một file *.xaml về bản chất không cần phải được biên dịch, mà bản thân nó có thể chạy được bất kì trình duyệt nào ở bất kì máy tính Windows nào có cài đặt Net 3.0 trở lên Chẳng hạn như, với file a.xaml sau thể hiện button có chữ Helloworld: Hello, World! Dùng trình duyệt mở File a.xaml sẽ hiển thị kết quả sau: Hình HelloWorld Sự lưu trú WF ứng dụng: 10 Window Workflow Fowdation 4.0 Expression Khi định nghĩa activities trên, thấy class ExpressionServices cung cấp cho ta method Convert cho phép tạo đối tượng thuộc class InArgument Việc sử dụng kiểu generic cho phép sử dụng method với tất kiểu liệu Các expression biểu diễn lamda expression ( biểu thức =>) Các parameters bên trái biểu thức => xem input, thân định nghĩa expression phần phía bên phải biểu thức => Variables Một ý workflow, thân workflow không lưu trữ giá trị data thông qua variables Bản thân variables định nghĩa data lưu trữ Để lấy giá trị thật variables đó, sử dụng phương thức Get() Xây dựng Flowchart workflow: Trong mục này, tìm hiểu activity quan trọng workflow, Flowchart activity Trong flowchart activity, child activity kết nối với qua định (decision tree) Nếu Sequence, child activities thực cách top-down theo thứ tự định, flowchart activity, child activities thực theo thứ tự tùy thuộc vào điều kiện nhánh định (decision branches) Tạo project Console Workflow Application với tên FlowcharWorkflow Để bắt đầu xây dựng flowchart, kéo thả Flowchart activity từ toolbox vào workflow vừa tạo Sau kéo thả thành cơng Flowchart activity vào workflow, kết thu sau 27 Window Workflow Fowdation 4.0 Một Flowchart activity ln có node khởi đầu diagram biểu diễn Điểm khác biệt Flowchart Sequence cách mà child activities xếp Trong Sequence, child activities xếp theo thứ tự xuống thứ tự thực activities, đồng thời liên kết activities Sequence tạo tự động theo chiều định top-down Trong Flowchart activity, child activities xếp tùy ý bắt buộc người dùng phải định nghĩa mối liên kết activities Tiếp tục thêm vào WriteLine activity để xuất Console dòng chữ “Hello, Flowchart.” Sau thêm vào WriteLine activity vào Flowchart, phải thiết lập connections cho activities flowchart Nếu chạy Flowchart vừa tạo thu hình Console dịng “Hello, Flowchart.” Flowchart bao gồm activity flow Tuy nhiên, làm việc với Flowchart có nhiều flow với điều kiện tương ứng cho flow Để xây dựng flowchart thế, WF4.0 cung cấp sẵn cho activities FlowDecision, FlowSwitch FlowDecision activtity Quay trở lại với ví dụ trên, sử dụng FlowDecision để đưa lời chào thời gian khác tùy thuộc vào thời gian “Good morning”, “Good afternoon”, “Good evening” 28 Window Workflow Fowdation 4.0 Đối với FlowDecision, activity dựa vào kết true false condition mà định hướng Chúng ta thấy cách thực giống với If phụ thuộc vào giá trị true false để đưa định Để mở rộng khả Flowchart, sử dụng activity xem mở rộng FlowDecision FlowSwitch FlowSwitch activity FlowSwitch hoạt động giống với FlowDecision activity, nhiên điểm khác biệt FlowSwitch không phụ thuộc vào giá trị true false mà FlowSwitch chấp nhận nhiều giá trị khác FlowSwitch giống với việc sử dụng switch C# thông thường 29 Window Workflow Fowdation 4.0 Có điểm cần lưu ý FlowSwitch, generic class FlowSwitch nên kéo thả activity từ toolbox Visual Studio 2010 đòi hỏi phải tùy chọn kiểu T cho activity Sơ đồ FlowChart hoàn chỉnh: 30 Window Workflow Fowdation 4.0 Arguments : Trong mục trước, giới thiệu Variables, Arguments WF4 tìm hiểu cách để khai báo làm việc với Variables Arguments thơng qua ví dụ đơn giản Nếu Variables WF4 xem class members Arguments xem method properties 31 Window Workflow Fowdation 4.0 Trong phần này, tìm hiểu cách khai báo làm việc với Arguments workflow Bên cạnh số kỹ thuật đưa arguments vào workflow code C#, khởi động workflow nhận kết từ workflow Tạo workflow project Trong phần này, thông qua ví dụ xây dựng workflow dùng để tính tổng giá trị đơn hàng tìm hiểu cách khai báo, làm việc số kỹ thuật khác với Arguments Tạo project Workflow Console Application có tên TotalAmountOfOrder Sau khởi tạo project thành công, định nghĩa class tương ứng cần thiết cho ứng dụng Trong ứng dụng ví dụ, định nghĩa class bao gồm Order OrderItem sau Định nghĩa Arguments cho workflow Thêm vào project workflow có tên TotalAmountWF Sau bấm vào button Argument workflow designer để bắt đầu định nghĩa Arguments cho workflow Workflow cần argument OrderInfo (InArgument – dùng để đưa thông tin Order vào workflow) TotalAmount (OutArgument – dùng để trả giá trị tính ngồi) Bắt đầu xây dựng activities cho workflow việc đưa vào Sequence activity Trong Sequence WriteLine activity xuất console “Order Received.” 32 Window Workflow Fowdation 4.0 Để ý thấy định nghĩa argument TotalAmount trường Default value nhận thông báo “Default value not supported” Do đó, bước trình tính tốn gán giá trị ban đầu cho argument TotalAmount việc thêm vào Assign activity Tiếp đến, sau khởi tạo giá trị ban đầu cho argument TotalAmount, tiến hành tính giá trị Item có Order Để thực việc này, WF4 cung cấp sẵn cho activity ForEach, cho phép duyệt qua tất phần tử tập hợp Chú ý ForEach generic type, cần phải quy định TypeArgument cho activity này, trường hợp này, TypeArgument cho ForEach activity OrderItem Với danh sách Item có Order, thực việc tính tổng Item theo công thức TotalAmount = TotalAmount + item.Price*item.Quantity 33 Window Workflow Fowdation 4.0 Tiếp tục tùy vào phương thức vận chuyển có giá thích hợp Trong ví dụ, giả sử có phương thức : mặc định – vận chuyển tuần, vận chuyển ngày, vận chuyển ngày Với yêu cầu này, sử dụng Switch activity sau Đến đây, ứng với trường hợp, thực activities tương ứng Tuy nhiên, trường hợp ngồi việc sử dụng Assign activity để cập nhật lại TotalAmount, tìm hiểu số activity khác cung cấp namespace System.Activities.Expressions Một số activities namespace System.Activities.Expressions WF4 cung cấp cho số activities khác namespace System.Activities.Expressions Các activities cung cấp tiêu biểu Add, Subtract, Multiply, Divide, Equals, AndAlso, OrElse, … Tuy nhiên, để sử dụng activities này, phải đưa vào toolbox tay để sử dụng designer cần khai báo using muốn sử dụng code 34 Window Workflow Fowdation 4.0 Sau thực việc đưa activities toolbox cho thuận tiện việc sử dụng thoải mái kéo thả activities vào workflow Đây ví dụ việc sử dụng Add activities 35 Window Workflow Fowdation 4.0 Cứ tiếp tục với case lại thực tiếp với việc đưa coupon vào activities workflow hoàn chỉnh sau 36 Window Workflow Fowdation 4.0 Đưa Arguments vào workflow chạy workflow Workflow sau định nghĩa, để thực thi cần truyền vào OrderInfo thông qua Arguments 37 Window Workflow Fowdation 4.0 Đoạn mã sau thực việc khai báo in-arguments cho workflow, thực thi workflow sau nhận out-arguments từ workflow sau thực thi xong var inArguments = new Dictionary(); inArguments.Add("OrderInfo", myOrder); var outArguments = WorkflowInvoker.Invoke(new TotalAmountWF(), inArguments); var totalAmount = (decimal)outArguments["TotalAmount"]; Console.WriteLine("Workflow returns ${0} for total amount.", totalAmount); Xây dựng custom activity: Bên cạnh việc sử dụng activity có sẵn WF4, xây dựng thêm custom activity tương ứng với yêu cầu đặc biệt Kế thừa từ Activity Để xây dựng custom activity, kế thừa từ class Activity Ở xây dựng custom activity AppendString thực việc kết nối chuỗi lại với public sealed class AppendString : Activity { public AppendString() { } } AppendString activity cần đưa vào string để thực việc ghép nối trả string ghép nối Để thực cho phép đưa vào custom activity, cần InArgument argument bắt buộc public sealed class AppendString : Activity { [RequiredArgument] public InArgument TheFirstStr { get; set; } [RequiredArgument] public InArgument TheSecondStr { get; set; } 10 public AppendString() { 38 Window Workflow Fowdation 4.0 Đối với custom activities thừa kế từ Activity, để định nghĩa phần logic code activity, thông qua property Implementation, thông qua property này, định nghĩa delegate để thực logic code cho activity public AppendString() { 10 } // Define the implementation for AppendString activity this.Implementation = () => new Assign() { Value = new InArgument(context => TheFirstStr.Get(context) + TheSecondStr.Get(context)), To = new OutArgument(context => this.Result.Get(context)) }; Sau định nghĩa xong custom activity AppendString, tiến hành kiểm tra kết thu thông qua method sau: static void AppendStringDemo() { // Initialize AppendString activity AppendString appendString = new AppendString() { TheFirstStr = "Hello ", TheSecondStr = "custom activiy in WF4." }; 10 11 12 13 // Using WorkflowInvorker to invoke appendString activity // appendString is a generic-activity Activity, // so Invoke method will return a string var outArgument = WorkflowInvoker.Invoke(appendString); 14 15 16 17 Console.WriteLine("Result: {0}", outArgument); Console.WriteLine("Press Enter to exit "); Console.ReadLine(); 18 } Và kết thu sau: 39 Window Workflow Fowdation 4.0 Chú ý: Đối với phương thức Invoke class WorkflowInvoker, invoke activity thừa kế từ Activity kết trả từ phương thức WorkflowInvoker.Invoke có kiểu liệu TResult mà thừa kế từ Activity Chú ý: Như phần trước nhắc đến, để lấy giá trị hay liệu Arguments, phải thông qua phương thức Get Workflow context Tuy nhiên, với việc sử dụng lamda expression cơng việc trở nên đơn giản Cụ thể ví dụ trên, để lấy liệu TheFirstStr sử dụng expression context => TheFirstStr.Get(context) Kế thừa từ CodeActivity Để xây dựng custom activity, cách kế thừa từ lớp Activity, cịn kế thừa từ lớp CodeActivity Mặc dù, kết thu giống tồn khác biệt cách thực Vì CodeActivity abstract class, thừa kế từ class này, phải implement cho abstract member từ class CodeActivity Cụ thể để custom activity thực thi được, phải implement method Excute() public sealed class AnotherAppendString : CodeActivity { } protected override string Execute(CodeActivityContext context) { throw new System.NotImplementedException(); } Một điểm khác biệt kế thừa từ Activity phải khai báo Func cho property Implementation cách thực này, định nghĩa logic code activity thân method Excute sau: 40 Windowpublic sealed class AnotherAppendString : CodeActivity Workflow Fowdation 4.0 { [RequiredArgument] public InArgument TheFirstStr { get; set; } [RequiredArgument] public InArgument TheSecondStr { get; set; } protected override string Execute(CodeActivityContext context) 10 { 11 return context.GetValue(TheFirstStr) 12 + context.GetValue(TheSecondStr); 13 } 14 } Và kết thu giống với kết thu thực xây dựng custom activity cách kế thừa từ Activity 41 ... với WF 3.5: WF 4.0 khác hoàn tồn so với phiên trước Những ứng dụng WorkFlow trước chạy với NET framework 4.0 WF 4.0 thiết kế lại hoàn toàn: activity service WF 4.0 thay với phiên trước -Trong WF. .. quan mơ hình luồng cơng việc Luồng cơng việc: Vào năm tám mươi kỷ hai mươi, khái niệm luồng công việc (Workflow) sử dụng lần ngành công nghệ phần mềm Tuy thế, xuất luồng công việc mô hình luồng... Workflow Fowdation 4.0 22 Window Workflow Fowdation 4.0 Kết thu chạy ứng dụng workflow trên: Xây dựng workflow code Ở mục 2, tìm hiểu sơ lược WF4 .0 cách sử dụng số activity xây dựng sẵn WF4 .0 Việc xây

Ngày đăng: 02/11/2012, 11:51

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan