2.5.1 Bitrix24:
Hình 2.11 Giao diện ứng dụng Bitrix24
Bitrix24 là hệ thống quản lý cơng việc theo nhóm, hỗ trợ trao đổi tin nhắn, cuộc gọi video, lên kế hoạch công việc với tiến độ thiết lập. Phần mềm này cung cấp nhiều cơng cụ hữu ích và hiện đại giúp quản lý công việc chuyên nghiệp và năng suất hơn. Giao diện thân thiện, dễ sử dụng, có tính tuỳ biến cao với mỗi doanh nghiệp:
+ Ưu điểm:
17
Hình 2.12 Chức năng “Quản lý nhân sự” của Bitri24
Bitrix24 cung cấp nhiều tính năng như một hệ thống quản trị nguồn lực với các tính năng phổ biến như: Lưu danh sách nhân sự, tìm kiếm nhân sự, quản lý chấm công, quản lý kế hoạch và báo cáo.
- Quản lý quan hệ khách hàng:
18
Bitrix 24 cũng hỗ trợ các tính năng của một hệ thống chăm sóc khách hang, cung cấp nền tảng quản lý thông tin và theo dõi tương tác với khách hang tiềm năng, các đại lý và đối tác mua bán.
Các tính năng được hỗ trợ như: Quản lý hoá đơn, quản lý báo giá, marketing, quản lý giao dịch.
- Mạng xã hội nội bộ:
Hình 2.14 Chức năng “Mạng xã hội nội bộ” của Bitrix24
Bitrix24 cũng hỗ trợ hệ thống giao tiếp nội bộ cho phép các thành viên trong nhóm có thể trao đổi cơng việc với nhau, tránh giao tiếp qua một nền tảng giao tiếp thứ 3,4,5,.. Gây bất tiện và cịn tiềm ẩn nguy cơ về rị rỉ thơng tin dự án. Ngoài ra, hệ thống cịn cho phép mỗi nhân viên có một profile riêng trên hệ thống. Hệ thống mạng xã hội như là một môi trường công ty ảo.
19
Hình 2.15 Chức năng “Quản lý công việc” của Bitrix24
Ngồi ra, Bitrix24 cịn có các tính năng hỗ trợ cho quá trình quản lý và theo dõi tiến độ công việc trong dự án, giúp lên kế hoạch công việc dễ dàng. Quản lý, leader cũng như cac thành viên trong nhóm có thể theo dõi tiến độ cơng việc ( Calendar, biểu đồ Gantt,…). Giúp chủ động trong công việc. Hệ thống hỗ trợ phân quyền truy cập giữa các thành viên, đảm bảo các bộ phận có thể làm việc độc lập. Ngồi ra, cịn cung cấp kho lưu trữ đám mây, giúp lưu trữ và quản lý tài nguyên dự án.
20
Hình 2.16 Chức năng “ Chat nội bộ” của Bitrix24
Ngoài ra, một số ưu điểm khác như: Hỗ trợ đa nền tảng: Web, Android, IOS, Window client,…
Có gói miễn phí, phù hợp với doanh nghiệp nhỏ hoặc những cá nhân muốn trải nghiệm trước khi bỏ tiền để mua giải pháp.
Hỗ trợ 2 giải pháp: Triển khai nội bộ doanh nghiệp hoặc sử dụng Bitrix24 Cloud. + Khuyết điểm:
- Hệ thống chăm sóc khách hàng (giữa Bitrix24 và doanh nghiệp) đôi lúc khá chậm chạp.
- Chi phí cao nếu doanh nghiệp lớn, nhiều nhân sự.
- Chất lượng gọi video call không thực sự tốt, đôi khi bị nhiễu âm thanh.
- Phiên bản mobile cịn nhiều hạn chế về tính năng.
- Chức năng chăm sóc khách hàng (CRM) bit người dùng đánh giá là khá tệ nếu so sánh với các ứng dụng CRM khác trên thị trường.
21
- Phiên bản tiếng Việt chưa được dịch hồn chỉnh, nhiều chỗ dịch sai, gây khó hiểu cho người sử dụng.
- Do hỗ trợ nhiều tính năng nên giao diện cịn hơi rối mắt, chưa trực quan.
2.5.2 Trello:
Một ứng dụng khác dung để quản lý dự án và công việc khác có thể kể đến Trello, đây là một cơng cụ quản lý cơng việc linh hoạt, nơi mà các nhóm có thể lập kế hoạch, cộng tác trên các dự án, tổ chức quy trình làm việc và theo dõi tiến độ một cách trực quan. Có thể kể đến một số ưu điểm như sau:
- Giao diện trực quan, thân thiện:
Trello cung cấp một giao diện quản lý dự án rất đơn giản. Nhưng sự đơn giản này lại mang đến một trải nghiệm quản lý dự án rất tốt. Thao tác chính là kéo thả, mang lại sự thuận lợi trong thao tác thêm mới và cập nhật thông tin dự án.
22
Hình 2.18 Giao diện chi tiết thẻ của Trello
- Đơn giản nhưng đầy đủ tính năng:
Tuy giao diện đơn giản nhưng lại hỗ trợ một cách đầy đủ chức năng của một công cụ quản lý dự án như: Thêm mới công việc, thay đổi trạng thái công việc, quản lý nhân
23
sự phụ trách công việc, dán nhãn công việc, đếm ngược thời lượng hoàn thành, comment và lưu trữ tài liệu liên quan đến công việc ngay trên thẻ công việc được tạo.
+ Khuyết điểm:
- Khơng có chức năng trao đổi trực tiếp theo thời gian thực với các thành viên của dự án.
- Khơng có cập nhật tiến độ từng phần, khiến nhân sự phụ trách và người quản lý nhân sự khó nắm bắt được tiến độ thực tế công việc.
- Chưa liên kết với các ứng dụng quản lý mã nguồn phổ biến hiện nay như: Git, Bitbucket,…
- Chỉ phù hợp với dự án vừa và nhỏ.
2.5.3 Tổng kết:
Sau khi phân tích các hệ thống quản lý nhân sự và dự án trên, nhóm nhận thấy phần lớn các hệ thống đã giải quyết tốt bài toán quản lý nhân sự và quản lý công việc, nhưng vẫn còn một số điểm hạn chế như: Giao diện ít trực quan, thân thiện, cơng cụ giao tiếp chưa có, hoặc nếu có thì phải trả một khoản phí cao, thiếu bộ xây dựng quy trình doanh nghiệp.
Từ những gì đã phân tích được, nhóm đề xuất xây dựng hệ thống của đề tài như sau: + Quản lý thông tin doanh nghiệp
+ Quản lý nhân sự: Thơng tin nhân viên, theo dõi q trình làm việc, quản lý công việc hàng ngày.
+ Quản lý phịng ban: Thơng tin phịng ban, thơng tin nhân sư phòng ban, điều chuyển nhân sự giữa các phòng ban, quản lý dự án thuộc phòng ban.
+ Quản lý dự án: Thông tin dự án, quản lý thông tin nhân sự dự án, điều chuyển nhân sự giữa các dự án, phân chia và theo dõi công việc thuộc dự án.
+ Hệ thống giao tiếp nội bộ: Hỗ trợ giao tiếp nội bộ.
+ Hệ thông xây dựng quy trình doanh nghiệp: Xây dựng quy trình với từng loại công việc và dự án khác nhau.
24
CHƯƠNG 3 Phương pháp thực hiện 3.1 Công nghệ sử dụng:
3.1.1 ReactJS:
3.1.1.1 ReactJS là gì:
React (hay còn được gọi với tên ReactJS, React.js) là một thư viện Javascript mã nguồn mở để xây dựng các thành phần giao diện người dùng, với ưu điểm có thể tái sử dụng các thành phần này. Nó được tạo ra vào năm 2013 bởi Jordan Walk, một kỹ sư phần mềm của Facebook.
Hiện nay, thư viện này đang nhận được rất nhiều sự quan tâm đến từ cộng đồng. Nó đang được bảo trì (maintain) bởi Facebook và Instagram, cùng với sự đóng góp của cộng đồng lập trình viên giỏi trên thế giới.
3.1.1.2 Phần chính của ReactJS là gì:
- Virutal DOM: Công nghệ DOM ảo giúp tang hiệu năng cho ứng dụng. Việc chỉ node gốc mới có trạng thái và khi nó thay đổi sẽ tái cấu trúc lại toàn bộ, đồng nghĩa với việc DOM tree cũng sẽ phải thay đổi một phần, điều này sẽ ảnh hưởng đến tốc độ xử lý. RectJS sử dụng Virtual DOM để cải thiện vấn đề này. Virutal DOM là một object javascript, mội object chứa đầy đủ thông tin cần thiết để tạo ra một DON, khi dữ kiệu thay đổi thì nó sẽ tính tốn sự thay đổi giữa object và tree thật, điều này sẽ giúp tối ưu hoá việc re-render DOM tree thật.
- Redux: Đây có thể gọi là một phần cực kỳ quan trong đối với ReactJS và không một ai sử dụng mà khơng biết đến Redux. React thì khơng tổ chức theo module chuyên dụng để xử lý dữ liệu, vì thế ReactJS được thiết lập một cách độc lập bằng việc chia nhỏ các view thành các component.
- React sử dụng cơ chế one-way data binding – luồng dữ liệu 1 chiều. Dữ liệu được truyền từ parent đến child thông qua props. Luồng dữ liệu đơn giản giúp chúng ta dễ dàng kiểm soát cũng như sửa lỗi. Với các đặc điểm ở trên, React được dung để xây dựng các ứng dụng lớn mà dữ liệu của chúng thay đổi liên tục theo thời gian. Dữ liệu thay đổi thì hầu hết kèm theo sự thay đổi về giao diện. Ví dụ: Facebook với nhiều status khác nhau. Mỗi status sẽ có số lượt tương tác khác nhau và thay đổi liên tục. React sẽ rất hữu ích khi sử dụng cho những dự án như thế.
25
3.1.1.3 Giới thiệu về JSX:
JSX là một dạng ngôn ngữ cho phép viết các mã HTML trong phép viết các mã HTML trong Javascrip.
Có một số đặc điểm chính như:
- Faster: JSX thực hiện thực hiện tối ưu hoá trong khi biên dịch sang mã Javascript. Hiệu suất của JSX là nhanh hơn so với các loại ngôn ngữ khác khi biên dịch sang Javascript. Đoạn code được viết bằng JSX thì có thời gian thực hiện nhanh hơn so với các đoạn code tương tự được viết trực tiếp bằng Javascript.
- Safer: Ngược lại với Javascript, JSX là kiểu statically-typed, nghĩa là nó sẽ được biên dịch trước khi khởi chạy, giống như c++, java, các lỗi sẽ được phát hiện ngay trong quá trình biên dịch. Ngồi ra, cịn hỗ trợ tính năng debug giúp q trình fix lỗi diễn ra dễ dàng và nhanh chóng.
- Easier: JSX kế thừa dựa trên javascript, vì vậy rất dễ dàng để cho các lập trình viên có thể tham khảo và ứng dụng.
3.1.1.4 Giới thiệu về Component:
React được xây dựng xung quanh các component, chứ không dung các template như các framework khác. Trong React ,chúng ta xây dựng trang web sử dụng những thành phần (component) nhỏ. Chúng ta có thể tái sử dụng component ở nhiều nơi, với các trạng thái hoặc các thuộc tính khác nhau, trong một compont lại có thể chứa thành phần khác. Mỗi component trong React có một trạng thái riêng, có thể thay đổi và React sẽ thực hiện cập nhật component dưa trên những thay đổi của trạng thái. Mọi thứ React đều được xây dựng bằng component. Chúng giúp quá trình bảo trì code khi làm việc với các dự án lớn diễn ra đơn giản hơn. Một react component đơn giản chỉ cần một method render. Có rất nhiều method khả dụng khác, nhưng render là method chủ đạo.
3.1.1.5 Props va State:
- Props: Giúp các component tương tác với nhau, component nhận input gọi là props, và trả thuộc tính mơ tả những gì component con sẽ render. Prop là bất biến.
- State: Thể hiện trạng thái của ứng dụng, khi state thay đổi thì component đồng thời render lại để cập nhật UI.
26
3.1.1.6 Kết luận
React là một thư viện tất thú vị và được phát triển dựa trên rất nhiều cấu trúc phức tạp. Tuy nhiên lại rất dễ sử dụng và thêm vào nhiều ứng dụng khác nhau. Ngoài ra React cịn có thư viên React native được dùng để thiết kết các ứng dụng native.
3.1.2 NodeJS:
Hình 3.1 NodeJS logo
3.1.2.1 Giới thiệu:
NodeJS là mã nguồn mở, đa nền tảng được xây dựng dựa trên Chrome’s V8 Javascript engine, được viết bằng ngơn ngữ lập trình C, C++, Javascript. NodeJS được giới thiệu lần đầu tiên bởi Ryan Dahl vào năm 2009. Nó sử dụng kiến trúc event-driven, và cơ chế non-blocking I/O giúp mang lại hiệu năng cao cho ứng dụng.
3.1.2.2 Ưu điểm:
- Dễ dàng nâng cấp, mở rộng hệ thống.
- Phù hợp cho các hệ thống giao tiếp, mạng xã hội,… cần luồng xử lý thông tin liên tục real-time.
- Node Package Manager cung cấp nhiều thư viện miễn phí để nâng cấp các chức năng bổ sung.
- V8 Javascript engine có tốc độ thực thi nhanh.
- Rút ngắn thời gian phát triển hệ thống, đưa hệ thống tiếp cận người dùng cuối nhanh hơn.
27
3.1.2.3 Nhược điểm:
- Cơ chế non-blocking đơn luồng tạo ra nút thắt cổ chai. Gây hao tổn tài nguyên CPU, do đó NodeJS khơng nên dùng để xử lý các tác vụ nặng.
- Thư viện NPM phong phú đồng thời cũng là nhược điểm, do khó kiểm sốt chất lượng của từng thư viện.
- Thường xuyên cập nhật, thay đổi API tuy nhiên khơng hỗ trợ tương thích ngược với các phiên bản cũ.
- Số lượng lập trình viên có kinh nghiệm với NodeJS cịn thấp.
3.1.2.4 Một số framework NodeJS nổi tiếng:
- ExpressJS: đây là framework dùng để xây dựng API phổ biến nhất của NodeJS, cung cấp nhiều tính năng mạnh mẽ để phát triển web. Nó hỗ trợ các phương thức HTTP, middleware, route để tạo ra API mạnh mẽ và dể sử dụng.
- SocketIO: là một web-socket được xây dựng nhằm tạo ra môi trường trao đổi thời gian thực giữa client và server (ví dụ ứng dụng giao tiếp, cộng tác soạn thảo trên Google Docs).
- HapiJS: đây là một framework đơn giản, an tồn và có độ tin cậy cao. Chúng ta có thể sử dụng Hapi.js để tạo các ứng dụng có khả năng mạnh mẽ, dễ mở rộng.
3.1.3 MongoDB:
28
3.1.3.1 Giới thiệu:
MongoDB là một hệ quản trị cơ sở dữ liệu (CSDL) mã nguồn mở NoSQL. Các document được lưu trữ riêng bên trong một collection dưới dạng JSON document, thay vì lưu vào cột, hàng như trong hệ quản trị CSDL quan hệ.
3.1.3.2 Ưu điểm:
- Linh hoạt, không bị ràng buộc bởi lược đồ (schema) cứng nhắc.
- Cấu trúc đối tượng rõ ràng: cấu trúc của dữ liệu là linh hoạt nhưng đối tượng của nó được xác định rõ ràng.
- Dễ dàng mở rộng lưu trữ.
- Caching lên RAM giúp tăng tốc độ truy xuất.
3.1.3.3 Nhược điểm:
- Không phù hợp cho các hệ thống u cầu độ chính xác cao do khơng có ràng buộc dữ liệu.
- Khơng có function “join”. Lúc cần phải viết thủ công, dẫn đến tốn thời gian, tốc độ truy vấn giảm.
- Cần cẩn trọng trong quá trình thao tác với dữ liệu do MongoDB khơng có tính chất ràng buộc như hệ quản trị CSDL quan hệ.
- Caching lên RAM dẫn đến việc yêu cầu bộ nhớ RAM đủ lớn để hệ thống hoạt động hiệu quả.
3.1.3.4 Khi nào nên dùng MongoDB:
- MongoDB thích hợp với các hệ thống cần tốc độ phản hồi nhanh.
- Các hệ thống dữ liệu lớn đòi hỏi tốc độ truy xuất dữ liệu nhanh.
- Các hệ thống có tần suất đọc/ghi dữ liệu cao.
- Thiết kế không cố định, mục tiêu thiết kế hệ thống chưa rõ ràng, có thể thay đổi theo thời gian.
29
3.1.4 SocketIO:
Hình 3.3 SocketIO Logo
3.1.4.1 WebSocket là gì?
Đây là cơng nghệ hỗ trợ giao tiếp hai chiều giữa server và client bằng cách sử dụng TCP socket. Cung cấp khả năng giao tiếp hai chiều mạnh mẽ, độ trễ thấp. Nó phù hợp để xây dựng các hệ thống cần độ trễ thấp như giao tiếp, thơng tin chứng khốn. Nếu dùng HTTP để kết nối thì lệnh AJAX được gửi liên tục tới server sẽ gây lãng phí tài nguyên, dữ liệu nhận lại bị trễ thời gian. Bên cạnh đó, khi dùng giao thức TCP để kết nối bằng websocket, hệ thống không cần quá nhiều kết nối như phương pháp Comet long-polling đồng thời khắc phục được nhiều nhược điểm của phương pháp Comet streaming.
3.1.4.2 Giới thiệu Socket.io:
SocketIO là một framework NodeJS được giới thiệu vào năm 2010. Nó được phát triển để tạo các kết nối thời gian thực, cho phép giao tiếp 2 chiều giữa máy chủ và máy khách.
SocketIO được dùng để xây dựng các ứng dụng web cần tốc độ phản hồi nhanh, gần như là real-time, ví dụ: livestream, giao tiếp, video call,…
3.1.4.3 Ưu điểm
- Tính bảo mật.
- Tự kết nối lại: trong quá trình giao tiếp nếu client bị ngắt kết nối nó sẽ tự động kết nối lại cho đến khi nhận được phản hồi từ server. Cung cấp các events để nhận diện ngắt kết nối.
30
- Hỗ trợ tạo kênh và phòng: cho phép người dùng tạo các kênh riêng biệt, từ đó tạo ra những mối quan hệ riêng giữa các phần tương tự như module riêng lẻ