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

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 58)

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.

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. (adsbygoogle = window.adsbygoogle || []).push({});

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:

- 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: (adsbygoogle = window.adsbygoogle || []).push({});

- 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 chức năng là sẵn sàng. Khi đó, phương thức Confirm gọi phương thức Counter_Confirm để trả về kết quả. Nếu thời gian của hàm chức năng này không vượt quá thời gian giới hạn thì chuyển sang bước 3.

- Bước 3: Kiểm tra xem chìa khóa (key) của hàm chức năng có trùng với chìa khóa (key) ở trên tệp tin cấu hình của hàm chức năng này không. Nếu chìa khóa trùng nhau thì hàm chức năng này ở trạng thái sẵn sàng và phương thức Confirm gọi phương thức Counter_Confirm để trả về kết quả. Ngược lại, hàm chức năng này không ở trạng thái sẵn sàng và phương thức Confirm gọi phương thức Refuse để trả về kết quả.

Thông điệp của phương thức ACK_GetInfoQoS_OK. <xs:element name="Confirm">

<xs:complexType> <xs:sequence>

<xs:element minOccurs="0" name="methodNames" nillable="true" type="xs:string"/>

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

Phƣơng thức Counter_Confirm

Phương thức này trả về thông điệp counter_confirm. Thông điệp của phương thức Counter_Confirm.

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

<xs:sequence>

<xs:element minOccurs="0" name=" methodName" nillable="true" type="xs:string"/>

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

Phƣơng thức Refuse

Phương thức này trả về trông điệp refuse. Thông điệp của phương thức Refuse. <xs:element name="Refuse">

<xs:complexType> <xs:sequence>

<xs:element minOccurs="0" name=" methodName" nillable="true" type="xs:string"/>

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

Các phương thức FuncHotel1, FuncHotel2, FuncHotel3 là các hàm chức năng. Phục vụ cho chức năng đặt phòng khách sạn. Khung đàm phán của luận văn này không đề cập đến các vấn đề xử lý logic của các hàm chức năng.

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

Dịch vụ thành phần BookingTour được triển khai tại địa chỉ http://localhost:8080/QoSBookTicket/services/listServices.

Tượng tự, dịch vụ BookingTour cũng có một số phương thức giống như dịch vụ BookingHotel như sau.

Phƣơng thức GetInfoQoS

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

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

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

Thông điệp của phương thức Confirm. <xs:element name="Confirm"> <xs:complexType>

<xs:sequence> (adsbygoogle = window.adsbygoogle || []).push({});

<xs:element minOccurs="0" name="methodNames" nillable="true" type="xs:string"/>

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

Phƣơng thức Counter_Confirm

Thông điệp của phương thức

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

<xs:sequence>

<xs:element minOccurs="0" name=" methodName" nillable="true" type="xs:string"/>

</xs:sequence>

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

Phƣơng thức Refuse

Thông điệp của phương thức Refuse. <xs:element name="Refuse">

<xs:complexType>

<xs:sequence>

<xs:element minOccurs="0" name=" methodName" nillable="true" type="xs:string"/>

</xs:sequence>

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

Các phương thức FuncTour1, FuncTour2, FuncTour3, FuncTour4 là các hàm dịch vụ chức năng. Phục vụ cho chức năng đặt phòng tour. Trong phạm vị khung đàm phán này không đề cập đến các vấn đề xử lý logic của các hàm dịch vụ chức năng.

4.4.4 Thời gian giới hạn sử dụng của các dịch vụ thành phần

Các hàm chức năng và hàm chất lượng dịch vụ đều có một thời gian giới hạn. Thông tin trường thời gian giới hạn được lấy ở tệp tin cấu hình QoS_FileConfig.xml.

Quy trình cập nhật trường thời gian bắt đầu sử dụng (start) của phương thức GetInfoQoS bao gồm các bước:

- Bước 1: khi dịch vụ Travel_WS gọi phương thức Proposal để gửi thông điệp GetInfoQoS cho dịch vụ thành phần giả sử như BookingHotel để yêu cầu muốn sử dụng chức năng GetInfoQoS.

- Bước 2: dịch vụ BookingHotel gọi phương thức GetInfoQoS, phương thức này sẽ kiểm tra tính hợp lệ thời gian sử dụng của GetInfoQoS có vượt quá thời gian giới hạn không. Nếu thời gian sử dụng của GetInfoQoS quá thời gian giới hạn thì GetInfoQoS ở trạng thái sẵn sàng và thực hiện cập nhật trường thời gian bắt đầu (start) của GetInfoQoS vào trong tệp tin QoS_FileConfig.xml.

Quy trình cập nhật trường thời gian bắt đầu sử dụng (start) của các hàm chức năng bao gồm các bước sau:

- Bước 1: khi dịch vụ Travel_WS gửi thông điệp Confirm cho một dịch vụ thành phần như BookingTour để yêu cầu xác nhận một hàm chức năng giả sử là FuncTour1 xem hàm này có ở trạng thái sẵn sàng hay không. - Bước 2: dịch vụ BookingTour gọi phương thức Confirm, phương thức

này sẽ kiểm tra thời gian sử dụng của FuncTour1. Nếu FuncTour1 có thời gian quá thời gian giới hạn thì FuncTour1 ở trạng thái sẵn sàng và thực hiện cập nhật trường thời gian bắt đầu (start) vào tệp tin QoS_FileConfig.xml.

4.5 Các giao diện của dịch vụ thành phần

Trong phần này sẽ miêu tả giao diện WSDL của các dịch vụ thành phần BookingTour và BookingHotel. Dịch vụ Travel_WS sẽ giao tiếp với chúng thông qua WSDL.

4.5.1 Giao diện WSDL của BookingHotel

Giao diện WSDL của BookingHotel được miêu tả ở phụ lục A.

4.5.2 Giao diện WSDL của BookingTour (adsbygoogle = window.adsbygoogle || []).push({});

Giao diện WSDL của BookingTour được miêu tả ở phụ lục B.

4.6 Lựa chọn hàm chức năng

Phần này trình bày một số phương pháp so sánh các hàm chức năng này dựa trên thuộc tính chất lượng dịch vụ. Trong khung đàm phán của luận văn, dịch vụ Travel_WS đã áp dụng phương pháp gán trọng số để so sánh các hàm chức năng trong dịch vụ thành phần, từ đó Travel_WS chọn ra hàm dịch vụ phù hợp nhất với yêu cầu đưa ra.

4.6.1 Lựa chọn hàm chức năng dựa vào phƣơng pháp so sánh đặc điểm chất lƣợng dịch vụ

Đây là phương pháp so sánh đơn giản, so sánh các thực thể với nhau trên cùng một thuộc tính chất lượng dịch vụ. Thực thể nào có thuộc tính chất lượng tốt nhất thì xếp thứ 1, thực thế tốt thứ nhì xếp thứ 2, thực thể tốt thứ ba thì xếp thứ 3. Sau đó đối với mỗi thực thể thực, hiện tính tổng thứ tự các thuộc tính chất lượng dịch vụ. Nếu thực thể nào có tổng nhỏ nhất thì thực thể đó được chọn [13].

Ví dụ 4.7: Ví dụ về phương pháp so sánh dựa trên tính tổng các thuộc tính chất lượng dịch vụ Web.

FuncTour1, FuncTour2 và FuncTour3 là ba hàm chức năng với ba thuộc tính Cost, Time và Availability như ở bảng 4.1.

Bảng 4-1: Minh họa phƣơng pháp so sánh dựa trên tổng các thuộc tính chất lƣợng dịch vụ

Cost Time Availability Tổng

FuncTour1 1 2 3 6

FuncTour3 3 3 2 8

Mặc dù đây là phương pháp đơn giản, nhưng phương pháp này có một vài hạn chế. Một là khi giá trị tổng của các thực thể bằng nhau thì chọn hàm chức năng nào. Hai là phương pháp này chưa phân biệt mức độ khác nhau giữa các thuộc tính chất lượng dịch vụ.

4.6.2 Lựa chọn hàm chức năng dựa vào phƣơng pháp chuẩn hóa

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 58)