Dalam CQRS / ES, perintah dikirim dari klien ke server dan dialihkan ke penangan perintah yang sesuai. Handler perintah itu memuat agregat dari repositori, dan memanggil beberapa metode di atasnya, dan menyimpannya kembali ke repositori. Acara dihasilkan. Seorang manajer event handler / saga / proses dapat mendengarkan acara ini untuk mengeluarkan perintah.
Jadi, perintah (input) menghasilkan peristiwa (output), yang kemudian dapat mengumpan balik ke sistem lebih banyak perintah (input). Sekarang, apakah ini merupakan praktik yang umum bagi suatu perintah untuk tidak memancarkan peristiwa apa pun, melainkan untuk membuat perintah lain? Pendekatan semacam itu dapat digunakan untuk memaksa eksekusi dalam proses eksternal.
EDIT:
Kasus penggunaan spesifik yang ada dalam pikiran saya adalah pemrosesan rincian pembayaran. Klien mengirimkan PayInvoice
perintah, yang payload-nya meliputi rincian kartu kredit pengguna. Perintah ini PayInvoiceHandler
dikirimkan MakeInvoicePayment
ke proses terpisah, yang bertanggung jawab untuk berinteraksi dengan gateway pembayaran. Jika pembayaran berhasil, suatu InvoicePaid
peristiwa dihasilkan. Jika karena alasan tertentu sistem macet setelah PayInvoice
perintah tetap ada tetapi sebelum MakeInvoicePayment
perintah itu tetap ada, kita dapat melacak ini secara manual (tidak ada pembayaran yang akan dilakukan). Jika sistem crash setelah MakeInvoicePayment
perintah tetap tetapi sebelumInvoicePaid
acara tetap, kami mungkin memiliki situasi di mana kartu kredit pengguna dibebankan tetapi faktur tidak ditandai sebagai telah dibayar. Dalam hal ini, situasinya harus diselidiki secara manual dan faktur secara manual ditandai sebagai berbayar.