Mơ hình DOM

Một phần của tài liệu tìm hiểu công nghệ xml và xây dựng hệ thống quản lý dịch vụ khách hàng (Trang 39)

Tìm hiểu cơng nghệ XML và xây dựng hệ thống quản lý dịch vụ khách hàng

2.2.3. Truy vấn dữ liệu XML sử dụng XPathDocument và XPathNavigator

Việc sử dụng lớp XmlDocument và XmlDataDocument để xử lý tài liệu

XML cũng cĩ một vài hạn chế. Đầu tiên, tồn bộ tài liệu phải được lưu trong

cache. Thêm vào đĩ, việc định hướng thơng qua một cây sẽ gặp nhiều khĩ

khăn, và định hướng thơng qua những view quan hệ cũng khơng thuận tiện.

Để khắc phục vấn đề này, VS.NET cung cấp lớp XPathDocument

XPathNavigator.

Lớp XPathDocument cho phép chúng ta xử lý dữ liệu XML mà khơng

phải tải lên tồn bộ cây. Và XPathNavigator sử dụng để thao tác trên dữ liệu của XPathDocument. Nĩ cũng được sử dụng để thao tác trên XmlDocument, và XmlDataDocument. Nĩ hỗ trợ kỹ thuật định hướng cho việc chọn nút, lặp qua các nút đã chọn, và làm việc trên những nút đã chọn này. Để thực hiện

được việc này, nĩ sử dụng biểu thức XPath.

XPath chỉ ra cú pháp truy vấn cho việc rút trích dữ liệu từ một tài liệu

XML. Ý tưởng sử dụng tương tự như trong SQL, tuy nhiên cú pháp của nĩ thì khác biệt. Nĩi chung, cú pháp truy vấn XPath cĩ vẻ phức tạp. Tuy nhiên qua các ví dụ sau, Chúng ta cĩ thể thấy được sự ngắn gọn và hiệu quả trong việc

rút trích dữ liệu XML. Chi tiết về cú pháp của XPath sẽ khơng đi sâu trong

bài viết này vì nĩ nghiên về lĩnh vực khác. Tuy nhiên, chúng ta cũng minh họa vài cách sử dụng biểu thức XPath. Sau đây chúng ta xem qua ví dụ một

tài liệu XML mà sẽ được sử dụng để thực hiện truy vấn trên đĩ. Tài liệu này

đặt tên là bank1.xml.

<?xml version="1.0" encoding="utf-8" ?> <Bank>

Tìm hiểu cơng nghệ XML và xây dựng hệ thống quản lý dịch vụ khách hàng <AccountNo>A1112</AccountNo> <Name>Pepsi Beagle</Name> <Balance>1200.89</Balance> <State>OH</State> </Account> ………… ………… <Account> <AccountNo>A7833</AccountNo> <Name>Frank Horton</Name> <Balance>8964.55</Balance> <State>MI</State> </Account> </Bank>

ƒ Ví dụ 1: Giả sử chúng ta muốn truy vấn tất cả tên của tài khoản. Biểu

thức XPath như sau:

Dạng 1: descendant::Name

Dạng 2: Bank/Account/Name

Ý nghĩa của biếu thức dạng 1 là “ Hãy lấy những nút con của tất cả những nút cĩ tên là Name”, cịn dạng 2 được diễn đạt như sau “Lấy những nút Name của nút Account của nút Bank”. Cả hai biểu thức này đều trả về cùng một tập hợp nút như nhau.

ƒ Ví dụ 2: Chúng ta muốn lấy tất cả khách hàng từ Ohio (OH). Biểu thức được viết như sau:

Dạng 1: descendant::Account[child::State=‘OH’]

Dạng 2: Bank/Account[child::State=‘OH’]

ƒ Ví dụ 3: Lấy tất cả Account cĩ Balance>5000.00

Dạng 1: descendant::Account[child::Balance> 5000]

Tìm hiểu cơng nghệ XML và xây dựng hệ thống quản lý dịch vụ khách hàng

ƒ Ví dụ 4: Giả sử Chúng ta muốn lấy thơng tin của những Account mà cĩ

tên bắt đầu bằng ký tự ‘D’

Dạng 1: descendant::account[starts-with(child::Name,‘D’)]

Dạng 2: Bank/Account[starts-with(child::Name,‘D’)]

Như vậy, sử dụng dạng nào là thích hợp. Điều đĩ phụ thuộc vào cảm giác của từng người và trên cấu trúc của tài liệu XML. Dạng 2 trơng dễ sử dụng hơn dạng 1. Tuy nhiên, trong những tài liệu XML lồng quá sâu, thì dạng 1 sẽ

đưa ra một biểu thức hiệu quả hơn.

Trên đây, chúng ta đã biết khái niệm về cách sử dụng biểu thức XPath như thế nào, kế tiếp chúng ta sẽ đi vào sử dụng XPathDocument. Trong ngữ cảnh này, chúng ta sẽ đưa ra 2 ví dụ. Ví dụ đầu tiên sẽ lấy tất cả tên của khách hàng từ Ohio và hiển thị lên listbox. Ví dụ thứ hai sẽ minh hoạ cách tìm kiếm dữ liệu thơng qua XPathDocument.

2.2.3.2. Cách sử dụng XPathDocument và XPathNavigator

Đầu tiên, chúng ta load tài liệu XML sử dụng XPathDocument như sau: XPathDocument doc = new

XPathDocument(Server.MapPath("Bank2.xml"));

Chúng ta cần hai đối tượng: XPathNavigator để rút trích ra tập hợp nút mà chúng ta muốn lấy, và XPathNodeIterator để lặp thơng qua tập hợp nút vừa lấy được. Khai báo như sau:

XPathNavigator myNav = new XPathNavigator(); myNav = myDoc.CreateNavigator();

XPathNodeIterator myIter = new XPathNodeIterator();

myIter=myNav.Select("Bank/Account[child::State='OH']/Name");

Biểu thức “Bank/Account[child::State=‘OH’]/Name” trả về những node tên Name từ tập nút Account cĩ State=”OH”. Để lấy giá trị bên trong nút

Tìm hiểu cơng nghệ XML và xây dựng hệ thống quản lý dịch vụ khách hàng

Name, chúng ta sử dụng Current.Value của đối tượng Iterator. Cụ thể như

sau:

while (myIter.MoveNext())

{

lstName.Items.Add(myIter.Current.Value);

}

2.2.3.3. Cách sử dụng XPathDocument và XPathNavigator cho việc định hướng tài liệu

Phần này minh họa cách tìm kiếm một XPathDocument sử dụng giá trị

của một thuộc tính và giá trị của một phần tử (element). Sử dụng tài liệu XML

bank2.xml sau: <Bank> <Account AccountNo="A1112"> <Name>Pepsi Beagle</Name> <Balance>1200.89</Balance> <State>OH</State> </Account> ……………. ……………. </Bank>

Để tìm kiếm giá trị cụ thể của một thuộc tính, chúng ta sử dụng biểu thức

như sau

Bank/Account[@AccountNo='"+accNo+"']/Balance

Để tìm kiếm giá trị cụ thể của một phần tử, chúng ta sử dụng biểu thức

như sau:

Tìm hiểu cơng nghệ XML và xây dựng hệ thống quản lý dịch vụ khách hàng

Chúng ta cần gọi phương thức MoveNext() của đối tượng Iterator để lấy

nút Balance. Biểu thức như sau:

Bank/Account[@AccountNo='"+accNo+"']/Balance

Sau đây là một đoạn chương trình hồn chỉnh viết bằng ngơn ngữ

ASP.NET sử dụng C#

<%@ Import Namespace="System.Xml.Xsl"%> <%@ Import Namespace="System.Xml.XPath"%> <%@ Import Namespace="System.Xml"%>

<%@ Page Language="C#" Debug="True"%> <HTML>

<HEAD> </HEAD> <body>

<form runat="server" ID="Form1">

<h4>Balance Inquiry Screen</h4>

Select an Account Number:

<asp:DropdownList id="cboAcno"

runat="server" width="100"/>

Balance from Account Number Search:&nbsp;

<asp:Textbox id="txtBalance1"

runat="server" width="80"/>

<hr>

Select an Customer Name:www.syngress.com

<asp:DropdownList id="cboName"

runat="server" width="110"/>

Balance from Customer Name Search :&nbsp;

<asp:Textbox id="txtBalance2"

runat="server" width="80"/>

<asp:Button id="cmdDetails" Text="Show

Balances" runat="server" onClick="showNames"/> </form>

Tìm hiểu cơng nghệ XML và xây dựng hệ thống quản lý dịch vụ khách hàng

private void Page_Load(object sender, System.EventArgs e) {

if(!Page.IsPostBack) {

XPathDocument myDoc = new

XPathDocument(Server.MapPath("Bank3.xml")); XPathNavigator myNav = new XPathNavigator();

myNav = myDoc.CreateNavigator();

XPathNodeIterator myIter = new XPathNodeIterator();

myIter=myNav.Select("Bank/Account[child::State='OH']/Name"); //Điền giá trị Account Number vào DropDownList

myIter=myNav.Select("//@*"); //Lấy tất cả các thuộc tính

while (myIter.MoveNext()) {

cboAcno.Items.Add(myIter.Current.Value); }

//Điền giá trị Name vào DropDownList

myIter=myNav.Select("/Bank/Account/Name"); while (myIter.MoveNext()) { cboName.Items.Add(myIter.Current.Value); } } }

private showsNames(object sender, System.EventArgs e) {

//Lấy giá trị của item được chọn

string accNo = cboAcno.SelectedItem.Text.Trim(); XPathDocument myDoc = new

XPathDocument(Server.MapPath("Bank3.xml")); XPathNavigator myNav = new XPathNavigator();

myNav = myDoc.CreateNavigator();

XPathNodeIterator myIter = new XPathNodeIterator();

//Truy vấn để lấy nút Balance từ AccounNo

Tìm hiểu cơng nghệ XML và xây dựng hệ thống quản lý dịch vụ khách hàng

accNo+"']/Balance"); myIter.MoveNext();

//Hiển thị giá trị của nút Balance

txtBalance1.Text=FormatCurrency(myIter.Current.Value); myIter = myNav.Select("descendant::Account[child::Name='"+ accName+"']/Balance"); myIter.MoveNext();

//Hiển thị giá trị của nút Balance

txtBalance2.Text=FormatCurrency(myIter.Current.Value) } </Script> </body> </HTML> 2.2.4. Nhận xét

Như vây chúng ta đã biết được XML là như thế nào và cách sử dụng nĩ ra sao. Và bây giờ câu hỏi đặt ra là tại sao khơng tổ chức dữ liệu chỉ trên tập tin XML thơi mà lại dùng tập tin XML như là một cách lưu trữ hỗ trợ thêm cho việc lưu trữ trên SQL Server. Để trả lời câu hỏi này, chúng ta xem qua sự so sánh sau đây.

2.3. XML và Cơ sở dữ liệu

2.3.1. XML cĩ phải là Cơ sở dữ liệu?

Việc XML cĩ phải là cơ sở dữ liệu hay khơng thật khĩ giải đáp. Vì XML cũng giống như mọi ngơn ngữ khác đĩ là nĩ cũng cĩ ưu điểm và khuyết điểm.

Ưu điểm của XML như chúng ta đã biết ở trên nhưng khuyết điểm của XML ở đây là XML dài dịng và truy xuất chậm. Việc truy xuất chậm là do việc lưu

Tìm hiểu cơng nghệ XML và xây dựng hệ thống quản lý dịch vụ khách hàng

trữ tài liệu XML trong bộ nhớ để phục vụ cho vấn đề truy vấn như chúng ta

đã đề cập trong mơ hình DOM. Vì vậy, sau đây chúng ta sẽ quan tâm đến một

khía cạnh khác của XML. Đĩ là XML cĩ gần gũi như một Cơ sở dữ liệu (CSDL) hay khơng? Câu trả lời là “chỉ một phần nào”. Vì XML cũng cĩ một số điểm giống như CSDL. Đĩ là nĩ cũng cĩ khả năng lưu trữ, cĩ hỗ trợ một số lược đồ như DTD, hay Schema (tương tự như bảng trong CSDL quan hệ). Và trên XML ta cũng cĩ thể thực hiện thao tác truy vấn bằng cách sử dụng XPath, XQuery, XQL,…, và XML cũng cĩ hỗ trợ lập trình trên giao diện. Nhưng một số vấn đề mà XML chưa hỗ trợ như một CSDL. Đĩ là khơng cĩ

chỉ mục, vấn đề bảo mật khơng cao, tính tồn vẹn dữ liệu chưa đáp ứng,

khơng hỗ trợ các trigger, việc truy cập đa người dùng cũng hạn chế, và cuối cùng là khơng cho truy vấn thơng qua nhiều tài liệu,v.v... Như vậy, việc lưu trữ dữ liệu XML như một cơ sở dữ liệu cũng khơng khả thi.

2.3.2. Vai trị XML trong hệ thống hỗ trợ dịch vụ khách hàng hàng

Trước khi đi vào phần này, chúng ta sẽ khảo sát một sự so sánh sau đây

2.3.2.1. Đánh giá các kiểu cơ sở dữ liệu lưu trữ dữ liệu XML

2.3.2.1.1. Sử dụng hệ thống tập tin (file)

Khi lưu trữ XML bằng tập tin (file) thì việc liên kết các thành phần của cấu trúc cây sẽ khơng được hỗ trợ nên việc lưu trữ những liên kết về cấu trúc và ngữ nghĩa của nĩ rất phức tạp. Và trên tập tin khơng thể thực thi được những yêu cầu rút trích dữ liệu phức tạp nên sử dụng hệ thống tập tin sẽ khơng hiệu quả.

Tìm hiểu cơng nghệ XML và xây dựng hệ thống quản lý dịch vụ khách hàng

2.3.2.1.2. Sử dụng CSDL quan hệ

Như chúng ta đã biết, CSDL quan hệ xây dựng dựa trên cấu trúc bảng nên khơng phù hợp cho cấu trúc phân cấp và kết nối tự nhiên trong nội dung của XML. Nếu chúng ta cố gắng lưu trữ trong CSDL quan hệ cho phù hợp bằng các bảng dữ liệu và các mối quan hệ thì sẽ phá vỡ cấu trúc đối tượng và ngữ nghĩa của XML, phải chịu sự trùng lắp trong thiết kế dữ liệu,…Và vấn đề tiếp theo là sẽ nặng nề trong việc xử lý nhúng và đáp ứng các yêu cầu phức tạp mà cấu trúc XML đưa ra. Như vậy, CSDL quan hệ là lựa chọn thơng minh trong

nhiều ứng dụng khác, nhưng nĩ khơng phù hợp và khơng hiệu quả cho việc

lưu trữ dữ liệu phân cấp của XML.

2.3.3. Mơ hình lưu trữ trong hệ thống quản lý dịch vụ khách hàng (eSupport) khách hàng (eSupport)

Do đã giới thiệu về những ưu điểm và khuyết điểm khi lưu trữ trên tập tin XML hay trên CSDL quan hệ, nên nhĩm chúng em quyết định tích hợp cả hai mơ hình trên trong hệ thống eSupport, nghĩa là kết hợp việc lưu trữ dưới dạng tập tin XML và CSDL quan hệ. Việc sử dụng cách này với mục đích:

ƒ Tận dụng được ưu điểm và khắc phục những yếu điểm của hai cách lưu

trữ trên.

ƒ Thích hợp cho việc tìm kiếm trong hệ thống eSupport.

Tìm hiểu cơng nghệ XML và xây dựng hệ thống quản lý dịch vụ khách hàng

Chương 3: MƠ TẢ HỆ THỐNG QUẢN LÝ DỊCH VỤ KHÁCH HÀNG

3.1. Đối tượng sử dụng

Việc trao đổi thơng tin diễn ra giữa khách hàng và doanh nghiệp liên quan

đến sản phẩm và dịch vụ của doanh nghiệp. Khi khách hàng cĩ yêu cầu hay

thắc mắc về sản phẩm và dịch vụ của doanh nghiệp, khách hàng cĩ thể gửi yêu cầu về doanh nghiệp để được giải đáp. Trong doanh nghiệp, sẽ cĩ một bộ phận nhân viên chuyên trách việc giải đáp các yêu cầu cho khách hàng. Do cĩ nhiều sản phẩm và dịch vụ khác nhau nên bộ phận nhân viên của cơng ty cũng

được chia ra theo từng lĩnh vực cần giải đáp.

Trên cơ sở đĩ, một hệ thống hỗ trợ dịch vụ khách hàng được xây dựng

nhằm phục vụ cho việc trao đổi giữa các nhân viên (doanh nghiệp) và khách hàng được dễ dàng và nhanh chĩng. Đối tượng sử dụng chính của hệ thống là khách hàng, nhân viên của doanh nghiệp, và quản trị hệ thống.

3.2. Mơ tả hệ thống quản lý dịch vụ khách hàng

Hệ thống bao gồm hai phân hệ chính là phân hệ hỗ trợ khách hàng và phân hệ hỗ trợ hệ thống.

3.2.1. Phân hệ hỗ trợ khách hàng

Khi khách hàng cĩ nhu cầu tìm kiếm thơng tin, giải đáp thắc mắc về doanh nghiệp, khách hàng cĩ thể vào khu vực dịch vụ khách hàng để tìm kiếm và xem nội dung các câu hỏi - trả lời cĩ sẵn trong hệ thống FAQ. Hệ thống FAQ là phần quản trị các câu hỏi và câu trả lời cĩ sẵn, các câu hỏi này tập hợp các

Tìm hiểu cơng nghệ XML và xây dựng hệ thống quản lý dịch vụ khách hàng

câu hỏi thường gặp được tập trung lại để phục vụ khách hàng. Hệ thống FAQ

được chia theo chủ đề bất kỳ và cĩ thể cho khách hàng tìm kiếm theo từ khố.

Trường hợp khách hàng cần biết các thơng tin nhưng khơng cĩ sẵn trong hệ thống, khách hàng sẽ đăng ký một tài khoản khách hàng (chỉ một lần) và mở một hay nhiều yêu cầu cho một hay nhiều vấn đề tại một hay nhiều thời

điểm khác nhau. Hay khách hàng khơng cần vào website, khách hàng chỉ cần

gửi email tới support@tendn.com, hệ thống sẽ tự động tạo một tài khoản

(account) và tạo một yêu cầu hỗ trợ trên hệ thống, đồng thời hệ thống sẽ gửi thơng tin tài khoản mới cho khách hàng bằng email. Hệ thống cũng sẽ gửi một email để thơng báo cĩ yêu cầu hỗ trợ này cho nhân viên doanh nghiệp.

Khách hàng cĩ thể theo dõi tiến trình xử lý yêu cầu của nhân viên doanh

nghiệp qua email (khi yêu cầu đang được nhân viên xem xét thì khách hàng

nhận được email, thơng báo về quá trình giải quyết yêu cầu của doanh

nghiệp).

Khách hàng cũng nhận được các thơng báo về sản phẩm mới, dịch vụ,

khuyến mãi do doanh nghiệp đưa ra.

3.2.2. Phân hệ hỗ trợ hệ thống

Trong phân hệ này được chia làm hai đối tượng sử dụng chính là: quản trị và nhân viên.

3.2.2.1. Đối tượng nhân viên (staff)

Mỗi nhân viên sẽ được phân cơng phụ trách giải đáp yêu cầu của một hay nhiều phịng ban. Khi nhân viên đăng nhập vào tài khoản của mình thì tất cả

Tìm hiểu cơng nghệ XML và xây dựng hệ thống quản lý dịch vụ khách hàng

nhân viên đĩ xem xét. Nhân viên sẽ xem xét và trả lời các yêu cầu của khách hàng trong thời gian nhanh nhất cĩ thể. Khi yêu cầu được giải quyết xong thì

trạng thái của nĩ sẽ được thay đổi, nếu như khách hàng cĩ đăng ký nhận trả

lời qua email thì nội dung câu trả lời sẽ được gởi đến cho người sử dụng qua email của họ.

Trong trường hợp phịng ban nhận yêu cầu khơng trả lời được thì nhân

viên quản trị sẽ chuyển qua phịng ban phù hợp để xử lý.

Nhân viên cĩ thể lựa chọn trong các yêu cầu khách hàng gửi lên, yêu cầu nào mới (chưa cĩ trong hệ thống câu hỏi-trả lời), thường xuyên cần được giải đáp thì nhân viên sẽ cập nhật vào hệ thống FAQ.

3.2.2.2. Đối tượng quản trị viên (admin)

Quản trị viên cĩ chức năng quản trị chung hệ thống, quản lý cấu hình hệ thống, đảm bảo cho hệ thống hoạt động tốt.

Quản trị viên quản lý người dùng trong hệ thống bao gồm các thao tác thêm, xĩa, sửa tài khoản người dùng và nhân viên. Thực hiện phân quyền cho các nhân viên.

Quản trị viên cũng theo dõi các yêu cầu và trả lời, chọn lựa yêu cầu nào mới, thường được khách hàng quan tâm để cập nhật FAQ.

Quản trị viên quản lý, theo dõi chặt chẽ quá trình xử lý yêu cầu của các nhân viên, đảm bảo khách hàng khơng phải chờ đợi lâu. Nếu cĩ yêu cầu nào bị giải quyết chậm trễ ngưng trệ thì quản trị phải nhắc nhở bằng email tới các nhân viên và các phịng ban.

Tìm hiểu cơng nghệ XML và xây dựng hệ thống quản lý dịch vụ khách hàng

3.3. Xác định yêu cầu chức năng hệ thống

3.3.1. Yêu cầu chức năng nghiệp vụ

3.3.1.1. Nhĩm chức năng dành cho người dùng chung

™ Tìm kiếm FAQ

Một phần của tài liệu tìm hiểu công nghệ xml và xây dựng hệ thống quản lý dịch vụ khách hàng (Trang 39)

Tải bản đầy đủ (PDF)

(126 trang)