- Hệ quản trị nhân sự của OFBiz quản lý tốt mọi mặt của một nhân viên
trong công ty. Cung cấp cho nhà quản lý mọi thông tin cần thiết.
- Giảm bớt chi phí cho việc quản lý, thời gian cho nhà quản lý.
- Có thể thêm module mới bất cứ lúc nào và phục vụ cho bất cứ nhu cầu của
công ty trong quá trình làm việc
59 trang |
Chia sẻ: lylyngoc | Lượt xem: 3325 | Lượt tải: 3
Bạn đang xem trước 20 trang tài liệu Luận văn Tìm hiểu và triển khai hệ thống quản trị nhân sự dựa trên nền tảng OFBiz, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
t số hệ HR ở Việt Nam
2.1. Giới thiệu về phần mềm HRM tại Việt Nam
2.1.1. SaiGon Software Park – HRM
- Phân hệ Quản lý cơ cấu tổ chức nhân sự: Sắp xếp vị trí từng nhân viên trong cơ
cấu tổ chức.
- Phân hệ Quản lý hồ sơ nhân viên: Bao gồm quản lý các mục chính như : Sơ yếu
lý lịch, Quá trình công tác, ngày nghỉ có phép, không phép. Hợp đồng lao động, khen
thưởng và kỉ luật.
- Phân hệ Đánh giá nhân viên: Quản lý các thang điểm , tiêu chí đánh giá nhân
viên.
- Phân hệ Chấm công: Dựa trên số buổi nghỉ, vắng mặt, ra/ vào muộn để chấm
công theo giờ, ngày hoặc tháng.
- Phân hệ Tính lương: Có chức năng tính lương cho từng bộ phận, do yêu cầu
của mỗi bộ phận là khác nhau.
- Phân hệ Quản lý tuyển dụng – đào tạo: Lên kế hoạch tuyển dụng, xác định cần
bao nhiêu nhân viên và yêu cầu cụ thể vào từng công việc.
- Phân hệ Quản lý chế độ chính sách: Lập các biểu mẫu báo cáo bảo hiểm xã hội,
bảo hiểm y tế, quá trình khám chữa bệnh, tai nạn giao thông.
- Hệ thống Báo biểu, phân tích thống kê: Phân tích công việc và quá trình công
tác của từng nhân viên để phục vụ cho quá trình đánh giá và quản lý.
- Tiện ích hệ thống: Phân quyền rõ ràng cho từng cá nhân trong công ty, bảo mật
quyền quản lý cho người dùng.
2.1.2. Fast - HRM
- Quản lý tuyển dụng , quảng cáo các thông tin công việc cần thiết để tuyển nhân
viên.
- Thay đổi thông tin người xin việc thành thông tin nhân viên (nếu nhân viên
trúng tuyển)
- Hiển thị sơ đồ và cấu trúc doanh nghiệp theo dạng đồ thị.
- Lưu các số liệ cần thiết để quản lý nhân viên như : Thời gian thử việc, Thời
gian nghỉ việc, Thời gian kí hợp đồng, Thời gian hết hạn hợp đồng.
16
- Tra cứu và lập báo cáo thuận tiện cho việc phân tích và lên kế hoạch.
- Kết nối chặt chẽ với bảng lương để dễ dàng cập nhật.
2.1.3. MISA - HRM
MISA HRM.NET 2010 là phần mềm Quản trị nguồn nhân lực trên nền tảng web.
Quản lý nhân viên
- Quản lý thông tin dựa vào thông tin cá nhân, quá trình đào tạo, công tác.
- Tự lập hợp đồng lao động
- Tìm kiếm hồ sơ nhân viên
- Tự động thông báo các sự kiện cần lưu ý.
Nhân viên tự cập nhật thông tin
- Nhân viên tự tìm được tông tin, kiểm tra thông tin về phúc lợi, đệ trình đơn
nghỉ phép, hoàn thiện việc đánh giá nhân viên trực tuyến.
- Đem lại hiểu quả công việc đối với doanh nghiệp có nhiều chi nhánh.
Quản lý tuyển dụng
- Có thể nộp hồ sơ xin việc trực tuyến
- Quản lý , phân tích dễ dàng các khâu trong quá trình tuyển dụng, lập hồ sơ kỹ
năng, lập kế hoạc tuyển dụng, theo dõi thông tin chi tiết ứng viên.
- Chuyển hồ sơ ứng viên đạt yêu cầu thành hồ sơ nhân viên
Quản lý đào tạo
- Theo dõi chi tiết quá trình đào tạo bao gồm danh sách nhân viên cần đào tạo,
các nhà cung cấp dịch vụ đào tạo, các kỹ năng được đề cập, các thiết bị yêu cầu, chi
phí, địa điểm đính kèm, kết quả đánh giá….
- Nhân viên tự cập nhật được các bản đánh giá về khoá học, chứng chỉ đạt được.
Đánh giá nhân viên
- Quản lý các kỳ đánh giá, người đánh giá, các tiêu chí đánh giá, các biểu mẫu
đánh giá, kết quả đánh giá…giúp người dùng dễ dàng tổ chức, quản lý việc đánh giá
thành tích, năng lực cũng như các yếu tố khác của nhân viên.
- Tạo các bản đánh giá theo từng đợt đánh giá khác nhau.
17
2.1.4. 3S – HRM
Quản lý hồ sơ nhân viên
- Quản lý trực tiếp hoặc gián tiếp các thông tin sau : Mã số nhân viên, Họ tên,
Ngày sinh, Điện thoai, Nguyên quán, Nơi thường trú, Đơn vị/Phòng ban, Nơi sinh,
CMND, Ngày bắt đầu công việc, Giới tính, Ngày nghỉ việc, Dân tộc, Trình độ ngoại
ngữ…
- Cung cấp tất cả các thông tin hồ sơ liên quan đến nhân viên,thuận tiện cho việc
tìm kiếm nhân viên. Thực hiện các chức năng tìm kiếm thông tin dựa trên thông tin
chính xác hoặc gần đúng, ghi nhận thông tin về quá trình làm việc và năng lực của
nhân viên
2.2. Ưu điểm của phần mềm HRM Việt Nam
- Đầy đủ các chức năng cho một chương trình quản lý nhân sự.
- Thích hợp với môi trường làm việc tại các công ty Việt Nam.
- Dễ dàng thay đổi chức năng phù hợp với từng yêu cầu của mỗi công ty.
- Dễ sử dụng do dùng ngôn ngữ mặc định là Tiếng việt, giao diện gần gũi với
người dùng.
2.3. Nhược điểm của phần mềm HRM Việt Nam
- Thừa 1 số chức năng không cần thiết trong quá trình quản lý do đó gây rắc rối
cho nhà quản lý.
- Không nên có chức năng tự đọng thay đổi thông tin nhân viên, do nhân viên có
thể đưa thông tin không chính xác lên hệ thống.
- Một số hệ thống quản trị nhân sự có chi phí quá cao so với khả năng kinh tế của
1 công ty vừa và nhỏ.
- Người quản trị không có quyền thêm module mới thích hợp với nhu cầu từng
giai đoạn phát triển của công ty. Việc thay đổi phải phụ thuộc vào nhà cung cấp gói
sản phẩm quản lý nhân sự.
2.4. Lợi ích khi dùng hệ quản trị nhân sự của Ofbiz
- Đẩy đủ chức năng cho hệ quản trị nhân sự nói chung, có thể viết thêm 1 số chức
năng phù hợp với từng công ty Việt Nam.
18
- Chi phí đầu tư cho hệ thống rẻ hơn nhìue phần mềm quản trị nhân sự tại Việt
nam do OFBiz là hệ quản trị nhân sự sử dụng Open Source.
- Có tính hệ thống : Do hệ thống quản trị nhân sự (HR) chỉ là 1 phần trong hệ
thống quản trị doanh nghiệp của Ofbiz. Điều đó khiến cho công ty thuận lợi hơn khi
muốn mở rộng việc quản lý về sau mà không sợ gây xung đột trong hệ thống (Quản
lý khách hàng, Quản lý lương, phần mềm kế toán.)
- Liên tục được cập nhật theo xu hướng công nghệ mới trên thế giới.
19
Chương 3 : Hệ mã mở OFbiz
3.1. Giới thiệu hệ mã mở OFbiz
OFbiz là một mã nguồn mở cung cấp framework cho việc phát triển một ứng
dụng web trên nền Java. OFbiz cung cấp sẵn các thành phần cần thiết cho ứng dụng.
Phát triển ứng dụng dựa trên OFbiz đơn giản chỉ là việc viết mã sử dụng các thành
phần có sẵn để phối hợp chúng hoạt động thành một ứng dụng hoàn chỉnh. Công việc
xây dựng một ứng dụng web trên OFbiz cũng tương tự xây một ngôi nhà mà ở đây
người thợ chỉ làm những công việc hết sức đơn giản. Ngôi nhà đã có sẵn nền móng và
các thành phần khác như tường, cửa, v.v… Công việc của người thợ chỉ đơn giản là
kết hợp các bức tường theo một cách nào đó và đặt các ô cửa ở các vị trí thích hợp.
Kiến trúc OFbiz gồm 04 lớp: Công nghệ cơ sở (Basic technology), Công cụ
chung (common tool), ứng dụng chung (Common application) và ứng dụng
(Application) (Hình 2).
Hình 2 . Kiến trúc OFbiz
Lớp công nghệ cơ sở cung cấp các công nghệ mới nhất để phát triển phần mềm
trên J2EE, OFbiz hỗ trợ JavaBean, CORBA, Web Service, các cơ sở dữ liệu quan hệ,
các công cụ để phát triển và quản trị hệ thống. Lớp thứ nhất của OFbiz là chức năng
tương tự như một Application Server phục vụ các chức năng cơ bản của máy chủ dữ
liệu.
20
Lớp công cụ chung cung cấp các dịch vụ hỗ trợ cho việc phát triển phần mềm.
Entity Engine cung cấp một cách thức dễ dàng, uyển chuyển để truy xuất vào cơ sở dữ
liệu, lập trình viên không cần phải viết các câu lệnh SQL mà chỉ cần dùng các phương
thức của Entity Engine để truy xuất và thao tác dữ liệu. Entity Engine thay thế cho
việc dùng JDBC và các lệnh SQL chuẩn. Service Engine cung cấp cho lập trình viên
thao tác lập trình trên mô hình VMC được dễ dàng và thuận lợi. Workflow engine dựa
trên đặc tả WFMC và OMG. Nó là một phần của Services framework và được tích hợp
chặt chẽ với Entity Engine, OFbiz Workflow Engine sử dụng XPDL làm ngôn ngữ
định nghĩa tiến trình (process definition language). OFbiz Rule Engine dựa trên kỹ
thuật lập trình logic đã tồn tại hàng thập kỉ. Ngôn ngữ lập trình logic được nhiều người
biết đến là Prolog, mặc dù có nhiều ngôn ngữ khác nữa, ý tưởng chính ở đây là thay vì
đưa ra một tập các chỉ thị thực thi theo một trình tự cố định như các ngôn ngữ truyền
thống, chúng ta chỉ cần định nghĩa các sự kiện (fact) và các luật (rule).
Lớp ứng dụng chung là các ứng dụng cơ bản nhất đối một doanh nghiệp, OFbiz
đã xây dựng các ứng dụng này thành các thành phần cơ bản, khi phát triển ứng dụng
các nhà phát triển phần mềm chỉ khảo sát thực tế, tích hợp các thành phần ứng dụng
này lại theo đúng yêu cầu khảo sát là có thể sử dụng được. Việc này giúp cho việc phát
triển phần mềm trở nên nhanh chóng và dễ nâng cấp, bảo trì.
Lớp ứng dụng trên cùng là các ứng dụng chuẩn của doanh nghiệp, các doanh
nghiệp chỉ cần chỉnh lại cấu hình để đáp ứng đúng thực tế của doanh nghiệp. Các ứng
dụng này hầu như đã đáp ứng được hết các yêu cầu của doanh nghiệp.
Như đã phân tích ở trên, kiến trúc OFbiz là một flatform, một framework để
cho việc phát triển một ứng dụng trên web được nhanh chóng và dễ dàng. Tùy theo
yêu cầu cụ thể của doanh nghiệp, nếu sát với lớp trên cùng thì sử dụng ngay lớp đó,
nếu không thì phải hiệu chỉnh lại lớp ứng dụng, nếu vẫn không sát thực tế thì phải phát
triển ứng dụng trên lớp công cụ chung, nếu vẫn còn chưa được thì nhà phát triển phần
mềm phải sử dụng lớp công nghệ cơ sở để phát triển ứng dụng. Càng về lớp trên thời
gian phát triển càng nhanh nhưng độ linh hoạt càng thấp, lớp dưới cùng thì thời gian
phát triển ứng dụng lâu hơn nhưng giải quyết được nhiều việc hơn.
Các thành phần trong Ofbiz bao gồm :
Accounting (Agreements, Invoicing, Vendor Management, General
Ledger ) : Phần mềm kế toán cho công ty
Asset Maintenance : Bảo vệ tài sản cho nhân viên trong công ty
21
Catalogue and Product Management : Quản lý sản phẩm và calatogue
Facility and Warehouse Management : Quản lý kho và cơ sở vật chất
Manufacturing : Quản lý sản xuất của công ty
Order Processing : Xử lý thông tin đặt hàng của khách hàng
Inventory Management, automated stock replenishment etc : Kiểm toán, tự
động bổ sung cổ phiếu
Content management system (CMS) : Quản lý nội dung hệ thống
Human resources (HR) : Quản trị nhân sự trong công ty
People and Group Management : Quản lý cá nhân và nhóm người lao động
Project Management : Quản lý dự án
Sales Force Automation : Bán hàng tự động
Work Effort Management : Quản lý kết quả làm việc
Electronic point of sale (ePOS) : Quản lý chi nhánh báng hàng điện tử
Electronic commerce (eCommerce) : Thương mại điện tử
3.2. Kiến trúc 3 tầng và cách thức phát triển ứng dụng với Ofbiz
3.2.1. Kiến trúc 3 tầng của Ofbiz
Framework Ofbiz sử dụng mô hình 3 tầng chung cho tất cả các ứng dụng của nó.
Đó là tầng Data Layer, Business Logic Layer và Presentation Layer. Các tầng Data
Layer và Service Layer có những cách thức riêng chịu trách nhiệm tương tác với từng
tầng.
Data Model Layer : Tầng này đại diện cho Cơ sở dữ liệu. Nó bao gồm 1 thực thể
chức năng (Entity Engine) có trách nhiệm kết nối cơ sở dữ liệu, phục hồi cơ sở dữ liệu
và lưu trữ… Nó sử dụng lớp Java Generic Delegator để kết nối với cơ sở dữ liệu và nó
sử dụng Java Generic Value đại diện cho những thực thể được chèn vào cơ sở dữ liệu.
Business Logic Layer : Tầng này đại diện cho logic, hoặc các dịch vụ cung cấp
cho người dùng và thực hiện trên Cơ sở dữ liệu của tầng Data layer. Có thể có nhiều
loại dịch vụ như java, SOAP, simple, workflow… và mỗi lại dịch vụ có cách thức riêng
của mình. Có một Service Engine có trách nhiệm phân chia và gọi các dịch vụ..v.v..
22
Presentation Layer : Ofbiz đã chuyển sang sử dung “Screens” để đại diện cho
từng trang của Ofbiz. Do đó mỗi trang nên được biểu diễn bình thường như một screen.
Một trang Ofbiz bao gồm nhiều thành phần như hearders, Footers,appheader… do đó
khi dựng hình các trang, đây là sự kết hợp có trình tự đã được sắp đặt, hoặc bao gồm,
trong một screen.
3.2.2. Phát triển ứng dụng với OfBiz – Overview
Trước khi bắt đầu phát triển OFBiz, nó có thể trở lên hữu ích thông qua các
nguyên tắc chung của việc phát triển ứng dụng trong Ofbiz và so sánh với các
Frameworks khác mà các bạn đã từng biết . Tôi sẽ cố gắng so sánh việc phát triển bằng
Ofbiz với các ứng dụng truyền thống : Java , PHP/Perl .
Java
Hình 3
Nói chung, quá trình phát triển Java làm nổi bật sự tách biệt rõ ràng hoặc các
tầng của code, thích hợp cho những nhóm phát triển lớn với chức năng riêng biệt của
từng đội. Có các tầng riêng biệt cho việc xử lí như tầng business logic, managing
databases và hiển thị kết quả cho người dùng.
Dữ liệu là những mô hình – giống như những đối tượng, với thành phần cho các
trường và nhận được, thiết lập những mô hình cho việc truy cập vào các trường.
Những đối tượng vẫn “Tiếp tục tồn tại”, hoặc được lưu trữ vào 1 cơ sở dữ liệu quan
hệ, bằng cách sử dụng 1 framework persistence (dai dẳng, bền bỉ).
23
Điển hình ứng dụng Java bao gồm nhiều thư viện, classes, property files, các
files định nghĩa, và các files triển khai. Chính code của nó đã thành lập các class riêng
biệt, trong mỗi class đó là những tập tin riêng của chính nó, và các files class được
nhóm thành các gói trong thư mục riêng biệt.
PHP and Perl
Hình 4
PHP và Perl, thì ngược lại, nổi bật là sự phát triển nhanh và kết quả ngay lập
tức, có thể do 1 nhóm nhỏ các nhà phát triển. Hầu hết code của Perl và PHP là đơn
tầng. Ví dụ, 1 trang đơn hoặc mã script có cấu trúc từ input, tác động qua lại với cơ sở
dữ liệu, và hoàn lại output.
Mặc dù cả PHP và Perl là ngôn ngữ hướng đối tượng, dữ liệu thường được sử
dụng với danh sách và bản đồ ( list and maps ), chứ ko phải đối tượng công khai. Cơ
sở dữ liệu truy cập được xử lý bằng câu lệnh SQL trong trang và Scripts.
PHP và Perl là ngôn ngữ script – cái mà được biên dịch trong thời gian chạy, do
đó gia tăng thử nghiệm và phát triển.
OFBiz
24
Hình 5
Ofbiz kết hợp giữa tốc độ của PHP/Perl với cấu trúc của Java. Mục đích quan
trọng nhất của Ofbiz là giảm số lượng mã yêu cầu.Điều này đạt được bằng cách cho
phép các nhà phát triển tạo ra những định nghĩa cao cấp của data model, business
logic, presentation và sau đó cung cấp với 1 bộ API chung có nhiệm vụ làm công việc
định nghĩa.
Ví dụ, nhiệm vụ chung của ứng dụng kinh doanh là tạo ra các bảng để lưu trữ
dữ liệu và viết các forms để update các bảng ấy.Điều này thường yêu cầu mã HTML
với nhiều lần lặp đi lặp lại của các bảng cơ sử dữ liệu. Với OFBiz, thực thể và form
widget cho phép form đó được tạo 1 cách tự động dựa trên các định nghĩa meta.
Giống như Java, OFBiz là tầng cao và mang tính hệ thống. Nhưng phần của
Framework Ofbiz và ứng dụng Ofbiz nằm trong thành phần riệng biệt, và Ofbiz cho
phép các ứng dụng bên ngoài hoặc các ứng dụng tùy chỉnh được thêm vào 1 cách dễ
dàng. Mỗi ứng dụng được chia thành view(presentation), business logic và tầng data
model.
Tầng view của Ofbiz được xây dựng quanh mô hình Framework MVC và được
trang trí bên ngoài. Trong PHP hoặc CGI Perl, người truy cập trang web yêu cầu cụ
thể từng trang hoặc scripts, cái mà tập hợp dữ liệu và tạo ra toàn bộ trang và trả lại cho
người truy cập. Trong Ofbiz, ngược lại, điều khiển phân tích cú pháp là yêu cầu đầu
tiên, sau đó mới xác định những việc cần làm.(Hence,MVC.)
25
Tầng view là sự tách xa hơn trong presentation( ví dụ HTML hoặc XSL:FO) và
view logic( ví dụ thu thập dữ liệu để tạo thành 1 form.) Tài liệu được trình bầy là tự
được tách thành từng phần, giống như header, footer, leftbar, rightbar và ứng dụng
header,cái được tạo ra cùng nhau trong “trang trí” thời trang.
Sự thuận lợi của MVC và các mẫu trang trí trở lên rõ ràng cho các ứng dụng
rộng hơn, nơi những hành động tượng tự và các yếu tố được lặp lại nhiều lần. OFBiz
cho phép sự tái sử dụng các các yếu tố thiết kế , view logic và form action, giảm bớt sự
cần thiết cho việc tạo và, thậm chí tệ hơn, duy trì code lặp đi lặp lại.
Tầng business logic của ứng dụng OFBiz không ràng buộc với những trang cụ
thể (giống như trong PHP), các đối tượng cụ thể (giống như trong Java), hoặc các
server yêu cầu cụ thể (giống như trong CGI Perl hoặc Java servlets.) Thay vào đó
chúng thường được tạo ra như những “dịch vụ” nhỏ,những phần code nhỏ có thể dùng
lại là những phần có thể viết trong những trạng thái khác nhau của ngôn ngữ, bao gồm
Java, Jython,beanshell, hoặc Ofbiz minalang. Dịch vụ sau đó có thể gọi trực tiếp từ
web ứng dụng , với những form phân tích tự động, từ trong các dịch vụ khác, từ các
workflows công khai hoặc các mức rất nhỏ như SOAP hoặc RMI.
Tầng data access, được xử lý với các thực thể trong OFBiz, cái mà cho phép dữ
liệu được mô phỏng trong tập tin XML và truy cập với đối tượng duy nhất
GenericDelegator. Trường hợp các mục dữ liệu được xử lý như GenericEntity và đối
tượng GenericValue chứ không phải là đối tượng của riêng mình. Như vậy, không cần
phải viết (hoặc tạo) cài đặt và thiết lập mã persistence riêng. Thay vào đó, làm việc với
dữ liệu trong OFBiz tương đối giống làm việc với danh sách và bản đồ trong Perl hoặc
PHP. Thậm chí lưu trữ dữ liệu còn đơn giản hơn. Không cần viết thêm câu lệnh SQL
INSERT hoặc UPDATE , chỉ cần sử dụng 1 phương thức lưu trữ().
Bởi vì hầu hết lớp view và nhiều (mặc dù không phải tất cả) của tầng business
logic được viết ra bởi ngôn ngữ scripting giống như beanshell hoặc minilang,
Framework OFBiz cho phép gia tăng thử nghiệm và phát triển 1 style giống như Perl
hoặc PHP.
Cuối cùng, do OFBiz trình bày một ngăn xếp tích hợp từ tầng data tới tầng
business logic tới lớp layer, nó có thể được nhận biết qua lại, Ví dụ, thay đổi tầng data
có thể tự động thay đổi dịch vụ (business logic) và forms(UI) đang làm việc với dữ
liệu. Điều này có thể làm giảm đáng kể số tiền bảo dưỡng cho ứng dụng.
3.3. Phân hệ HR sẵn có của Ofbiz
26
Human Resources Management
Quản lý quá trình
làm việc
Quản lý cán bộ Global HR Setting
Kquả làm việc Skills
Trình độ
chuyên môn
Quá trình đào
tạo
Resume
Chức vụ Leave
27
Workflow :
Quản trị nhân sự Nhu cầu tuyển
dụng
Tiến hành tuyển
dụng
Tiếp nhận hồ sơ Lên kế hoạch
tuyển dụng
Phỏng vấn kiểm
tra tay nghề
Làm thủ tục thử
việc
Thử việc Làm thủ tục tiếp
nhận chính thức
Ký hợp đồng lao
động
Loại
Quản lý hồ sơ Quản lý cán bộ Đào tạo Quyết định nghỉ
việc
Lưu hồ sơ
28
3.4. Phân tích cụ thể các chức năng hiện có trong HRM
3.4.1. Employees – Quản lý nhân viên
Phần Contact Information có 4 lựa chọn : None , Postal , Telecom và Other
- None : Tìm kiếm nhân viên dựa trên ID của từng nhân viên , User Login ,
Last Name và First Name nhân viên khai báo .
- Postal : Tìm kiếm nhân viên dựa trên ID của từng nhân viên , User Login ,
Last Name và First Name nhân viên khai báo , ngoài ra còn phải bổ xung thêm
Address 1, Address 2, City, State /Province và Postal Code .
- Telecom : Tìm kiếm nhân viên dựa trên ID của từng nhân viên , User Login
, Last Name và First Name nhân viên khai báo , ngoài ra còn bổ xung thêm các
thông tin Country Code , Area Code và Contact Number
- Other : Tìm kiếm nhân viên dựa trên ID của từng nhân viên , User Login ,
Last Name và First Name nhân viên khai báo , ngoài ra còn bổ xung thêm Contact
Information .
3.4.2. Employments – Quản lý thời gian làm việc của nhân viên
29
Quản lý dựa trên ID của từng nhân viên , ngày bắt đầu làm việc , và ngày
kết thúc công việc
- Internal Organization : Tên công ty (áp dụng hệ thống quản lý 2 hoặc nhiều
công ty khác nhau).
- Employee Party ID : ID của nhân viên trong công ty .
- First Name , Last Name : Tên của nhân viên - có thể lựa chọn Ignore case
để bỏ qua phần này.
- From Date : Ngày bắt đầu công việc (Có nhiều hơn 1 lựa chọn do có thể ko
chính xác ngày bắt đầu làm việc )
- Thru Date : Ngày kết thúc công việc (Có nhiều hơn 1 lựa chọn do có thể ko
chính xác ngày kết thúc làm việc)
- Termination Reason ID : ID nguyên nhân kết thúc công việc (hoàn thành ,
ko thể hoàn thành …)
- Termination Type ID : Loại ID kết thúc Fired , Resignation , Retirement
3.4.3. Employee Position – Chức vụ nhân viên trong công ty
30
- Empl Position ID : ID chức vụ của nhân viên trong công ty
- Status ID : Tình trạng ID của nhân viên
- Party ID : Party ID của nhân viên trong công ty
- Budget ID : ID tài khoản (ngân sách) của nhân viên
- Budget Item Seq ID :
- Empl Position Type Id : Loại ID chức vụ của nhân viên
Những mục trên đều có thể lựa chọn Ignore Case để bỏ nhập .Ngoài ra mỗi
trường đều có những lựa chọn để giúp dễ dàng search thông tin hơn (Equals
,Begin with , Contains , Is Empty , Not Equal)
- Estimated From Date : Ước lượng ngày bắt đầu làm việc
- Estimated Thru Date : Ước lượng ngày kết thúc công việc
- Slary Flag : Chọn Yes nếu muốn kết quả cho ra giá trị bảng lương của nhân
viên , chọn No nếu không muốn .
31
- Exempt Flag : Chọn Yes nếu muốn kết quả cho ra giá trị bảng miễn thuế
của nhân viên , chọn No nếu không muốn .
- Fulltime Flag : Chọn Yes nếu nhân viên làm Fullime , No nếu ngược lại .
- Temporary Flag : Chọn Yes nếu nhân viên làm parttime , no nếu ngược lại .
- Actual From Date : Ngày thực sự bắt đầu công việc .( Có các lựa chọn
Equals , Same Day , Greater Than From Day Start và Greater Than )
- Actual Thru Date : Ngày thực sự kết thúc công việc . ( Có các lựa chọn
Equals , Same Day , Greater Than From Day Start và Greater Than )
3.4.4. Performance Review – Kết quả làm việc
- Employee Party ID : Party ID của nhân viên
- Perf Review ID : Xem lại kết quả làm việc
- Manager Party ID : Quản lý Party ID của nhân viên
- Payment Id : ID số tiền trả
- From Date : Ngày bắt đầu làm việc
- Thru Date : Ngày kết thúc làm việc
- Comment : Tìm theo comment (có các lựa chọn Begins with ,Equals ,
Contains , Is Empty , Not Equal )
3.4.5. Skill – Kỹ năng làm việc
32
- Party Id : ID của nhân viên trong công ty
- Skill Type ID : ID loại kỹ năng làm việc
- Year Exprerience : Kinh nghiệm làm việc
- Rating : Đánh giá về kĩ năng của nhân viên
- Skill level : cấp bậc của kỹ năng
3 trường trên có thể ignore case để ko phải điền thông tin , ngoài ra ta có
thể search bằng cách chọn 1 trong các từ khóa : Begins with , Equals , Contains ,
Is Empty , Not Equal .
- Start Using Date : Ngày bắt đầu có kĩ năng làm việc (có bằng cấp ,chứng
chỉ đào tạo)
3.4.6. Qualification – Trình độ chuyên môn
33
- Party ID : ID của nhân viên trong công ty
- Party Qual Type ID : Loại ID trình độ chuyên môn .
- Qualification Desc : Miêu tả trình độ chuyên môn (Có thể search tối ưu
bằng cách sử dụng 1 trong các lựa chọn sau : Equals , Begins With, Contains ,Is
Empty , Not Equal)
- Title : Tên của trình độ chuyên môn
- Status ID : Chọn 1 trong những lựa chọn sau
1. Invitation Accepted
2. Invitation Cancelled
3. Invitation Declined
4. Invitation Pending
5. Invitation Sent
- Verif Status ID : Xác nhận trạng thái của ID : Not verified hoặc verified
- From Date : Ngày bắt đầu trình độ chuyên môn có giá trị
- Thru Date : Ngày kết thúc trình độ chuyên môn (chứng chỉ hết hạn… )(Nếu
có )
3.4.7. Training – Quá trình đào tạo
- Party ID : ID của nhân viên
34
- Training Class Type ID : Loại ID của đối tượng đào tạo . Có những loại sau
: Advance training (Đào tạo nâng cao) ,Basic training (Đào tạo cơ bản)
,Improvement Training (Đào tạo cải thiện) , on Job Training (Đào tạo trong nghề).
- From Date : Ngày bắt đầu đào tạo
- Thru Date : Ngày kết thúc đào tạo
Ngoài ra có thể sử dụng các lựa chọn Equals, Same Day , Less Than …. Để
tôi ưu hóa việc tìm kiếm .
3.4.8. Employment Application – Quản lý tuyển dụng
- Application ID : ID tuyển dụng .
- Empl Position ID : ID vị trí tuyển dụng
- Status ID : Trạng thái của ID , lựa chọn 1 trong những cái sau đây
Activi/Open , Inactive/Closed, Planned For .
- Employment App Source Type ID : Nguồn tuyển dụng .Chọn 1 trong
những lựa chọn sau : Advertisement , Internet , NewsPaper , PersonalReferal .
- Applying Party ID : Phòng tuyển dụng
- Referred By Party ID : ID người chỉ dẫn
- Application Date : Ngày tuyển dụng (Có thể tối ưu tìm kiếm bằng cách
chọn 1 trong những lựa chọn sau : Equals, Same Day , Less Than …)
3.4.9. Resume – Tiếp tục công việc
35
- Rusume ID : ID của loại công việc tiếp tục
- Party ID : ID của nhân viên
- Content ID : ID Nội dung của
- Resume Date : Ngày tiếp tục công việc (Có thể tối ưu tìm kiếm bằng cách
chọn 1 trong những lựa chọn sau : Equals, Same Day , Less Than …)
- Resume Text : Đoạn text miêu tả lí do tiếp tục (Có thể tối ưu tìm kiếm
bằng cách chọn 1 trong những lựa chọn sau : Begins with, Equals , Not Equal…)
3.4.10. Leave – Quản lý thời gian nghỉ việc
- Party ID : ID của nhân viên
- Leave Type ID : Loại ID lí do nghỉ việc ,Lựa chọn 1 trong những lí do sau :
Medical (Do vấn đề y học – bệnh tật , sinh con…) hoặc Casual (Không chủ định)
- Frome Date : Ngày bắt đầu nghỉ việc
- Thru Date : Ngày kết thúc đợt nghỉ
36
- Description : Miêu tả lí do nghỉ việc (Có thể tối ưu tìm kiếm bằng cách
chọn 1 trong những lựa chọn sau : Begins with ,Equals , Not Equal …)
3.4.11. Global HR Settings – Cài đặt HR
- Có các lựa chọn sau
1. Skill Type : Bao gồm chỉ số về ID của lọa kĩ năng và miêu ta về kĩ năng đó
.
2. Responsibility Type : Bao gồm chỉ số về ID Loại trách nhiệm và miêu tả về
loại trách nhiệm đó .
3. Termination Reasons : Bao gồm chỉ số về ID lý do hoàn thành công việc và
miêu tả về công việc
4. Termination Type : Bao gồm chỉ số về ID hoàn thành công việc và mieu tả
về công việc
5. Position Types : Bao gồm chỉ số về ID chức vụ của nhân viên trong công ty
, nguồn gốc (quêquán) của nhân viên , và miêu tả về chức vụ .
6. Employee Leave Type : Bao gồm chỉ số về ID của loại nghỉ việc và miêu tả
về lí do nghỉ việc
7. Pay Grade : Sắp xếp thứ bậc , bao gồm Loại Id sắp xếp thứ bậc , Tên của
sắp xếp và comment .
37
Chương 4 : Triển khai và thử nghiệm
4.1. Tìm hiểu các thành phần và chạy các ứng dụng sẵn có trên OFBiz
4.1.1. Các thành phần chính của OFBiz
Download Ofbiz tại đây :
Sau khi download và giải nén chúng ta sẽ có một folder OFBiz. Trước tiên
chúng ta xem các thành phần trong thư mục này.
Trong đó nội dung từng thành phần như sau :
.svn folder : Bao gồm các thông tin update hàng tuần của framework
OFBiz và các ứng dụng .
application folder : Bao gồm các ứng dụng có trong OFBiz, khi chúng ta
tự tạo một ứng dụng riêng, chúng ta nên đặt nó trong thư mục application hoặc đặt
trong thư mục hot-deploy.
bin folder : Bao gồm java classes, xml file và xml schema file.
38
framework folder : Bao gồm các thành phần của framework OFBiz, giống
như Entity Engine, Service Engine, thư mục chứa các file chung cho tất cả mọi
ứng dụng.
hot-deploy folder : Trong thư mục này có thể có một số folder, nơi các
thành phần của ứng dụng được tải tự động mà không cần tải chúng một cách rõ
ràng như chúng ta vẫn thấy ở một số ứng dụng khác đặt trong Application folder.
specialpurpose folder : Bao gồm một số ứng dụng bổ sung như
“ecommerce” và “workflow”, tuy nhiên chúng không phải một phần của OFBiz
core.
themes folder : Bao gồm các file có chức năng thay đổi giao diện người
dùng khi chạy OFBiz.
startobfiz.bat : File này được dùng khi chạy OFBiz.
4.1.2. Các thành phần trong Humanres
Tiếp theo chúng ta sẽ quan tâm đến một ứng dụng cụ thể. Trong trường hợp
này chúng ta nghiên cứu tới ứng dụng Humanres.
Nhưng trước đó chúng ta cần chú ý đến file component-load.xml trong thư
mục Application do file này có ý nghĩa rất quan trọng. Bởi vì khi không có nó thì
OFBiz không thể load được bất cứ ứng dụng nào, trừ khi ứng dụng đó được đặt
trong thư mục hot-deploy. Do đó khi tạo một ứng dụng mới chúng ta phải add thư
39
mục bên trong để báo cho OFBiz biết, việc này được làm với file component-
load.xml – định nghĩa vị trí các ứng dụng.
ofbiz- component.xml : Định nghĩa ứng dụng bằng cách xác định vị trí của nó
- Data model :
- Business logic :
- Web application :
build.xml : Giống như tên của nó, file dùng để cho chương trình ant cách built
ứng dụng OFBiz.
.svn folder : Chứa các lần update hàng tuần của ứng dụng.
build folder : Chứa code biên dịch Java “.class” file và các thư viện cho ứng dụng
humanres.
config folder : Thường được sử dụng cho data configuaration,ví dụ nó được dùng
để hỗ trợ các giao diện ngôn ngữ, bên trong nó chúng ta sẽ tìm được một số file
cho các ngôn ngữ khác nhau, và dựa trên ngôn ngữ giao diện người dùng, một
trong số các file này sẽ được sử dụng.
data folder : Chứa đựng dữ liệu load về khi OFBiz được khởi động và dữ liệu
demo.
Cuối cùng là 2 thành phần entitydef và servicedef đều có 2 thành phần : definition
và implementation
<component-loader xmlns:xsi=""
xsi:noNamespaceSchemaLocation="
loader.xsd">
<!-- common component used by
most other components -->
40
entitydef folder : chứa việc thực thi lớp dữ liệu, ví dụ bản quan hệ CSDL và các
mối quan hệ. Bên trong thư mục này có 2 file chính, 1 cho việc định nghĩa và 1
cho việc thực thi : entitygroup.xml và entitymodel.xml
servicedef folder : Định nghĩa các service được dùng trong lớp business logic, nó
chứa các file service.xml – định nghĩa services, service_view.xml – dùng cho
view.
( Chú ý: Khi add 1 file service, cần phải được định nghĩa thêm trong ofbiz
component.xml )
script folder : Chứa đựng việc thực thi cho các service sử dụng OFBiz mini-
language và nó chứa đựng một số script. Bên trong thư mục này còn chứa việc
thực thi các service cho các ứng dụng khác nhau
src folder : Chứa các file source cho các service – các file được thực thi với Java.
widget folder : Là lớp trình diễn OFBiz gần nhất,các trang được định nghĩa như
“screen”. thư mục widgets cho giao diện màn hình người dùng. OFBiz cho phép
thiết kế giao diện người dùng để tạo như “generic screens” có thể được sử dụng
cho những nền khác. Nội dung thư mục widget phản ánh những thứ trên webapp.
Do đó mỗi ứng dụng sẽ có màn hình riêng của nó. Screen được chia làm 2 phần :
action và widget. Action chịu trách nhiệm cho việc lấy dữ liệu về trong khi widget
chịu trách nhiệm hiển thị dữ liệu.
webapp folder : Chứa các form và ứng dụng web. Với OFBiz các trang được chia
thành các thành phần nhỏ hơn, những cái được kết hợp để tạo lên sản phẩm mới.
Do đó nhiều trang có thể chia sẻ các thành phần chung như header, sidebar, và
navigation bars.
4.1.3. Chạy các ứng dụng trên OFBiz
Phần này tưởng rằng như dễ dàng như việc cài đặt và chạy một ứng dụng
mà ta thường down trên Internet. Tuy nhiên, khi bắt tay vào việc thì ta mới gặp rất
nhiều khó khăn như MyEclipse không đặt đúng địa chỉ của một số file, khi cho
dịch Ofbiz từ cửa sổ Ant (build) thì báo lỗi file build.xml. Nếu mở file build.xml
thì ta cũng không biết sửa chỗ nào vì nó báo lỗi ở một dòng thì thực ra lỗi lại xảy
ra ở dòng khác.
41
Ví dụ 1: chương trình dịch báo lỗi ở dòng
Thì thực ra là lỗi ở dòng
Ta sửa lại bằng cách thêm vào từ framework như sau:
Ví dụ 2: Ofbiz báo thiếu file khi Ofbiz không tìm thấy file trong thư mục
ofbiz, mà nó chỉ mặc định trên ổ đĩa C:\Ofbiz\.... nhưng do ta đặt thư mục Ofbiz
trong D:\workPlace\Ofbiz\... thì ta phải vào file .classpath để sửa lại các đường
dẫn sai cho nó.
4.2. Các bước triển khai
4.2.1. Việt hóa Humanres
Như đã thấy ở trên, ngôn ngữ mặc định cho người dùng OFBiz là Tiếng
anh, điều đó một phần gây khó khăn cho những nhà quản trị nhân sự. Bước tiếp
theo chúng ta sẽ nghiên cứu việc Việt hóa hệ quản trị nhân sự Humanres trong
OFBiz.
Vì OFBiz là hệ mã nguồn mở nên hỗ trợ rất nhiều ngôn ngữ, tiêu biểu trong
đó là tiếng Anh, Pháp, Italy, Nga, Trung quốc .. Mỗi ngôn ngữ sẽ có một mã riêng
tương ứng như hình vẽ dưới đây. Mã cho Tiếng Việt là [vi].
42
Để có thể Việt hóa hệ quản trị Humanres của OFBiz ta cần phải hiểu vị trí
đặt các file ngôn ngữ trong OFBiz. Trong trường hợp này, ngôn ngữ được khai
báo trong các file XML UILabels đặt trong thư mục config của framework và các
ứng dụng. Với các file UILabels đặt trong {ofbiz}/humanres/config sẽ quy định
ngôn ngữ cho riêng hệ quản trị Humanres và các file XML UILabels đặt trong
{ofbiz}/…/config quy định ngôn ngữ chung của toàn hệ quản trị OFBiz.
Như cấu trúc bên dưới đây chúng ta có thể thấy một ví dụ về việc khai báo
các trường và ngôn ngữ được dùng cho trường đó.
- : Dùng để khai báo trường trong OFBiz
- : Dùng để khai báo ngôn ngữ .
43
Để Việt hóa chúng ta thêm giá trị vào khai
báo của mỗi trường. Làm tương tự với từng thành phần trong file xml
HumanUILables ta sẽ Việt hóa được HR trong OFBiz.
Sau khi hoàn thành, chúng ta chạy lại OFBiz để hệ thống load lại dữ liệu
được cập nhật. Tiếp theo tìm đến phần lựa chọn ngôn ngữ và đổi sang sử dụng
Tiếng Việt, chúng ta có thể có được giao diện sử dụng như hình vẽ :
4.2.2. Thêm module mới
Anwendungsteilnehmer ID
Applying Party Id
Réf. d'acteur en demande
Soggetto Applicato
รหสักลุ่มผูใ้ช
应聘申请人
ID phòng tuyển dụng// Việt hóa
Bank Name
Nom de la banque
Nome Banca
ช่ือธนาคาร
银行名称
Tên Ngân Hàng// Việt hóa
44
Hiện tại ứng dụng HR trong OFBiz có đầy đủ chức năng cần thiết để quản
trị nhân sự trong một công ty nên không cần thiết phải thêm bất kì module mới
nào. Dưới đây em sẽ trình bày cách thức viết một module mẫu trong OFBiz.
4.2.2.1. Xác định mô hình dữ liệu
Bước đầu tiên là xác định mô hình dữ liệu. Chúng ta muốn theo dõi từng cá
nhân, sở thích của họ và tra cứu tất cả các sở thích của từng cá nhân ( hoặc tất cả
mọi người có cùng 1 sở thích ). Do đó, mô hình dữ liệu ứng dụng với mỗi cá nhân,
sở thích và liên kết giữa mỗi cá nhân và sở thích.
Với một cơ sở dữ liệu quan hệ, chúng ta sẽ định nghĩa hai bảng, một cho
người và một cho một sở thích và liên kết chúng với nhau qua một bảng thứ ba.
Bảng thứ ba sẽ cho phép bạn kết hợp bấy nhiêu sở thích mà bạn mong muốn với
một người và ngược lại. Bạn sẽ định nghĩa khóa ngoài(foreign key) để ràng buộc
bảng thứ ba chỉ dung để chỉ người và sở thích đang có.
OFBiz cũng hoạt động tương tự. Chúng ta sẽ xác định hai thực thể, trong đó
chúng ta sẽ gọi là HelloPerson và HelloHobby, và xây dựng một liên kết
HelloPersonHobby, sau đó thiết lập mối quan hệ giữa chúng. Mối quan hệ này
được sử dụng như một ràng buộc khóa ngoài nhưng cũng cho phép chúng ta đi từ
một thực thể đến một thực thể khác mà không phải tự mình nhớ từng khóa của
chúng là gì (hoặc thay đổi code khi khóa thay đổi).
<entity entity-name="HelloPerson"
package-name="org.ofbiz.hello3"
title="Entity for storing data about persons">
<entity entity-name="HelloHobby"
package-name="org.ofbiz.hello3"
title="Hobbies avaiable">
<entity entity-name="HelloPersonHobby"
package-name="org.ofbiz.hello3"
title="Entity and atribute Entity">
<relation type="one" fk-name="HPRSN_PRSN" rel-entity-
name="HelloPerson">
<relation type="one" fk-name="HPRSN_HBBY" rel-entity-
name="HelloHobby">
45
Chú ý : Ở đây, chúng ta đang tạo ra một ứng dụng với mô hình dữ liệu hoàn
toàn khép kín để minh họa. Nếu chúng ta xây dựng một ứng dụng thực tế, việc
thực hành tốt nhất nếu chúng ta dùng lại được nhiều thực thể trong OFBiz nhất có
thể, nên thay vì tạo ra HelloPerson riêng, chúng ta sẽ sử dụng các thực thể Party/
Person / PartGroup tồn tại của OFBiz.
Để xác định mô hình dữ liệu, tạo ra một thư mục bên trong Aplication (
trong trường hợp này là hello3 ) và tạo ra một file entitymodel.xml và
entitygroup.xmld trong thư mục entitydef.
HelloPerson và HelloHobby là 2 khóa chính, và HelloPersonHobby có 2
khóa chính, trong đó nó sử dụng liên kết HelloPerson và HelloHobby. Nó được
xem là sự áp dụng tốt để cung cấp một tên khóa ngoài cho các quan hệ, để giúp
việc gỡ lỗi dễ dàng hơn và tránh trùng tên giữa các khóa ngoài do bạn tạo ra trong
OFBiz.
Điều đó cũng rất quan trọng ( nhưng rất dễ quên ) để xác định các thực thể
đó trong một file khác, entitygroup.xml, trong thư mục, do đó OFBiz sẽ biết được
đâu là khóa đại diện và như vậy cơ sở dữ liệu sẽ được sử dụng.
Nếu không, các thực thể sẽ vẫn tồn tại trong OFBiz nhưng khi chúng ta
thực sự cố gắng sử dụng chúng , chúng ta sẽ nhận được lỗi như sau :
org.ofbiz.entity.GenericEntityException: Helper name not found for entity
HelloPerson
Cuối cùng, chúng ta phải thêm dòng dưới đây vào ofbiz-component.xml để
OFBiz có thể biết sử dụng thực thể này như một phần ứng dụng của mình, phía
trước
Bây giờ chúng ta sẽ khởi động OFBiz, chúng ta sẽ thấy những thông báo
trong consolo.log (Linux) hoặc giao diện điều khiển (Windows) , thông báo với
bạn rằng thực thể của bạn đã được nạp :
<entity-resource type="model" reader-name="main" loader="main"
location="entitydef/entitymodel.xml"/>
<entity-resource type="group" reader-name="main" loader="main"
location="entitydef/entitygroup.xml"/>
5336 (main) [ UtilXml.java:242:DEBUG] XML Read 0.0070s:
/home/sichen/eclipse/workspace/ofbiz/hot-
deploy/hello3/entitydef/entitymodel.xml
5693 (main) [ UtilXml.java:242:DEBUG] XML Read 0.0050s:
/home/sichen/eclipse/workspace/ofbiz/hot-
deploy/hello3/entitydef/entitygroup.xml
46
Khi đó bạn vào webtools, bạn có thể thấy những thực thể :
Click vào “All” bên phải HelloPerson bạn sẽ thấy tất cả những trường của
mình :
47
Chú ý rằng bên cạnh mỗi trường là kiểu Java và kiểu SQL cho từng trường.
Loại SQL được quy định trong framework/entity/filedtype/ thư mục và thay đổi
tùy theo cơ sở dữ liệu bạn đang sử dụng (đang dùng trên là Derby). Nếu có bất kỳ
già trị nào cho thực thể này, nó sẽ được hiển thị bên dưới các trường.
4.2.2.2. Tạo dữ liệu gốc
Tiếp theo chúng ta sẽ tạo ra một số dữ liệu gốc cho sở thích của chúng ta.
Trong hầu hết các ứng dụng của OFBiz, chúng ta sẽ tạo ra thư mục data trong ứng
dụng và tạo file XML cho dữ liệu gốc. Chúng ta đặt tên file đó là
HobbiesData.xml:
File này được gọi là file phương tiện thực thể (entity engine)dạng file
XML, là một định dạng tiêu chuẩn của OFBiz dùng cho việc nhập và xuất dữ liệu.
Nó thực sự rất đơn giản. Sử dụng tên của thực thể ( “HelloHobby” trong trường
hợp của chúng ta ) cho thẻ tên, và sử dụng tên các trường hoặc thuộc tính như bên
trong các thẻ (Xem giá trị cuối cùng cho “WINE”. Các giá trị cho các trường của
chúng ta có thẻ là giá trị của các thuộc tính hoặc bên trong các thẻ nội bộ(inner
tags), cũng như nơi chúng có thể ở bên trong CDATA, trong trường hợp bạn có
giá trị rất dài. Ngoài ra các khóa cho từng trường không cần phải là chữ hoa hoặc
cách nhau bởi dấu _ , nhưng đó là quy tắc tiêu chuẩn của ứng dụng OFBiz).
Bây giờ, chúng ta đã sẵn sàng để nạp dữ liệu gốc. Chuyển tới màn hình
chính của ứng dụng Webtools, và chúng ta sẽ thấy liên kết “XML Import”. Nhấn
Wine
48
vào nút “XML Import” và trên màn hình kế tiếp sẽ yêu cầu điền tên của tập tin của
chúng ta, liên quan đến thư mục OFBiz. Tôi thường không bấm vào bất kỳ hộp
kiểm tra tùy chọn nào và chỉ cần nhập “Import”. Nếu chúng ta thành công, sẽ có
một màn hình tương tự trở lại và hiển thị ở dưới báo cho bạn biết có bao nhiêu giá
trị được thêm vào :
Nếu quá trình import dữ liệu bị hỏng, chúng ta nên đọc các thông báo lỗi từ
console.log cẩn thận. Thường là do những lý do sau đây :
1. Sử dụng giá trị quá dài cho primary key. Các ID trong OFBiz thường là
biến kiểu String trong Java, nhưng đối với SQL nó là kiểu 20-char
VARCHAR.
2. Thiếu một khóa chính cần thiết.
3. Cố gắng nhập một trường vi phạm tính toàn vẹn của khóa ngoài.
49
Nếu chúng ta đọc cẩn thận file .log, chúng ta có thể xác định được giá trị
OFBiz nào đã được tạo ra và phản ứng về dữ liệu lỗi từ hệ thống là gì. Nó cũng có
thể đưa cho chúng ta một cái tên khóa ngoài hơi khó hiểu để tìm ra sự vi phạm
điều kiện của khóa ngoài.
Chúng ta cũng có thể nhận thấy một đường dẫn thông báo “XML Export”
trên trang Webtools. Các liên kết này có thể tạo ra các thực thể XML file.
Tiếp theo, chúng ta xem phần “Entity Maintenance”. Từ trang “Main”, click vào
“All” bên cạnh HelloHobby, chúng ta sẽ thấy những sở thích đã được chèn vào :
Ngoài các trường và giá trị của chúng ta, OFBiz cũng tự động tạo
timestamps khi các giá trị đó được tạo ra và cập nhât, đồng bộ hóa dữ liệu trên
nhiều trường hợp của OFBiz. Cuối cùng, OFBiz có thể tự động cài đặt các dữ liệu
50
gốc trong quá trình cài đặt, nếu chúng ta thêm dòng sau vào file ofbiz-
component.xml :
<entity-resource type="data" reader-name="seed" loader="main"
location="data/HobbiesData.xml"/>
OFBiz thực sự cho phép xác định liệu dữ liệu của bạn có phải là “gốc” hay
không, có nghĩa là chúng được yêu cầu để ứng dụng của bạn chạy một cách chắc
chắn , và “demo” , có nghĩa là chúng mới chỉ để dùng cho mô phỏng giới thiệu
trước.
4.2.2.3. Tạo Business Logic
Bây giờ chúng ta đã có mô hình dữ liệu xác định, chúng ta sẽ học cách viết
một ứng dụng đơn giản với một delegator để truy cập trực tiếp vào các thực thể.
Tuy nhiên, mẫu chuẩn cho các ứng dụng OFBiz, dùng để tạo ra một lớp riêng cho
tầng business logic và để tạo, cập nhật và gỡ bỏ các thực thể. Delegator thường
được dùng để tra cứu các giá trị một cách trực tiếp, mặc dù sự tìm kiếm phức tạp
hơn được code như một service.
Tạo dịch vụ là một quá trình gồm hai bước. Trước tiên, nhìn chung bạn xác
định các dịch vụ chung trong một file XML, cái mà thông báo với máy dịch vụ
(OFBiz service engine) rằng tham số nào dịch vụ của bạn cần lấy và có thể lấy
chúng ở ( clsss và phương pháp hoặc vị trí của script). Sau đó, bạn thi hành dịch
vụ trong java, OFBiz minilang hoặc các ngông ngữ scripting khác.
Định nghĩa của Service thông thường ở bên trong thư mục servicedef
trong ứng dụng của chúng ta và bao gồm một hoặc nhiều file services.xml. Đây là
file services.xml của ví dụ:
Hello 3 Services
<service name ="createHelloPerson" engine="java"
location="org.ofbiz.hello3.Hello3Services"
invoke="createHelloPerson">
Create a HelloPerson
<auto-attributes mode="IN" entity-name="HelloPerson" include="nompk"
optional="true"/>
<attribute name="helloPersonId" mode="OUT" type="String"
optional="false"/>
<service name="createHelloPersonHobby" engine="simple"
location="org/ofbiz/hello3/Hello3Services.xml"
invoke="createHelloPersonHobby">
Create a HelloPersonHobby which links a person
and a hobby
<auto-attributes mode="IN" entity-name="HelloPersonHobby"
include="pk" optional="false"/>
51
Chú ý làm thế nào file services.xml chiếu đến thực thể, làm việc trực tiếp
với thẻ thay vì xác định chúng hoàn toàn. Điều này giúp chúng
ta tiết kiệm thời gian và ứng dụng dễ dàng duy trì hơn.
Chúng ta cũng cần tham khảo các tài nguyên service trong ofbiz-
component.xml. Ngoài ra, chúng ta phải tạo để chỉ rõ đường dẫn nơi
để tải của ứng dụng. Đây là file ofbiz-component trong ví dụ, sau khi thêm
classpaths, định nghĩa các thực thể, định nghĩa các dịch vụ và dữ liệu gốc .
Bây giờ ta sẽ tạo các dịch vụ services. Một java service bên trong thư mục
src/ trong ứng dụng của bạn và được ghi với kiểu mẫu sau: Một lớp public với
phương thức public static lấy 2 tham số, một DispatchContext để lấy các đối tượng
giống như delegator, dispatcher , vị trí và bảo mật, và một Map gọi một phạm vi :
tham số dự liệu input của bạn và trả lại một bản kết quả:
Java services cũng cần được biên dịch, với kiến thức của classpaths thích
hợp cho những ứng dụng của OFBiz khác. Điều này liên quan đến việc xử dụng và
xây ant dựng file build.xml, cái mà bạn có thể copy từ một ứng dụng khác. Nó là
một tập tin tiểu chuẩn trong tất cả các ứng dụng của OFBiz.
Việc xây dựng quy trình cơ bản là lấy tất cả các file trong thư mục src, biên
dịch chúng và đặt chúng vào thư mục build/lib.
Minilang đơn giản hơn nhiều bằng cách so sánh. Các minilang service đơn
giản ở bên trong thư mục script và là một file xml với các hướng dẫn. Bởi vì
chúng được thiết kế đặc biệt cho các nhiệm vụ ứng dụng phổ biến của OFBiz,
chẳng hạn như tra cứu dữ liệu, lưu trữ dữ liệu, kiểm tra sự cho phép, và làm việc
với các thực thể tồn tại và các services, nó có thể tạo ra các nhiệm vụ rất dễ dàng :
Cuối cùng, để kiểm tra nó, chúng ta khởi động lai OFBiz để load lại tất cả
các định nghĩa mới trong ofbiz-component.xml và services.xml. Sau đó mở cửa
<simple-method method-name="createHelloPersonHobby" short-description="Create a
Hobby-Person relationship" login-required="false">
52
sổ beanshell và thử nghiệm các service ( Lưu ý : trước hết bạn cần tải file
bshcontainer.bsh và đặt nó trong thư mục ofbiz ).
Ở đây, beanshell được gọi là service dispatchet để chạy các service, và
chúng đã chạy thành công, do đó, các giá trị đúng được tạo ra.
Chúng ta đã tạo xong data model và service cho ứng dụng. Bước tiếp theo
chúng ta sẽ đưa chúng vào web application.
4.2.2.4. Tạo Web Application
Application web sẽ hiện thị danh sách những khách đã truy cập trang web
và cho phép chúng ta thêm tên của mình vào danh sách này. Chúng ta cũng có thể
click vào một người bất kì và thêm sở thích cho người đó từ một danh sách đã có
sẵn. Chúng ta sẽ xây dựng các ứng dụng với OFBiz screen-widgets và form-
widgets, từ đó chỉ ra làm thế nào những công cụ này có thể xây dựng các web
application trực tiếp từ các trường của thực thể mô hình dữ liệu data model và
business logic services, mà không có mã HTML lặp đi lặp lại hoặc code Java.
Trước tiên, chúng ta sẽ tạo ra hai màn hình mới trong screen-widget cho
trang cá nhân và sở thích. Trong mỗi trang, có hai form, một trong những form
hiển thị danh sách cá nhân hoặc hiển thị sở thích, cái còn lại để thêm thực thể
khác.
Lưu ý ở đây rằng chúng ta không sử dung mẫu Freemaker (.ftl) nhưng thay
vào đó gọi một form trực tiếp. Ngoài ra, thay vì sử dụng một script .bsh để tìm dữ
liệu từ các thực thể, chúng ta đang sử dụng chỉ thị như và <entity-
one> trong một phần của screen. Cả hai công cụ được thiết kế để đơn
import java.util.*;
import org.ofbiz.entity.GenericDelegator;
import org.ofbiz.service.GenericDispatcher;
import org.ofbiz.base.util.*;
import org.ofbiz.entity.util.*;
import org.ofbiz.security.*;
import org.opentaps.common.util.*;
ofbSecurity = new OFBizSecurity();
delegator = GenericDelegator.getGenericDelegator("default");
dispatcher = GenericDispatcher.getLocalDispatcher("ecommerce",
delegator);
admin = delegator.findByPrimaryKey("UserLogin",
UtilMisc.toMap("userLoginId", "admin"));
53
giản và hiệu quả quá trình tạo ra các hình thức tiêu chuẩn bằng cách giảm sự cần
thiết code hiển thị ( như FTL/HTML ) hoặc các script để tìm dữ liệu hoặc gọi dịch
vụ.
Bước tiếp theo là xác định các yếu tố đầu vào bằng cách sử dung form-
widget OFBiz. Form-widget cho phép chúng ta xác định các form dựa trên các
trường của thực thể hoặc các thông số của service, và chúng ta có thể định nghĩa
các form, trong đó hiển thị một thực thể duy nhất hoặc hiện thị một danh sách dữ
liệu hoặc kiểm tra một hoặc nhiều giá trị để điều khiển. Chúng ta có thể chỉ định
các menu kéo xuống và tìm kiếm các thực thể liên quan, ẩn các trường, hyperlinks,
các button và các widget khác. Cuối cùng, các form có thể tự động điều chỉnh khi
thực thể liên quan hoặc service thay đổi.
Bây giờ ứng dụng của chúng ta đã hoàn thành. Đây là trang guestbok page :
4.2.2.5. Duy trì ứng dụng
54
Cuối cùng, chúng ta quan tam đến vấn đề bảo trì. Sau khi code của bạn
được viết, bạn thực sự chỉ mới bắt đầu. Nghiên cứu cho rằng nhiều hơn 50% chi
phí cho ứng dụng dành cho bảo trì dài hạn, chẳng hạn như xứ lý yêu cầu người
dùng thay đổi hoặc thêm tính năng mới. Với OFBiz, bởi vì các tool giao diện
người dùng từ lớp business logic, data model làm việc cùng nhau, do đó việc thay
đổi chúng hết sức dễ dàng.
4.3. Thử nghiệm
Bước đầu ta tạo nhân viên mới trong cơ sở dữ liệu bằng cách vào tab Nhân
viên, chọn Nhân viên mới.
Hệ thống sẽ tự động chuyển đến trang yêu cầu nhập thông tin nhân viên bao
gồm nhiều thông tin cần thiết cho mỗi cá nhân : First Name, Middle Name, Last
Name, Internal Organization, Address, City…. Sau khi nhập đầy đủ thông tin nhân
viên ta nhấn Save để hoàn thành quá trình nhập mới một nhân viên.
55
Tiếp theo ta vào phần Cài đặt HR để cài đặt một số yêu cầu quản lý
nhân sự cho từng công ty. Trong phần này ta có thể cài đặt các thành phần : Loại
kĩ năng của mỗi nhân viên trong công ty, Loại trách nhiệm, Lý do nhân viên kết
thúc công việc, Chức vụ nhân viên, Lý do nghỉ việc và cấp bậc lương cho từng
loại chức vụ. Tất cả những cài đặt trên đều được xác định qua ID và Description
do đó rất rõ ràng và thuận tiện cho nhà quản lý.
Như trên hình chúng ta thử cài đặt bậc lương cho từng thành phần nhân
viên trong công ty. Gồm có từng ID bậc lương ứng với mỗi chức vụ nhân viên
trong công ty như : ID = 1 ứng với nhân viên, ID = 2 ứng với trưởng phòng, ID =
3 ứng với phó giám đốc, ID= 4 ứng với giám đốc. Lương của mỗi nhân viên sẽ
được tính theo hệ số tương ứng với từng ID, ngoài ra còn có chức năng quản lý
Lương ưu tiên nhằm tăng lương cho một số cá nhân làm tốt công việc.
56
Ngoài ra chúng ta có thể quản lý nhân viên dựa trên các kết quả làm việc,
chức vụ nhân viên, kỹ năng làm việc của từng nhân viên, thời gian xin nghỉ và tiếp
tục công việc.
57
Một phần quan trọng không thể thiếu trong hệ quản trị nhân sự là quản lý
tuyển dụng. Ứng viên được quản lý qua ID, chức vụ ứng tuyển, nguồn thông tin
tuyển dụng, phòng ứng tuyển …
4.4. Kết luận
- Hệ quản trị nhân sự của OFBiz quản lý tốt mọi mặt của một nhân viên
trong công ty. Cung cấp cho nhà quản lý mọi thông tin cần thiết.
- Giảm bớt chi phí cho việc quản lý, thời gian cho nhà quản lý.
- Có thể thêm module mới bất cứ lúc nào và phục vụ cho bất cứ nhu cầu của
công ty trong quá trình làm việc
58
Tài liệu tham khảo
1. Jonathon Wong & Rupert Howell – Apache OFBiz Development.
2. Basil Argasosy – OFBiz An Insider View
3. Sichen – Developing Application with OFBiz
4. Ts. Nguyễn Thanh Hội – Quản trị nguồn nhân lực
5.
6.
7.
Các file đính kèm theo tài liệu này:
- Luận văn- Tìm hiểu và triển khai hệ thống quản trị nhân sự dựa trên nền tảng OFBiz.pdf