Skip to content

Kiến trúc ứng dụng OpenCPS

Vũ Minh Cương edited this page Apr 20, 2016 · 8 revisions

ảnh3 ####Kiến trúc thành phần OpenCPS được phát triển trên nền tảng Liferay. Cấu trúc ứng dụng bao gồm backend và frontend

  • Backend: bao gồm các thành phần
    • DB Access: Tầng truy cập dữ liêu cung cấp các dịch vụ truy vấn CSDL thông qua Hibernate.
    • API Service: Tầng nghiệp vụ cung cấp hàm chức năng theo nghiệp vụ của dịch vụ công trực tuyến
    • Restful API: Tầng nghiệp vụ cung cấp giao diện (inteface) cho các ứng dụng dưới dịch vụ web dạng micro service
  • Frontend: là tầng trình diễn cung cấp giao diện tới người dùng
    • Admin UI: cung cấp giao diện web cho người dùng quản trị hệ thống
    • Backoffice UI: cung cấp giao diện cho người dùng cán bộ trong cơ quan nhà nước. Backoffice được phân tách thành module nghiệp vụ dùng cho cán bộ xử lý hồ sơ và module một cửa dùng cho cán bộ tiếp nhận hồ sơ
    • Frontoffice UI: cung cấp giao diện cho người dùng là công dân, doanh nghiệp tiếp nhận hồ sơ
    • Mobile UI: cung cấp giao diện native trên thiết bị mobile (gồm cả backoffice và portal)
    • Plugin UI: cung cấp giao diện web cho thành phần portal được nhúng vào các cổng thông tin sử dụng các nền các nền tảng web khác như Sharepoint, Nukeviet, Joomla,...

OpenCPS được đóng thành các gói bao gồm

  • OpenCPS: là gói chính của dự án chạy trên nền tảng Liferay với đầy đủ các thành phần backend và frontend
  • OpenCPS Mobile: là ứng dụng frontend chạy trên mobile dùng hệ điều hành Android
  • OpenCPS Nukeviet: là ứng dụng frontend dạng plugin chạy trên nền tảng Nukeviet
  • OpenCPS Sharepoint: là ứng dụng frontend dạng plugin chạy trên nền tảng Sharepoint

####Kiến trúc triển khai OpenCPS hỗ trợ 2 phương án triển khai tùy thuộc vào nhu cầu của người dùng

  • Triển khai tập trung:
    Ứng dụng dành cho công dân, doanh nghiệp và cán bộ được triển khai trên cùng một CSDL tập trung. Một thành phần backend chung được sử dụng cho tất cả các loại frontend gồm giao diện cho công dân doanh nghiệp, giao diện cho cán bộ và các giao diện mobile.
  • Triển khai phân tán:
    Ứng dụng dành cho công dân, doanh nghiệp được triển khai độc lập với ứng dụng dành cho cán bộ trên CSDL khác nhau. Khi đó cho phép triển khai nhiều ứng dụng nghiệp vụ (dành cho cán bộ) theo các chuyên ngành khác nhau nhưng luôn chỉ có 1 giao diện thống nhất dành cho công dân và doanh nghiệp. Khi đó sẽ có nhiều thành phần backend được triển khai phân tán tương ứng với các frontend của người dùng. Ưu điểm của phương án triển khai này là linh hoạt theo mô hình tổ chức phân cấp của cơ quan của bộ ngành và địa phương.

####Tích hợp với phần mềm quản lý dữ liệu chuyên ngành OpenCPS là phần mềm lõi quản lý hồ sơ và quy trình xử lý cho mọi thủ tục hành chính. Phần mềm này chỉ quản lý về mặt hồ sơ mà không quản lý được dữ liệu chuyên ngành có trong hồ sơ. Trong thực tế, khi kết thúc hoặc trong quá trình xử lý hồ sơ, các dữ liệu chuyên ngành có nhu cầu được cập nhật vào một CSDL chuyên ngành để quản lý. Việc cập nhật dữ liệu chuyên ngành này sẽ được xử lý bởi một ứng dụng chuyên ngành độc lập với OpenCPS.

Có 2 phương án phát triển và tích hợp ứng dụng chuyên ngành với OpenCPS:

  • Phát triển trên nền tảng Liferay. Khi đó ứng dụng chuyên ngành được triển khai trên cùng hệ thống máy chủ với thành phần backend của OpenCPS và chia sẻ dùng chung nền tảng Liferay trong đó có các tài khoản người dùng. Đây là phương án tích hợp chặt phù hợp với các ứng dụng được phát triển mới trên cùng một nền tảng thống nhất
  • Phát triển trên nền tảng độc lập với OpenCPS. Đây là phương án tích hợp lỏng, phần mềm ứng dụng chuyên ngành có thể được phát triển bằng ngôn ngữ hay nền tảng bất kì. Ứng dụng phải có các đặc điểm cần thiết sau để có thể tích hợp được với OpenCPS:
    • Cung cấp giao diện web
    • Hỗ trợ xác thực người dùng qua SSO
    • Giao tiếp trao đổi dữ liệu với phần mềm OpenCPS qua dịch vụ web dạng restful

####Nguyên tắc phát triển OpenCPS được xây dựng theo nguyên tắc tách biệt giữa backend và frontend dựa trên framework của Liferay. Backend được xây dựng với công cụ service builder. Frontend được xây dựng theo chuẩn MVC Portlets, chuẩn jsf, hoặc [mobile Android] (https://dev.liferay.com/develop/learning-paths/mobile). Việc lựa chọn công cụ nào để xây dựng phụ thuộc vào yêu cầu của ứng dụng cụ thể.

Backend

Thành phần backend được sinh ra bởi Liferay gồm 3 phần model – service – persistence. Trong đó model và service sẽ được sử dụng bởi thành phần controler của giao diện frontend trong các ứng dụng. Model thể hiện các entity dữ liệu của ứng dụng được khai báo và sinh tự động từ tệp mô tả service.xml. Mỗi entity dữ liệu của ứng dụng khi thiết kế có thể kế thừa lại các mô hình sẵn có trong Liferay, cụ thể như sau:

  • Kế thừa các tính năng cơ bản gắn sẵn đối với bất kì một tài sản (asset) dữ liệu nào của ứng dụng trong đó có comments, tags, categories, khai báo trường thuộc tính bổ sung, thống kê lượt views, đánh giá (star), gắn kết mạng xã hội facebook, twiter,…
  • Kế thừa khả năng đánh chỉ mục và tìm kiếm đối tượng theo fulltext sử dụng mô tơ lucence
  • Kế thừa khả năng quản lý trạng thái của đối tượng được gắn kết với một workflow sử dụng mô tơ kaleo. Đây là những tính năng rất quan trọng trong một hệ thống ứng dụng có thể kế thừa mà không cần phải xây dựng lại. Trong ứng dụng OpenCPS có các nhóm dữ liệu chính sau:
    • datamgt: quản lý dữ liệu danh mục
    • usermgt: quản lý dữ liệu cán bộ
    • accountmgt: quản lý tài khoản công dân, doanh nghiệp
    • servicemgt: quản lý thông tin thủ tục hành chính (dịch vụ công cấp độ 2)
    • dossiermgt: quản lý hồ sơ trực tuyến (dịch vụ công cấp độ 3 - frontoffice)
    • processmgt: quản lý quy trình xử lý hồ sơ (backoffice)
    • paymentmgt: quản lý thanh toán điện tử (dịch vụ công cấp độ 4)

Khi thiết kế các đối tượng dữ liệu cần lưu ý tới yêu cầu kế thừa của từng đối tượng dữ liệu. Ví dụ các hồ sơ cần được quản lý để có thể đánh dấu tags, thống kê số view, bổ sung thêm trường tùy biến theo yêu cầu của người dùng, tìm kiếm theo fulltext, quản lý theo quy trình. Tuy nhiên phần quản lý theo quy trình có thể có những đặc thù khác với mô hình hiện có của kaleo và cần phải bổ sung thêm.

Frontend

Giao diện OpenCPS được phân tách và phát triển dưới dạng các portlets để có thể kéo thả tùy biến trong cổng thông tin. Để hình thành một ứng dụng, người triển khai phải dùng lại các portlet sẵn có trong Liferay cho thành phần giao diện cơ bản như menu, liên kết website, banner, footer của ứng dụng,...

Clone this wiki locally