İlk uygulamamı Olay Kaynağı ile birlikte CQRS kalıbını kullanarak uygulamak istiyorum. Agrega köklerinin oluşturulmasının nasıl düzgün bir şekilde ele alınması gerektiğini merak ediyorum. Birisinin CreateItem komutu gönderdiğini varsayalım. Nasıl ele alınmalı? ItemCreated etkinliği nerede saklanmalıdır? Yeni bir öğenin ilk etkinliği olarak? Yoksa tüm öğeleri bir araya getiren bir tür ItemList varlığı mı olmalı ve etkinlik listesi yalnızca ItemCreated olaylarından mı oluşuyor?
Udi Dahan , toplu kökler oluşturmamayı ve her zaman bunun yerine bir tür getirme yöntemi kullanmamayı önerir . Ama yeni ve kesinlikle herhangi bir kimliği atanmamış bir şeyi nasıl getirebilirim. Arkadaki fikri anlıyorum ve yeni bir nesnenin, durumu üzerinde sıfır olaydan oluşan bir nesne olduğunu düşünmek oldukça makul. Ama nasıl kullanmalıyım? Depomda farklı bir yöntem olmalı mı getNewItem()
yoksa get(id)
yöntemimi kabul etmeli Optional<ItemId>
mi?
Düzenleme: Kazma bir süre sonra aktörler kullanarak yukarıda bahsedilen desenlerin gerçekten ilginç bir uygulama bulundu . Yazar, toplu oluşturmak yerine, yeni oluşturulan UUID ile bir tür depodan alır. Bu yaklaşımın dezavantajı, geçici bir tutarsızlık durumuna izin vermesidir. Ben de delete
böyle bir yaklaşımla yöntemi nasıl uygulayabileceğimi merak ediyorum . Toplamın etkinlik listesine Silinmiş etkinliği mi eklemeniz yeterlidir?