2. 3 Khuôn dạng thông ñiệp SOAP
3.2.2.2 -Biểu ñồ ca sử dụng
kiemtraketnoi Dslam Kich_hoat_lai_trang_thai thay_doi_goi_cuoc DoThu_thamso_chatluong hethong_dieuhanh _tacnghiep <<users>> <<uses>> <<users>> quantri_tt_dslam Nguoi_quantri <<uses>> <<uses>> <<uses>> kiemtra_tontai_dslam <<users>> <<uses>> <<users>> Hình 3.2.2.2 - Biểu ñồ ca sử dụng 3.2.2.2.1 Danh sách các tác nhân
Hethong_dieuhanh_tacnghiep: Là các ứng dụng thực hiện chức năng ñiều hành tác nghiệp của ñơn vị, kết nối và thông qua dịch vụ Web yêu cầu thực hiện các chức năng ño thử các tham số chất lượng, thay ñổi trạng thái, thay ñổi gói cước của cổng.
Nguoi_quantri: Thực hiện cập nhật các thông tin về mã(code), ñịa chỉ ip của DSLAM.
Dslam: Thiết bị cung cấp dịch vụ truy internet.[1]
3.2.2.2.2 ðặc tả các Use Case
DoThu_thamso_chatluong:
83
o Mô tả: Người sử dụng dùng giao diện chương trình ñiều hành tác nghiệp nhập thông tin về mã dslam, ñịa chỉ vật lý của cổng thuê bao trên dslam ñó và yêu cầu thực hiện lệnh ño các tham số chất lượng.
o Chức năng: Tìm ñịa chỉ ip của dslam, kiểm tra kết nối mạng, tính toán Ifindex và OID tương ứng với cổng thuê bao ñược yêu cầu, thực hiện thao tác Get của SNMP vào dslam thông qua ñịa chỉ IP.
thay_doi_goi_cuoc:
o Tác nhân tham gia: hethong_dieuhanh_tacnghiep, dslam.
o Mô tả: Người sử dụng dùng giao diện chương trình ñiều hành tác nghiệp nhập thông tin về mã dslam, ñịa chỉ vật lý của cổng thuê bao trên dslam ñó và yêu cầu thực hiện lệnh thay ñổi gói cước của thuê bao.
o Chức năng: Tìm ñịa chỉ ip của dslam, kiểm tra kết nối mạng, tính toán Ifindex và OID tương ứng với cổng thuê bao ñược yêu cầu, thực hiện thao tác Set của SNMP vào dslam thông qua ñịa chỉ IP.
Kich_hoat_lai_trang_thai:
o Tác nhân tham gia: hethong_dieuhanh_tacnghiep, dslam.
o Mô tả: Người sử dụng dùng giao diện chương trình ñiều hành tác nghiệp nhập thông tin về mã dslam, ñịa chỉ vật lý của cổng thuê bao trên dslam
ñó và yêu cầu thực hiện lệnh Thực hiện chức năng thay ñổi trạng thái
hoạt ñộng của một cổng thuê bao, ví dụ: chuyển từ trạng thái hoạt ñộng(active) về trạng thái ñóng(deactive), hoặc ngược lại..
o Chức năng: Tìm ñịa chỉ ip của dslam, kiểm tra kết nối mạng, tính toán Ifindex và OID tương ứng với cổng thuê bao ñược yêu cầu, thực hiện thao tác Set của SNMP vào dslam thông qua ñịa chỉ IP.
quantri_tt_dslam:
o Tác nhân: Nguoi_quantri.
o Mô tả: Cung cấp gia diện và kết nối cơ sở dữ liệu cho phép người quản trị cập nhật thông tin về mã và ñịa chỉ IP của một dslam.
84
o Chức năng: kết nối cơ sở dữ liệu, thêm mới, sửa, xóa và truy vấn thông tin về dslam.
kiemtra_tontai_dslam: Các use case a,b,c trước khi kết nối và thực hiện lệnh snmp vào dslam, sử dụng use case này ñể kiểm tra xem có tồn tại dslam ñó trên mạng khai thác không, nếu có thì nó trả về ñịa chỉ ip của dslam ñó, nếu không thì thông báo không tồn tại dslam.
Kiemtraketnoi: Sau khi tìm ñược ñịa chỉ ip của dslam, các use case a,b,c sử dụng use case này kiểm tra xem có thể kết nối ñược tới dslam không.[1]
3.2.2.3 Biểu ñồ lớp
SNMP
read_community : String = public write_community : String = private udp_port : Integer = 161 snmpGet(ip,oid)() snmpSet(ip,oid,valuetype,value)() Ping PingTest(ip)() Dslams dbname : String dbuser : String dbpassword : String servername : String Dslams(db,server,user,password)() getIpByCode(code)() LenhSNMP oids : String ip : String port : Integer tinhIfindex() getThamSoChatLuong() setTrangThaiCong(status)() setGoiCuoc(profile)() DoThu loaiDslam : String getPortInfByCode(code,port)() getSnmpInf(ip,loaidslam, port, oid)() setPortStatus(code,loaidslam,port,status)() setLineProfile(code,loaidslam,port,profile)() +* +1 +* +1 +* +1 Hình 3.2.2.3 - Biểu ñồ lớp Lớp SNMP
o Chức năng: Là lớp supper ñược kế thừa bởi lớp lenhSNMP, chịu trách nhiệm chính trong việc xây dựng các phương thức get, set,… của giao thức SNMP.
o Các thuộc tính
Read_community: kiểu dữ liệu là String, lưu trữ và thể hiện thông
tin về mật khẩu(community) quyền ñọc(read-only) các thông tin của thiết bị khi thực hiện phương thức get. ñược mô tả trong phần bảo mật của SNMP, thường mặc ñịnh là “public”.
Write_community: kiểu dữ liệu là String, lưu trữ và thể hiện thông
85
của thiết bị khi thực hiện phương thức set. ñược mô tả trong phần bảo mật của SNMP, thường mặc ñịnh là “private”.
udp_port: số cổng mà thiết bị ñang mở ñể giao tiếp với hệ thống
quản lý bằng giao thức SNMP, mặc ñịnh là 161.
o Các phương thức
snmpGet: ñây chính là nội dung cài ñặt của phương thức get trong
mô tả giao thức SNMP.
snmpSet: ñây chính là nội dung cài ñặt của phương thức set trong
mô tả giao thức SNMP. Lớp LệnhSNMP
o Chức năng: ðịnh nghĩa các ñối tượng cho từng loại dslam cụ thể, tùy vào từng loại mà việc tính Ifindex, OID và có thể là ñịa chỉ IP khác nhau. Kế thừa các thuộc tính và phương thức của lớp SNMP ñể thực hiện gửi lệnh SNMP và Dslam theo từng yêu cầu cụ thể.
o Các thuộc tính
Oids: khai báo thông tin về ñịnh danh của một ñối tượng quản lý
trong MIB.
IP: ñịa chỉ IP quản lý của Dslam.
Port: ðịa chỉ vật lý cổng thuê bao internet cần thực hiện lệnh ñể
nhận hoặc thiết lập thông tin. Nó xác ñịnh vị trí vật lý của một thuê bao trên Dslam, nó bao gồm các thông số frame(mã số rack chứa Dslam), slot(sô thứ tự chỉ vị trí card thuê bao trên rack), port(số hiệu của thuê bao trên slot, mỗi slot có thể có 32 hoặc 64 port)
o Các phương thức
TinhIfindex: Port cần ñược chuyển ñổi ra dạng index phù hợp với
quy ñịnh ñánh số của mỗi loại Dslam. Việc chuyển ñổi phải dựa theo một công thức ñược cung cấp riêng của từng hãng cung cấp Dslam.
86
getThamSoChatLuong: phương thức thực hiện thao tác snmpGet
của lớp SNMP sau khi ñã tính Ifindex.
setTrangThaiCong: phương thức này cũng thực hiện tính Ifindex
và sau ñó gọi phương thức snmpSet của lớp cha SNMP, thiết lập trạng thái của một cổng thuê bao.
setGoiCuoc: thiết lập tên gói cước sử dụng cho một cổng thuê bao.
Sau khi tính Ifindex nó gọi phương thức snmpSet của lớp cha SNMP.
Lớp Dothu
o Chức năng: Tạo một ñối tượng lenhSNMP ñể thực hiện các lệnh ño các tham số ñanh giá chất lượng cổng.
o Các thuộc tính: Thuộc tính loaiDslam cho phép chương trình biết phải tạo ra ñối tượng lenhSNMP phù hợp với Dslam tương ứng.
o Các phương thức:
getPortInfByCode: Thực hiện một loạt các lệnh tương ứng với các
tham số chất lượng cổng.
setPortStaus: Phương thức thực hiện lệnh thiết lập trạng thái cổng setLineProfile: Phương thức thực hiện lệnh gán tên một gói cước
cho một cổng. Lớp Dslams
o Chức năng: Mở một kết nối tới cơ sở dữ liệu lưu trữ thông tin về ñịa chỉ IP và mã(code) của các DSLAM trên mạng. Trả về ñịa chỉ IP và chủng loại dslam tương ứng với code ñó.
o Các thuộc tính:
Dbname: tên cơ sở dữ liệu
Username: tên ñăng nhập cơ sở dữ liệu Password; mật khẩu ñăng nhập cơ sở dữ liệu
Servername; tên hoặc ñịa chỉ ip của máy chủ cơ sở dữ liệu
87
getIpFromCode: mở kết nối và truy vấn thông tin dslam theo
mã(code). Lớp Ping
o Chức năng: kiểm tra kết nối từ máy chủ thực hiện lệnh và dslam.
o Các phương thức:
PingTest: thực hiện lệnh “ping” tới ñịa chỉ Ip cần kiểm tra.[1]
3.2.2.4 Biểu ñồ tuần tự : hethong_dieuhanh_tacnghiep : hethong_dieuhanh_tacnghiep : DoThu
: DoThu : Dslams : Dslams : Ping : Ping sn : LenhSNMP sn : LenhSNMP : Dslam : Dslam getPortInforByCode(code,port) getIP(code)
khong ton tai code khong ton tai code
pingtest(ip)
ping command reply
khong ket noi duoc
getSnmpInfor(ip,port,oidindex) new(ip,oidindex,port,community,udpport) getThamsoChatLuong() snmpGet(ip,OID+Ifindex) msg msg msg while(param<max_param) end while tinhIfindex( ) Hình 3.2.2.4 - Biểu ñồ tuần tự 3.2.2.5 Kết quả triển khai sử dụng
Chúng tôi xin trình bày giao diện web của chương trình ñiều hành sửa chữa sử dụng dịch vụ Web trên:
88 - ðo chất lượng cổng
Hình 3.2.2.5.1 - Giao diện ño thử chất lượng - ðổi tốc ñộ cổng - ðổi tốc ñộ cổng
Hình 3.2.2.5.2 -Giao diện ñổi tốc ñộ cổng - Xem và reset trạng thái - Xem và reset trạng thái
Hình 3.2.2.5.3 -Giao diện xem trạng thái và reset cổng - Kiểm tra khả năng phát triển dịch vụ - Kiểm tra khả năng phát triển dịch vụ
89
3.3 Thuê bao ñiện thoại cốñịnh 3.3.1 Chức năng hệ thống
Hệ thống là một Dịch vụ Web kết nối bằng phương thức telnet tới ñịa chỉ IP tương ứng với mỗi tổng ñài. Mỗi khi có yêu cầu từ hệ thống người dùng bên ngoài, chuyển các yêu cầu thành dạng lệnh khai thác tương ứng với loại tổng ñài, gửi lệnh vào tổng ñài, nhận và gửi trả kết quả cho hệ thống ñã yêu cầu vào. Hệ thống cung cấp các phương thức xử lý các nghiệp vụ:
ðo thử các tham số chất lượng ñường dây thuê bao: Mỗi khi thuê bao thông báo yêu cầu kiểm tra sửa chữa, bộ phận tiếp nhận sẽ sử dụng chức năng này ñể thu thập thông tin về chất lượng thuê bao, ñánh giá, gửi cho bộ phận hỗ trợ trực tiếp nếu cần, bộ phần này sẽ căn cứ vào các thông tin ñó ñể có cách sửa chữa phù hợp.
Thực hiện thay ñổi các dịch vụ giá trị gia tăng của thuê bao: mở/ñóng hướng gọi liên tỉnh, quốc tế, di ñộng, 108, vvv, treo do nợ cước hoặc thuê bao yêu cầu, khôi phục nợ cước hoặc thuê bao yêu cầu, tháo hủy thuê bao không sử dụng ñể giải phóng cổng của tổng ñài.
Truy vấn thông tin cấu hình thuê bao: Khi tiếp nhận yêu cầu chăm sóc từ thuê bao, trước khi thực hiện hai mục trên, nhân viên tiếp nhận dựa vào yêu cầu của thuê bao ñể thực hiện tính năng này ñể kiểm tra tình trạng thuê bao xem ñã tồn tại dịch vụ thuê bao yêu cầu hay chưa?, ñang ñóng hay mở cước?, hoặc bị cấm hướng gọi? Sau ñó sẽ thực hiện một trong hai chức năng trên.
90
3.3.2 Thiết kế hệ thống
3.3.2.1 Mô hình và kiến trúc hệ thống 3.3.2.1.1 Mô hình hệ thống
Hình 3.3.2.1.1 – Mô hình triển khai dịch vụ Web(webservice)
dịch vụ Web ñược cài ñặt trên một máy chủ nằm giữa mạng liên kết giữa các tổng ñài (Host) và mạng các máy tính ñiều hành sản xuất.
3.3.2.1.2 Kiến trúc hệ thống
Do hệ thống tổng ñài chuyển mạch chỉ cho phép thực hiện tuần tự lệnh vì vậy tại một thời ñiểm chỉ thực hiện một lệnh của một tổng ñài. Hệ thống cung cấp các hàng ñợi tương ứng với từng tổng ñài như vậy tại một thời ñiểm có thể gửi ñồng thời nhiều lệnh ño cho nhiều tổng ñài khác nhau. Các yêu cầu ñược hệ thống phân loại và ñưa vào hàng ñợi tương ứng, sau ñó hệ thống tự ñộng lấy yêu cấu từ hàng ñợi phân tích nội dung, thành lập lệnh theo ñúng cú pháp của tổng ñài, kết nối và gửi lệnh váo tổng ñài, khi tổng ñài trả về kết quả hệ thống gửi kết quả ñó vào hàng ñợi kết quả, hoàn tất quy trình thức hiện một yêu cầu. Quy trình trên ñược hệ thống lặp lại với các yêu cầu ñược gửi lên hàng ñợi cho ñến khi hàng ñợi không còn yêu cầu nào. Hệ thống là một dịch vụ Web thực hiện cơ chế không ñồng bộ, các yêu cầu ñược gửi lên hàng ñợi qua một phương thức của dịch vụ Web, sau ñó kết quả ñược gửi trả lại vào một hàng ñợi khác, hệ thống tác nghiệp sẽ ñăng ký ñể nhận kết quả này thông qua một phương thức khác của dịch vụ Web[7].
Các ứng dụng sử dụng WS Webservice Nport 1 Host 1 Nport 2 Host 2 Nport n Host n …. Mạng Metronet Mạng ðHSXKD
91
Hình 3.3.2.1.2.1 - Thông ñiệp ñi qua các hàng ñợi tương ứng với các tổng ñài(Host) Hình 3.3.2.1.2.2 - Kiến trúc hệ thống tổng quát Hàng ñợi yêu cầu Hàng ñợi kết quả File XML danh sách Host,IP, Acc ðiều khiển trung tâm Ping/Ktra kết nối Telnet Ghi log
92 3.3.2.2 Biểu ñồ ca sử dụng Queue Host KiemTraTonTaiHost KiemTraKetNoi LayYCTuHangDoi GuiYC_vaoHangDoi GuiLenhVaoHost GuiKetQuaVaoHangDoiTopic HeThong_DieuHanh_TacNghie p Topic DangKyNhanKetQua QuanTri KhoiDongQueueListener NguoiQuantriHeThong <<uses>> <<uses>> <<communicate>> <<communicate>> <<uses>> Hình 3.3.2.2 - Biểu ñồ ca sử dụng 3.3.2.2.1 Các tác nhân Hethong_DieuHanh_Tacnghiep: Là các hệ thống phần mềm thực hiện các nghiệp vụ khác nhau của ñơn vị, thực hiện kết nối với dịch vụ Web ñể thực hiện một nghiệp vụ nào ñó, ví dụ như truy vấn hồ sơ thuê bao, do thử chất lượng ñường dây,..
Queue: Là hàng ñợi lưu các yêu cầu do người sử dụng thông qua giao diện các hệ thống tác nghiệp gửi lên, chờ ñược dịch vụ Web thực hiện.
Topic: Là hàng ñợi lưu kết quả của một yêu cầu sau khi dịch vụ Web ñã thực hiện.
NguoiQuantriHeThong: Quản lý, cập nhật thông tin về các tổng ñài, như mã,
ñịa chỉ IP, port telnet. Thực hiện khởi ñộng các luồng chờ(Listenner) nhận
yêu cầu lên hàng ñợi.
Host: Tổng ñài chuyển mạch, cung cấp dịch vụ ñiện thoại cố ñịnh.[1]
3.3.2.2.2 Các ca sử dụng
GuiYC_vaoHangDoi: Phương thức cho phép các hệ thống tác nghiệp gửi yêu cầu vào hàng ñợi.
93
DangKyNhanKetQua: Các hệ thống tác nghiệp sử dụng phương thức này ñăng ký là một thuê bao của dịch vụ Web ñể nhận kết quả của yêu cầu. LayYCTuHangDoi: Các yêu cầu trên hàng ñợi tự ñộng ñược lấy ra ñể thực hiện.
GuiLenhVaoHost: Gửi lệnh vào tổng ñài và ñợi kết quả từ tổng ñài.
GuiKetQuaVaoHangDoiTopic: Sau khi có kết quả thì gửi vào hàng ñợi kết quả.
KiemTraTonTaiHost: Truy vấn và kiểm tra xem mã tổng ñài có tồn tại không, nếu có thì trả về IP và Port telnet ñể chuẩn bị kết nối, nếu không thì trả thông báo không tồn tại.
KiemTraKetNoi: Thực hiện lệnh ping ñể kiểm tra kết nối mạng trước khi thực hiện lệnh.
QuanTri: Quản trị thông tin về tổng ñài
KhoiDongQueueListener: Mỗi hàng ñợi ñược xây dựng dưới dạng một luồng(Thread), luồng này sẽ ñược khởi ñộng trước ñể mở hàng ñợi cho phép các yêu cầu ñược nhận vào.[1]
94 3.3.2.3 Biểu ñồ lớp clsTelnet telnet : TelnetClient in : InputStream out : OutputStream timeout : Integer = 50 new(ip,port)() isOpen() disConnect() Login(user,password)() readUntil(stop_prompt)() write(msg)() sendCommand(msg,stop_prompt)() clsTextListener onMessage(msg)() clsPing PingTest(ip)() clsHostTelnet atc : clsTelnet dothu(code,sub)() getSubInf(code.sub)() setupService(code,sub,command,service)() clsTopicSubcriber connectionFactory : String topicname : String setTopic(topicname)() getSynchronousMessage() clsService getJMSTopicResult() jmsSendToHost(host,sub,option)() jmsSendToHostSetupService(host,sub,command,service)() clsInitQueueListener queue_name : String thQueueStart[] : Thread run() main() clsHostInf hostname : String hostip : String telnet_port : Integer = 23 loai_host new(connectString)() searchByHost() getHostIP()() getListHost()() clsAsynQueueConsumer getAsynchConsumer(queue)() clsTopicPublisher connectionFactory : String topicname : String setTopic(topicname)() sendToClient(msg)() clsQueueProducer sendToClient(msg,queue)() clsContext context_url username password context_package getInitContext()() Hình 3.3.2.3 - Biểu ñồ lớp a. clsTelnet:
Chức năng: Cung cấp các phương thức kết nối trực tiếp với tổng ñài, ñăng nhập, gửi lệnh, ñọc và chờ kết quả từ tổng ñài, ñóng kết nối.
Các thuộc tính:
- telnet: ñối tượng cụ thể của lớp TelnetClient, thực hiện mở một kết nối bằng telnet.
- Inputstream: ñối tượng xử lý luồng dữ liệu vào của telnet. - Outputstream: ñối tượng xử lý luồng dữ liệu cả telnet
- Timeout: thời gian tối ña ñể thực hiện và ñọc kết quả của một lệnh mà telnet thực hiện.
95 Các phương thức:
- New: Tạo mới một ñối tượng clsTelnet, mở một phiên telnet tới ip và port, tương với một tổng ñài cụ thể.
- isOpen: cho biết trạng thái ñóng hay mở của phiên telnet. - DisConnect: ñóng phiên telnet.
- Login: ñăng nhập vào phiên telnet
- readUntil: ñọc luồng dữ liệu ra của phiên telnet, kết thúc khi gặp chuỗi ký tự stop_promt.
- Write: gửi một thông ñiệp vào vào phiên telnet
- sendCommand: gửi một lệnh vào phiện telnet, chờ kết quả trả ra của telnet, kết thúc khi gặp chuỗi stop_promt.
b. clsHostTelnet.
Chức năng: Thể hiện một tổng ñài cụ thể, cung cấp các phương thức thực hiện các yêu cầu.
Thuộc tính:
- Atc: ñối tượng sử dụng clsTelnet, mở phiên telnet vào tổng ñài. Phương thức:
- Dothu: Thực hiện lệnh ño thử vào tổng ñài tương ứng với tham số code và số thuê subc
- getSubInf: Truy vần thông tin về một thuê bao(subc) của tổng ñài tương ứng với mã tổng ñài.
- setupService: cái ñặt các dịch vụ gia tăng dichvu, cho thuê bao subc, của tổng ñài code.
c. clsPing: Cung cấp phương thức kiểm tra kết nối từ máy chủ dịch vụ Web tới một ñịa chỉ IP.
d. clsHostInf:
Chức năng: Cung cấp các phương thức tìm kiếm của một tổng ñài cần kết nối trong cơ sở dữ liệu.
96 - Hostname: Mã tổng ñài
- Hostip: ñịa chỉ IP tương ứng với mã tổng ñài
- Telnet_port: cổng sử dụng ñể kết nối tới tổng ñài qua phương thức telnet