Bảng 3.1: Danh sách các module
Tên module Công
nghệ Máy cài đặt Ghi chú
Payment1 Java Máy chủ
gateway
Xử lý các giao dịch vấn tin tài khoản, hold, unhold, vấn tin giao dịch gần nhất
Payment2 Java Máy chủ
gateway
Xử lý các giao dịch gửi bảng kê, vấn tin bảng kê, vấn tin các giao dịch hold, unhold
SecurityPayment Java Máy chủ
gateway
Xử lý các giao dịch thanh toán theo lô bảng kê thanh toán, hold, unhold.
Bank
Webservice
.NET Máy chủ
gateway
Xử lý việc kết nối đến Oracle, SIBS, LDAP, MQ phục vụ cho chƣơng trình chi nhánh và HO Chƣơng trình tại
chi nhánh và HO
.NET Máy chi nhánh Xử lý việc quản lý chi nhánh, công
ty chứng khoán, ngƣời sử dụng, xử lý bảng kê giao dịch gửi đến, đối chiếu
Chƣơng trình tại CTCK
VB, .NET Máy công ty chứng khoán
Thực hiện đóng gói message và gửi đến webserivce
BAP
Webservice
Java Mảy chủ BAP Cung cấp giao diện cho chƣơng
trình của công ty chứng khoán, trao đổi với Payment1 và Payment2 thông qua MQ
3.4 Mô hình hóa lớp đối tượng và biểu đồ tuần tự
3.4.1 Mô hình lớp đối tƣợng
Đƣợc viết trên nền tảng Webservice bao gồm các lớp chính: Account, MQInterface, XmlMesage.
a. Lớp Account:
Đƣợc cài đặt trên máy BAP, là máy chủ tại các công ty chứng khoán. Lớp này cung cấp các dịch vụ liên quan đến các nghiệp vụ tƣơng tác với các tài khoản
của nhà đầu tƣ và công ty chứng khoán. Dƣới đây là mô tả về thiết kế lớp Account và các mô tả chi tiết chức năng của các phƣơng thức trong lớp Account.
Bảng 3.1: Thiết kế lớp Account
Bảng 3.2: Mô tả chi tiết lớpAccount
Đối tƣợng Account
Phƣơng thức Chú thích
getBalance Lấy số dƣ khả dụng của khách hàng
holdAccount Phong toả tiền mua chứng khoán của khách hàng
unholdAccount Giải phong toả tiền mua chứng khoán của khách hàng
getLatestHoldTrans Lấy 5 giao dich phong tảo tài khoản gần nhất đối với một tài khoản của khách hàng
postSecuritiesTrans Chuyển bảng kê giao dịch chứng khoán
getHoldTranList Vấn tin các giao dịch đã phong toả trong ngày
getunholdTranList Vấn tin các giao dịch giả phong toả trong ngày
validateUser Xác thực lời gọi Webservice
b. Lớp XmlMesage
Đƣợc cài đặt trên máy chủ BAP của công ty chứng khoán. Là lớp cung cấp các phƣơng thức chuyển đối cấu trúc thông điệp:
Bảng 3.3: Thiết kế lớp XmlMessage
Bảng 3.4: Mô tả chi tiết lớp XmlMessage
Đối tƣợng XmlMesage
Thuộc tính Chú thích
MessageId Mã thông thông điệp
Scid Mã số công ty chứng khoán
CustAcctnumber Số tài khoản của khách hàng
CustAcctName Tên tài khoản của khách hàng
Balance Số dƣ hiện tại
AvailBalance Số dƣ khả dụng
HoldAmount Số tiền cần phong toả
UnholdAmount Số tiền cần giải phong toả
Ref Số tham chiếu dùng cho việc đối chiếu
Transtate Trang thái giao dịch
Desc Chú thích trạng thái giao dịch
TranDate Ngày giao dịch
UserId Mã số ngƣời dùng
DigitalSignatureSc Chữ ký điện tự gửi kèm để xác thực thông điệp
getRequestMessageContent() Lấy nội dung thông điệp yêu cầu getResponseMessageContent() Lấy nội dụng thông điệp phản hồi contructRequestMessage() Tạo nội dung thông điệp yêu cầu contructResponseMessage() Tạo nội dụng thông điệp phản hồi
c. Lớp MqInterface
Đƣợc cài đặt trên máy chủ BAP của công ty chứng khoán và trên cả máy Gateway ngân hàng. Lớp này thực hiện các tác vụ tƣơng tác với IMB Message Queue. Dƣới đây mô tả các phƣơng thức và chức năng của các phƣơng thức trong lớp MqInterface:
Bảng 3.5: Thiết kế lớp MqInterface
Bảng 3.6: Mô tả chi tiết lớp MQInterface
Đối tƣợng MQInterface
Thuộc tính Chú thích
WMQ_PORT Số hiệu cổng của queue cần kết nối
openOptions Cách thức tƣơng tác với queue
SVR_CON Kênh kết nối
MQQManName Tên của Queue Manager
qName Tên queue cần tƣơng tác
outQueue Queue gửi dữ liệu phản hồi
intQueue Queue dữ liệu gửi đến
replyToQueue Tên queue hồi đáp
Phƣơng thức
accessQMgr() Tạo kết nối với queue
SetCnnProperties() Tạo thông số kết nối
sendAsynMsg() Gửi thông điệp ở chế độ không đồng bộ
sendRequestMsg() Gửi thông điệp yêu cầu
getReplyMsg() Phƣơng thức lấy thông điệp phản hồi
c. MQEchoServer
Đƣợc cài đặt trên máy Gateway, xử lý các giao dịch Online
Bảng 3.7: Thiết kế lớp MQEchoServer
Bảng 3.8: Thiết kế lớp MQEchoServer
Đối tƣợng MQEchoServer
Thuộc tính Chú thích
MQQueueManager Tên queue Manager
qName Tên queue cần tƣơng tác
inQueue Queue dữ liệu đến
tellerId Mã số giao dịch viên, sữ dụng để thực hiện giao dịch
trên SIBS
Phƣơng thức Chú thích
dữ liệu tại Queue và xử lý.
checkCutOffTime Kiểm tra giờ đóng cửa giao dịch
getCurrentTime Lấy giờ hiện tại của máy Gateway
d. Lớp SignAndVerify
Cài đặt trên máy chủ công ty chứng khoán BAP và Gateway. Thực hiện ký và xác thực ngƣời dùng với công ty chứng khoán và ngƣời dùng tại các chi nhánh.
Bảng 3.9: Thiết kế lớp SignAndVerify
Bảng 3.10: Mô tả chi tiết lớp SignAndVerify
Đối tƣợng SignAndVerify
Thuộc tính Chú thích
Key Khoá lƣu tại file
Cert Chứng chỉ lƣu trong file
signatureAlgrorithm Giải thuật sử dụng để ký
MPrivateKey Khoá bí mật
fileInputStream Biến chứa nộ dung file đọc vào
Cpassword Mật khẩu mở file
Phƣơng thức Chú thích
sign(() Ký chữ ký điện tử
3.4.2 Biểu đồ tuần tự
a. Phƣơng thức vấn tin tài khoản
: Bidv Gateway : Securities Trading : Account : Bank
Access Point : Bidv Core Banking
Get Balance
SOAP Message
MQ Message
Check CA, Write Log
SIBS Message SIBS Message Write Log Create MQ Message MQ Message SOAP Message Return Balance SCID CustAcctNumber UserId Password Ref DigitalSignatureSC Balance Available Balance TranState ErrDesc
Hình 3.3: Biểu đồ tuần tự phương thức vấn tin tài khoản
Chƣơng trình tại công ty chứng khoán gọi Webservice trên máy BAP, là máy chủ tại công ty chứng khoán, gửi yêu cầu vấn tin tài khoản. Máy BAP đóng gói thành xâu XML ghi vào MQ trên máy BAP. MQ trên máy BAP truyền thông điệp đến MQ trên gateway của ngân hàng, Gateway ngân hàng đọc dữ liệu thông điệp
gửi đến và xử lý gửi dữ liệu đến host là hệ thống máy chủ ngân hàng để yêu cầu xử lý và nhận kết quả trả lại. Sau khi đã nhận đầy đủ thông tin, Gateway đóng gói thành chuỗi XML gửi kết quả trả lại lên MQ tại Gateway. MQ tại Gateway lại truyền dữ liệu cho MQ trên máy BAP. Webservice tại máy BAP nhận dữ liệu và gửi kết quả cho chƣơng trình tại công ty chứng khoán.
: Account : MQInterface : XmlMessage : Securities Trading System 2: validateUser( ) 5: SetCnnProperties( ) 6: accessQMgr( ) 7: sendRequestMsg( ) 3: contructRequestMessage( ) 4: sendMsg( ) 1: getBalance( )
b. Phƣơng thức phong toả tài khoản
: Securities Trading
: Account
: Bank
Access Point Gateway : Bidv
: Bidv Core Banking Hold Account Return Balance SOAP Message SOAP Message MQ Message
Check CA, Write Log
Write Log MQ Message SIBS Message SIBS Message SCID CustAcctNumber UserId Password Ref Desc HoldAmount Write Log
Rev erse Transaction(If Transaction faile d)
Hình 3.5: Biểu đồ tuần tự phương thức phong toả tài khoản
Chƣơng trình tại công ty chứng khoán gọi Webservice trên máy BAP, là máy chủ tại công ty chứng khoán, gửi yêu cầu phong toả tài khoản. Máy BAP đóng gói thành xâu XML ghi vào MQ trên máy BAP. MQ trên máy BAP truyền thông điệp đến MQ trên gateway của ngân hàng, Gateway ngân hàng đọc dữ liệu thông điệp
gửi đến và xử lý gửi dữ liệu đến host là hệ thống máy chủ ngân hàng để yêu cầu xử lý và nhận kết quả trả lại. Sau khi đã nhận đầy đủ thông tin, Gateway đóng gói thành chuỗi XML gửi kết quả trả lại lên MQ tại Gateway. MQ tại Gateway lại truyền dữ liệu cho MQ trên máy BAP. Webservice tại máy BAP nhận dữ liệu và gửi kết quả cho chƣơng trình tại công ty chứng khoán.
: Account : MQInterface : XmlMessage : Securities Trading System 2: validateUser( ) 5: SetCnnProperties( ) 6: accessQMgr( ) 7: sendRequestMsg( ) 3: contructRequestMessage( ) 4: sendMsg( ) 1: holdAccount( )
c. Phƣơng thức giải phong toả tài khoản : Bank Access Point : Securities Trading : Account : Bidv Gateway : Bidv Core Banking SCID CustAcctNumber UserId Password Ref Desc UnholdAmount Write Log unhold Account Return Balance SOAP Message SOAP Message MQ Message
Check CA, Write Log
Write Log
MQ Message
Rev erse Transaction(If Transaction failed) SIBS Message
SIBS Message
Hình 3.7: Biểu đồ tuần tự phương thức giải phong toả tài khoản
Chƣơng trình tại công ty chứng khoán gọi Webservice trên máy BAP, là máy chủ tại công ty chứng khoán, gửi yêu cầu giải phong toả tài khoản. Máy BAP đóng gói thành xâu XML ghi vào MQ trên máy BAP. MQ trên máy BAP truyền thông điệp đến MQ trên gateway của ngân hàng, Gateway ngân hàng đọc dữ liệu thông điệp gửi đến và xử lý gửi dữ liệu đến host là hệ thống máy chủ ngân hàng để yêu
cầu xử lý và nhận kết quả trả lại. Sau khi đã nhận đầy đủ thông tin, Gateway đóng gói thành chuỗi XML gửi kết quả trả lại lên MQ tại Gateway. MQ tại Gateway lại truyền dữ liệu cho MQ trên máy BAP. Webservice tại máy BAP nhận dữ liệu và gửi kết quả cho chƣơng trình tại công ty chứng khoán.
: Account : MQInterface : XmlMessage : Securities Trading System 2: validateUser( ) 4: sendMsg( ) 5: SetCnnProperties( ) 6: accessQMgr( ) 7: sendRequestMsg( ) 3: contructRequestMessage( ) 1: unholdAccount( )
CHƢƠNG 4: KẾT QUẢ THỰC HIỆN HỆ THỐNG
4.1 Triển khai hệ thống
Hệ thống thanh toán chứng khoán đã đƣợc triển khai thực tế ở 13 công ty chứng khoán. Ngoài ra, hệ thống đang cho chạy thử nghiệm với 63 công ty chứng khoán khác. Dƣới đây là thiết kế mô hình vật lý hệ thống thanh toán chứng khoán.
BIDV Gateway SIBS DMZ BIDV WAN CTCK BAP
Hình 4.1: Mô hình vật lý hệ thống thanh toán chứng khoán
Các công ty chứng khoán kết nối trực tiếp với ngân hàng thông qua các đƣờng cáp quang, hoặc các đƣờng leasedline thuê riêng, tuỳ theo quy mô và khả năng của từng công ty chứng khoán.
Với các công ty chứng khoán lớn và vừa, các máy BAP đƣợc đặt tại các công ty chứng khoán. Sử dụng phƣơng án này các công ty chứng khoán phải đầu tƣ về đƣờng truyền.
Với các công ty chứng khoán nhỏ, để tiết kiệm đƣờng truyền, máy BAP đƣợc đặt tại các trung tâm xử lý miền.
Tuỳ theo yêu cầu, một số công ty chứng khoán nhỏ sử dụng phƣơng án kết nối offline, không cần phải đầu tƣ về máy chủ BAP và đƣờng truyền.
4.2 Một số use case chính của hệ thống
4.2.1 Nhóm use case xử lý nghiệp vụ
Giao dịch viên CN
Quản lý tài khoản
nhà đầu tư Đóng băng tài khoản NDT
In bảng kê giao dịch Giải đóng băng tài
khoản NDT
Đối chiếu chênh lệch các giao dịch Vấn tin trạng thái
giao dịch
Báo cáo giao dịch
Kiểm soát viên CN Giải mã, kiểm tra chữ
ký bảng kê giao dịch (online)
Nhận file bảng kê giao dịch thanh toán,hold,unhold Duyệt bảng kê giao
dịch
Hủy bút toán đẩy thành công vào SIBS
Xuất file số dư tài khoản CTCK (offline)
Duyệt lại các giao dịch không thành công
Hình 4.2: Usecase của nhóm xử lý nghiệp vụ
Trên đây là use case của giao dịch viên, kiểm soát viên chi nhánh. Tại các chi nhánh, giao dịch viên có thể thực hiện các chức năng:
- Quản lý tài khoản nhà đầu tƣ
- Đóng băng, giải đóng băng tài khoản nhà đầu tƣ - In bảng kê giao dịch
- Vấn tin trạng thái giao dịch - Báo cáo giao dịch
4.2.2 Nhóm use case ở công ty chứng khoán
Chương trình ở CTCK
Vấn tin tài khoản Phong tỏa tài khoản
Vấn tin 5 giao dịch phong tỏa gần nhất
Hủy phong tỏa tài khoản
Vấn tin danh sách giao dịch phong tỏa trong ngày
Vấn tin danh sách giải phong tỏa trong ngày
Gửi bảng kê giao dịch Lấy thông tin về
bảng kê giao dịch
Hình 4.3: Nhóm usecase tại công ty chứng khoán
Tại công ty chứng khoán, các giao dịch viên có thể thực hiện các chức năng: - Vấn tin tài khoản
- Phong toả tài khoản - Huỷ phong toả tài khoản - Vấn tin 5 giao dịch gần nhất
- Vấn tin danh sách phong toả và huỷ phong toả trong ngày - Gửi bảng kê giao dịch
- Lấy thông tin về bảng kê giao dịch
4.3 Một số màn hình demo
4.3.1. Giao dịch online
Đƣợc thực hiện khi đƣờng truyền giữa ngân hàng với các công ty chứng khoán đƣợc đảm bảo lƣu thông.
Để thực hiện các giao dịch vấn tin, phong tỏa, hủy phong tỏa, giao dịch viên kích chọn mục “Giao dịch Online” từ Menu chính của chƣơng trình. Màn hình giao diện chính của chức năng giao dịch Online:
Hình 4.4: Màn hình giao dịch online
a. Vấn tin tài khoản
Sau khi kích hoạt chức năng “Giao dịch Online” giao dịch viên có thể vấn tin một tài khoản tiền gửi thanh toán của khách hàng để kiểm tra thông tin tài khoản nhằm hỗ trợ cho việc đặt lệnh mua chứng khoán và hold tài khoản.
b. Phong tỏa tài khoản
Khi khách hàng thực hiện một lệnh mua chứng khoán thì giao dịch viên sử dụng chức năng Phong tỏa (Hold) tài khoản khách hàng ứng với lƣợng giao dịch mà khách hàng muốn thực hiện để đảm bảo cho việc thực hiện giao dịch đó.
Hình 4.6: Giao dịch phong toả tài khoản
c. Huỷ phong tỏa tài khoản
Hình 4.7: Giao dịch huỷ phong toả tài khoản
4.3.2. Giao dịch cuối ngày
Sau khi kết thúc các phiên giao dịch thì GDV thực hiện hạch toán cuối ngày bằng việc gửi toàn bộ các giao dịch Hold / UnHold sang bên ngân hàng để tiến hành hạch toán.
a. Hạch toán cuối ngày
Giao dịch viên thực hiện chọn file tổng hợp các giao dịch để chuẩn bị chuyển về ngân hàng hạch toán:
b. Giải phong toả theo lô
Hình 4.9: Giao dịch giải phong toả theo lô
4.3.3. Vấn tin giao dịch trong ngày và bảng kê
Sau khi kết thúc các phiên giao dịch thì giao dịch viên thực hiện hạch toán cuối ngày bằng việc gửi toàn bộ các giao dịch Hold / UnHold sang bên ngân hàng để tiến hành hạch toán.
b. Liệt kê các giao dịch huỷ phong toả trong trong ngày
Hình 4.11: Vấn tin các giao dịch giải phong toả trong ngày
4.4 Đánh giá hoạt động truyền tin trong hệ thống thanh toán chứng khoán
Trong quá trình chạy thử nghiệm với 63 công ty chứng khoán, tại thời điểm tất cả các công ty chứng khoán đều đang hoạt động, đƣờng truyền hoạt động ổn định, các giao dịch thực hiện vấn tin, phong toả tài khoản, giải phong toả tài khoản của nhà đầu tƣ thƣờng có tốc độ lớn hơn so với các giao dịch gửi bảng kê hạch toán cuối ngày. Do việc gửi giao dịch hạch toán cuối ngày thƣờng phải truyền các thông điệp có dung lƣợng lớn hơn. Dƣới đây xem xét mức độ ảnh hƣởng của độ lớn thông điệp lên tốc độ thực hiện giao dịch trong điều kiện đƣờng truyền thông ổn định, các máy chủ hoạt động bình thƣờng, các bộ nghe trên Gateway ngân hàng đều đƣợc kích hoạt.
4.4.1 Các giao dịch vấn tin, phong toả, giải phong toả tài khoản nhà đầu tƣ đầu tƣ
Trong các giao dịch này, dung lƣợng thông điệp nhỏ, thƣờng nhỏ hơn 32K. Đồ thị dƣới đây tổng hợp từ kết quả thực hiện giao dịch. Dung lƣợng các thông điệp nằm trong giao dịch này dao động từ khoảng 50 byte-32K. Tốc độ thực hiện giao dịch tính theo đơn vị giây. Các thông điệp có dung lƣợng nhỏ, 50 byte, tốc độ thực hiện giao dịch chỉ vào khoảng 1.5s. Với các thông điệp dung lƣợng lớn hơn, tốc độ thực hiện giao dịch tăng nhƣ thể hiện trong biểu đồ dƣới đây:
Ảnh hƣởng của dung lƣợng thông điệp lên tốc độ truyền giao dịch 0 0.5 1 1.5 2 2.5 3 3.5 50 500 1024 2048 4096 8192 16384 32768
Dung lƣợng thông điệp(byte)
Th ờ i gi an thự c hi ện gi ao dị ch( s)
Biểu đồ 4.1: Đánh giá ảnh hưởng của dung lượng thông điệp lên thời gian giao dịch(đối với các thông điệp có dung lượng nhỏ 50 byte-32K)
4.4.2 Các giao dịch gửi bảng kê hạch toán cuối ngày(32K-2MB)
Trong các giao dịch này, dung lƣợng thông điệp lớn hơn so với các giao dịch vấn tin, phong toả và huỷ phong toả tài khoản, thƣờng là từ 32K-2MB. Đồ thị dƣới