Skip to content

Phân tích backend xử lý ngầm

Tạ Tuấn Anh edited this page Oct 28, 2016 · 18 revisions

####Nguyên tắc chung Thành phần này cung cấp tất cả các loại tác vụ ngầm + tiện ích xử lý dữ liệu cho OpenCPS.

Mọi quá trình ghi log, chuyển trạng thái hồ sơ phải được thực hiện bởi hệ thống ngầm. Không thực hiện ghi log bởi UI. UI chỉ gửi thông điệp yêu cầu xử lý bởi backend.

Frontoffice có trách nhiệm cập nhật log đối với hồ sơ. Backoffice chỉ cập nhật log của phiếu xử lý hồ sơ (actionhistory)

####Mô đun đồng bộ hồ sơ giữa frontoffice và backoffice trong cùng hệ thống (org.opencps.backend.sync)

Tác vụ đồng bộ hồ sơ phía frontoffice chạy ở chế độ local (SyncFromFrontOffice)

  • Là một Listener để nghe kênh có id "opencps/frontoffice/out/destination"
  • Nhận và xử lý các thông điệp liên quan đến các thao tác của cá nhân và tổ chức như gửi hồ sơ tạo mới, gửi bổ sung hồ sơ, gửi thông tin thanh toán
  • Cập nhật thông tin hồ sơ trên CSDL để nhìn thấy bên phía backoffice
  • Gửi thông điệp yêu cầu xử lý hồ sơ lên kênh "opencps/backoffice/engine/destination"
  • Ghi log cho quá trình xử lý phía frontoffice đối với hồ sơ

Tác vụ đồng bộ hồ sơ phía backoffice chạy ở chế độ local (SyncFromBackOffice)

  • Là một Listener để nghe kênh có id "opencps/backoffice/out/destination"
  • Cập nhật trạng thái và log thay đổi trạng thái hồ sơ
  • Cập nhật quyền sở hữu tài liệu đối với các hồ sơ được trả kết quả
  • Phản hồi lại kết quả đồng bộ về kênh có địa chỉ id "opencps/backoffice/engine/callback"

####Mô đun engine xử lý hồ sơ theo quy trình thủ tục (org.opencps.backend.engine)

Tác vụ xử lý chuyển dịch trạng thái phía backoffice (BackOfficeProcessEngine)

  • Là một Listener để nghe kênh có id "opencps/backoffice/engine/destination"
  • Nhận và xử lý các thông điệp liên quan đến một event được kích hoạt. Nguồn nhận event sẽ từ UI của backoffice, backend của frontoffice và mô đun sinh sự kiện tự * Tạo phiếu xử lý cho các hồ sơ mới hoặc hồ sơ riêng được tạo ra
  • Chuyển dịch bước của phiếu xử lý theo quy trình với thao tác đã được lựa chọn
  • Gọi thực hiện các công việc ngầm của thao tác như cấp mã số hồ sơ, định ngày hẹn trả,
  • Câp nhật log của phiếu xử lý hồ sơ
  • Cập nhật trạng thái mới của hồ sơ để đồng bộ với frontoffice
  • Gửi yêu cầu đồng bộ hồ sơ khi cần đên kênh "opencps/backoffice/out/destination"
  • Nhận trả lời cho kết quả xử lý đồng bộ trên kênh "opencps/backoffice/engine/callback"
  • Chuyển trạng thái của phiếu xử lý sau khi đã được đồng bộ hồ sơ thành công (nếu có)

Tác vụ xử lý kết quả của việc đồng bộ hồ sơ (BackOfficeProcessCallback)

  • Là một Listener để nghe kênh có id "opencps/backoffice/engine/callback"
  • Căn cứ kết quả đồng bộ thực hiện chuyển dịch trạng thái hồ sơ phù hợp

Tác vụ sinh các sự kiện tự động xử lý hồ sơ (AutoEventGenerator)

  • Là một Listener hoạt động theo chế độ cron job. Được đặt lịch ngầm định một phút kiểm tra một lần tất cả các phiếu xử lý chưa kết thúc.
  • Nếu phiếu xử lý nào có điều kiện thỏa mãn lựa chọn của autoevent thì gửi thông điệp xử lý đên kênh có id "opencps/backoffice/engine/destination"
  • Các điều kiện kiểm tra gồm: thời gian xử lý, tag của hồ sơ, hồ sơ đã có các phiếu thanh toán hợp lệ

####Mô đun hỗ trợ trao đổi hồ sơ với hệ thống ngoài qua giao thức truyền thông (org.opencps.backend.exc)

Tác vụ gửi thông điệp đồng bộ hồ sơ phía frontoffice (MsgOutFrontOffice)

  • Là một Listener để nghe kênh có id "opencps/frontoffice/out/destination"

Tác vụ nhận thông điệp đồng bộ hồ sơ phía backoffice (MsgInBackOffice)

Tác vụ gửi thông điệp đồng bộ hồ sơ phía backoffice (MsgOutBackOffice)

  • Là một Listener để nghe kênh có id "opencps/backoffice/out/destination"

Tác vụ nhận thông điệp đồng bộ hồ sơ phía frontoffice (MsgInFrontOffice)

####Mô đun chứa các tiện ích xử lý dữ liệu (org.opencps.backend.util)

Tiện ích sinh mã số hồ sơ theo mẫu (DossierNoGenerator)

Sử dụng các chữ cái để đại diện cho việc sinh mã số:

  • {YYYY} hoặc {YY}: năm tiếp nhận hồ sơ
  • {MM}: tháng tiếp nhận hồ sơ
  • {DD}: ngày tiếp nhận hồ sơ
  • {NNNNN}: số serial hồ sơ được sinh ra (chú ý số kí tự N thể hiện độ dài chuỗi số tự sinh). Phải có tối thiểu 2 kí tự trong chuỗi số serial. Nếu số serial được reset lại theo ngày, tháng, năm thì thêm đuôi chữ như sau {NNNNN-D}, {NNNNN-M}, {NNNNN-Y}

Tiện ích sinh ngày hẹn trả theo mẫu (BookingDateGenerator)

  • Xác định ngày hẹn trả +d hh:mm. Trong đó d là số ngày, hh là giờ, mm là phút

Tiện ích sinh phiếu yêu cầu thanh toán (PaymentRequestGenerator)

Mẫu pattern cho nội dung yêu cầu thanh toán tại một bước trong quy trình được đặt theo cú pháp phân cách nhau bởi dấu trắng [bank] [cash] [keypay] [net=] [ship=] [tax=] [$msg1$] [$msg2$] ...

  • bank: trả bằng hình thức chuyển khoản
  • keypay: trả qua cổng trực tuyến keypay
  • cash: trả bằng tiền mặt
  • net= công thức tính tiền phí hàng hóa, bắt buộc phải có
  • ship= tiền vận chuyển hàng hóa, ngầm định giá trị = 0
  • tax= tiền thuế dịch vụ
  • $msg1$ thông điệp thứ 1 đặt trong cặp dấu $
  • $msg2$ thông điệp thứ 2 đặt trong cặp dấu $

Phải có ít nhất một trong ba hình thức thanh toán. Nếu không có hình thức nào thì ngầm định lấy hình thức thanh toán cash. Tổng tiền amount của yêu cầu thanh toán là =net+ship+tax.

Tiện ích sinh đường dẫn yêu cầu thanh toán cho keypay (KeypayUrlGenerator)

Khi sinh đường dẫn keypay cần căn cứ vào cấu hình thanh toán với mã bảo mật để sử dụng theo hướng dẫn. Xem tài liệu hướng dẫn của keypay để xem cách sinh url với các thông số đầu vào theo mong muốn.

Tiện ích hỗ trợ điền dữ liệu tự động cho form động của hồ sơ (AutoFillFormData)

Mẫu dữ liệu là json data. Trong đó thay thế các chuỗi dữ liệu bằng các mẫu sau đây:

  • Giá trị trắng: là một chuỗi null ""
  • Giá trị ngầm định theo mong muốn
  • Giá trị tĩnh theo hồ sơ với tên biến bắt đầu bằng dấu _
    • _subjectName: tên cá nhân, tổ chức làm thủ tục hành chính
    • _subjectId: mã cá nhân, tổ chức
    • _address: địa chỉ liên lạc
    • _cityCode: mã thành phố
    • _cityName: tên thành phố
    • _districtCode: mã quận
    • _districtName: tên quận
    • _wardCode: mã phường
    • _wardName: tên phường
    • _contactName: tên người liên lạc
    • _contactTelNo: số điện thoại liên lạc
    • _contactEmail: địa chỉ email
    • _dossierFileNo: số hiệu của giấy tờ được tạo ra
    • _dossierFileDate: ngày của giâý tờ được tạo ra
  • Lấy theo giá trị đã có trong hồ sơ từ một giấy tờ khác. Cú pháp để thể hiện như sau: #variable@paper
    • variable: tên biến object trong json. Một biến mang giá trị có thể là một chuỗi, một đối tượng dữ liệu json hoặc một mảng dữ liệu. Trong trường hợp tên biến xuất hiện nhiều lần trong mảng json, giá trị được chọn là của đối tượng có thứ tự ngầm định tương ứng với số giấy tờ. Ví dụ với giấy đầu tiên được tạo ra thì lấy giá trị của đối tượng thứ 0 trong mảng, tiếp đó giấy thứ 2 (có cùng thành phần) được tạo ra thì lấy giá trị của đối tượng thứ 1 trong mảng,...
    • paper: số hiệu của giấy tờ chứa dữ liệu để copy. Chú ý cùng một số hiệu paper có thể có nhiều giấy khác nhau trong CSDL. Chỉ sử dụng các paper trong context và thứ tự ưu tiên như sau: nằm trong cùng hồ sơ riêng, nằm trong cùng hồ sơ chính, nằm ở hồ sơ khác của cùng tác giả và có thời gian mới nhất (chỉ áp dụng đối với loại giấy tờ input)
  • Giá trị được lấy từ một nguồn chia sẻ thông tin (dùng url template). Cú pháp bắt đầu bằng http:// hay https://
    • Trước khi gửi câu url đi, thay thế các biến $variable$ bằng giá trị có trong biến

Tiện ích sinh mẫu in dạng báo cáo dựa trên thiết kế jasper (JasperReportExporter)

  • Sử dụng datasource là json cho các mẫu report sinh ra. Lược đồ dữ liệu được định nghĩa bởi alpaca.

Tiện ích sinh tự động số hiệu & ngày của giấy tờ kết qủa (DossierFileNoGenerator)

Giấy tờ form kết qủa tạo ra sẽ được tự động điền ngày và số hiệu theo cấu hình của mẫu giấy tờ. Chuỗi cấu hình sinh số giấy tờ sử dụng các chữ cái để đại diện cho việc sinh mã số:

  • {YYYY} hoặc {YY}: năm hiện tại
  • {MM}: tháng hiện tại
  • {DD}: ngày hiện tại
  • {NNNNN}: số serial giấy tờ được sinh ra (chú ý số kí tự N thể hiện độ dài chuỗi số tự sinh). Phải có tối thiểu 2 kí tự trong chuỗi số serial. Nếu số serial được reset lại theo ngày, tháng, năm thì thêm đuôi chữ như sau {NNNNN-D}, {NNNNN-M}, {NNNNN-Y}
Clone this wiki locally