Tôi đang cố gắng học cách DDD và các môn học liên quan. Tôi nảy ra một ý tưởng về bối cảnh giới hạn đơn giản để thực hiện "ngân hàng": có tài khoản, tiền có thể được gửi, rút và chuyển giữa chúng. Nó cũng quan trọng để giữ lịch sử của những thay đổi.
Tôi đã xác định thực thể Tài khoản và việc tìm nguồn cung ứng sự kiện sẽ tốt để theo dõi các thay đổi trong đó. Các thực thể hoặc đối tượng giá trị khác không liên quan đến vấn đề, vì vậy tôi sẽ không đề cập đến chúng.
Khi xem xét tiền gửi và rút tiền - nó tương đối đơn giản, vì chỉ có một tổng hợp được sửa đổi.
Khi chuyển nó khác nhau - hai tổng hợp phải được sửa đổi bởi một sự kiện MoneyTransferred . DDD không chấp nhận sửa đổi nhiều tổng hợp trong một giao dịch. Mặt khác, quy tắc tìm nguồn cung ứng sự kiện là áp dụng các sự kiện cho các thực thể và sửa đổi trạng thái dựa trên chúng. Nếu sự kiện có thể được lưu trữ đơn giản trong cơ sở dữ liệu, sẽ không có vấn đề gì. Nhưng để ngăn chặn sửa đổi đồng thời các thực thể có nguồn gốc sự kiện, chúng ta phải triển khai một cái gì đó phiên bản luồng sự kiện của mỗi tổng hợp (để giữ giới hạn giao dịch của chúng). Với phiên bản xuất hiện một vấn đề khác - tôi không thể sử dụng các cấu trúc đơn giản để lưu trữ các sự kiện và đọc lại chúng để áp dụng chúng cho tổng hợp.
Câu hỏi của tôi là - làm thế nào tôi có thể tập hợp ba nguyên tắc đó: "một tổng hợp một giao dịch", "sự kiện-> thay đổi trong tổng hợp" và "phòng ngừa sửa đổi đồng thời"?