Đâ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).
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
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ụ.
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
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): purchase và Cancel. Đố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:
- Xác định xem thao tác có hợp lệ đối với trạng thái hiện tại không.
- Thi hành hành động ở lối ra của trạng thái đó, nếu có.
- Đá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
InApprovalsẽ được chọn, còn việc chuyển sang trạng tháiPurchasedsẽ bị bỏ qua. - 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. - Chuyển sang trạng thái
InApprovalmới. - 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.
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.
- Đọc hai bài viết đầu tiên trong loạt này, " Phần 1: Giới thiệu về mô hình lập trình SOA của IBM"
(developerWorks, 06.2005) và " Phần 2: Đơn giản hóa việc truy cập dữ liệu bằng Service Data
Objects" (developerWorks, 06.2005).
- Tìm hiểu thêm về BPEL và cách nó hoạt động với các dịch vụ web như thế
nào bằng cách đọc "Business Process Execution Language for Web Services (BPEL4WS)
v1.1" (developerWorks, 05.2003).
- Tìm hiểu thêm về dàn dựng qui trình nghiệp vụ trong "WebSphere Application Server Enterprise Process Choreographer:
Concepts and Architecture" (developerWorks, October10.2002) và
"Business process choreography in WebSphere: Combining the power
of BPEL and J2EE" từ tạp chí Hệ thống IBM.
- Đọc thêm về BPELJ trong "BPELJ: BPEL for Java technology" (developerWorks,
03.2004).
- Truy cập vào các vùng dịch vụ web và SOA của developerWorks để tìm các
thông tin hướng dẫn, các công cụ và các dự án cập nhật về các công
nghệ Web và SOA.
- Hãy dành tâm trí cho cộng đồng developerWorks bằng cách tham gia vào
các developerWorks blogs.
- Duyệt qua tất cả các bài viết về dịch vụ SOA và web và các hướng dẫn miễn phí về các dịch vụ SOA và web có sẵn trong
developerWorks.
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
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 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