Trong quá trình thực thi một tiến trình có thẻ xảy ra các tình huống chẳng hạn nhƣ: một webservice đƣợc gọi không thể thực thi đƣợc, một biến đƣợc sử dụng nhƣng chƣa đƣợc khởi tạo, một biểu thức nhập vào không phù hợp với kiểu dữ liệu mong đợi… Tất cả các trƣờng hợp trên sẽ phát sinh ra lỗi. Chúng ta cũng có thể tạo ra một lỗi bằng cách dùng Throw hay Rethrow activity để đƣa ra lỗi (Rethrow activity dùng khi một lỗi đƣợc ném ra t Scope bên trong (có thể đã đƣợc thụ lý hoặc chƣa thụ lý) đƣợc ném tiếp ra phạm vi ngoài). Khi có lỗi xuất hiện, tất cả các tiến trình trong phạm vi hiện tại sẽ đƣợc d ng lại và chuyển sang activity thụ lý lỗi tƣơng ứng [ 30 ].
45
2.4Một số BPEL Designer hổ trợ WS- P L 2.0 trên thị trường hiện nay 2.4.1.Oracle BPEL Process Manager
Oracle BPEL Process Manager là một designer đƣợc phát triển bởi Oracle. Nó cung cấp một giao diện ngƣời dùng thân thiện và một giải pháp đáng tin cậy cho việc thiết kế triển khai và quản lý quy trình nghiệp vụ BPEL. Oracle Process Manager bao gồm các thành phần chính đƣợc thể hiện nhƣ hình xx :
Hình 2.18-Cấu trúc Oracle BPEL Process Manager
Oracle BPEL Process Manager bao gồm JDeveloper BPEL Designer, mà mở rộng chức năng của Oracle 10g JDeveloper cho phép bạn mô hình hóa, chỉnh sửa và thiết kế quy trình nghiệp vụ bằng cách sử dụng ngôn ngữ BPEL. JDeveloper BPEL Designer cung cấp giao diện đồ họa và giải pháp thân thiện để xây dựng các quy trình nghiệp vụ. Oracle BPEL Process Manager sử dụng BPEL nhƣ là một định dạng chuẩn của nó. Nó cho phép ngƣời dùng xây dựng cũng nhƣ thực thi một tiến trình nghiệp vụ một cách dễ dàng. Sự chuyển đổi linh hoạt giữa màn hình mã nguồn và giao diện đồ họa của tiến trình giúp ngƣời dùng linh hoạt hơn trong việc
46
thiết kế mà không phải thông qua các bƣớc thực hiện phức tạp. Cấu trúc bên trong của nó cho phép nó đáp ứng mạnh mẽ việc phát triển, mở rộng của các BPEL server hiện nay. Nó cho phép bạn duy trì trạng thái của một công việc và đƣợc kiểm soát trong cơ sở dữ liệu, điều này làm cho công việc của bạn không bị gián đoạn và mất dữ liệu. hình 2.19 là môi trƣờng làm việc của Oracle Process manager.
Hình 2.19-Môi trƣờng làm việc của Oracle BPEL Process Manager
Việc xây dựng tích hợp các chuẩn BPEL cho phép bạn chuyển đổi linh hoạt giữa các version của BPEL. Tiện ích này bao gồm việc chuyển đổi giữa XLST và XQuery, ràng buộc hàng trăm các hệ thống kế th a t kiến trúc kết nối java (JCA) và các giao thức riêng của BPEL.
2.4.2.Eclipse BPEL Designer
Giới thiệu về Eclipse BPEL Designer
Đây là một plugin cho Eclipse hiện nay vẫn đang còn phát triển, Plugin này đã hỗ trợ đến chuẩn BPEL 2.0. Phiên bản mới nhất là 6.0. Eclipse BPEL Designer hỗ trợ bạn xây dƣng và thực thi các tiến trình BPEL và hỗ trợ deploy lên Apache ODE
47
Server, ngoài ra nó còn hỗ trợ publish các thông tin của WebService lên UDDI Server. Bạn có thể download tại http://www.eclipse.org/bpel/downloads.php.
Tạo một quy trình P L
Để tạo một quy trình BPEL đơn giản, hãy chạy Eclipse và nhấn vào mục trình đơn File > New > Other, chọn tùy chọn BPEL 2.0 -> BPEL Project và tạo một dự án BPEL mới tên là HelloWorld. Sau khi đã tạo ra dự án, bạn đã sẵn sàng để tạo ra quy trình BPEL đầu tiên của bạn. Nhấn vào mục trình đơn File > New > Other một lần nữa và chọn tùy chọn BPEL 2.0 > New BPEL Process File nhƣ hình 2.20 để bắt đầu với trình thủ thuật tạo quy trình BPEL.
Hình 2.20-Tạo một quy trình BPEL với Eclipse BPEL Designer Thay đổi thông tin tập tin WSDL
Tệp WSDL cho một quy trình BPEL sẽ mô tả các kiểu đƣợc sử dụng trong quy trình BPEL cũng nhƣ các kiểu cổng, các ràng buộc và các dịch vụ cho quy trình của bạn. WSDL tự động đƣợc tạo ra bởi trình thủ thuật đã chứa kiểu cổng và để tạo ra chức năng của quy trình, chúng ta cần phải tạo ràng buộc và dịch vụ cho nó. Mở tệp WSDL trong trình soạn thảo tƣơng ứng và xem định nghĩa đồ họa của kiểu cổng:
48
Hình 2.21-Thay đổi thông tin tập tin WSDL
Để tạo ra một sự ràng buộc dịch vụ Web, nhấn chuột phải vào bất kỳ vùng trống trong trình soạn thảo WSDL và chọn tùy chọn Add Binding. Trong khung nhìn Properties đổi tên ràng buộc mới đƣợc tạo ra thành HelloWorldBinding và chọn HelloWorld làm kiểu cổng cho ràng buộc mới. Nhấn vào nút Generate Binding Content (Tạo nội dung ràng buộc) để đƣa ra hộp thoại Binding Wizard nhƣ hình sau:
Hình 2.22-Tạo ràng buộc cho tập tin WSDL trong Eclipse BPEL Designer Chọn giao thức SOAP trong hộp chọn Protocol kiểm tra tùy chọn tài liệu chữ trong phần SOAP Binding Options (Tùy chọn ràng buộc SOAP) và nhấn vào Finish.Sau dó bạn có thể chỉnh lại các thuộc tính của tệp tin nhƣ sau:
49
Hình 2.23-Thay đổi các thuộc tính của tập tin WSDL trong Eclipse BPEL Designer Sau khi tạo ra sự ràng buộc, nhấn chuột phải vào bất kỳ vùng trống nào trong trình soạn thảo WSDL và chọn mục trình đơn Add Service để tạo ra một mục mới có tên là HelloWorldService. Sau đó chỉ định HelloWorldPort cho tên cổng của ràng buộc và địa chỉ của nó là URL http: localhost:8080 ode processes HelloWorld. Ngoài ra chọn HelloWorldBinding làm sự ràng buộc cho dịch vụ mới đƣợc tạo ra nhƣ hình 2.24.
Hình 2.24-Ràng buộc trong tập tin WSDL Triển khai một quy trình P L lên ODE Server
Để triển khai một quy trình BPEL trong Eclipse thì đầu tiên bạn phải tạo ra một tập tin deploy.xml để mô tả cho tiến trình của mình.
50
Tập tin này có nội dung đƣợc mô tả nhƣ sau: 1 2 3 4 5 6 7 8 9 10 11 12 13 14
<?xml version="1.0" encoding="ASCII"?>
<deploy xmlns="http://www.apache.org/ode/schemas/dd/2007/03"
xmlns:helloworld="http://helloworld"
xmlns:sample="http://eclipse.org/bpel/sample">
<process name="sample:HelloWorld">
<active>true</active>
<retired>false</retired>
<process-events generate="all"/>
<provide partnerLink="client">
<service name="helloworld:HelloWorld"
port="HelloWorldPort"/>
</provide>
</process>
</deploy>
Bảng 2.23-Nội dung tập tin deploy.
ODE hỗ trợ sử dụng nóng qui trình BPEL. Để triển khai quy trình BPEL, chỉ cần chép thƣ mục chứa tất cả các tệp của quy trình vào thƣ mục webapps/ode/WEB- INF/processes của Tomcat Apache của bạn nơi mà ODE đã đƣợc triển khai.
Một cách dễ dàng để kiểm tra quy trình đƣợc triển khai là sử dụng công cụ Eclipse Webservices Explorer (Trình thám hiểm các dịch vụ Web Elipse). Nhấn chuột phải vào tệp HelloWorld WSDL của bạn và chọn mục trình đơn hiện lên Webservices > Test with Webservices Explorer. Eclipse sẽ khởi động công cụ thử nghiệm
Webservices Explorer. Khi sử dụng công cụ này, nhập một số văn bản cho tham số đầu vào và gọi thao tác Process.
51
Hình 2.25-Triển khai quy trình BPEL lên ODE Server trong Eclipse
Trên đây là cách cấu hình cũng nhƣ triển khai một quy trình BPEL đơn giản với Eclipse BPEL Designer.Ngoài việc hỗ trợ việc thiết kế cũng nhƣ triển khai một quy trình BPEL Eclipse còn hỗ trợ bộ update, cho phép bạn nhìn thấy đƣợc các lỗi cú pháp trong quá trình thiết kế và còn nhiều tiện ích khác t Eclipse BPEL Designer.
2.5 Đánh giá và kết luận
Với BPEL 2.0 chúng ta có thể thiết kế và mô hình hóa một tiến trình nghiệp vụ t đơn giản đến phức tạp mà không cần phải mất quá nhiều thời gian với một giao diện thân thiện và mô tả rõ ràng của các activity. Bạn có thể sử dụng sản phẩm mã nguồn mở cho việc tạo ra các ứng dụng bằng cách sử dụng đặc tả BPEL V2.0 t các cộng đồng Apache và Eclipse.
Hiện nay trên thị trƣờng thì không có nhiều các BPEL Designer, phần lớn là các phần mềm đƣợc phát triển bởi các tổ chức hoặc cá nhân nhỏ sử dụng cho mục đích
52
của cá nhân hoặc tổ chức. Các BPEL Designer mà chúng tôi giới thiệu ở trên thuộc các dự án mã nguồn mở và còn đang trong quá trình phát triển và chƣa hoàn chỉnh. Với cơ sở lý thuyết về BPEL 2.0 và Apache ODE là tiền đề để chúng tôi quyết định nghiên cứu và phát triển thử nghiệm một BPEL Designer chạy trên nên web với công nghệ Javafx. Trong chƣơng tiếp theo chúng tôi xin giới thiệu tới các bạn các cấu trúc hổ trợ lƣu trữ và thực thi WS-BPEL 2.0.
53
Chư ng 3 C C GIẢI PH P CHO VIỆC THỰC THI C C QUY TRÌNH NGHIỆP V LƯU TRỮ V TÌM KIẾM WEB SERVICE
Nội dung: Nội dung chương này giới thiệu về các giải pháp hổ tr cho việc lưu trữ và thực thi và tìm kiếm các service.
3.1 Đặt vấn đề
Một quy trình nghiệp vụ khi hoạt động ngoài thực tế thì gặp phải hai vấn đề cần đƣợc giải quyết:
Cần phải có một engine hổ trợ cho việc thực thi quy trình nghiệp vụ đó Cần có cấu trúc hổ trợ cho việc tìm kiếm các dịch vụ đã đƣợc triển khai
Hiện nay trên thi trƣờng có rất nhiều các cấu trúc hổ trợ cho việc triển khai và biểu diễn lƣu trữ các quy trình nghiệp vụ BPEL nhƣ WSO2 BPS 1, Apache ODE… Việc đƣa ra một giải pháp hợp lý cho việc triển khai và lƣu trữ cũng nhƣ hổ trợ cho việc tìm kiếm các web service cho các BPEL Designer là một yêu cầu tất yếu. Qua việc tìm hiểu và khảo sát các BPEL engine chúng tôi quyết định chọn Apche ODE là giải pháp cho việc triển khai vài thực thi các quy trình nghiệp vụ trong BPEL Designer của mình.
Sau khi đã triển khai và thực thi các quy trình nghiệp vụ của mình thì để ngƣời dùng có thể tìm thấy và sử dụng các dịch vụ đó thì đòi hỏi phải có một cấu trúc thích hợp để hổ trợ cho việc mô tả và tìm kiếm các dịch vụ.Tuy nhiên, việc tìm kiếm chỉ có thể đƣợc thực hiện khi các dữ liệu ngữ nghĩa này đƣợc lƣu trữ một cách hợp lý, thuận lợi cho quá trình tìm kiếm. Vậy làm thế nào để lƣu trữ các dữ liệu ngữ nghĩa của service. Đặc biệt có thể theo chuẩn về lƣu trữ, tìm kiếm web service hiện nay là chuẩn UDDI. UDDI là một chuẩn mở trong công nghiệp, đƣa ra cách thức để một nhà cung cấp dịch vụ publish các thông tin về web service mà họ cung cấp cho khách hàng và cách thức để những ngƣời dùng có nhu cầu sử dụng có thể tìm kiếm web service. Trong phần sau chúng tôi xin trình bày tới các bạn các lý thuyết về Apache ODE và UDDI.
1
54
3.2 Giới thiệu về Apche ODE 3.1.1 Giới thiệu 3.1.1 Giới thiệu
Apache ODE(Orchestration Director Engine) là một localhost http Server giúp thực thi các tiến trình BPEL, ODE làm việc với các webservices, gởi và nhận thông điệp, phục hồi lỗi và mô tả các định nghĩa trong tiến trình (process)[ 10 ]. Nó hỗ trợ trong suốt chu trình sống của dịch vụ, sắp xếp, tổ chức các dịch vụ thành một phần trong các ứng dụng của bạn.
3.1.2 Cấu trúc của Apache ODE
Các thành phần chính của kiến trúc ODE bao gồm các ODE BPEL compiler, ODE BPEL Engine Runtime, ODE đối tƣợng truy cập dữ liệu (DAO), ODE Layer tích hợp (ILS), và công cụ hỗ trợ ngƣời dùng... Một mô tả cấp cao của các mối quan hệ giữa các thành phần này đƣợc thể hiện trong FIGREF. Nó có thể đƣợc tóm tắt nhƣ sau: "Trình biên dịch chuyển đổi BPEL tài liệu thành một dạng thực thi. Các runtime –Engine có nhiệm vụ thực thi tiến trình đã đƣợc biên dịch này một cách chính xác dựa vào các store đƣợc liên tục truy cập đến các đối tƣợng DAO; các runtime-engine này đƣợc thực thi trong khuôn khỗ của một lớp tích hợp (Integration Layer) kết nối nó với các môi trƣờng khác rộng lớn hơn”[ 12 ]. Hình sau mô tả cụ thể cấu trúc của Apache ODE:
55
ODE Compiler: Trình biên dịch BPEL có trách nhiệm chuyển đổi mã nguồn của các thành phần mã nguồn BPEL (bao gồm các tài liệu BPEL, WSDL, các lƣợt đồ) thành một dạng biểu diễn của ngôn ngữ máy để thực thi. Đầu ra của trình biên dịch là danh sách các lỗi trong thành phần mã nguồn BPEL hoặc kết quá biên dịch thành công.
Dạng biểu diễn của BPEL đƣợc biên dịch t ODE compiler là một mô hình đối tƣợng tƣơng tự nhƣ trong cấu trúc BPEL gốc, và đƣợc lƣu trữ dƣới dạng file có phần mở rộng là cbp, là file duy nhất đƣợc gọi trong quá trình thực thi (run time).
ODE BPEL Engine Runtime: đƣợc thiết lập trong module BPEL-runtime và hỗ trợ cho việc biên dịch các quy trình BPEL. Nó chịu trách nhiệm kiểm soát lỗi cũng nhƣ đảm bảo tính đúng đắng của một tiến trình. Engine Runtime cũng đảm bảo tích logic trong việc gửi và nhận các thông điệp trong tiến trình, nó cho biết khi nào một thông điệp cần đƣợc tạo ra và khi nào một thông điệp cần đƣợc gửi đi. Tóm lại Engine Runtime thực hiện các API quản lý tiến trình đƣợc sử dụng bởi các công cụ hỗ trợ ngƣời dùng để tƣơng tác với ODE.
ODE Data Acess Object (DAO): là phƣơng tiện để tƣơng tác giữa các tiến trình BPEL và dữ liệu đƣợc lƣu trữ ở bên dƣới. Thông thƣờng cơ sở dữ liệu đƣợc lƣu trữ bên dƣới là dạng cơ sở dữ liệu quan hệ JDBC, trong trƣờng hợp này các DAO đƣợc gọi thông qua các thƣ viện dùng để truy cập dữ liệu OpenJPA. Các thƣ viện này cho phép ngƣời dùng có thể tạo ra một DAO riêng trong quá trình triển khai hoặc có thể sử dụng các DAO mà các nhà phát triển cơ sở dữ liệu cung cấp. BPEL Engine Runtime yêu cầu một DAO phải giải quyết đƣợc yêu cầu sau:
Active instances: phải giữ đƣợc phiên bản của các activity mới đƣợc tạo ra. Message routing: phải gửi đến đúng activity cần nhận
Variables: biến của BPEL cho mỗi activity.
PartnerLinks-phải giữ đƣợc giá trị của các PartnerLink. Trạng thái của tiến trình: trình tự thực hiện của tiến trình
Đối với OpenJPA/JDBC cấu trúc quan hệ đƣợc dùng để đáp ứng các yêu cầu trên đƣợc thể hiện trong FIGREF.
56
3.1.3 Cách cài đặt Apache ODE
Apache ODE đƣợc cung cấp miễn phí tại http: tomcat.apache.org . Chúng tôi xin giới thiệu tới các bạn cách cài đặt Tomcat version 5.5. Để cài đặt ODE và cấu hình ODE vào Tomcat Server ver 5.5 chúng ta cần thực hiện các bƣớc sau:
Bƣớc 1.Download ApacheTomcat Server version 5.5 tại: http://tomcat.apache.org
Bƣớc 2.Cài đặt Tomcat vào thƣ mục mà bạn lựu chọn.Giả sử thƣ mục đƣợc chọn để cài đặt ở đây là C:\apache\tomcat-5.5.26 .Thƣ mục này sẽ chứa toàn bộ các tập tin và thƣ mục mà Tomcat Server sẽ tham chiếu đến trong quá trình chạy.
Bƣớc 3.Download file deploy ODE có định dạng .war tại http://ode.apache.org/getting-ode.gtml, down loại tập tin apache-ode-war- 1.2.zip tại website nêu trên, giải nén tập tin trên ra một thƣ mục tạm, sau khi giải nén chúng ta có một tập tin có tên là ode.war trong thƣ mục tạm này.Copy tập tin ode.war vào thƣ mục mà chúng ta đã cài đặt Apache Tomcat : C:\apache\tomcat-5.5.26\ webapps.
Bƣớc 4.Chạy chƣơng trình comandline của window đƣa con trỏ về đƣờng dẫn C:\apache\tomcat-5.5.26\bin và gõ vào dòng lệnh sau:” catalina run” để khởi động và config Tomcat server:
57
Bƣớc 5.Sau khi khởi động Tomcat server thì ODE đã đƣợc cài đặt thành công, để kiểm tra bạn vào thƣ mục cài đặt Tocat Server và kiểm tra nếu có thƣ mục ode tồn tại thì ODE đã đƣợc cài đặt:
Hình 3.3-Cài đặt Apache ODE
3.1.4 Triển khai một quy trình P L lên Apche O
Để triển khai một quy trình BPEL lên ODE server thì có hai bƣớc cơ bản mà bạn cần phải thực hiện:
Tạo tập tin mô tả cho tiến trình và đặt tên deploy.xml.
Chép toàn bộ tập tin và thƣ mục của tiến trình vào thƣ mục webapps/ode/WEB- INF/processes của Apache Tomcat Server.
Để triển khai các tiến trình BPEL lên ODE thì bạn có thể thực hiện thủ công hoặc t sự hỗ trợ của các BPEL Designer. Hƣớng dẫn sau đây đƣợc chúng tôi thực hiện bằng ứng dụng do chúng tôi đang xây dựng và thử nghiệm cho đề tài của khóa