4.2.4.1 Các phần mềm sử dụng
Cơ sở dữ liệu được thực thi dựa trên hệ quản trị cơ sở dữ liệu (RDBMS) mã nguồn mở MySQL 5.6.24 [23]. Toàn bộ chương trình được thực thi sử dụng ngôn ngữ lập trình Java trên môi trường phát triển (IDE) mã nguồn mở Eclipse Indigo 3.7 [24]. Chương trình được triển khai trên phần mềm thực thi ứng dụng (Web Server) mã nguồn mở Apache Tomcat 7.0 [25].
4.2.4.2 Tạo nội dung mẫu trong cơ sở dữ liệu
Nội dung mẫu được đưa vào trong các bảng CONTENT, CONTENT_RESULT. Cấu hình dịch vụ được đưa vào các bảng SERVICE, SERVICE_PERIOD.
Hình 4.6 Dữ liệu mẫu bảng CONTENT_RESULT
Hình 4.7 Dữ liệu mẫu bảng SERVICE
Hình 4.8 Dữ liệu mẫu bảng SERVICE_PERIOD
4.2.4.3 Demo ứng dụng
Chương trình đưa ra một servlet để gọi tới mô phỏng hành động người chơi nhắn tin vào hệ thống. Kết quả hệ thống xử lý trả ra một tin nhắn cho người chơi bằng cách thêm tin nhắn trong bảng MT_TRANSACTION. Điểm số, mã dự thưởng của người chơi cũng được cập nhật tương ứng.
Hình 4.9 minh họa URL gọi servlet để giả lập người chơi có số điện thoại “84904528180” nhắn tin “2” vào hệ thống.
Hình 4.9 Ngƣời chơi nhắn tin cú pháp “2”
Hình 4.10, Hình 4.11 minh họa các tin nhắn người chơi gửi tới hệ thống và hệ thống gửi tới người chơi theo kịch bản vClass.
Hình 4.10 Các tin nhắn ngƣời chơi gửi tới hệ thống theo kịch bản vClass
Hình 4.11 Các tin nhắn hệ thống gửi tới ngƣời chơi theo kịch bản vClass
Hình 4.12 Thông tin ngƣời chơi sau khi hoàn thành phiên chơi
Hình 4.12 cho thấy điểm và mã dự thưởng của người chơi sau khi hoàn thành phiên chơi. Người chơi trả lời đúng 6 câu hỏi và được 60 điểm cùng với 6 mã dự thưởng, mã dự thưởng cuối cùng người chơi được cấp là 254984. Trường “is_period_finished = 1” cho thấy bài chơi đã hoàn thành do người chơi đã trả lời hết 10 câu hỏi trong ngày, mặc dù phiên chơi trong ngày chưa kết thúc.
Hình 4.13 Lịch sử điểm ngƣời chơi
Hình 4.14 Lịch sử mã dự thƣởng ngƣời chơi
Hình 4.13, Hình 4.14 minh họa lịch sử điểm và mã dự thưởng của người chơi.
4.2.4.4 Nhận xét
Với thiết kế của SMS Platform, một kịch bản SMS linh hoạt được xây dựng nhanh chóng dựa trên cấu hình theo định dạng XML với các tiến trình và thuộc tính có sẵn. Có thể làm một phép so sánh giữa thời gian và nhân lực của một kịch bản SMS được xây dựng không dùng SMS Platform và có dùng SMS Platform. Lấy ví dụ ở kịch bản phức tạp như “Nhận diện người nổi tiếng”, thời gian phát triển và kiểm thử sơ bộ mất khoảng 2 tuần với một đội phát triển gồm 3 người lập trình. Trong khi đó, với SMS Platform đã xây dựng, thời gian cấu hình kịch bản và kiểm thử khoảng 1 giờ và ai cũng có thể thực hiện được sau khi đã được đào tạo về cấu hình theo định dạng XML. Module Service Creation cũng hoàn toàn có thể mở rộng để tạo ra nhiều loại kịch bản SMS hơn nữa, tăng thêm ưu điểm cho hệ thống SDP hiện tại.
KẾT LUẬN
SDP là công nghệ mới, chưa được chuẩn hóa, nhưng ích lợi mà SDP mang lại cho các nhà cung cấp dịch vụ di động 3G là vô cùng to lớn trong bối cảnh hiện nay. Khi mà số lượng thuê bao đã bão hòa, các nhà cung cấp mạng di động cần tăng chất lượng dịch vụ giá trị gia tăng cũng như đa dạng hóa các loại hình dịch vụ giá trị gia tăng và nội dung để đạt được doanh thu tốt hơn. Việc tận dụng khả năng chưa dùng hết của hạ tầng có sẵn cũng giúp cho lợi nhuận tốt hơn.
Luận văn đã phân tích hiện trạng và đưa ra cơ sở để lựa chọn SDP làm nền tảng cung cấp dịch vụ giá trị gia tăng, đồng thời cung cấp cái nhìn tổng quan về công nghệ SDP với các giá trị cốt lõi, các chuẩn công nghệ quan trọng đi kèm, và một số kiến trúc SDP đang thịnh hành trên thị trường viễn thông hiện nay.
Trong bối cảnh Việt Nam, các nhà mạng Mobifone và VinaPhone cũng đã nhanh nhạy theo kịp thị trường viễn thông thế giới trong việc áp dụng công nghệ SDP Huawei cho một số dịch vụ giá trị gia tăng của mình. Tuy nhiên đi kèm với giá thành rẻ cũng là đánh đổi một số tính năng không đạt được mục đích ban đầu của SDP. Luận văn xem xét đến khía cạnh mở rộng module Service Creation trong SDP để đáp ứng nhu cầu tạo ra các dịch vụ SMS có kịch bản linh hoạt.
Một số hướng nghiên cứu tiếp theo:
- Nghiên cứu xây dựng giao diện cấu hình kịch bản thân thiện với người dùng (chuyển đổi từ giao diện sang file cấu hình).
- Nghiên cứu việc mở rộng module Service Creation cho các dịch vụ WAP và WEB.
- Nghiên cứu việc dịch chuyển các dịch vụ giá trị gia tăng không sử dụng SDP hiện tại sang sử dụng SDP.
TÀI LIỆU THAM KHẢO
1. Mobifone. Dịch vụ. Mobifone Portal. [Online] 07 09, 2014.
http://www.mobifone.com.vn/portal/vn/services/music/dichvu.jsp.
2. VinaPhone. Dịch vụ. VinaPhone Portal. [Online] [Cited: 07 09, 2014.]
http://vinaphone.com.vn/services/homepage.
3. Viettel. Dịch vụ giá trị gia tăng. Viettel Telecom Portal. [Online] 07 09, 2014.
http://vietteltelecom.vn/di-dong/dich-vu-gia-tri-gia-tang.
4. Eror, David. NIL Learning. [Online] 11 26, 2010. [Cited: 07 10, 2014.]
http://learning.nil.com/assets/Tips-/Mobile-Service-Delivery-Platform.pdf.
5. Ragoonanan, Glen and Yigit, Gorkem. Service delivery platforms: worldwide
market share 2013. s.l. : Analysys Mason, 2014.
6. Wikipedia. Service Delivery Platform. Wikipedia. [Online] [Cited: 07 09, 2014.]
http://en.wikipedia.org/wiki/Service_delivery_platform.
7. Christian, Rolan.Service Delivery Platform for the Next-Generation Network. s.l. :
Auerbach Publications, 2011.
8. W3C. Web Services Architecture. W3C Working Group Note. [Online] 02 11, 2004. [Cited: 03 18, 2015.] http://www.w3.org/TR/ws-arch/.
9. Haas, Hugo. Designing the architecture for Web services. W3C. [Online] 05 22,
2003. [Cited: 03 18, 2015.] Designing the architecture for Web services.
10. Parlay X. Wikipedia. [Online] 03 13, 2013. [Cited: 03 19, 2015.] http://en.wikipedia.org/wiki/Parlay_X.
11. Park Jung Wan, Kang Tai Hun. Intelligent Network. [Online]
http://www.slideshare.net/farazshahid/project-6154630.
12. Hewlett-Packard Development Company. HP Delivery Platform, Adapt and
Thrive. 2010.
13. Andy Johnson, Jan Gabrielsson, Charilaos Christopoulos, Martien
Huysmans, Ulf Olsson.Evolution of service delivery platforms. s.l. : Ericsson Review
No. 1, 2007.
14. Nokia Siemens Networks.Service Delivery Framework. 2008.
15. Tình hình phát triển lĩnh vực viễn thông, Internet năm 2014. Bộ thông tin và truyền
thông. [Online] 12 24, 2014. [Cited: 03 17, 2015.]
ACnhph%C3%A1ttri%E1%BB%83nl%C4%A9nhv%E1%BB%B1cvi%E1%BB%85n th%C3%B4ng,internetn%C4%83m2014.aspx.
16. Văn bản QPPL: 32/2012/QĐ-TTg. Bộ thông tin và Truyền thông. [Online] 07 27,
2012. [Cited: 03 17, 2015.]
http://mic.gov.vn/vbqppl/Lists/Vn%20bn%20QPPL/DispForm.aspx?ID=7866.
17. Vietnam Information and Communication Technology. White Book 2014.
2014.
18. Huawei Technologies Co., Ltd.CP/SP access to VMS SDP.
19. Cooperation Oppotunity on SDP in Latin America. [Online] 10 2008. [Cited: 03 17, 2015.] http://www.slideshare.net/Bahk/huawei-sdp.
20. Công ty Dịch vụ viễn thông VinaPhone. vClass. VinaPhone. [Online]
http://vinaphone.com.vn/services/vclass.
21. Công ty Dịch vụ Viễn thông VinaPhone. Bóng đá vui. VinaPhone. [Online]
http://vinaphone.com.vn/services/bdv.
22. Công ty Dịch vụ viễn thông VinaPhone. Nhận diện người nổi tiếng. VinaPhone.
[Online] http://vinaphone.com.vn/services/nguoinoitieng.
23. Oracle Corporation. MySQL. [Online] Oracle Corporation. [Cited: 04 05, 2015.]
https://www.mysql.com/.
24. The Eclipse Foundation. Eclipse. [Online] The Eclipse Foundation.
https://eclipse.org/.
25. The Apache Software Foundation. Apache Tomcat. [Online] The Apache
Software Foundation. http://tomcat.apache.org/.
26. A service delivery platform for server management services. J. Lenchner, D. Rosu, N. F. Velasquez, S. Guo, K. Christiance, D. DeFelice, P. M. Deshpande, K. Kummamuru, N. Kraus, L. Z. Luan, D. Majumdar, M. McLaughlin, S. Ofek-
PHỤ LỤC
Phụ lục 1: Định nghĩa các tiến trình và file XML cấu hình các kịch bản Bảng 1 - Các tiến trình
<Start serviceId="1" id="start001" to="sendContent001"></Start> <End id="end001" from="smsOut001"></End>
<Debit amount="2000" id="debit001" from="smsIn001" to="checkBalance001"></Debit>
<SMSIn id="smsIn001" from="sendContent001" to="checkMO001"></SMSIn> <SMSOut mtTemplate="Quy Khach dang co [so_diem_trong_phien] diem" id="smsOut001" from="countContent001" to="smsIn001"></SMSOut>
<SendContent mtTemplate="" contentId="1" sortType="1" id="getContent001" from="countContent001" to="smsIn001"></SendContent>
<AddPoint point="10" id="addPoint001" from="checkAnswer001" to="generateTicket001"></AddPoint>
<GenerateTicket format="XXXXXX" id="generateTicket001" from="addPoint001" to="countContent001", ticketNum="2"></GenerateTicket>
<CheckMO template="MUA" syntax="" id="checkMO001" from="smsIn001" toY="checkAnswer001" toN="smsOut002"></CheckMO>
<CountMO template="MUA" type="5" count="5" id="countMO001" from="smsIn001" toY="smsOut003" toN="debit001"></CountMO>
<ValidatePeriod id="validatePeriod001" from="smsIn001" toN="smsOut004" toY="countMO001"></ValidatePeriod>
<CheckBalance id="checkBalance001" from="debit001" toY="smsOut005" toN="sendContent001"></CheckBalance>
<CountContent count="10" id="countContent001" from="validatePeriod001" toY="smsOut006" toN="checkAnswer001" isFinished="true"></CountContent> <CheckAnswer id="checkAnswer001" from="countContent001" toY="smsOut007" toX="smsOut008" isFinished="true"></CheckAnswer>
<IsFinished id="isAnswered001" from="validatePeriod001" toY="smsOut009" toN="countMO001"></IsFinished>
Bảng 2 – Kịch bản dịch vụ vClass
<?xml version="1.0" encoding="UTF-8"?> <Config>
<Start serviceId="1" id="start001" to="smsIn001"></Start>
<SMSIn id="smsIn001" from="start001" to="isAnswered001"></SMSIn> <IsFinished id="isAnswered001" from="smsIn001" toY="smsOut007" toN="checkMo001"></IsFinished>
<CheckMO template="1,2" syntax="" id="checkMo001" from="isAnswered001" toY="checkAnswer001" toN="smsOut001"></CheckMO>
<SMSOut mtTemplate="Yeu cau cua Quy Khach chua duoc thuc hien do cu phap khong dung." id="smsOut001" from="checkMo001" to="end001"></SMSOut>
<CheckAnswer id="checkAnswer001" from="checkMo001" toY="addPoint001" toN="countContent002" isFinished="false"></CheckAnswer>
<AddPoint point="10" id="addPoint001" from="checkAnswer001" to="generateTicket001"></AddPoint>
<GenerateTicket format="XXXXXX" ticketNum="1" id="generateTicket001" from="addPoint001" to="countContent001"></GenerateTicket>
<CountContent count="10" id="countContent001" from="generateTicket001" toY="smsOut003" toN="smsOut002" isFinished="true"></CountContent>
<SMSOut mtTemplate="[content_correct_result]. Quy Khach dang co [so_diem_trong_phien] diem. Quy Khach duoc tang them 1 ma du thuong la [ma_du_thuong]. Hay tiep tuc tra loi cau hoi ke tiep de ghi them diem!" id="smsOut002" from="countContent001" to="getContent001"></SMSOut>
<SendContent sortType="3" id="getContent001" from="smsOut002" to="end001" mtTemplate="[content]. De tra loi, Quy Khach soan 1 hoac 2 gui 1572 (Mien phi)."></SendContent>
<SMSOut mtTemplate="[content_correct_result]. Quy Khach dang co [so_diem_trong_phien]. Quy Khach duoc tang them 1 ma du thuong la [ma_du_thuong]." id="smsOut003" from="countContent001" to="smsOut004"></SMSOut>
<SMSOut mtTemplate="Quy Khach da hoan thanh xuat sac bai hoc cua ngay hom nay. Moi Quy Khach tiep tuc tham gia bai hoc ngay mai voi nhieu cau hoi thu vi va tham gia chuong trinh KM voi nhieu giai thuong gia tri len den 90 trieu dong tu VinaPhone." id="smsOut004" from="smsOut003" to="end001"></SMSOut>
<CountContent count="10" id="countContent002" from="checkAnswer001" toY="smsOut005" toN="smsOut006" isFinished="true"></CountContent>
<SMSOut id="smsOut005" from="countContent002" to="smsOut007" mtTemplate="[content_fail_result]. So diem cua Quy Khach trong dot khuyen mai nay la [so_diem_trong_phien] diem."></SMSOut>
<SMSOut id="smsOut006" from="countContent002" to="getContent002" mtTemplate="[content_fail_result]. So diem cua Quy Khach trong dot khuyen mai nay la [so_diem_trong_phien] diem. Hay tiep tuc tra loi de ghi them diem!"></SMSOut>
<SMSOut id="smsOut007" from="smsOut005" to="end001" mtTemplate="Quy Khach da hoan thanh xuat sac bai hoc cua ngay hom nay. Moi Quy Khach tiep tuc tham gia bai hoc ngay mai voi nhieu cau hoi thu vi va tham gia chuong trinh KM voi nhieu giai thuong gia tri len den 90 trieu dong tu VinaPhone."></SMSOut>
<SendContent sortType="3" id="getContent002" from="smsOut006" to="end001" mtTemplate="[content]. De tra loi, Quy Khach soan 1 hoac 2 gui 1572 (Mien phi)."></SendContent>
<End id="end001" from=""></End> </Config>
Bảng 3 – Kịch bản dịch vụ Bóng đá vui
<?xml version="1.0" encoding="UTF-8"?> <Config>
<Start serviceId="2" id="start001" to="smsIn001"></Start>
<SMSIn id="smsIn001" from="start001" to="isFinished001"></SMSIn>
<IsFinished id="isFinished001" from="smsIn001" toY="smsOut001" toN="checkMo001"></IsFinished>
<CheckMO template="GOI Y" syntax="" id="checkMo001" from="isFinished001" toY="countContent011" toN="checkAnswer001"></CheckMO>
<CheckAnswer id="checkAnswer001" from="checkMo001" toY="countContent001" toN="countContent006" isFinished="true"></CheckAnswer>
<CountContent count="1" id="countContent001" from="checkAnswer001" toY="addPoint001" toN="countContent002" isFinished="false"></CountContent>
<CountContent count="2" id="countContent002" from="countContent001" toY="addPoint002" toN="countContent003" isFinished="false"></CountContent>
<CountContent count="3" id="countContent003" from="countContent002" toY="addPoint003" toN="countContent004" isFinished="false"></CountContent>
<CountContent count="4" id="countContent004" from="countContent003" toY="addPoint004" toN="countContent005" isFinished="false"></CountContent>
<CountContent count="6" id="countContent005" from="countContent004" toY="addPoint005" toN="smsOut001" isFinished="true"></CountContent>
<SMSOut id="smsOut001" from="countContent005" to="end001" mtTemplate="Quy Khach da hoan thanh bai choi trong phien ngay hom nay." ></SMSOut>
<AddPoint point="50" id="addPoint001" from="countContent001" to="smsOut002"></AddPoint>
<AddPoint point="40" id="addPoint002" from="countContent001" to="smsOut002"></AddPoint>
<AddPoint point="30" id="addPoint003" from="countContent001" to="smsOut002"></AddPoint>
<AddPoint point="20" id="addPoint004" from="countContent001" to="smsOut002"></AddPoint>
to="smsOut002"></AddPoint>
<SMSOut id="smsOut002" from="" to="end001" mtTemplate="[content_correct_result]"></SMSOut>
<SendContent sortType="2" id="sendContent001" from="" to="end001" mtTemplate="[content]"></SendContent>
<SendContent sortType="2" id="sendContent002" from="" to="sendContent001" mtTemplate="[content]"></SendContent>
<SendContent sortType="2" id="sendContent003" from="countContent010" to="end001" mtTemplate="Khach hang da tra loi sai. Dap an dung la [content]"></SendContent>
<CountContent count="1" id="countContent006" from="checkAnswer001" toY="smsOut003" toN="countContent007" isFinished="false"></CountContent>
<CountContent count="2" id="countContent007" from="countContent006" toY="smsOut003" toN="countContent008" isFinished="false"></CountContent>
<CountContent count="3" id="countContent008" from="countContent007" toY="smsOut003" toN="countContent009" isFinished="false"></CountContent>
<CountContent count="4" id="countContent009" from="countContent008" toY="smsOut004" toN="countContent010" isFinished="false"></CountContent>
<CountContent count="6" id="countContent010" from="countContent009" toY="sendContent003" toN="smsOut001" isFinished="true"></CountContent>
<SMSOut id="smsOut003" from="countContent006" to="sendContent001" mtTemplate="Cau tra loi cua Quy Khach chua dung. Moi Quy Khach tham gia goi y tiep theo."></SMSOut>
<SMSOut id="smsOut004" from="countContent008" to="sendContent002" mtTemplate="Cau tra loi cua Quy Khach chua dung. Moi Quy Khach tham gia goi y tiep theo."></SMSOut>
<CountContent count="1" id="countContent011" from="checkMo001" toY="sendContent001" toN="countContent012" isFinished="false"></CountContent>
<CountContent count="2" id="countContent012" from="countContent011" toY="sendContent001" toN="countContent013" isFinished="false"></CountContent>
<CountContent count="3" id="countContent013" from="countContent012" toY="sendContent001" toN="countContent014" isFinished="false"></CountContent>
<CountContent count="4" id="countContent014" from="countContent013" toY="sendContent001" toN="smsOut001" isFinished="true"></CountContent>
<End id="end001" from=""></End> </Config>
Bảng 4 – Kịch bản dịch vụ Nhận diện ngƣời nổi tiếng
<?xml version="1.0" encoding="UTF-8"?> <Config>
<Start serviceId="3" id="start001" to="smsIn001"></Start>
<SMSIn id="smsIn001" from="start001" to="checkMo001"></SMSIn>
<CheckMO template="MUA" syntax="" id="checkMo001" from="smsIn001" toY="validatePeriod001" toN="checkMo002"></CheckMO>
<CheckMO template="DD [%t]" syntax="[%t]" id="checkMo002" from="checkMo001" toY="validatePeriod002" toN="smsOut005"></CheckMO>
<ValidatePeriod id="validatePeriod001" from="checkMo001" toN="smsOut001" toY="isFinished001"></ValidatePeriod>
<ValidatePeriod id="validatePeriod002" from="checkMo002" toN="smsOut001" toY="countMo002"></ValidatePeriod>
<IsFinished id="isFinished001" from="checkMo001" toY="smsOut002" toN="countMo001"></IsFinished>
<CountMO template="MUA" type="1" count="20" id="countMo001" from="isFinished001" toY="smsOut003" toN="debit001"></CountMO>
<CountMO template="MUA" type="1" count="0" id="countMo002" from="validatePeriod002" toY="smsOut006" toN="checkAnswer001"></CountMO>
<SMSOut id="smsOut001" from="validatePeriod001" to="end001" mtTemplate="Yeu cau cua Quy Khach chua thuc hien duoc do phien choi da het hieu luc. Phien du doan bat dau luc 8:00 va ket thuc luc 23:59 hang ngay. Cam on Quy Khach da su dung dich vu cua VinaPhone."></SMSOut>
<SMSOut id="smsOut002" from="isFinished001" to="end001" mtTemplate="Lenh MUA cua Quy Khach khong thanh cong do Quy Khach da du doan dung ten Nguoi noi tieng ngay [ngay_ket_thuc_du_doan]. Ket qua nguoi chien thang se duoc thong bao vao 8:00 [ngay_dau_phien_tiep_theo]. Cam on Quy Khach da su dung dich vu cua VinaPhone."></SMSOut>
<SMSOut id="smsOut003" from="countMo001" to="end001" mtTemplate="Quy Khach da thuc hien lenh MUA vuot qua quy dinh cua dich vu trong ngay (toi da 20 lan/ngay). De biet them chi tiet, Quy Khach vui long lien he tong dai 9191 hoac truy cap website http://nguoinoitieng.vinaphone.com.vn."></SMSOut>
<SMSOut id="smsOut004" from="debit001" to="end001" mtTemplate="Tai khoan cua Quy Khach khong du de MUA thong tin nguoi noi tieng. Quy Khach vui long nap them tien vao tai khoan va thu lai. Xin tran trong cam on."></SMSOut>
<SMSOut id="smsOut005" from="checkMo002" to="end001" mtTemplate="Tin nhan sai cu phap."></SMSOut>
<SMSOut id="smsOut006" from="countMo002" to="end001" mtTemplate="Yeu cau cua Quy Khach chua duoc thuc hien. Quy Khach vui long soan MUA gui 1566 (1000 dong/tin) de mua thong tin va du doan ten Nguoi noi tieng. De biet them chi tiet, Quy Khach vui long lien he tong dai 9191 hoac truy cap website http://nguoinoitieng.vinaphone.vn."></SMSOut>
mtTemplate="Chuc mung Quy Khach da du doan dung ten nguoi noi tieng ngay hom nay. Quy Khach dang co 99% co hoi gianh Nokia Lumina 525 tu chuong trinh Nhan dien nguoi noi tieng! Neu Quy Khach la nguoi may man gianh duoc giai thuong Nokia Lumina 525 tu VinaPhone, Quy Khach se nhan duoc thong bao tu chuong trinh. Cam on Quy Khach da su dung dich vu cua VinaPhone."></SMSOut>
<SMSOut id="smsOut008" from="checkAnswer001" to="end001" mtTemplate="Rat tiec, Quy Khach da du doan sai ten Nguoi noi tieng ngay hom nay. Quy Khach vui long soan MUA gui 1566(1000 dong/tin) de mua thong tin va du doan ten Nguoi noi tieng. De biet them chi tiet, Quy Khach vui long lien he tong dai 9191 hoac truy cap website http://nguoinoitieng.vinaphone.com.vn."></SMSOut>
<Debit amount="1000" id="debit001" from="countMo001" to="checkBalance001"></Debit>
<CheckBalance id="checkBalance001" from="debit001" toY="sendContent001" toN="smsOut004"></CheckBalance>
<SendContent sortType="2" id="sendContent001" from="checkBalance001" to="end001" mtTemplate="[content]"></SendContent>
<CheckAnswer id="checkAnswer001" from="countMo002" toY="smsOut007" toN="smsOut008" isFinished="true"></CheckAnswer>
<End id="end001" from=""></End> </Config>
Phụ lục 2: Code xử lý các tiến trình HandlerInterface
public interface HandlerInterface { public void execute();
public void goToNext(String serviceId); }
ServiceHandler
public class ServiceHandler implements HandlerInterface { protected Log log = LogFactory.getLog(this.getClass()); private String serviceId;
private Input input;
public ServiceHandler(String serviceId, Input input) { super();
this.serviceId = serviceId; this.input = input;
@Override
public void execute() {
// TODO Auto-generated method stub }
@Override
public void goToNext(String serviceId) { // TODO Auto-generated method stub
String className = ConfigParser.classMap.get(serviceId); try {
Class myClass = Class.forName(className);
Constructor cons = myClass.getConstructor(String.class, Input.class);
Object service = cons.newInstance(serviceId, getInput()); Method m = myClass.getMethod("execute", null);
m.invoke(service, null); } catch (Exception e) {
log.error("execute:", e); }
}
public String getServiceId() { return serviceId; }
public void setServiceId(String serviceId) { this.serviceId = serviceId;
}
public Input getInput() { return input; }
this.input = input; }
}
Xử lý kiểm tra phiên hợp lệ
public class ValidatePeriodHandler extends ServiceHandler {
public ValidatePeriodHandler(String serviceId, Input input) { super(serviceId, input);
// TODO Auto-generated constructor stub }
@Override
public void execute() {
log.info("serviceId="+getServiceId()); Long periodId = getInput().getPeriodId(); log.info("input|periodId="+periodId);
ValidatePeriod validatePeriodObj = (ValidatePeriod) ConfigParser.serviceMap.get(getServiceId());
Boolean result = PeriodUtils.checkPeriod(periodId); log.info("output|result="+result);
//forward den handler tiep theo String nextServiceId; if (result) nextServiceId = validatePeriodObj.getToY(); else nextServiceId = validatePeriodObj.getToN(); goToNext(nextServiceId); } } Xử lý cộng điểm
public class AddPointHandler extends ServiceHandler {
public AddPointHandler(String serviceId, Input input) { super(serviceId, input);
}
@Override
public void execute() {
log.info("serviceId="+getServiceId()); String msisdn = getInput().getMsisdn(); Long periodId = getInput().getPeriodId();
log.info("input|msisdn="+msisdn+", periodId="+periodId);
AddPoint addPointObj = (AddPoint)
ConfigParser.serviceMap.get(getServiceId()); Long point = addPointObj.getPoint(); log.info("configuration|point="+point);
UserService userService = UserServiceUtils.addPoint(msisdn, periodId, point);
log.info("output|periodPoint="+userService.getPeriodPoint()+", totalPoint="+userService.getTotalPoint());
getInput().setPeriodPoint(userService.getPeriodPoint()); getInput().setTotalPoint(userService.getTotalPoint()); //forward den handler tiep theo
String nextServiceId = addPointObj.getTo(); goToNext(nextServiceId);
} }
Xử lý kiểm tra đáp án
public class CheckAnswerHandler extends ServiceHandler {
public CheckAnswerHandler(String serviceId, Input input) { super(serviceId, input);
// TODO Auto-generated constructor stub }
@Override
public void execute() {
log.info("serviceId="+getServiceId()); String mo = getInput().getMoContent(); Long contentId = getInput().getContentId();
log.info("input|mo="+mo+", contentId="+contentId);
CheckAnswer chkAnswerObj = (CheckAnswer)
Boolean result = ContentUtils.checkAnswer(contentId, mo); log.info("output|result="+result);
//forward den handler tiep theo String nextServiceId; if (result) nextServiceId = chkAnswerObj.getToY(); else nextServiceId = chkAnswerObj.getToN(); goToNext(nextServiceId); } }
Xử lý kiểm tra tài khoản
public class CheckBalanceHandler extends ServiceHandler {
public CheckBalanceHandler(String serviceId, Input input) {