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

- 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

pdf59 trang | Chia sẻ: lylyngoc | Lượt xem: 3344 | Lượt tải: 3download
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:

  • pdfLuậ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