CHƢƠNG 3 : THỰC NGHIỆM VÀ ĐÁNH GIÁ KẾT QUẢ
3.1. Ph nt ch thiết kế hệ thống
3.1.3. Sơ đồ chi tiết hệ thống
Hình 3.3. Sơ đồ chi tiết hệ thống
Application: Cung c p các chức năng cho người sử dụng.
Chức năng Đăng nhập: người nhân viên đi ghi chỉ số sẽ dùng tài khoản được cung c p vào chương trình. Nhân viên đi ghi chỉ số có nhiệm vụ sử dụng các chức năng để khai báo các thông tin về khách hàng cũng như thông tin chỉ số công tơ đi ghi được.
Chức năng Quản lý thông tin nhân viên đi ghi chỉ số: gồm các thao tác thêm sửa xóa thông tin nhân viên.
Chức năng Quản lý thông tin khách hàng: gồm thao tác thêm sửa xóa thông tin khách hàng.
Chức năng Quản lý thông tin ghi chỉ số công tơ: định kỳ hàng tháng nhân viên sẽ sử dụng chức năng này để cập nhật thông tin chỉ số công tơ mà khách hàng đang sử dụng.
Chức năng xem thông tin khách hàng và xem chỉ số công tơ: cho phép người dùng hoặc nhân viên truy cập thông tin khách hàng để tra cứu.
Resful API: Cung c p các hàm API - Thêm, xóa, sửa, thông tin nhân viên. - Thêm, xóa, sửa thông tin khách hàng. - Cập nhật thông tin chỉ số.
- Tra cứu thông tin khách hàng. - Tra cứu thông tin chỉ số công tơ.
Hyperledger Composer: công cụ cho phép thực hiện các khai báo: - Các đối tượng tham gia vào mạng: EVN USER, KHACH HANG. - Các tài nguyên trong mạng: DANHMUC CONGTO, CHISO KHANG. - SmartContract: giao dịch trong mạng, cụ thể là thay đổi chỉ số công tơ của
khách hàng.
- Quyền hạn truy cập dữ liệu của các đối tượng tham gia vào mạng.
Hyperledger Fabric: mạng blockchain lưu trữ thông tin các đối tượng và tài nguyên.
3.1.4. Thiết kế cơ s d liệu
ảng thông tin khách hàng T n ảng T n ô tả ảng T n trƣờng T n ô tả trƣờng Kiểu dữ iệu KHACH_HANG Lưu trữ thông tin khách hàng sử dụng điện ID ID khách hàng tự sinh STRING
KHACH_HANG maKhachHang Mã khách hàng do nhân
viên đánh số STRING KHACH_HANG tenKhachHang Tên khách hàng chủ hộ
sử dụng đện STRING KHACH_HANG diaChiKH Địa chỉ sử dụng điện STRING
KHACH_HANG tyLeBatThuong
Tỷ lệ cho biết nếu chỉ số công tơ ghi được vượt quá bao nhiêu phần trăm so với 3 tháng liền kề sẽ được tính là có chỉ số tiêu thụ điện b t thường NUMBER ảng thông tin nh n vi n T n ảng T n ô tả ảng T n trƣờng T n ô tả trƣờng Kiểu dữ iệu
EVN_USER Lưu trữ thông tin
nhân viên ID ID nhân viên tự sinh STRING EVN_USER hoTen Họ tên STRING EVN_USER tenDangNhap Tên đăng nhập
chương trình STRING EVN_USER matKhau Mật khẩu STRING EVN_USER boPhan Bộ phận làm việc STRING
ảng danh ục công tơ
T n ảng T n ô tả ảng T n trƣờng T n ô tả trƣờng Kiểu dữ iệu DANHMUC_CONGTO Lưu trữ thông tin công tơ mà khách hàng đang sử dụng ID ID công tơ tự sinh STRING DANHMUC_CONGTO maCongTo Mã công tơ do nhân viên đánh số STRING DANHMUC_CONGTO tenCongTo Tên công tơ STRING DANHMUC_CONGTO namSanXuat
Năm sản xu t của công tơ
ảng ch số công tơ
T n ảng Mô tả ảng T n cột Mô tả trƣờng dữ iệu Kiểu
CHISO_CONGTO
Lưu trữ thông tin chỉ số công tơ theo thời gian
ID ID chỉ số tự
sinh STRING thang Tháng ghi chỉ
số STRING nam Năm ghi chỉ số STRING maCongTo Mã công tơ STRING
chiSoHienTai
Chỉ số hiện tại của khách hàng
NUMBER
3.2. Kết quả cài đ t ạng ockchain và chạ ứng dụng
3.2.1. Mạng Hyperledger Fabric
Cài đặt mạng
Hình 3.5. Cài đặt mạng.
Mô tả:
Model File: định nghĩa các đối tượng tham gia vào mạng và các tài nguyên trong mạng.
Script file: chain code mô tả giao dịch ghi chỉ số.
Access Control: định nghĩa quyền của các đối tượng tham gia vào mạng có thể tương tác với tài nguyên nào.
Query file: định nghĩa các hàm truy v n thông tin phục vụ tầng API.
3.2.2. Tầng API
Hình 3.7. Cài đặt API từ mạng blockchain. Mô tả:
API CHISO CONGTO: mô tả các hàm tương tác dữ liệu với chỉ số công tơ của khách hàng.
API DANHMUC CONGTO: khai báo công tơ cho khách hàng. API EVN USER: khai báo nhân viên ghi chỉ số.
API KHACH HANG: khai báo thông tin khách hàng.
API Query: mô tả các hàm API phục vụ các ứng dụng truy v n dữ liệu. API System: mô tả các hàm l y lịch sử giao dịch trong hệ thống blockchain. transGhiChiSo: api gọi tới chaincode xử lý giao dịch cập nhật thông tin chỉ số điện.
3.2.3. iểu đồ Usecase tổng quát
Hình 3.8. Biểu đồ Usecase tổng quát. Mô tả các usecase:
T n Usecase
Tác
nh n Tiền điều kiện
Thông tin
đầu vào Thông tin đầu ra
Tra cứu thông tin Khách hàng, nhân viên Khách hàng hoặc nhân viên tìm kiếm thông tin theo mã khách hàng Mã khách hàng cần tìm kiếm Thông tin về khách hàng bao gồm thông tin cá nhân và thông tin chỉ số sử dụng điện Đăng nhập Nhân viên, quản lý Người dùng vào chương trình Tên tài khoản và mật khẩu
Thông tin nhân viên đăng nhập Quản trị thông tin khách hàng Quản lý Quản lý chọn chức năng Quản trị thông tin khách hàng Thông tin về khách hàng cần nhập Khách hàng mới được tạo và lưu vào
blockchain Quản trị thông tin nhân viên Quản lý Quản lý chọn chức năng Quản trị thông tin nhân viên
Thông tin về nhân viên cần nhập
Nhân viên mới được tạo và lưu vào blockchain
Nhập chỉ số Nhân viên Nhân viên chọn chức năng Nhập chỉ số Thông tin khách hàng cần nhập chỉ số Chỉ số mới của khách hàng được nhập và lưu vào blockchain
3.2.4. Chức năng đăng nhập
Hình 3.9. Chức năng đăng nhập.
Mô tả: Chức năng đăng nhập phục vụ cho các đối tượng là nhân viên đi ghi chỉ số hoặc quản lý. Nhân viên đi ghi chỉ số sử dụng các chức năng có trong chương trình để cập nhật thông tin khách hàng và thông tin về chỉ số điện sử dụng hàng tháng. Đối tượng là quản lý có nhiệm vụ quản lý thông tin của nhân viên đi ghi chỉ số, đồng thời có thể tra cứu thông tin khách hàng.
K ch ản hoạt động:
Tên Usecase: Đăng nhập.
Tác nhân chính: Nhân viên, quản lý.
*) Chu i sự kiện chính: 1. Hệ thống hiển thị giao diện đăng nhập.
2. Người dùng nhập tên đăng nhập và mật khẩu.
3. Hệ thống kiểm tra và xác nhận thông tin đã đăng nhập. 4. Hệ thống báo đăng nhập thành công.
5. Hiển thị giao diện chính của hệ thống.
* Ngoại lệ: 1. Hệ thống thông báo thông tin đăng nhập sai và yêu cầu nhập lại hoặc liên hệ với quản trị.
3.2.5. Màn hình chính và menu chức năng
Hình 3.10. Màn hình chính.
Mô tả: Màn hình chính gồm màn hình mô tả thông tin ứng dụng và cây menu các chức năng thao tác trong chương trình. Menu gồm các chức năng:
- Dashboard: màn hình chính.
- Quản trị nhân viên ghỉ chỉ số: quản lý thông tin của nhân viên đi ghi chỉ số điện. - Quản trị thông tin khách hàng: quản lý thông tin khách hàng sử dụng điện. - Nhập chỉ số công tơ ghi chỉ số: nhập liệu thông tin chỉ số công tơ của khách hàng định kỳ theo tháng.
3.3.6. Chức năng Quản trị nhân viên ghi ch số
Mô tả: Chức năng cho phép người quản lý cập nhật thông tin của nhân viên ghi chỉ số, bao gồm các thao tác xem, thêm, sửa, xóa dữ liệu.
K ch ản hoạt động:
Tên Usecase: Quản trị nhân viên ghi chỉ số.
Tiền điều kiện Quản lý đã đăng nhập và chọn chức năng Quản trị nhân viên ghi chỉ số.
Tác nhân chính: Quản lý. *) Chu i sự kiện chí
nh:
1. Hệ thống hiển thị giao diện Quản trị nhân viên. 2. Quản lý nhập liệu các thông tin về nhân viên.
3. Hệ thống kiểm tra và xác nhận thông tin nhân viên hợp lệ. 4. Hệ thống báo Cập nhật thành công.
5. Cập nhật lại danh sách nhân viên đang được hiển thị trên lưới.
* Ngoại lệ: 1. Hệ thống thông báo tên đăng nhập đã tồn tại. 1.1 Quản lý nhập lại tên đăng nhập của nhân viên.
Giao d ch sinh ra: là chu i JSON gồm các thông tin: $class: kiểu đối tượng dữ liệu được tương tác. resources: dữ liệu đầu vào.
targetRegistry: đối tượng dữ liệu.
transactionId: mã giao dịch được sinh ra, phục vụ việc tra cứu lịch sử giao dịch. timestamp: thời điểm giao dịch.
{ "$class": "org.hyperledger.composer.system.AddParticipant", "resources": [ { "$class": "vn.com.evn.blnetwork.EVN_USER", "idUser": "0001",
"hoTen": "Đinh Đức Anh", "tenDangNhap": "anhdd", "matKhau": "123456", "bphan": "BP_GHICHISO" } ], "targetRegistry": "resource:org.hyperledger.composer.system.ParticipantRegistry#vn.com.evn.blnetwork.EVN_USER", "transactionId": "cd69de4b1fa1678ff04b6bf7dbf4ca26b71c669268ff25f5e6a0f1fb96d4f6de", "timestamp": "2019-04-15T08:46:42.844Z" }
3.2.7. Chức năng Quản trị thông tin khách hàng
Hình 3.12. Chức năng Quản trị thông tin khách hàng.
Mô tả: Chức năng cho phép người quản lý cập nhật thông tin của khách hàng sử dụng điện, bao gồm các thao tác xem, thêm, sửa, xóa dữ liệu.
K ch ản hoạt động:
Tên Usecase: Quản trị thông tin khách hàng.
Tiền điều kiện Quản lý đã đăng nhập và chọn chức năng Quản trị thông tin khách hàng.
Tác nhân chính: Quản lý.
*) Chu i sự kiện chính: 1. Hệ thống hiển thị giao diện Quản trị thông tin khách hàng.
2. Quản lý nhập liệu các thông tin về khách hàng. 3. Hệ thống kiểm tra và xác nhận thông tin khách hang hợp lệ.
4. Hệ thống báo Cập nhật thành công.
5. Cập nhật lại danh sách khách hàng đang được hiển thị trên lưới.
* Ngoại lệ: 1. Hệ thống thông báo yêu cầu nhập đầy đủ thông tin. 1.1 Quản lý nhập đầy đủ thông tin của khách hàng.
Giao d ch sinh ra: là chu i JSON gồm các thông tin: $class: kiểu đối tượng dữ liệu được tương tác. resources: dữ liệu đầu vào.
targetRegistry: đối tượng dữ liệu.
transactionId: mã giao dịch được sinh ra, phục vụ việc tra cứu lịch sử giao dịch. timestamp: thời điểm giao dịch.
{ "$class": "org.hyperledger.composer.system.AddParticipant", "resources": [ { "$class": "vn.com.evn.blnetwork.KHACH_HANG", "idKhachHang": "0002", "maKhachHang": "0002",
"tenKhachHang": "Nguyễn Tiến Anh", "diaChiKH": "anhnt", "tyLeBatThuong": 40 } ], "targetRegistry": "resource:org.hyperledger.composer.system.ParticipantRegistry#vn.com.evn.blnetwork.KHACH_HANG", "transactionId": "4d870b8b7afc3381b8d7e1f062273dbb6af1e5df9a5dbce16b62cff4d82e3532", "timestamp": "2019-04-15T08:47:59.703Z" } 3.2.8. Chức n ng Nhập ch số công tơ
Hình 3.13. Chức năng Nhập chỉ số công tơ.
Mô tả: Chức năng cho phép nhân viên nhập liệu thông tin chỉ số công tơ của khách hàng định kỳ theo tháng.
K ch ản hoạt động:
Tên Usecase: Nhập chỉ số công tơ. Tác nhân chính: Nhân viên.
*) Chu i sự kiện chính: 1. Hệ thống hiển thị giao diện Nhập chỉ số công tơ. 2. Người dùng nhập mã khách hang để tìm kiếm. 3. Hệ thống hiển thị thông tin khách hàng.
4. Nhân viên chọn tháng năm ghi chỉ số và nhập thông tin chỉ số mới của khách hàng.
5. Người dùng n Cập nhật.
6. Hệ thống báo Cập nhật thành công.
7. Hệ thống cập nhật lại thông tin của khách hàng đang hiển thị trên lưới.
* Ngoại lệ: 1. Hệ thống thông báo không tìm th y thông tin khách hàng.
1.1 Hệ thống xóa trắng thông tin khách hàng đang có trên lưới.
1.2 Nhân viên nhập lại mã khách hàng để tìm kiếm. 2. Hệ thống thông báo thông tin chỉ số không hợp lệ. 2.1 Nhân viên nhập lại thông tin chỉ số mới.
Chaincode:
/**
* transaction Ghi chi so
* @param{vn.com.evn.blnetwork.transGhiChiSo} transGhiChiSo * @transaction
*/
// Hàm nhận tham số là đối tượng transGhiChiSo asyncfunction transGhiChiSo(thongTinChiSo) { let ok = true;
// Bước 1: l y thông tin khách hàng
let maKH = thongTinChiSo.asset.maKhachHang;
let batThuong = thongTinChiSo.asset.congTo.khSuDung.tyLeBatThuong; let checkChiSo = await query('traCuuChiSo_TheoKH', { "makh": maKH }); console.log('checkChiSo', checkChiSo, batThuong);
// Bước 2: kiểm tra thông tin nhập vào có hợp lệ hay không
// Chỉ số mới nhập vào phải th a mãn điều kiện không được lớn hơn chỉ số // cũ * tỉ lệ b t thường
for (let index = 0; index < checkChiSo.length; index++) { const element = checkChiSo[index];
if ((element.chiSoHienTai * (100 + batThuong) / 100) < thongTinChiSo.chiSoMoi) { console.log('NOT OK');
ok = false; return; } }
// Bước 3: cập nhật thông tin và trả kết quả if (ok) {
console.log('OK');
// Cập nhật thông tin mới vào bảng CHISO CONGTO. const oldValue = thongTinChiSo.asset.chiSoHienTai; // Các thông tin cập nhật gồm: chỉ số mới, tháng, năm.
thongTinChiSo.asset.chiSoHienTai = thongTinChiSo.chiSoMoi; thongTinChiSo.asset.thang = thongTinChiSo.thang;
thongTinChiSo.asset.nam = thongTinChiSo.nam;
const assetRegistry = await getAssetRegistry('vn.com.evn.blnetwork.CHISO_CONGTO'); // Cập nhật.
await assetRegistry.update(thongTinChiSo.asset); }
else {
console.log('BAT THUONG'); }
Giao d ch sinh ra: là chu i JSON gồm các thông tin: $class: kiểu đối tượng dữ liệu được tương tác.
asset: chỉ định đối tượng cụ thể nào tham gia giao dịch, trong trường hợp này là CHISO CONGTO có ID = 135.
chiSoMoi: chỉ số tiêu thụ điện mới công tơ .
thang: tháng thực hiện ghi nhận chỉ số tiêu thụ điện. nam: năm thực hiện ghi nhận chỉ số tiêu thụ điện.
transactionId: mã giao dịch được sinh ra, phục vụ việc tra cứu lịch sử giao dịch. timestamp: thời điểm giao dịch.
{ "$class": "vn.com.evn.blnetwork.transGhiChiSo", "asset": "resource:vn.com.evn.blnetwork.CHISO_CONGTO#5135", "chiSoMoi": "99999", "thang": "1", "nam": "2019", "transactionId": "9f44e5e6153a70f389c40346d9b073ad401281d8b6af32b0ba90d6615aaebaf5", "timestamp": "2019-04-15T09:23:16.728Z" }
3.2.9. Chức năng Tra cứu thông tin khách hàng – ch số
Hình 3.14 Chức năng Tra cứu thông tin khách hàng – chỉ số.
Mô tả: Chức năng cho phép khách hàng sử dụng điện có thể tra cứu thông tin của mình thông qua mã khách hàng.
K ch ản hoạt động:
Tên Usecase: Đăng nhập.
Tác nhân chính: Nhân viên, khách hàng.
*) Chu i sự kiện chính: 1. Hệ thống hiển thị giao diện Tra cứu thông tin khách hàng – chỉ số.
2. Người dùng nhập mã khách hàng cần tìm kiếm. 3. Hệ thống báo tìm kiếm thành công.
4. Hiển thị giao diện thông tin của khách hàng.
* Ngoại lệ: 1. Hệ thống thông báo không tìm th y thông tin theo mã khách hàng.
3.3. Kiể thử phần ề
3.3.1. Kịch bản kiểm thử chức năng Quản trị nhân viên ghi ch số
Mô tả: kiểm thử chức năng Quản trị nhân viên ghi chỉ số nh m đảm bảo thông tin khi người dùng nhập vào được lưu vào blockchain.
Điều kiện tiền đề: người dùng đã đăng nhập vào hệ thống và đã vào chức năng Quản trị nhân viên ghi chỉ số.
Các ƣớc thực hiện:
- Bước 1: người dùng nhập đẩy đủ thông tin nhân viên trên giao diện gồm: tên đăng nhập, mật khẩu, họ tên, bộ phận.
Tên đăng nhập: anhdd . Mật khẩu: 123456 .
Bộ phận: Bộ phận ghi chỉ số . Họ tên: Đinh Đức Anh .
- Bước 2: người dùng n Ghi dữ liệu.
Kết quả ong đợi: thông tin nhân viên được ghi vào blockchain.
Kết quả thực tế: thông tin được ghi vào blockchain và có thể truy cập thông qua API.
Hình 4.15. Kết quả thực tế khi ghi nhận thông tin nhân viên khi truy v n qua API.
3. . Kịch bản kiểm thử chức năng Quản trị thông tin khách hàng
Mô tả: kiểm thử chức năng Quản trị thông tin khách hàng nh m đảm bảo thông tin khi người dùng nhập vào được lưu vào blockchain.
Điều kiện tiền đề: người dùng đã đăng nhập vào hệ thống và đã vào chức năng Quản trị thông tin khách hàng.
Các ƣớc thực hiện:
- Bước 1: người dùng nhập đẩy đủ thông tin khách hàng trên giao diện gồm: tên khách hàng, địa chỉ, tỷ lệ b t thường.
Tên khách hàng: Vũ Anh Khoa . Địa chỉ: Hà Đông .
Tỷ lệ b t thường: 30.
- Bước 2: người dùng n Ghi dữ liệu.
Kết quả ong đợi: thông tin khách hàng được ghi vào blockchain.
Kết quả thực tế: thông tin được ghi vào blockchain và có thể truy cập thông qua API.
Hình 4.16. Kết quả thực tế khi ghi nhận thông tin khách hàng khi truy v n qua API.
3.3.3. Kịch bản kiểm thử chức năng Nhập ch số công tơ
Mô tả: kiểm thử chức năng nhập chỉ số công tơ nh m đảm bảo thông tin khi người dùng nhập vào được lưu vào blockchain.
Điều kiện tiền đề: người dùng đã đăng nhập vào hệ thống và đã vào chức năng Nhập chỉ số công tơ.
Các ƣớc thực hiện:
- Bước 1: người dùng nhập đẩy đủ thông tin chỉ số công tơ trên giao diện gồm: