XMLHttpRequest là yếu tố trọng tâm trong AJAX. Đối tượng này cung cấp các chức năng trao đổi dữ liệu bất đồng bộ giữa client và server.
Cần tạo một đối tượng XMLHttpRequest bằng JavaScript trước khi sử dụng đối tượng này để gửi yêu cầu và nhận các trả lời từ server. XMLHttpRequest chưa là chuẩn của
W3C, vì thế phải dùng JavaScript theo nhiều cách khác nhau đối với các trình duyệt khác nhau để tạo một thể hiện của của XMLHttpRequest. Internet Explorer thực thi XMLHttpRequest như một đối tượng ActiveX, và các trình duyệt khác như Firefox, Safari, và Opera thực thi nó như một đối tượng JavaScript nguyên thủy.
Các tạo đối tượng XMLHttpRequest:
var xmlHttp; function createXMLHttpRequest() { if (window.ActiveXObject) { xmlHttp = new ActiveXObject("Microsoft.XMLHTTP"); } else if (window.XMLHttpRequest) { xmlHttp = new XMLHttpRequest(); } }
Đoạn mã trên kiểm tra sự hỗ trợ đối tượng ActiveX của trình duyệt. Nếu hỗ trợ ActiveX, thì tạo một đối tượng XMLHttpRequest dùng ActiveX. Trường hợp khác, tạo đối tượng này bằng kỹ thuật tạo đối tượng JavaScript nguyên thủy. Do đó dễ dàng tạo ra các thể hiện của đối tượng XMLHttpRequest mà không quan tâm tới trình duyệt.
Ba thuộc tính quan trọng của XMLHttpRequest
- Thuộc tính onreadystatechange: Sau khi gửi yêu cầu tới server ta cần một một hàm nào đó để nhận dữ liệu trả về từ server. Thuộc tính onreadystatechange trỏ tới một hàm mà sẽ thực hiện việc xử lý dữ liệu trả về từ server. Hàm này sẽ được gọi một cách tự động.
xmlhttp.onreadystatechange=function() {
// Các câu lệnh để xử lý dữ liệu trả về }
- Thuộc tính readyState: Lưu trữ trạng thái của dữ liệu trả về từ server, mỗi lần thuộc tính này thay đổi giá trị thì hàm onreadystatechange sẽ được thực thi. Các giá trị của readyState:
0: Yêu cầu chưa được khởi tạo 1: Yêu cầu đã được thiết lập 2: Yêu cầu đã được gửi đi 3: Yêu cầu đang được xử lý 4: Yêu cầu đã hoàn thành
Thêm câu lệnh if vào hàm onreadystatechange để kiểm tra xem server đã xử lý xong và gửi trả lời về chưa:
xmlhttp.onreadystatechange=function(){ if(xmlhttp.readyState==4){
// Lấy dữ liệu từ trả lời của server }
}
- Thuộc tính responseText: Nhận dữ liệu trả về từ server:
xmlhttp.onreadystatechange=function(){ if(xmlhttp.readyState==4){
document.myForm.text.value = xmlhttp.responseText; }
}
Các bước cơ bản để gửi request dùng đối tượng XMLHttpRequest là:
1. Dùng một tham chiếu tới một thể hiện của XMLHttpRequest, có thể bằng cách tạo mới hay truy cập vào một biến có thể hiện của XMLHttpRequest.
2. Khai báo cho đối tượng XMLHttpRequest về hàm sẽ xử lí các trạng thái của XMLHttpRequest. Ta hoàn thành việc này bằng cách thiết lập thuộc tính onreadystatechange của đối tượng với một con trỏ về một hàm JavaScript.
3. Gán các thuộc tính cho request sử dụng phương thức open() của đối tượng XMLHttpRequest. Phương thức open() có ba tham số: một biến string cho biết phương
thức dùng là GET hay POST, một biến string biểu diễn địa chỉ URL của tài nguyên, một biến boolean chỉ báo request sẽ là bất đồng bộ.
4. Gửi request tới server sử dụng phương thức send(). Ví dụ:
xmlhttp.open("GET","sample.php?text=testtesttest",true); xmlhttp.send(null);
Chương 3. PHÂN TÍCH THIẾT KẾ HỆ THỐNG TÍNH TOÁN ROI 3.1. Bài toán nghiệp vụ
Trong hoạt động đầu tư, bất kỳ một nhà đầu tư nào trước khi quyết định đầu tư vào một dự án họ đều phải có những tính toán sao cho việc đầu tư của họ đạt hiệu quả cao nhất. Mỗi nhà đầu tư có thể đầu tư vào nhiều dự án khác nhau, thuộc các lĩnh vực kinh doanh khác nhau. Mỗi dự án có một chỉ tiêu quan trọng để đánh giá hiệu quả của việc đầu tư đó là tỉ suất ROI. Trong khi một dự án nào đó đang thực hiện, nhà đầu tư có thể có thêm các dự án mới và như thế số dự án ngày một tăng lên theo thời gian. Một hoạt động quan trọng và thường xuyên của các nhà đầu tư là họ phải quản lý được các dự án mà họ đã đầu tư cũng như các dự án mà họ dự định sẽ đầu tư.
Khi đầu tư vào một dự án, nhà đâu tư sẽ thu thập các thông tin chi tiết về dự án như: Tên dự án, ngày tạo dự án, đơn vị thực hiện dự án, lĩnh vực kinh doanh, … và một thông tin hết sức quan trọng đó là tỉ suất ROI của dự án đó. Để có được tỉ suất ROI nhà đầu tư cần thu thập các nhân tố có ảnh hưởng tới tỉ suất ROI để từ đó xây dựng lên các mô hình tính toán và tính được giá trị ROI. Các thông tin này sẽ được nhập vào hệ thống và một dự án mới sẽ được tạo ra.
Trong quá trình thực hiện dự án, một số thông tin về dự án có thể có sự thay đổi, nhà đầu tư sẽ tìm dự án đó và cập nhật các sự thay đổi cần thiết. Trong hoạt động đầu tư của mình, nhà đầu tư có thể gặp các dự án tương tự dự án mà mình đã từng đầu tư, lúc đó nhà đầu tư sẽ sao chép dự án cũ và thực hiện sửa đổi một số thông tin cho phù hợp với dự án mới sau đó lưu dự án dưới dạng một dự án mới.
Có những dự án không còn cần thiết nữa hoặc đó là các dự án lỗi, nhà đầu tư có thể xóa các dự án đó ra khỏi hệ thống.
Đối với các dự án thực hiện thành công và việc đầu tư đạt hiệu quả cao, nhà đầu tư có thể chia sẻ các dự án đó cho các nhà đầu tư khác tham khảo.
Ngoài ra, nhà đầu tư có thể in báo cáo chi tiết về một dự án đầu tư nào đó hoặc báo cáo tổng thể thông tin về tất cả các dự án mà mình đã đầu tư.
3.2. Đặc tả yêu cầu
3.2.1. Mục đích
Mục đích của dự án này là tạo ra một hệ thống ứng dụng trên nền web, cho phép các doanh nghiệp, các nhà đầu tư tính được giá trị tỉ suất hoàn vốn đầu tư (ROI) đối với từng dự án theo từng lĩnh vực kinh doanh một cách chính xác, nhanh chóng và có phương pháp, đồng thời cho phép họ quản lý các dự án của mình.
3.2.2. Các tính chất của hệ thống
Bất cứ một nhà đầu tư nào cũng muốn có trong tay một bản kế hoạch kinh doanh khả thi, tiệm cận thực tế. Trong bản kế hoạch kinh doanh đó, tỉ suất hoàn vốn đầu tư (ROI) luôn dành được sự chú ý cao nhất bởi nó phản ánh trung thực hiệu quả kinh doanh. Khi vạch kế hoạch kinh doanh, tỉ suất ROI được coi là mục tiêu quan trọng nhất để nhà đầu tư nhắm tới. Sau một quá trình hoạt động, thông qua một dữ liệu kinh doanh cụ thể, nhà đầu tư có được tỉ suất ROI của hoạt động kinh doanh vừa qua, từ đó thực hiện nghiên cứu thị trường, vạch ra kế hoạch kinh doanh mới cùng với tỉ suất ROI mới. Do đó, nhà đầu tư mong muốn hệ thống tính toán ROI phải có được những tính chất sau:
a. Tính chính xác
Tỷ suất ROI là một thông tin đặc biệt quan trọng đối với mỗi nhà đầu tư. Dựa trên tỉ suất ROI nhà đầu tư sẽ đưa ra quyết định đầu tư của mình. Vì vậy tỉ suất ROI cần đạt được sự chính xác nhất định trong việc tính toán những nhân tố của quá trình kinh doanh. Ngay đối với từng sản phẩm, mô hình ROI cũng bao gồm rất nhiều mối quan hệ nhằng nhịt, phức tạp, nhiều mối quan hệ không thể hiện rõ ràng cho người tính. Do đó, nếu để người tự tính, không thể tránh được những sai sót, bỏ qua nhân tố. Điều này có thể gây ảnh hưởng nghiêm trọng tới quyết định của nhà đầu tư.
b. Tính khả biến
Hoạt động kinh doanh của doanh nghiệp này và doanh nghiệp kia thông thường là rất khác nhau do điều kiện và môi trường hoạt động khác nhau. Một chương trình tính tỉ suất lợi nhuận không thể áp dụng cho mọi hoạt động kinh doanh của các doanh nghiệp một cách cứng nhắc mà phải có tính khả biến để phù hợp với đặc điểm của từng doanh nghiệp. Hơn nữa, chương trình cần có sự hỗ trợ cho nhà đầu tư trong từng lĩnh vực kinh doanh, tức là giảm bớt công sức của người sử dụng trong việc xây dựng mô hình ROI.
c. Tính toàn diện
Một chương trình tính tỉ suất ROI không chỉ tính cho một mặt hàng đơn lẻ mà cần phải có khả năng tính cho nhiều mặt hàng. Hơn nữa, không chỉ tính cho một công ty thành viên mà cần tính cho toàn bộ tổng công ty. Đó là tính toàn diện của hệ thống. Như thế, toàn bộ hoạt động kinh doanh của một doanh nghiệp có thể liên kết với nhau một cách thống nhất, chính xác và rõ ràng, giúp nhà đầu tư luôn có được cái nhìn khái quát về tình hình hoạt động kinh doanh của doanh nghiệp, luôn có được những thông tin nhanh nhậy, đầy đủ, vận động theo sự biến động của thị trường. Từ đó, đưa ra được quyết định kinh doanh đúng đắn, kịp thời.
d. Tính thân thiện
Hệ thống tính tỉ suất ROI không thể yêu cầu người sử dụng có trình độ hiểu biết cao về tinh học và kinh tế. Vì thế, hệ thống cần có sự hỗ trợ rõ ràng, đầy đủ, thuận tiện, dễ dùng, giảm bớt công sức trong việc dây dựng mô hình ROI.
3.2.3. Các chức năng của hệ thống
C1. Quản lý người dùng
Để có thể sử dụng được hệ thống, người sử dụng cần phải có một tài khoản đăng nhập. Tài khoản đăng nhập được chia thành hai cấp độ, đó là: tài khoản người dùng bình thường và tài khoản người quản trị hệ thống.
Người dùng bình thường sau khi đăng nhập thì có thể sử dụng các chức năng cơ bản của hệ thống như: Quản lý các dự án đầu tư mà người dùng đã tạo, tạo mới dự án đầu tư, xây dựng mô hình tính toán ROI, v.v…
Tài khoản người quản trị hệ thống ngoài chức năng như người dùng bình thường thì còn có thêm quyền quản lý các cấu hình của hệ thống, được phép quản lý (thêm, xóa, sửa) các người dùng khác và các dự án tồn tại trong hệ thống.
C2. Quản lý các dự án đầu tư
Các dự án đầu tư do người dùng tạo ra và được phân loại theo các lĩnh vực khác nhau như: Công nghệ thông tin, Y tế, Văn hóa – Xã hôi, v.v…Mỗi một người sử dụng đều có thể quản lý với quyền đầy đủ là Thêm, Xóa, Sửa đối với các dự án do người dùng đó tạo ra.
Ngoài ra, người dùng còn có thể chia sẻ dự án của mình cho những người khác tham khảo.
Đối với các dự án được chia sẻ, những người dùng khác chỉ có thể đọc dự án mà không được phép xóa hoặc thay đổi.
Người dùng có thể sao chép một dự án được chia sẻ từ người dùng khác về làm dự án của mình để từ đó sửa đổi cho phù hợp với dự án mà người dùng đang cần. hoặc cũng có thể tạo mới một dự án bằng cách sao chép từ dự án đã có.
C3. Xây dựng mô hình tính ROI bằng đồ họa
C3.1. Tạo các nhân tố.
Sau khi tạo dự án, người dùng có thể bắt đầu xây dựng mô hình tính toán ROI cho dự án đó. Mô hình ROI bao gồm nhiều nhân tố có mối liên hệ với nhau. Các nhân tố được phân chia thành các cấp 1, 2, 3, 4, …. Nhân tố ROI có cấp thấp nhất là 0. Các nhân tố cấp cao sẽ là con của các nhân tố cấp thấp. Mỗi nhân tố có thể có nhiều con nhưng chỉ có thể có một cha.
Hình 4. Mô hình ROI theo các mức
Mỗi nhân tố có các thuộc tính là: Tên, Công thức và Giá trị.
ROI LN VonDT CP TB XL DTKhac LD QL NVL KH CFBD TSCD TyLeKH LaiNgan LaiDH DT SL BH CPKhac Gia Mức 0 Mức 1 Mức 3 Lá Nút 37
Tên sẽ có dạng: A?: Tên_nhân_tố
Trong đó A? là ký hiệu của nhân tố, bắt đầu bằng chữ A và theo sau là số thứ tự. Việc tạo ký hiệu cho nhân tố sẽ tạo điều kiện thuận lợi cho việc nhập công thức cho nhân tố cha của nó.
Các nhân tố không có con ta gọi là các nhân tố “lá”, các nhân tố có từ 1 con trở lên gọi là các nhân tố “nút”.
Đối với các nhân tố “lá” thì người dùng phải nhập giá trị cho nhân tố và không cần nhập công thức. Còn các nhân tố “nút” thì người dùng chỉ cần nhập công thức, không cần nhập giá trị. Giá trị của các nhân tố “nút” sẽ được tính tự động dựa vào công thức của nhân tố và các nhân tố con.
Công thức nhập vào sẽ có dạng (A1+A2*A3)/100. Trong đó A1, A2, A3 là các ký hiệu của các nhân tố con. Công thức có thể nhập dạng ngắn gọn chỉ bằng dấu ‘+’ hoặc ‘-’ hoặc ‘*’ hoặc ‘/’. Nếu nhập dạng ngắn gọn thì giá trị của nhân tố sẽ được tính bằng cách lấy các giá trị của nhân tố con thực hiện phép tính được nhập vào công thức. Ví dụ: ‘+’ tương ứng A1+A2+A3+...; ‘*’ tương ứng A1*A2*A3*…
Khi người dùng chọn một nhân tố và muốn tạo nhân tố mới thì hệ thống phải đưa ra danh sách các gợi ý về các nhân tố con của nhân tố được chọn để người dùng lựa chọn. Khi người dùng chọn một nhân tố trong danh sách thì nhân tố ngay lập tức được vẽ ra một cách trực quan.
C3.2. Sửa đổi nhân tố.
Người dùng có khả năng chọn một nhân tố và sửa đổi các thuộc tính của nhân tố đó. Việc sửa đổi thực hiện trực tiếp trên nhân tố mà không bật một hộp thoại nhập liệu ra.
C3.3. Vẽ các đường liên kết giữa các nhân tố.
Người dùng có thể vẽ các đường mũi tên từ một nhân tố đến một nhân tố khác để thể hiện mối quan hệ cha con giữa chúng.
Đường liên kết có thể được vẽ tự động nếu người dùng tạo nhân tố bằng cách chọn nhân tố trong danh sách các nhân tố gợi ý.
Trong quá trình xây dựng mô hình ROI, người dùng có thể chọn một nhân tố, kéo thả nhân tố tới một vị trí khác, tao nên cách trình bày trực quan hơn cho mô hình.
Khi di chuyển nhân tố, các đường liên kết cũng tương ứng di chuyển theo.
C3.5. Tự động tính toán.
Trong quá trình xây dựng mô hình, khi người dùng nhập giá trị cho các nhân tố “lá” thì giá trị của các nhân tố “nút” sẽ tự động được tính toán và hiển thị trực tiếp trên mô hình cho người dùng biết.
C3.6. In báo cáo.
Sau khi xây dựng xong mô hình và tính toán được tỉ suất ROI, người dùng có thể in thông tin chi tiết về dự án và tỉ suất ROI dưới dạng bảng báo cáo.
3.3. Đặc tả hệ thống
3.3.1. Các tác nhân và các ca sử dụng
Có hai tác nhân chính tham gia vào hệ thống:
- Người sử dụng: Sử dụng các chức năng chung của hệ thống như: Quản lý các dự án đầu tư, xây dựng mô hình tính toán ROI cho mỗi dự án.
- Người quản trị: Sử dụng các chức năng như: Quản lý người dùng, quản lý cấu hình hệ thống.
Bảng 2. Các tác nhân:
Tác nhân Các ca sử dụng Kết quả đem lại
Người sử dụng Tạo dự án mới Tạo mới hoàn toàn hoặc sao chép từ dự
án khác
Sửa dự án Cập nhật các thông tin về dự án
Xóa dự án
Mở dự án Khi mở dự án cũng là lúc bắt đầu xây
dựng mô hình ROI cho dự án. Tạo mô hình tính ROI
In báo cáo In thông tin về dự án Người quản trị
hệ thống
Cập nhật cấu hình hệ thống
Cập nhật các cấu hình của hệ thống như: màu chữ, font chữ, đơn vị tiền tệ mặc đinh, v.v…
Tạo lĩnh vực kinh doanh Tạo ra các lĩnh vực kinh doanh khác nhau để phân loại dự án
Quản lý người dùng Thêm, xóa, sửa tài khoản người sử dụng.
Các ca sử dụng:
1. Gói quản trị hệ thống UC1. Tạo người dùng mới. UC2. Xóa người dùng.
UC3. Thay đổi thông tin người dùng.