Hệ thống thời gian thực hay không, mẫu memento là một nơi tuyệt vời để bắt đầu.
Mẫu memento là một mẫu thiết kế phần mềm cung cấp khả năng khôi phục một đối tượng về trạng thái trước đó (hoàn tác thông qua rollback).
Mô hình vật lưu niệm được thực hiện với ba đối tượng: người khởi tạo, người chăm sóc và người lưu niệm.
Người khởi tạo là một số đối tượng có trạng thái bên trong.
Người chăm sóc sẽ làm một cái gì đó cho người khởi tạo, nhưng muốn có thể hoàn tác thay đổi. Người chăm sóc đầu tiên yêu cầu người khởi tạo cho một đối tượng lưu niệm. Sau đó, nó thực hiện bất kỳ hoạt động nào (hoặc chuỗi hoạt động) mà nó sẽ làm.
Để quay trở lại trạng thái trước các hoạt động, nó trả về đối tượng memento cho người khởi tạo.
Bản thân đối tượng memento là một đối tượng mờ đục (một đối tượng mà người chăm sóc không thể, hoặc không nên thay đổi).
Khi sử dụng mẫu này, cần thận trọng nếu người khởi tạo có thể thay đổi các đối tượng hoặc tài nguyên khác - mẫu memento hoạt động trên một đối tượng.
Tôi đã chia tay bài viết Wikipedia một chút để tập trung vào một số mục.
Đối với kịch bản của bạn, người khởi tạo sẽ là mã ứng dụng chính của bạn, rất có thể tại điểm mà các công việc được đăng ký và bắt đầu xử lý.
Người chăm sóc là những gì bạn cần tạo và có thể là một loại hệ thống ghi nhật ký hoặc lưu trữ dữ liệu khác.
Memento sẽ là thông tin liên quan cần được hoàn tác và / hoặc làm lại. Tôi nghi ngờ điều này sẽ trông giống như một mô tả công việc của một số loại có thể được đặt trở lại vào hàng đợi xử lý.
Nếu bạn có thể bao bọc các thay đổi hiện có từ công việc J1
bằng một giao dịch cơ sở dữ liệu, điều đó sẽ giải quyết các mối quan tâm của bạn ( all the action taken so far must be reverted
). Khi xảy ra khôi phục giao dịch, bạn sẽ kích hoạt một cuộc gọi đến Người chăm sóc để sắp xếp lại công việc J1
.
Một điều cần ghi nhớ là cảnh báo cuối cùng trong bản tóm tắt Wikipedia. Bạn cần đảm bảo rằng các thay đổi là nguyên tử và chúng có thể được áp dụng hoặc khôi phục lại dưới dạng một tập hợp gắn kết.
Tôi không chắc chắn rằng trong một môi trường thời gian thực sẽ có nhiều tác động đến cách bạn thực hiện mô hình vật lưu niệm. Nếu có thời hạn cho các hoạt động, thì bạn có thể cần phải ghi lại một số thay đổi để đảm bảo hệ thống phản hồi trong một khoảng thời gian thích hợp. Tôi nghĩ rằng tôi sẽ thực hiện chức năng trước và sau đó xác minh rằng bạn đang đáp ứng các yêu cầu ứng dụng khác của bạn. Tôi không thấy bạn gặp phải bất cứ điều gì sẽ làm mất hiệu lực những gì bạn đã mô tả cho đến nay.