Dịch vụ Web kết hợp Travel_WS

Một phần của tài liệu Xây dựng khung đàm phán chất lượng dịch vụ cho dịch vụ web (Trang 54)

Trong khung đàm phán, dịch vụ Web kết hợp Travel_WS sẽ đàm phán với tất cả các dịch vụ thành phần và sử dụng phương pháp đàm phán tuần tự. Nghĩa là Travel_WS sẽ lần lượt đàm phán với các dịch vụ thành phần và sử dụng cơ chế đồng bộ trong quá trình trao đổi thông điệp.

Kết quả của khung đàm phán do dịch vụ Travel_WS cung cấp và bao gồm ba trạng thái sau: trạng thái hoàn thành, trạng thái không kết quả, trạng thái lỗi. Trang thái hoàn thành là khi Travel_WS đàm phán, tổng hợp và lựa chọn xong thì Travel_WS sẽ trả về kết quả gồm các cặp (FuncHotelj, FuncTourk) thỏa mãn yêu cầu đựa ra. Trạng thái không kết quả là khi Travel_WS đàm phán, tổng hợp và lựa chọn xong nhưng không tìm được kết quả nào thỏa mãn. Trạng thái lỗi bao gồm: lỗi do thời gian của Travel_WS quá thời gian giới gian, lỗi do một dịch vụ thành phần nào trả về thông điệp reject trong lời gọi phương thức Proposal, lỗi do tồn tại một dịch vụ thành phần mà tất cả các hàm chức năng đều trả về thông điệp refuse, lỗi do phát sinh từ hệ thống mà quá trình tổng hợp không kiểm soát được.

4.3.1 Các phƣơng thức của dịch vụ kết hợp Travel_WS

Sau đây là các phương thức của dịch vụ Travel_WS.

Phƣơng thức GetConfig

Phương thức này cung cấp thông tin cấu hình cho dịch vụ Travel_WS. Thông tin cấu hình được lấy từ tập tin Composite_FileConfig.xml.

Các thông tin cấu hình về chất lượng dịch vụ bao gồm: tên thuộc tính chất lượng dịch vụ và trọng số tương ứng. Thông tin cấu hình về dịch vụ Web thành

phần bao gồm: địa chỉ WSDL, namespace, danh sách các hàm chức năng của dịch vụ thành phần.

Phƣơng thức Proposal

Phương thức này gửi thông điệp GetInfoQoS đến dịch vụ thành phần và yêu cầu muốn sử dụng chức năng GetInfoQoS của dịch vụ thành phần đó.

Nếu dịch vụ thành phần xác định chức năng GetInfoQoS ở trạng thái sẵn sàng thì gọi phương thức ACK_GetInfoQoSOK để trả thông điệp chứa thông tin chất lượng dịch vụ. Kết quả trả về của hàm ACK_GetInfoQoSOK như ví dụ 4.4, đồng thời kết quả này được lưu vào biến toàn của cục kí hiệu là

lstInfoQoS_Request và có giá trị trong suốt quá trình đàm phán.

Ngược lại, dịch vụ thành phần gọi phương thức ACK_GetInfoQoS_Reject trả về thông điệp reject.

Ví dụ 4.4: Ví dụ kết quả trả về của phương thức ACK_GetInfoQoSOK và ACK_GetInfoQoS_Reject.

Kết quả trả về của phương thức ACK_GetInfoQoSOK

[{cost:0.7,time: 3,availability:0.9,func:FuncHotel1}; {cost:0.8,time: 2.6,availability:0.94,func:FuncHotel2}; {cost:0.3,time: 4,availability:0.95,func:FuncHotel3}] Kết quả trả về của phương thức ACK_GetInfoQoS_Reject là {reject}

Phƣơng thức CheckFullProposal

Phương thức này kiểm tra xem có tồn tại dịch thành phần nào trả về thông điệp reject không. Giá trị trả về của phương thức CheckFullProposal là true hoặc false. Nếu phương thức CheckFullProposal trả về giá trị true, nghĩa là tồn tại một dịch vụ thành phần mà trả về thông điệp reject. Ngược lại phương thức CheckFullProposal trả về giá trị false.

Phƣơng thức CompositeWS

Phương thức này được gọi sau lời gọi phương thức Proposal. Sau lời gọi phương thức Proposal, chúng ta có thể nhận về các kết quả thông tin chất lượng dịch vụ của thông điệp ACK_GetInfoQoSOK. Các bước thực hiện của phương thức CompositeWS bao gồm.

Bước 1: phương thức CompositeWS kiểm tra trạng thái xem có tồn tại thông điệp reject của dịch thành phần nào không. Nếu không tồn tại thông điệp reject thì chuyển sang bước 2.

Bước 2: phương thức CompositeWS phân tích tất cả dữ liệu trả về trong thông điệp thông điệp ACK_GetInfoQoSOK của từng dịch vụ thành phần, sau đó CompositeWS thực hiện tính tổng giá trị chất lượng dịch vụ.

Bước 3: phương thức CompositeWS chọn ra từng bộ dữ liệu của thông điệp ACK_GetInfoQoSOK trong dịch vụ Web BookingHotel kết hợp với từng dữ liệu của thông điệp ACK_GetInfoQoSOK trong BookingTour. Nếu cộng giá trị tổng chất lượng dịch vụ của hai dữ liệu này mà nhỏ hơn hoặc bằng dữ liệu tổng của đầu vào thì bộ dữ liệu này được CompositeWS chọn. Ví dụ 4.5 minh họa các kết quả trả về của phương thức CompositeWS.

Ví dụ 4.5: Ví dụ kết quả trả về của phương thức CompositeWS. [{cost:0.6181645,time:0.75610656,avaiablity:0.78, func:FuncHotel3,total:0.7242813; cost:0.093055904,time:0.77402914,avaiablity:0.79, func:FuncTour2,total:0.5761255 }; {cost:0.6181645,time:0.75610656,avaiablity:0.78, func:FuncHotel3,total:0.7242813; cost:0.7229005,time:0.6180995,avaiablity:0.89, func:FuncTour3,total:0.7583 }; {cost:0.6181645,time:0.75610656,avaiablity:0.78, func:FuncHotel3,total:0.7242813; cost:0.14895397,time:0.5291799,avaiablity:0.88, func:BookingTour4,total:0.5554402}] Phƣơng thức CheckTimeout

Dịch vụ Travel_WS lấy thông tin thời gian giới hạn sử dụng (timeout) trên tệp tin cấu hình. Phương thức CheckTimeout thực hiện kiểm tra thời gian sử dụng Travel_WS có vượt quá thời gian giới hạn không. Phương thức CheckTimeout trả về trạng thái true hoặc false. Trạng thái true nghĩa là thời gian sử dụng của Travel_WS vượt quá thời gian giới hạn, trạng thái flase trong trường hợp ngược lại.

Phƣơng thức Confirm

Phương thức này giúp dịch vụ Travel_WS gửi thông điệp Confirm tới các dịch vụ thành phần yêu cầu xác nhận các hàm chức năng vừa được chọn ở phương thức CompositeWS có ở trạng thái sẵn sàng sử dụng hay không.

Nếu phương thức Confirm của dịch vụ thành phần xác nhận hàm chức năng vừa yêu cầu ở trạng thái sẵn sàng thì sẽ gọi phương thức Counter_Confirm để trả về kết quả. Ngược lại, phương thức Confirm gọi phương thức Refuse để trả về kết quả.

Kết quả trả về của phương thức Counter_Confirm và Refuse như ở ví dụ 4.6. Trong đó thuộc tính có used=1 nghĩa là hàm chức năng ở trạng thái sẵn sàng sử dụng, ngược lại hàm này không ở trạng thái sẵn sàng sử dụng.

Ví dụ 4.6: Ví dụ kết quả trả về của phương thức Counter_Confirm và Refuse Kết quả trả về của phương thức Counter_Confirm

{func:FuncTour2,used:1} (adsbygoogle = window.adsbygoogle || []).push({});

Kết quả trả về của phương thức Refuse {func:FuncTour2,used:0}

Phƣơng thức RemoveInvalid_Operation

Phương thức này xóa những hàm chức năng ở trạng thái không sẵn sàng khỏi danh sách được lưu ở biến lstInfoQoS_Request.

Phƣơng thức CheckValidComposition

Phương thức này được gọi sau khi gọi phương thức RemoveInvalid_Operation. Mục tiêu của phương thức CheckValidComposition kiểm tra từng dịch vụ thành phần xem có còn hàm chức năng nào được lưu ở biến

lstInfoQoS_Request không. Kết quả trả về của phương thức CheckValidComposition là true hoặc false.

Nếu phương thức CheckValidComposition trả về giá trị false, nghĩa là tồn tại một dịch vụ thành phần mà tất cả các hàm chức năng vừa gửi để xác nhận đều không ở trạng thái sẵn sàng.

Phƣơng thức Fail

Mỗi khi tồn tại một phát sinh lỗi không thể kiểm soát được trong quá trình đàm phán, thì phương thức Fail được gọi. Khi đó, trạng thái kết quả của khung đàm phán là lỗi.

4.3.2 Biểu đồ tuần tự quá trình đàm phán

Hình 4-4. Biểu đồ tuần tự mô tả đàm phán giữa dịch vụ Travel_WS với dịch vụ thành phần

Dịch vụ kết hợp Travel_WS sử dụng phương pháp đàm phán tuần tự để đàm phán lần lượt với các dịch vụ thành phần. Hình 4-4 là biểu đồ tuần tự để mô tả quá trình đàm phán giữa dịch kết hợp Travel_WS với một dịch thành phần, giả sử với BookingHotel.

4.3.3 Lƣợc đồ hoạt động của quá trình đàm phán

Lược đồ này sẽ mô tả tất cả các trường hợp xảy ra trong quá trình đám phán giữa dịch vụ kết hợp Travel_WS với dịch vụ thành phần.

Hình 4-5. Lƣợc đồ hoạt động của quá trình đàm phán giữa dịch vụ kết hợp Travel_WS với dịch vụ thành phần.

Hình 4-5 mô tả tất cả các trường hợp có thể xảy ra trong quá trình đàm phán, chúng được phân theo một số luồng chính như sau.

Luồng xử lý: 1- 2- 3- 4- 5- 6- 7-19- 8

Luồng này mô tả dịch vụ Travel_WS đàm phán, tổng hợp, lựa chọn các dịch vụ Web thành phần thành công. Sau đó, dịch vụ Travel_WS sẽ đưa ra kết quả cho người dùng.

Bƣớc 1. Dịch vụ Travel_WS gọi phương thức Proposal, phương thức Proposal gửi thông điệp cho dịch vụ thành phần hỏi muốn sử dụng chức năng chất lượng dịch vụ GetInfoQoS và chờ nhận phản hồi từ dịch vụ thành phần, chuyển sang bước 2.

Bƣớc 2. Dịch vụ thành phần báo chức năng Proposal ở trạng thái sẵn sàng và gọi phương thức ACK_GetInfoQoSOK để trả về thông tin chất lượng dịch vụ của các hàm chức năng. Xem ví dụ 4.4 để thấy dạng cấu trúc được trả về của phương thức Proposal. Thông tin này được lưu vào một biến danh sách toàn cục

lstInfoQoS_Request và có giá trị trong suốt quá trình đàm phán, chuyển sang bước 3.

Bƣớc 3. Dịch vụ Travel_WS gọi phương thức CheckFullProposal để kiểm tra xem có dịch vụ thành phần nào trả về thông điệp reject không. Nếu không tồn tại dịch vụ thành phần nào trả về thông điệp reject thì sang bước 4.

Bƣớc 4. Dịch vụ Travel_WS gọi phương thức CompositeWS để thực hiện tổng hợp và trả ra kết quả tổng hợp như ví dụ 4.5 và chuyển sang bước 5.

Bƣớc 5. Dịch vụ Travel_WS gọi phương thức CheckTimeout kiểm tra xem thời gian của Travel_WS còn hợp lệ không. Nếu thời gian của Travel_WS là hợp lệ thì chuyển sang bước 6.

Bƣớc 6. Dịch vụ Travel_WS gửi thông điệp Confirm để xác nhận các hàm chức năng vừa được nhận ở bước 4 có thực sự sẵn sàng không, chuyển sang bước 7.

Bƣớc 7. Dịch vụ thành phần gọi phương thức Confirm để kiểm tra trạng thái sẵn sàng của hàm chức năng vừa gửi. Nếu trạng thái hàm chức năng này là sẵn sàng thì phương thức Confirm gọi phương thức Counter_Confirm để trả về kết quả, chuyển sang bước 19.

Bƣớc 19. Dịch vụ Travel_WS gọi phương thức CheckTimeout để kiểm tra lại xem thời gian của Travel_WS còn hợp lệ không. Nếu thời gian của Travel_WS là hợp lệ thì chuyển sang bước 8.

Bƣớc 8. Nếu dịch vụ Travel_WS đã gửi hết các thông điệp Confirm và cũng nhận xong hết các phản hồi từ các dịch vụ thành phần thì Travel_WS sẽ kết thúc quá trình đàm phán và đưa ra kết quả.

Luồng xử lý: 1- 9- 18 -17

Luồng này mô tả sự tồn tại của một dịch vụ thành phần trả về thông điệp reject nên trạng thái kết quả của dịch vụ Travel_WS là lỗi. (adsbygoogle = window.adsbygoogle || []).push({});

Bƣớc 1. Dịch vụ Travel_WS gọi phương thức Proposal, phương thức Proposal gửi thông điệp cho dịch vụ thành phần hỏi muốn xử dụng hàm lấy thông tin chất lượng dịch vụ GetInfoQoS và chờ nhận phản hồi tử dịch vụ thành phần, chuyển sang bước 9.

Bƣớc 9. Dịch vụ thành phần gửi phản hồi chức năng GetInfoQoS không ở trạng thái sẵn sàng và trả về thông điệp reject, chuyển sang bước 18.

Bƣớc 18. Dịch vụ Travel_WS gọi phương thức CheckFullProposal để kiểm tra xem có dịch vụ thành phần nào trả về thông điệp reject không. Tồn tại một dịch vụ thành phần trả về thông điệp reject và chuyển sang bước 17.

Bƣớc 17. Dịch vụ Travel_WS kết thúc quá trình đàm phán, trạng thái kết của của khung đàm phán là trạng thái lỗi.

Luồng xử lý: 1- 2- 3- 4- 12 -13

Luồng này mô tả sự phát sinh của một lỗi không kiểm soát được trong phương thức CompositeWS. Trạng thái kết của của dịch Travel_WS là lỗi.

Các bước 1- 2- 3- 4 đã được mô tả ở trên. Tại bước 4, dịch vụ Travel_WS gọi phương thức CompositeWS để tổng hợp và so sánh, nhưng nội bộ của CompositeWS gặp lỗi không kiểm soát được nên chuyển sang bước 12.

Bƣớc 12. Travel_WS kết thúc quá trình đàm phán và gửi thông báo lý do. Trạng thái kết quả của khung đàm phán là trạng thái lỗi.

Luồng xử lý: 1- 2- 3- 4- 5- 6 -9 - 10- 11- 16 -5

Luồng này giải quyết trường hợp tồn tại một dịch vụ Web thành phần gửi thông điệp refuse nên dịch vụ Travel_WS phải thực hiện quá trình đàm phán, tổng hợp và lựa chọn lại với các dịch vụ thành phần.

Thứ tự các bước 1- 2- 3- 4- 5 đã được trình bày ở trên. Tại bước 6, dịch vụ Travel_WS gửi thông điệp Confirm cho dịch vụ thành phần để xác nhận các hàm chức năng có thực sự ở trạng thái sẵn sàng không.

Bƣớc 9. Dịch vụ thành phần gửi thông điệp phản hồi Refuse để xác nhận hàm chức năng vừa được gửi để xác nhận là không ở trạng thái sẵn sàng và chuyển sang bước 10.

Bƣớc 10. Dịch vụ Travel_WS thực hiện bỏ những hàm chức năng ở trạng thái không sẵn sàng trong danh sách được lưu trong biến lstInfoQoS_Request, chuyển sang bước 11.

Bƣớc 11. Dịch vụ Travel_WS gọi phương thức CheckValidComposition để kiểm tra tính hợp lệ của dịch vụ thành phần trước khi Travel_WS đàm phán lại.

Kết quả trả về của phương thức CheckValidComposition là true, chuyển sang bước 16.

Bƣớc 16. Travel_WS thực hiện tổng hợp lại các hàm chức năng được lưu trong danh sách của biến lstInfoQoS_Request và chuyển sang bước 5. Luồng này là một vòng lặp, điều này cho phép dịch vụ Travel_WS có thực hiện đàm phán lại với các dịch vụ thành phần. Bước 11 và bước 5 là các bước kiểm tra điều kiện hợp lệ củavòng lặp.

Luồng xử lý: 1- 2- 3- 4- 5- 14

Luồng này mô tả trường hợp dịch vụ Travel_WS có thời gian sử dụng quá thời gian giới hạn. Trạng thái quả của dịch vụ Travel_WS là lỗi.

Thứ tự các bước 1- 2- 3- 4 đã được trình bày ở trên. Tại bước thứ 5, Travel_WS gọi phương thức CheckTimeout để kiểm tra tính hợp lệ về thời gian sử dụng của Travel_WS. Phương thức CheckTimeout trả về kết quả False, nghĩa là Travel_WS quá thời gian sử dụng chuyển sang bước 14.

Bƣớc 14. Travel_WS kết thúc quá trình đàm phán, thông báo kết quả lỗi.

4.3.4 Thời gian giới hạn sử dụng của dịch vụ kết hợp

Dịch vụ Web kết hợp Travel_WS có thời gian giới hạn cho quá trình đàm phán. Nếu thời gian đàm phán của dịch vụ Travel_WS vượt quá thời gian giới hạn thì kết quả của dịch vụ Travel_WS coi như không hợp lệ.

Thông tin trường thời gian giới hạn của dịch vụ Travel_WS là timeout và được lấy ở tệp tin Composite_FileConfig.xml. Trong khung đàm phán chất lượng dịch vụ này, hàm CheckTimeout để kiểm tra thời gian giới hạn của dịch vụ Travel_WS.

4.4 Dịch vụ Web thành phần trong khung đàm phán 4.4.1 Thông tin cấu hình của các dịch vụ Web thành phần 4.4.1 Thông tin cấu hình của các dịch vụ Web thành phần

Mỗi dịch vụ thành phần như BookingTour, BookingHotel đều có tệp tin cấu hình QoS_FileConfig.xml. Tệp tin cấu hình QoS_FileConfig.xml lưu trữ thông tin cấu hình các thuộc tính chất lượng dịch vụ và thông tin cấu hình các hàm chức năng như: tên hàm chức năng, thời gian giới hạn được sử dụng, thời gian bắt đầu sử dụng, chìa khóa (key). Hình 4-6 mô tả thông tin cấu hình của tệp tin QoS_FileConfig.xml.

Hình 4-6. Thông tin cấu hình của dịch vụ thành phần BookingHotel.

4.4.2 Phƣơng thức đàm phán của dịch vụ Web thành phần BookingHotel

Trong khung đàm phán, dịch vụ BookingHotel được triển khai tại địa chỉ http://localhost:8080/QoSBookHotel/services/listServices. Danh sách các phương thức của dịch vụ BookingHotel bao gồm như sau:

Phƣơng thức GetInfoQoS

Phương thức này trả về thông tin chất lượng dịch vụ của các hàm chức năng. Các bước xử lý của phương thức GetInfoQoS: (adsbygoogle = window.adsbygoogle || []).push({});

- Bước 1: Lấy thông tin trường timeout và start tệp tin QoS_FileConfig.xml.

- Bước 2: Kiểm tra xem thời gian sử dụng phương thức GetInfoQoS có vượt quá thời gian giới hạn không.

Nếu phương thức GetInfoQoS có thời gian sử dụng quá thời gian giới hạn, nghĩa là phương thức này ở trạng thái sẵn sàng thì GetInfoQoS gọi phương thức ACK_GetInfoQoS_OK để trả về thông tin chất lượng dịch vụ.

Ngược lại, phương thức GetInfoQoS không ở trạng thái sẵn sàng nên phương thức này gọi phương thức ACK_GetInfoQoS_Reject trả về thông điệp reject. Thông điệp của phương thức GetInfoQoS.

<xs:element name="GetInfoQoS"> <xs:complexType> <xs:sequence/> </xs:complexType> </xs:element> Phƣơng thức ACK_GetInfoQoS_Reject

Phương thức này trả về thông điệp reject. Thông điệp của phương thức ACK_GetInfoQoS_Reject. <xs:element name="ACK_GetInfoQoS_Reject"> <xs:complexType> <xs:sequence/> </xs:complexType> </xs:element> Phƣơng thức ACK_GetInfoQoS_OK

Phương thức này trả về thông tin chất lượng dịch vụ của các hàm chức năng. Thông điệp của phương thức ACK_GetInfoQoS_OK.

<xs:element name="ACK_GetInfoQoS_OK"> <xs:complexType>

<xs:sequence/> </xs:complexType> </xs:element>

Phƣơng thức Confirm

Phương thức này kiểm tra trạng thái của hàm chức năng có ở trạng thái sẵn sàng không. Các bước xử lý của phương thức Confirm:

- Bước 1: Lấy thông tin trường timeout và start, key tệp tin QoS_FileConfig.xml của mỗi hàm chức năng.

- Bước 2: Kiểm tra thời gian sử dụng của hàm chức năng này. Nếu thời gian của hàm chức năng này quá thời gian giới hạn, thì trạng thái của hàm

Một phần của tài liệu Xây dựng khung đàm phán chất lượng dịch vụ cho dịch vụ web (Trang 54)