VaiTroID Int No Ma Vai Trò
Bảng 1: Bảng NguoiDung
Bảng VaiTro
Lưu trữ loại vai trò của người dùng đăng ký, gồm có cho nhà tuyển dụng, admin… Bảng liên quan đến chức năng kiểm tra vai trò người dùng.
Tên cột Kiểu dữ liệu nulls Khóa
Chính
Mô tả
VaiTroID int no Mã vai tro
TenVaiTro int no Ten Vai Tro
Bảng 2: Bảng VaiTro
Bảng LinhVuc
Lưu trữ lĩnh vực chính của công việc trong đơn đăng tuyển, như lĩnh vực công nghệ thông tin, điện tử viễn thông. Bảng liên quan chức năng tìm việc, đăng tuyển.
Tên cột Kiểu dữ liệu nulls Khóa
Chính
Mô tả
LinhVucID int
identity(1,1)
no yes Mã Lĩnh Vực
TenLinhVuc nvarchar(200) no Tên Lĩnh vực
Bảng 3: Bảng LinhVuc
Bảng NganhNghe
Lưu trữ các ngành nghề tương ứng với từng loại lĩnh vực. Bảng liên quan chức năng tìm việc, đăng tuyển.
Tên cột Kiểu dữ liệu nulls Khóa
Chính
Mô tả
NganhNgheID int identity(1,1) no yes Mã Ngành Nghề
TenNganhNghe nvarchar(200) no Tên Ngành Nghề
LinhVucID int no Mã Lĩnh Vực
Bảng 4: Bảng NganhNghe
Bảng NganhNghe_NguoiDung
Bảng lưu trữ khóa ngoài của bảng ngành nghề và bảng người dùng. Bảng liên quan chức năng tìm việc, đăng tuyển.
Tên cột Kiểu dữ liệu nulls Khóa Chính Mô tả
NganhNgheI D
int no Mã nganh nghe
Bảng 5: Bảng NganhNghe_NguoiDung
Bảng TinhThanh
Lưu trữ tỉnh thành, nơi làm việc của các đơn đăng tuyển. Bảng liên quan chức năng tìm việc, đăng tuyển.
Tên cột Kiểu dữ liệu nulls Khóa
Chính
Mô tả
TinhThanhID int identity(1,1) no yes Mã Tỉnh/Thành Phố
TenTinhThanh nvarchar(200) no Tên tỉnh/thành phố
Bảng 6: Bảng TinhThanh
Bảng DoiTuong:
Lưu trữ các đối tượng người sử dụng tham gia hệ thống để các nhà tuyển dụng có thể lựa chọn đối tượng khi đăng tuyển. Bảng liên quan chức năng tìm việc, đăng tuyển.
Tên cột Kiểu dữ liệu nulls Khóa Chính Mô tả
DoiTuongID int
identity(1,1)
no yes Mã loại khuyết tật
TenLoaiKhuyettat nvarchar(200) no Tên loại khuyết tật
MotaNgan nvarchar(100) yes Mô tả sơ lược về loại khuyết tật
MotaDai nvarchar(500) yes Mô tả chi tiết về loại khuyết tật
Bảng 7: Bảng DoiTuong
Bảng DoiTuong_NguoiDung
Bảng lưu trữ khóa ngoài của bảng Đối tượng và bảng Người Dùng. Bảng liên quan chức năng tìm việc, đăng tuyển.
Tên cột Kiểu dữ liệu nulls Khóa Chính Mô tả
DoiTuongID int no Mã đơn đăng tuyển
NguoiDungID int no Mã người dùng
Bảng 8: Bảng DoiTuong_NguoiDung
Bảng QuiMo
Phân loại theo qui mô của nhà tuyển dụng khi đăng ký. Ví dụ: qui mô từ 1-5 người. Bảng liên quan chức năng đăng ký nhà tuyển dụng.
Tên cột Kiểu dữ liệu nulls Khóa
Chính
Mô tả
TenQuiMo int no Ten qui mo
Bảng 9: Bảng QuiMo
Bảng LoaiHinh
Loại Hình công việc trong đơn đăng tuyển như: toàn thời gian, bán thời gian.. Bảng liên quan chức năng đăng tuyển, tìm việc.
Tên cột Kiểu dữ
liệu
nulls Khóa Chính Mô tả
LoaiHinhID int no yes Mã loai hinh
TenLoaiHinh int no Ten loai hinh
Bảng 10: Bảng LoaiHinh
Bảng MucLuong
Mức Lương của công việc trong đơn đăng tuyển như: thỏa thuận, cạnh tranh… Bảng liên quan chức năng đăng tuyển, tìm việc.
Tên cột Kiểu dữ liệu nulls Khóa
Chính
Mô tả
MucLuongID int no yes Mã Muc Luong
TenMucLuong Nvarchar(300) no Ten Muc Luong
Bảng 11: Bảng MucLuong
Bảng CapBac
Bảng lưu trữ cấp bậc của ứng viên trong đơn đăng tuyển. Ví dụ: như cấp bậc :”Sinh viên thực tập” . Bảng liên quan chức năng đăng tuyển, tìm việc.
Tên cột Kiểu dữ liệu nulls Khóa
Chính
Mô tả
CapBacID int no yes Mã cap bac
TenCapBac Nvarchar(300) no Ten cap bac
Bảng 12: Bảng CapBac
Bảng NhaTuyenDung
Bảng lưu trữ thông tin của nhà tuyển dụng khi đăng ký vào hệ thống. Bảng liên quan chức năng đăng ký nhà tuyển dụng, tìm việc.
Tên cột Kiểu dữ liệu nulls Khóa
Chính
Mô tả
NhaTuyenDungID int identity(1,1) no yes Mã nhà tuyển dụng
dụng trên thị trường
Mieuta nvarchar(4000) no Miêu tả thông tin về nhà tuyển dụng như cơ sở vật chất …, địa chỉ.
Email varchar(50) no Email nhà tuyển dụng
SoDienThoai varchar(50) no Số Điện Thoại của nhà tuyển dụng
Website Nvarchar(100) yes Website của nhà tuyển dụng
LinhVucID int no Mã Lĩnh vực công việc
TrangthaiID bit no Trạng thái hoạt động của nhà tuyển dụng
AnhDaiDien varchar(200) no Lưu trữ ảnh nhà tuyển dụng
NguoiLienHe Nvarchar(200) No Ten Nguoi Lien He
QuiMoID Int no Ma Qui Mo
ViTriText Nvarchar(500) no Vi Tri Cong ty
Lat Float no Kinh do
Lng Float no Vi do
Bảng 13: Bảng NhaTuyenDung
Bảng NhaTuyenDung_NguoiDung
Bảng lưu trữ khóa ngoài của bảng nhà tuyển dụng và bảng người dùng. Bảng liên quan chức năng đăng ký nhà tuyển dụng, tìm việc.
Tên cột Kiểu dữ liệu nulls Khóa
Chính
Mô tả
NhaTuyenDungID int no Mã đơn đăng tuyển
NguoiDungID int no Mã người dùng
Bảng 14: Bảng NhaTuyenDung_NguoiDung
Bảng DonDangTuyen
Bảng lưu trữ đơn đăng tuyển ứng với nhà tuyển dụng cụ thể. Bảng liên quan chức năng đăng tuyển, tìm việc. Bảng liên quan chức năng đăng ký nhà tuyển dụng, tìm việc.
DonDangtuyenID int identity(1,1) no yes Mã đơn đăng tuyển
NgayDang datetime no Ngày đăng của đơn đăng tuyển
NgayKetthuc datetime no Ngày kết thúc của đơn đăng tuyển
Mieuta nvarchar(4000) no Miêu tả công việc
Yeucau nvarchar(4000) no Yêu cầu đối với công việc
NhaTuyenDungID int no Mã nhà tuyển dụng
NganhNgheID int no Mã ngành nghề
TrangThaiID int no Ma trang thai xet duyet
MucLuongID Int no Ma muc luong
LoaiHinhID Int no Ma loai hinh cong viec
CapBacID Int no Ma Cap bac cong viec
ChucDanh Nvarchar(100) No Chuc danh cong viec
Bảng 15: Bảng DonDangTuyen
Bảng DonDangTuyen_DoiTuong
Bảng lưu trữ khóa ngoài của bảng đơn đăng tuyển và bảng đối tượng. Bảng liên quan chức năng đăng ký nhà tuyển dụng, tìm việc.
Tên cột Kiểu dữ
liệu
nulls Khóa Chính Mô tả
DonDangTuyenID int no Mã đơn đăng tuyển
DoiTuongID int no Mã đối tượng người sử dụng
Bảng 16: Bảng DonDangTuyen_DoiTuong
Bảng lưu trữ trạng thái xét duyệt của nhà tuyển dụng, đơn đăng tuyển. Bao gồm 4 trạng thái chính sau: Vừa nhập, Đang duyệt, Hợp lệ, Không hợp lệ. Mặc định khi vừa đăng ký, nhà tuyển dụng, đơn đăng tuyển ở trạng thái vừa nhập. Bảng liên quan chức năng đăng ký nhà tuyển dụng, tìm việc, đăng tuyển.
Tên cột Kiểu dữ liệu nulls Khóa Chính Mô tả
TrangThaiID int no yes Mã trang thai
TenTrangThai Nvarchar(100) no Ten Trang Thai
Bảng 17: Bảng TrangThai
1.3.2 Các bảng liên quan đến cơ chế phân quyền của DotNetNuke framework
Dotnetnuke giúp lập trình viên có thể dễ dàng xây dựng một hệ thống có phân quyền chặt chẽ. Cơ chế phân quyền dựa trên thành phần trang, sâu vào bên trong là thành phần chức năng của hệ thống. Mỗi quyền hay nhóm quyền khác nhau sẽ chỉ được truy cập đến những nội dung được cho phép trên hệ thống. Có thể cùng một chức năng, nhưng với mỗi quyền khác nhau, giao diện có thể thay đổi tùy theo quyền đó.Do đó, DotNetNuke tổ chức các bảng dữ liệu để lưu trữ thông tin về quyền, người dùng và các module như trong hình 9:
Liên kết giữa các bảng liên quan đến cơ chế phân quyền
Bảng người dùng(Users)
Tên cột Kiểu dữ liệu nulls Khóa chính Mô tả
UserID int identity(1, 1)
no yes Xác định một người dùng khi đăng nhập vào hệ thống
Username Nvarchar(100) no Tên của người dùng
FirstName varchar(50) no Họ
LastName Nvarchar(50) no Tên
IsSuperUser bit no Có được cấp quyền host hay không
AffiliateId int yes
Email nvarchar(256) yes Thư điện tử
DisplayName nvarchar(128) no Tên hiện thị
UpdatePassword bit no Có thay đổi password không
LastIPAddress Nvarchar(50) yes Địa chỉ IP
IsDeleted bit No Có bị đánh dấu xóa hay không
CreatedByUserI D
int yes
CreatedOnDate datetime yes Ngày đăng kí
LastModifiedBy UserID
int yes Chỉnh sửa lần cuối bởi ai
LastModifiedOn Date
datetime yes Ngày chỉnh sửa cuối
LoaiKhuyetTatI D
int yes Loại khuyết tật
QuocGia varchar(50) yes Quốc gia
TrangCaNhan varchar(50) yes Trang cá nhân
ChuKy Nchar(100) Yes Chữ ký
NickChat Varchar(100) Yes Nickchat
SoDienThoai Varchar(50) Yes Số điện thoại
NgheNghiep Nvarchar(100) Yes Nghề nghiệp
GioiTinh Bit Yes Giới tính
NgaySinh Datetime Yes Ngày sinh
TinhTrangHonN han
Nvarchar(50) Yes Tình trạng hôn nhân
ThanhPho Varchar(50) yes Thành phố
Anh Varchar(50) Yes Ảnh
TrangThai Bit Yes
Trạng thái
QuyenID Int Yes Mã quyền
Bảng 18: Bảng User
Bảng thông tin người dùng(UserProfile)
Tên cột Kiểu dữ liệu nulls Khóa
chính
Mô tả
ProfileID int identity(1,1) No PK
UserID int No FK
PropertyDefinitionID int Yes
PropertyValue nvarchar(255) Yes
PropertyText nText Yes
Visibility int Yes
LastUpdatedDate datetime Yes
Bảng 19: Bảng UserProfile
Bảng lưu thông tin về quyền(Roles)
Tên cột Kiểu dữ liệu nulls Khóa chính Mô tả
RoleID int identity(1,1) No PK
PortalID int No FK
RoleName nvarchar(50) No
Description nvarchar(255) Yes
RoleGroupID int No FK
Bảng 20: Bảng Roles
Bảng lưu thông tin nhóm quyền(RoleGroup)
Tên cột Kiểu dữ liệu nulls Khóa chính Mô tả
RoleGroupID int identity(1,1) No PK
RoleGroupName nvarchar(50) No
Description nvarchar(255) Yes
Bảng 21: Bảng RoleGroup
Bảng lưu thông tin các quyền người dùng(UserRoles)
Tên cột Kiểu dữ liệu nulls Khóa chính Mô tả
UserRoleID int identity(1,1) No PK
UserID int No FK
ExpiryDate datetime Yes
RoleID int No FK
IsTrialUsed bit Yes
EffectiveDate datetime Yes
Bảng 22: Bảng UserRoles
1.4 Thiết kế qui trình nghiệp vụ
Phần này mô tả thiết kế các qui trình nghiệp vụ quan trọng nhất của dịch vụ Giới Thiệu Việc Làm.
1.4.1 Tìm việc
Hình 10 Miêu tả các bước tìm việc, nguời dùng vào mục tìm việc, lựa chọn lĩnh vực, ngành nghề, tỉnh thành, đối tượng sử dụng để tìm kiếm, sau đó chương trình sẽ gọi các web service từ Dịch Vụ Cloud WebService. Phần đặc biệt trong qui trình này là quá trình giao tiếp giữa modul tìm việc và dịch vụ cloud WebService.
Hình 10. Miêu tả các bước tìm việc
1.4.2 Đăng tuyển
Hình 11 Miêu tả qui trình tạo một việc làm mới (đăng tuỷen) nhà tuyển dụng sẽ vào modul Đăng Tuyển, sau đó chương trình sẽ gọi các web service từ DịchVụ Cloud WS. Đơn đăng tuyển đầy đủ các thông tin bao gồm yêu cầu công việc, chức danh,
cấp bậc, vị trí, các yêu cầu đối với người ứng tuyển. Phần đặc biệt trong qui trình này là quá trình giao tiếp giữa modul đăng tuyển và dịch vụ cloud WebService.
Hình 11. Miêu tả các bước đăng tuyển
1.4.3 Tìm vị trí nhà tuyển dụng
Hình 12 Miêu tả các bước tìm vị trí nhà tuyển dụng gần vị trí đang đứng của nguời dùng qua giao diện Android, sau đó chương trình sẽ gọi các web service từ Dịch Vụ Cloud WS. Phần đặc biệt trong qui trình này là quá trình tương tác giữa hệ điều hành Android với dữ liệu trên cloud thông qua việc gọi các dịch vụ webservice để thông qua giao diện map view trong Android tìm kiếm các nhà tuyển dụng gần vị trí người dùng thông qua hệ thống định vị.
Hình 12. Miêu tả các bước tìm vị trí nhà tuyển dụng
Sau quá trình thiết kế là quá trình cài đặt dịch vụ, sẽ được mô tả trong mục II Cài đặt
II. Cài đặt
2.1 Kiến trúc cài đặt dịch vụ Giới Thiệu Việc Làm
Kiến trúc cài đặt dịch vụ Giới Thiệu Việc Làm Như trong hình 13, dịch vụ gồm 3 phần chính, là trang web trên nển tảng google app engine, dịch vụ giới thiệu việc làm trang cungkhoinghiep.net, ứng dụng tìm việc, hiển thị tuyển dụng gần vị trí người dùng ở Android. Trong đó dịch vụ giới thiệu việc làm triển khai trên nển tảng google app engine sẽ cung cấp các web service để dịch vụ giới thiệu việc làm trên trang cungkhoinghiep.net và ứng dụng tìm việc ở Android sử dụng và tương tác với dữ liệu. Do đó triển khai cài đặt được thực hiện theo 3 thành phần chính này.
Hình 13. Cấu trúc cài đặt dịch vụ
2.2 Môi trường cài đặt
2.2.1 Trang web trên nền tảng google app engine
- Môi trường cài đặt python 2.5 - Google App Engine 1.4.1 - HTML, CSS, Jquery 1.4.1
- Tổng cộng có 429 file, dung lượng 2,74 MB. - Chia làm các file chính:
• /static : chứa file css, js
• /templates: chứa file html đại diện cho tầng presentation
• /entitites: chứa các class khai báo dữ liệu, gồm 18 class đại diện cho 18 bảng,
• /controllers: chứa các class tương tác với dữ liệu và giao diện, đại diện cho tầng business
• /xmlWS: chứa file thực thi các web service.
2.2.2 Dịch vụ Giới Thiệu Việc Làm trang cungkhoinghiep.net
- Môi trường cài đặt: .Net 3.5 - DotNetNuke 5.1
- Asp.net
- Tổng cộng có 122 file, dung lượng 631 KB. - Chia làm các file chính:
• . ascx: chứa file đại diện tầng presentation. • .cs: file đại diện tầng business
2.2.3 Ứng dụng Android
- Môi trường cài đặt: Android SDK 2.2 Froyo. - Tổng cộng có 70 file, dung lượng 318KB. - Chia làm các file chính:
• /src: chứa các package sau:
Com.google.android: chứa các file Activity, file tương tác của chương trình.
Longtdbk.android.job: chứa các file tương tác dữ liệu nhận được từ web service.
Org.xmlrpc.android: thư viện để gọi web service dưới định dạng XML-RPC.
• /res: chứa các file giao diện của chương trình.
2.3 Dữ liệu
Dịch vụ Giới thiệu việc làm lưu trữ dữ liệu trên cloud
Trong GQL không có khái niệm bảng, tất cả đều là các Entities (thực thể). Khi khởi tạo một thực thể, sẽ tự tạo thêm trường key, ID, keyname. Cách khởi tạo một entities:
Giả sử có bảng Employee như sau:
Tên cột Kiểu dữ liệu nulls Khóa Chính
firstname String
last_name String
hire_date DateTime
Attended_hr_training bit
Bảng 23: Bảng Employees
Bảng này tương ứng với thực thể Employee như sau:
class Employee(db.Model):
last_name = db.StringProperty() hire_date = db.DateProperty()
attended_hr_training = db.BooleanProperty()
2.4 Giải thuật
2.4.1 Viết webservice trên cloud
Để viết webservice có 3 loại giao thức phổ biến hiện nay là SOAP, REST, XMLRPC. Trong đó XMLRPC phù hợp với những ứng dụng nhỏ, và kết hợp phù hợp nhất trong môi trường Python. XML-RPC là một giao thức gọi từ xa qua internet. XML-RPC là mọt dạng của HTTP-POST. Giá trị truyền đi là một xâu XML. XML-RPC có thể truyền dữ liệu dạng string, date, array, list.
Sử dụng ngôn ngữ python trong google appengine, kết hợp với thư viện xmlrpcserver.py, để thực hiện hàm web service.
2.4.2 Kết nối và thực thi web service trong môi trường Dotnetnuke:
Để liên lạc với dữ liệu trên cloud qua web service với giao thức XML-RPC, sử dụng thư viện CookComputing.XMLRPCV2.dll. Do dữ liệu trả về là một xâu XML, do đó cần thực hiện các bước sau:
- Lấy giá trị từ xâu XML trả về:
Hình 14. Lấy giá trị từ XML
- Chuyển từ xâu xml về dạng DataTable:
Hình 15. Chuyển thành DataTable
2.4.3 Kết nối và thực thi web service với Android
Để liên lạc qua web service qua giao thức XML-RPC, ta thực hiện các bước tương tự trong DotNet Nuke như đã giới thiệu trong mục 2.3.3.
- Sử dụng thư viện org.xmlrpc.android để nhận được giá trị trả về từ web service.
- Phân tích chuỗi XML nhận được và lấy về giá trị.
2.5 Cài đặt dịch vụ (web service)
Các dịch vụ sau đây cung cấp dưới dạng dịch vụ web, được mô tả ở các bảng dưới đây:
Tên hàm addLinhVuc(string key, LinhVucID) Chức năng Thêm lĩnh vực
Địa chỉ http://longtdbk.appspot.com/app.addLinhVuc
Bảng 24: Dịch vụ addLinhVuc
Tên hàm getLinhVuc(string key, LinhVucID) Chức năng Chi tiết lĩnh vực của nhà phát triển theo ID
Địa chỉ http://longtdbk.appspot.com/app.getLinhVuc
Bảng 25: Dịch vụ getLinhVuc
Tên hàm deleteLinhVuc(string key, LinhVucID)
Chức năng Xóa lĩnh vực tương ứng với key của nhà phát triển
Địa chỉ http://longtdbk.appspot.com/app.deleteLinhVuc
Bảng 26: Dịch vụ Bảng deleteLinhVuc
Tên hàm addNganhNghe(string key, NganhNgheID) Chức năng Thêm Ngành nghềvào trang web của nhà phát triển
Địa chỉ http://longtdbk.appspot.com/app.addNganhNghe
Bảng 27: Dịch vụ addLinhVuc
Tên hàm getNganhNghe(string key, LinhVucID, NganhNgheID) Chức năng Chi tiết ngành nghề của nhà phát triển theo ID
Địa chỉ http://longtdbk.appspot.com/app.getNganhNghe
Tên hàm deleteNganhNghe(string key, NganhNgheID) Chức năng Xóa Ngành Nghề tương ứng với key của nhà phát triển
Địa chỉ http://longtdbk.appspot.com/ app.deleteNganhNghe
Bảng 29: Dịch vụ deleteNganhNghe
Tên hàm addDoiTuong(string key, DoiTuongID)
Chức năng Thêm Đối tượng vào trang web của nhà phát triển
Địa chỉ http://longtdbk.appspot.com/app.addDoiTuong
Bảng 30: Dịch vụ addDoiTuong
Tên hàm getDoiTuong(string key, DoiTuongID) Chức năng Chi tiết đối tượng của nhà phát triển theo ID
Địa chỉ http://longtdbk.appspot.com/app.getDoiTuong
Bảng 31: Dịch vụ getDoiTuong
Tên hàm deleteDoiTuong(string key, Đối tượng)
Chức năng Xóa Đối tượng tương ứng với key của nhà phát triển
Địa chỉ http://longtdbk.appspot.com/app.deleteDoiTuong
Bảng 32: Dịch vụ deleteDoiTuong
Tên hàm addNhaTuyenDung(keyNguoiDung, LinhVucID, TenThuongHieu, Email, SoDienThoai, MieuTa, ViTri, Lat, Lng, NguoiLienHe)