Đặc tả role

Một phần của tài liệu Mô hình tương tác dựa trên role trong hệ đa agent (Trang 60)

Trong XML, trước khi định nghĩa các role thực sự, chúng ta phải tạo ra một khuôn mẫu hay cấu trúc của các thành phần có trong một role. Các định nghĩa role sau đó sẽ phải tuân theo khuôn mẫu này mới là các file XML hợp lệ [1]. Việc xác định các khuôn mẫu này cũng thuận lợi cho việc sử dụng lại role. Người phát triển sau có thể nhanh chóng hiểu được cấu trúc của role khi xem các file khuôn mẫu. Có hai cách để khai báo khuôn mẫu trong XML:

<XML version=”1.0” encoding=”UTF-8”>

<!Element element_name (element1_name, element2_name,…) <!Element element1_name (data_type)>

<!Element element2_name (#PCDATA)>

 Thứ nhất, sử dụng định nghĩa kiểu dữ liệu DTD. Cú pháp để khai báo một phần tử trong DTD như hình trên. Một tài liệu sẽ có nhiều phần tử Element hoặc không có phần tử nào. Mỗi Element sẽ bao gồm các thông tin như tên phần tử, kiểu nội dung mà phần tử này có thể chứa: Nếu tài liệu chỉ chứa dữ liệu thì kiểu của nó là #PCDATA. Các tên như elem1_name hoặc element2_name. Ta có thể thấy ví dụ về file DTD định nghĩa kiểu dữ liệu

cho các role như Hình 3.4.

<?xml version="1.0" encoding="UTF-8" ?>

<!ELEMENT ROLE (ROLE_NAME, DESCRIPTION?, KEYWORD*, ACTIONS*, EVENTS*)> <!ELEMENT NAME (#PCDATA)>

<!ELEMENT DESCRIPTION (#PCDATA)> <!ELEMENT KEYWORD (#PCDATA)>

<!ELEMENT ACTIONS (ACT_NAME,DESCRIPTION,RET_VALUE,PARA*)> <!ELEMENT ACT_NAME (#PCDATA)>

<!ELEMENT DESCRIPTION (#PCDATA)> <!ELEMENT RET_VALUE (#PCDATA)> <!ELEMENT PARA (PAR_NAME,TYPE)> <!ELEMENT PAR_NAME (#PCDATA)> <!ELEMENT TYPE (#PCDATA)>

<!ELEMENT EVENTS (EVE_NAME,DESCRIPTION,PARA*)> <!ELEMENT EVE_NAME (#PCDATA)>

<!ELEMENT DESCRIPTION (#PCDATA)> <!ELEMENT PARA (PAR_NAME,TYPE)> <!ELEMENT PAR_NAME (#PCDATA)> <!ELEMENT TYPE (#PCDATA)>

Hình 3.4. DTD cho các role theo mô hình BRAIN

 Thứ hai, sử dụng file lược đồ XSD. Lược đồ XSD tuy không đơn giản như DTD nhưng lại tổng quát và chính xác hơn. Chúng ta có thể dễ dàng chuyển từ lược đồ sang DTD và ngược lại. Hai khái niệm này có ý nghĩa tương đương nhau trong việc tạo ra một khuôn mẫu chuẩn cho các tài liệu XML của một ứng dụng. Ví dụ, lược đồ mô tả cấu trúc role theo XSL tương ứng với DTD trong Hình 3.4 được mô tả trong Hình 3.5.

Như vậy, qua hai ví dụ trên cho thấy, đối mỗi role ta cần xác định ba thành phần thông tin chính dưới đây:

Các thông tin cơ bản: Bao gồm các thông tin để nhận dạng một role cũng như ngữ cảnh hoạt động của role đó như tên, mã role…Ngoài ra, phần này

cũng bao gồm các mô tả bậc cao (bằng ngôn ngữ tự nhiên) và các từ khóa để hiểu rõ chức năng chính của role và phục vụ cho việc tìm kiếm.

Các hành động được phép thực hiện: Mỗi một role sẽ được định nghĩa các hành động mà agent đảm nhận role đó có thể thực hiện. Một hành động được mô tả bằng tên, mô tả bằng ngôn ngữ tự nhiên (như một dạng chú thích để người phát triển hiểu rõ hơn cách dùng role). Hơn nữa, phần này cũng phải xác định 2 thành phần quan trọng khác là đối tượng chịu tác động của hành động và nội dung hành động cũng như sự kiện do hành động sinh ra.

Các sự kiện có thể nhận biết: Đây là các sự kiện mà agent đảm nhận role có thể chấp nhận từ agent ngoài và có khả năng xử lý. Cũng giống như hành động, một sự kiện được đặc tả bằng tên và mô tả bậc cao. Hai thành phần khác cũng phải xác định là đối tượng thực hiện hành động tạo ra sự kiện và nội dung sự kiện.

<?xml version="1.0"?> <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <xsd:element name="ROLE"> <xsd:complexType> <xsd:sequence> <xsd:element ref="ROLE_NAME"/>

<xsd:element ref="DESCRIPTION" minOccurs="0" maxOccurs="1"/> <xsd:element ref="KEYWORD" minOccurs="0" maxOccurs="unbounded"/> <xsd:element ref="ACTIONS" minOccurs="0" maxOccurs="unbounded"/> <xsd:element ref="EVENTS" minOccurs="0" maxOccurs="unbounded"/> </xsd:sequence> </xsd:complexType> </xsd:element> <xsd:element name="ACTIONS"> <xsd:complexType> <xsd:sequence> <xsd:element ref="ACT_NAME"/> <xsd:element ref="DESCRIPTION"/> <xsd:element ref="RET_VALUE"/>

<xsd:element ref="PARA" minOccurs="0" maxOccurs="unbounded"/> </xsd:sequence> </xsd:complexType> </xsd:element> <xsd:element name="EVENTS"> <xsd:complexType> <xsd:sequence> <xsd:element ref="EVE_NAME"/> <xsd:element ref="DESCRIPTION"/>

<xsd:element ref="PARA" minOccurs="0" maxOccurs="unbounded"/> </xsd:sequence> </xsd:complexType> </xsd:element> <xsd:element name="PARA"> <xsd:complexType> <xsd:sequence> <xsd:element ref="PAR_NAME"/> <xsd:element ref="TYPE"/> </xsd:sequence> </xsd:complexType> </xsd:element>

<xsd:element name="DESCRIPTION" type="xsd:string"/> <xsd:element name="ACT_NAME" type="xsd:string"/> <xsd:element name="EVE_NAME" type="xsd:string"/> <xsd:element name="RET_VALUE" type="xsd:string"/> <xsd:element name="TYPE" type="xsd:string"/> <xsd:element name="PAR_NAME" type="xsd:string"/> <xsd:element name="NAME" type="xsd:string"/> <xsd:element name="KEYWORD" type="xsd:string"/> </xsd:schema>

Hình 3.5. Lược đồ XML cho mô hình role theo BRAIN

Khi đã có được lược đồ mô tả role, người phát triển tuân theo cấu trúc đã định để xây dựng các tài liệu định nghĩa role. Hình 3-6 là một ví dụ về tài liệu XRole cho role người mua (Bidder). Khi một agent muốn tham gia trả giá trong hệ thống đấu giá sẽ phải chọn đảm nhận role này.

<?xml version="1.0"?>

<ROLE xsi:schemaLocation="role.xsd"

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <ROLE_NAME>bidder</ROLE_NAME>

<DESCRIPTION>role to attend the auction to make a bid for the good interested</DESCRIPTION> (adsbygoogle = window.adsbygoogle || []).push({});

<KEYWORD>bidder</KEYWORD> <KEYWORD>auction</KEYWORD> <ACTIONS>

<ACT_NAME>bid</ACT_NAME>

<DESCRIPTION>make a bid for the good interested</DESCRIPTION> <RET_VALUE>void</RET_VALUE> <PARA> <PAR_NAME>reciever</PAR_NAME> <TYPE>AgentID</TYPE> </PARA> <PARA> <PAR_NAME>Price</PAR_NAME> <TYPE>string</TYPE> </PARA> </ACTIONS> ... <EVENTS> <EVE_NAME>notifyPrice</EVE_NAME>

<DESCRIPTION> sellers notify the bidder the current price </DESCRIPTION> <PARA> <PAR_NAME>Price</PAR_NAME> <TYPE>string</TYPE> </PARA> </EVENTS> <EVENTS> <EVE_NAME>accept</EVE_NAME>

<DESCRIPTION> bidder is notified if the bid is accepted or refused </DESCRIPTION> <PARA> <PAR_NAME>true</PAR_NAME> <TYPE>integer</TYPE> </PARA> </EVENTS> <EVENTS> <EVE_NAME>notifyWinner</EVE_NAME>

<DESCRIPTION>sellers notify the bidders the winner in the auction</DESCRIPTION> <PARA> <PAR_NAME>winner</PAR_NAME> <TYPE>AgentID</TYPE> </PARA> </EVENTS> </ROLE>

Hình 3.6. Định nghĩa role Bidder trong XRole

Các mô tả cơ bản về role sẽ được đặt trong cặp thẻ <DESCRIPTION> bao gồm: tên role, mô tả, từ khóa, số hiệu phiên bản…Tương tự như vậy, mỗi hành động của role được đặt trong một cặp thẻ <ACTIONS>. Ví dụ ở đây là hành động hỏi giá hiện tại của hàng hóa (askCurPrice). Agent đảm nhận role bidder sẽ thực

hiện hành động này để hỏi agent Auctioneer về giá hiện tại được trả cho hàng hóa muốn mua. Các thông tin về hành động bao gồm tên, mô tả mục đích của hành động, từ khóa…Ngoài ra, một thành phần cũng rất quan trọng khác đó là sự kiện mà agent thực hiện hành động này mong nhận được từ agent nhận. Đây chính là sự kiện trả lời cho câu hỏi đã đặt ra ở hành động trên. Ví dụ, ở đây là sự kiện thông báo giá hiện tại của hàng hóa. Sự kiện này sẽ được đặt trong thẻ <EVENTS> gồm các thông tin: tên, mục đích, có nhận được sự kiện hay không…Mỗi một role có thể có nhiều hành động, mỗi hành động có thể tương ứng với nhiều sự kiện. Thậm chí trong role cũng có một số sự kiện không liên quan đến bất kỳ hành động nào, tức là agent có thể nhận được sự kiện này ngay cả khi nó không thực hiện hành động nào.

Một phần của tài liệu Mô hình tương tác dựa trên role trong hệ đa agent (Trang 60)