Mô hình lập trình SOA để triển khai thực hiện các dịch vụ Web, Phần 3: Dàn dựng qui trình xử lý và các máy trạng thái nghiệp vụ

Một cách tiếp cận để cấu tạo dịch vụ là định nghĩa các dịch vụ như là các qui trình nghiệp vụ, sử dụng Ngôn ngữ Thi hành Qui trình nghiệp vụ (BPEL) hoặc biểu diễn chúng như là các máy trạng thái nghiệp vụ. Mã lệnh tuyến chính hòa phối các lời gọi của một loạt các dịch vụ như vậy chạy trong một thùng chứa đặc biệt được gọi là một máy dàn dựng qui trình (process choreography engine). Các chức năng do thùng chứa cung cấp cho phép thi hành các quá trình xử lý chạy trong thời gian dài, thậm chí có thể mở rộng vượt ra ngoài ranh giới của doanh nghiệp, tiếp tục tồn tại qua nhiều lần tạm ngừng có định trước và không định trước và tạo điều kiện thuận lợi để cộng tác doanh nghiệp với doanh nghiệp (B2B).

Matthias Kloppmann, Kỹ thuật viên cao cấp, IBM

Matthias Kloppmann là một thành viên của ban lãnh đạo kỹ thuật cao cấp của phòng thí nghiệm của Tập đoàn phần mềm IBM tại Boeblingen, Đức. Ông là một kiến trúc sư hàng đầu của Máy dàn dựng qui trình nghiệp vụ (Business Process Choreography). Kể từ khi Matthias gia nhập IBM từ năm 1986, ông đã làm việc trong một loạt các dự án, tập trung vào kiến trúc của các hệ thống dòng công việc và các dịch vụ web. Matthias nhận bằng thạc sĩ khoa học về khoa học máy tính và kỹ thuật điện của Trường Đại học Stuttgart



Donald Ferguson, Kiến trúc sư trưởng SWG, IBM Corporation

Tiến sĩ Donald F. Ferguson là một trong 55 ủy viên Hội đồng IBM, vị trí kỹ thuật cao nhất trong cộng đồng kĩ nghệ của IBM gồm 200.000 các nhà kỹ thuật chuyên nghiệp. Don là kiến trúc sư trưởng và nhà lãnh đạo kỹ thuật của Tập đoàn phần mềm IBM gồm dòng các sản phẩm Lotus, Rational, WebSphere, DB2. Don là chủ tịch Hội đồng Kiến trúc SWG, tập hợp các kiến trúc sư của các sản phẩm hàng đầu của SWG. Mọi nỗ lực mới đây nhất của Don đều tập trung vào các dịch vụ web, quản lý quá trình nghiệp vụ, nền tảng máy khách, nền tảng gia công/lưu trữ trên máy chủ, các dịch vụ Lưới (Grid) và phát triển ứng dụng cho WebSphere. Don đã là kiến trúc sư trưởng cho dòng các sản phầm WebSphere từ lúc khởi đầu cho đến khi đảm nhận vai trò kiến trúc sư trưởng của SWG vào năm 2003



Marcia Stockton, Kỹ thuật viên cao cấp, IBM

Marcia L. Stockton là thành viên của ban lãnh đạo kỹ thuật cao cấp và là một nhà phát minh chính của Tổ hợp phần mềm IBM tại Công viên tam giác nghiên cứu (Research Triangle Park), Bắc Carolina (cư trú tại California). Bà cũng là một thành viên IEEE cấp cao. Marcia lãnh đạo Nhóm công tác về mô hình lập trình của Hội đồng Kiến trúc của Tổ hợp phần mềm, ở đây bà lãnh đạo thực hiện các sáng kiến tích hợp ngang hàng và khuyến khích làm đơn giản hóa mô hình lập trình trên các sản phẩm của Lotus, Rational, WebSphere, DB2 và Tivoli. 73 bằng sáng chế Hoa Kỳ của bà bao trùm các lĩnh vực từ mạng, Web, an ninh, bảo mật, đa phương tiện, không dây, các thiết bị lan tỏa (pervasive) cho tới mã nhận dạng tần số vô tuyến. Mới đây bà lãnh đạo việc định nghĩa kiến trúc quản lý nhân dạng (identity) và về việc lập trình phân tán phía máy chủ. Bà đến với IBM vào năm 1988 sau năm năm phát triển phần mềm mạng. Bà đã có bằng cử nhân văn chương (B.A.) của trường Cao đẳng Swarthmore vào năm 1975



10 07 2009

Đây là bài viết thứ ba trong loạt bài viết của chúng tôi về mô hình lập trình dành cho Kiến trúc hướng-dịch vụ của IBM (SOA). Các bài viết trước đã giới thiệu các khái niệm về mô hình lập trình SOA và các Đối tượng dữ liệu dịch vụ (Service Data Objects).

Qui trình nghiệp vụ

Khái niệm về hòa phối dịch vụ thông qua việc dàn dựng (choreography) qui trình nghiệp vụ có lẽ đã quen thuộc với một lập trình viên FORTRAN từ năm 1970. Nó chỉ đơn giản là khái niệm về mã lệnh tuyến chính gọi các hàm hoặc các thủ tục con (subroutines) mà mỗi thủ tục triển khai thực hiện một mảnh nhỏ riêng lẻ trong một chương trình lớn hơn. Bây giờ, trong thế kỷ 21, các thủ tục con là các dịch vụ web. Ngôn ngữ để thực hiện các chương trình chính là BPEL dành cho các Dịch vụ Web (xem Tài nguyên để biết thêm thông tin về BPEL). Môi trường thi hành là thùng chứa dàn dựng qui trình nghiệp vụ trong Nền máy chủ tích hợp nghiệp vụ WebSphere® của IBM. Và chương trình có thể đan kết nhiều nhiệm vụ chạy thi hành trong thời gian dài cùng với nhau, có thể mở rộng bao trùm nhiều doanh nghiệp nhằm thực hiện một chức năng nghiệp vụ.

Hình 1. Một qui trình nghiệp vụ đơn giản
Một qui trình nghiệp vụ đơn giản

Hình 1 cho thấy một qui trình BPEL đơn giản cho một quá trình chấp thuận kế hoạch đi du lịch theo nhóm và đặt chỗ, trong đó bao gồm một chương trình để kiểm tra các dữ liệu yêu cầu, một tác vụ do con người thực hiện với việc chấp thuận quản lý thực tế và một tương tác B2B với một đối tác để thực hiện đặt chỗ thực tế.

Không lặp lại nhiều tài liệu tham khảo và hướng dẫn về BPEL (xem Tài nguyên), danh sách sau đây tóm tắt một vài đặc tính của nó và các mở rộng được cung cấp bởi bản triển khai thực hiện BPEL của IBM trong nền Tích hợp nghiệp vụ WebSphere:

  • Các qui trình nghiệp vụ chạy trong thời gian dài có thể tương tác với nhiều đối tác. Tất cả các tương tác được thực hiện thông qua các lời gọi dịch vụ web tiêu chuẩn, không trạng thái. Sự liên kết (correlation) được sử dụng để xử lý các cá thể cụ thể, sử dụng dữ liệu mức ứng dụng, ví dụ như yêu cầu chấp thuận kế hoạch đi đường của một người dựa trên mã số nhân viên của người đó. Các khả năng bồi hoàn cũng được cung cấp để hoàn lại (một phần) các ảnh hưởng của qui trình khi cần thiết, ví dụ, khi một yêu cầu đi đường bị hủy bỏ sau khi đã đặt chỗ chuyến bay.
  • Kết hợp con người vào trong các quá trình. Nói chung, một số bước của qui trình nghiệp vụ là do con người thực hiện (chẳng hạn như trong các dòng công việc chấp thuận hay xử lý trường hợp ngoại lệ). Điều này bao gồm các tình huống hiểu -bối cảnh phức tạp của việc phân công công việc cho con người, ví dụ như nguyên tắc bốn mắt (four eyes principle), bắt buộc rằng bước chấp thuận thứ hai có thể được thực hiện bởi bất kỳ người phê duyệt nào trừ người phê duyệt đầu tiên. Các yêu cầu này được đáp ứng bằng cách sử dụng các tác vụ do con người thực hiện như là một bước của qui trình. Máy dàn dựng qui trình nghiệp vụ (Business Process Choreography engine) và công cụ của Nhà phát triển ứng dụng WebSphere Studio IBM, Ấn bản tích hợp, cung cấp hỗ trợ cho các các tác vụ do con người thực hiện.
  • Nhúng các quá trình vào trong Nền tảng Java™ 2, Ấn bản doanh nghiệp (J2EE) của BPEL, thì IBM và BEA Systems, Inc đang đề nghị các mở rộng Java cho BPEL trong một nỗ lực được gọi là BPELJ. Các mở rộng này cho phép các lập trình viên thực hiện các hành động trong một qui trình bằng các đoạn Java ngắn, sử dụng Java như là một ngôn ngữ biểu thức ở mọi nơi BPEL cho phép các biểu thức và thao tác các dữ liệu làm việc bên trong quá trình, sử dụng Java.
  • Các mở rộng Chất lượng dịch vụ cần thiết cho hệ thống sản xuất, ví dụ như khả năng tinh chỉnh các ranh giới giao dịch, sửa chữa nhẹ nhàng các tình huống lỗi, hoặc cung cấp các bản ghi kiểm toán.
  • Sự tích hợp với WebSphere. Máy dàn dựng qui trình được tích hợp với máy giao dịch và dịch vụ hành động (Activity Service) trong WebSphere. Các quá trình liên quan đến con người sẽ sử dụng danh mục người sử dụng và chế độ an ninh của WebSphere. Các qui trình BPEL được triển khai như là một phần của việc triển khai ứng dụng WebSphere. Việc quản trị các qui trình nghiệp vụ được tích hợp vào bàn điều khiển quản trị WebSphere.

Bạn có thể sử dụng trình soạn thảo qui trình nghiệp vụ trực quan trong bộ công cụ Rational® và WebSphere của IBM để xây dựng các qui trình BPEL. Việc nhập khẩu các giao diện dịch vụ vào một khung nhìn tài sản cho phép bạn gọi các dịch vụ bên ngoài từ quá trình BPEL của bạn. Bộ công cụ cũng có một trình gỡ rối (debugger) trực quan để gỡ rối các quá trình của bạn, bao gồm cả khả năng gỡ rối các nhánh song song của các quá trình chạy thi hành thời gian dài và để tương tác với các hành động trực diện với con người thông qua các giao diện người dùng thích hợp. Bộ công cụ cũng cho phép kiểm thử các quy trình BPEL và triển khai chúng như là các dịch vụ.


Các máy trạng thái nghiệp vụ

Qui trình dòng công việc là tương tự với một hành động hay một động từ -- ví dụ, CreatePurchaseOrder hay BookTravel -- việc đó có thể gồm nhiều bước và nhiều tuyến đường, gọi nhiều dịch vụ Web, nhiều lớp Java hay các JavaBeans Doanh nghiệp (EJBs).

Nếu một qui trình dòng công việc là một động từ, thì một máy trạng thái nghiệp vụ là một danh từ biểu diễn một sự vật, ví dụ như một đơn đặt mua hàng, một vé bị trục trặc hay một áp dụng chính sách bảo hiểm. Tại đây, một động từ -- như là CreatePurchaseOrder hay BookTravel -- là một thao tác trên sự vật đó. Một thao tác trên máy trạng thái nghiệp vụ có thể dẫn đến việc gọi một dịch vụ bất kỳ, ví dụ như là một quá trình BPEL hoặc mã Java được viết rõ kèm bên máy trạng thái.

Không có cách tiếp cận nào -- các quá trình hay máy trạng thái -- là tốt hơn cái kia. Thay vào đó, cả hai đều là các trừu tượng hóa dịch vụ tương đương về chức năng. Hãy chọn bất cứ cái nào là cái trừu tượng hóa thích hợp nhất cho nhiệm vụ đang xem xét.

Một máy trạng thái nghiệp vụ được đặc tả rõ bằng đồ họa bởi một sơ đồ chuyển trạng thái, cho thấy các trạng thái của nó, các dịch chuyển trạng thái có khả năng xảy ra giữa các trạng thái với các sự kiện kích hoạt chúng và các thao tác phát sinh theo. Hình 2 là một biểu đồ luồng biểu diễn máy trạng thái đơn giản của một PurchaseOrder.

Hình 2. Một máy trạng thái nghiệp vụ biểu diễn một lệnh đặt mua hàng
Máy trạng thái nghiệp vụ

Các nút (hình chữ nhật) biểu diễn các trạng thái có thể xảy ra của PurchaseOrder và có thể là Created (đã được tạo ra), Ready (sẵn sàng), InApproval (Đang phê duyệt), Purchased (đã mua), Canceled (đã hủy bỏ), Shipped (đã vận chuyển), Delivered (đã giao hàng), hay Archived (đã lưu). Các vòng cung (mũi tên) biểu diễn các sự kiện có thể xảy ra, làm cho PurchaseOrder chuyển từ một trạng thái này sang một trạng thái khác.

Một máy trạng thái nghiệp vụ có thể được triển khai thực hiện bằng một quá trình BPEL. Trong trường hợp đó, một sự kiện chỉ là một thao tác trên portType của một quá trình được mô tả bằng Ngôn ngữ Mô tả Dịch vụ Web (WSDL). Trạng thái hiện tại (được lưu giữ trong một biến) xác định các sự kiện (các thao tác) nào đang hoạt động. Môi trường chạy (runtime) sẽ đưa ra một ngoại lệ nếu trình gọi cố gắng để gọi một thao tác không hợp lệ. Bạn cũng có thể truy vấn trạng thái hiện tại của máy trạng thái để xác định tính hợp lệ của một thao tác.

Khi một sự kiện xảy ra (ví dụ, khi một thao tác được gọi hay bộ đếm thời gian bị vượt quá), máy trạng thái chuyển sang một trạng thái mới và thực hiện một hành động kèm theo việc chuyển đổi trạng thái (ví dụ như gọi một thao tác hoặc phương thức). Trong Hình 2, một dịch chuyển trạng thái được phản ánh bằng một cung kèm với các chú giải của sự kiện này, một điều kiện tùy chọn và hành động kèm theo sẽ được thực hiện. Một dịch chuyển trạng thái chỉ được thực hiện khi điều kiện kết hợp với nó là đúng. Các hành động bổ sung thêm có thể được thực hiện tại lối vào và lối ra của trạng thái. Trong Hình 2, máy trạng thái đang ở trạng thái Sẵn sàng (Ready) có hai sự kiện có khả năng xảy ra (các thao tác được phép): purchaseCancel. Đối với thao tác mua hàng (purchase) có hai điều kiện có khả năng: hoặc là cần phải được phê duyệt chấp nhận hoặc không cần.

Khi một trình gọi gọi thao tác mua hàng, khung công tác của máy trạng thái nghiệp vụ thực hiện như sau:

  1. Xác định xem thao tác có hợp lệ đối với trạng thái hiện tại không.
  2. Thi hành hành động ở lối ra của trạng thái đó, nếu có.
  3. Đánh giá điều kiện của tất cả các dịch chuyển trạng thái liên quan đến sự kiện đó. Giả sử rằng cần phải có sự phê duyệt cho việc mua hàng này, việc chuyển sang trạng thái InApproval sẽ được chọn, còn việc chuyển sang trạng thái Purchased sẽ bị bỏ qua.
  4. Thi hành hành động kết hợp với dịch chuyển trạng thái, trong trường hợp này là doApprovalAction(). Ví dụ, thao tác này có thể gửi e-mail tới một người quản lý bán hàng, hoặc đơn giản chỉ gọi một thao tác trên một thành phần SOA khác, ví dụ như là một luồng BPEL.
  5. Chuyển sang trạng thái InApproval mới.
  6. Thực thi hành động nhập vào trạng thái đó, nếu một trạng thái thoát ra.

Bạn tạo ra các máy trạng thái nghiệp vụ bằng cách sử dụng trình soạn thảo máy trạng thái nghiệp vụ trực quan của bộ công cụ Rational/WebSphere. Công cụ này xử lý các máy trạng thái nghiệp vụ và các qui trình nghiệp vụ một cách giống nhau: Chúng có thể có cùng một mối quan hệ với các dịch vụ bên ngoài và các môi trường thử nghiệm và triển khai chúng là giống hệt nhau.


Tóm tắt

Mô hình lập trình của IBM dành cho SOA cung cấp một số cách tiếp cận để xây dựng các ứng dụng hướng-dịch vụ mới hoặc đan kết các ứng dụng hiện có vào trong một khung công tác dịch vụ. Bài viết này đã nêu bật cách tiếp cận dàn dựng quy trình nghiệp vụ bằng cách sử dụng Ngôn ngữ thi hành qui trình nghiệp vụ; nó tương tự như việc gọi các thủ tục con (subroutines) trong lập trình thủ tục cổ điển, với các hỗ trợ bổ sung thêm cho công việc chạy thi hành trong thời gian dài và xử lý song song. Các máy trạng thái nghiệp vụ là một tạo phẩm mô hình lập trình khác có thể được diễn tả khi sử dụng BPEL. Không có cách tiếp cận nào là tốt hơn. Hãy chọn một cách tiếp cận phù hợp nhất cho bài toán đang giải quyết. Các bài viết tiếp theo sẽ giới thiệu các kiểu thành phần bổ sung thêm dành cho các nhà phát triển SOA.

Tài nguyên

Bình luận

developerWorks: Đăng nhập

Các trường được đánh dấu hoa thị là bắt buộc (*).


Bạn cần một ID của IBM?
Bạn quên định danh?


Bạn quên mật khẩu?
Đổi mật khẩu

Bằng việc nhấn Gửi, bạn đã đồng ý với các điều khoản sử dụng developerWorks Điều khoản sử dụng.

 


Ở lần bạn đăng nhập đầu tiên vào trang developerWorks, một hồ sơ cá nhân của bạn được tạo ra. Thông tin trong bản hồ sơ này (tên bạn, nước/vùng lãnh thổ, và tên cơ quan) sẽ được trưng ra cho mọi người và sẽ đi cùng các nội dung mà bạn đăng, trừ khi bạn chọn việc ẩn tên cơ quan của bạn. Bạn có thể cập nhật tài khoản trên trang IBM bất cứ khi nào.

Thông tin gửi đi được đảm bảo an toàn.

Chọn tên hiển thị của bạn



Lần đầu tiên bạn đăng nhập vào trang developerWorks, một bản trích ngang được tạo ra cho bạn, bạn cần phải chọn một tên để hiển thị. Tên hiển thị của bạn sẽ đi kèm theo các nội dung mà bạn đăng tải trên developerWorks.

Tên hiển thị cần có từ 3 đến 30 ký tự. Tên xuất hiện của bạn phải là duy nhất trên trang Cộng đồng developerWorks và vì lí do an ninh nó không phải là địa chỉ email của bạn.

Các trường được đánh dấu hoa thị là bắt buộc (*).

(Tên hiển thị cần có từ 3 đến 30 ký tự)

Bằng việc nhấn Gửi, bạn đã đồng ý với các điều khoản sử dụng developerWorks Điều khoản sử dụng.

 


Thông tin gửi đi được đảm bảo an toàn.


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=70
Zone=SOA và dịch vụ Web
ArticleID=407147
ArticleTitle=Mô hình lập trình SOA để triển khai thực hiện các dịch vụ Web, Phần 3: Dàn dựng qui trình xử lý và các máy trạng thái nghiệp vụ
publish-date=07102009