Salam kepada Datuk T :) sempena hari porno se1Malaysia
Ok untuk meneruskan kerja jahat, opps kerja baik dari entry part 1 , saya akan tunjukkan contoh dan bukti bagaimana hendak menggunakan vaccine framework dimana anda akan start dengan pengalaman baru cara DCI + CQRS + ES(Event Sourcing) di combinekan.
Demo nie dalam ASP.Net MVC3. Aku create simple web solution dan didalam folder Models aku perlu create 6 folder iaiatu:
1. Commands
2. Domains
3. EventHandlers
4. Events
5. Reports
6. RoleHandlers
Imej seperti dibawah ini.
1. Create Customer class object
Aku akan tulis first code iaitu customer class didalam folder Domains/Customers
Perhatikan ada beberapa perkara penting aku perlu letak didalam class Customer. Pertama aku perlu extends AggregateRoot
2. Create command
Berikutnya, aku perlu tulis command class untuk digunakan sebagai message dari client ke server seperti ini. Tiada yang istimewa cuma perlu di extends ke command. Command akan digunakan di client sebagai mapping user mental model yang mengandungi maklumat dan operation yang hendak dilakukan.
3. Create Role
Selepas aku dah create domain(aggregateroot) dan juga command, seterusnya aku kena define Role. Role antara element yang penting/core dlm vaccine framework, dimana Role ini boleh sahaja dishare antara domain object yang lain dengan syarat domain object yang lain memenuhi contract RoleMethod. Contoh Role dalam demo app nie seperti berikut ini.
Self ialah keyword yang akan map balik kepada AggregateRoot so dalam kes ini Self ialah Customer.Self akan ada method CreateNewCustomer(c.Name,c.CashBalance), then perhatikan balik dalam code Customer diatas, dimana dalam method tersebut, kita hanya akan hasilkan event apabila method tersebut berlaku. Event tersebut akan diletakkan dalam method Apply iaitu salah satu method dalm vaccine framework berfungsi untuk store event kedalam event source dan eventsnapshot source, selain dari itu reporting component juga berada dalam Apply method. Event yang dihasilkan dalam process CreateNewCustomer ialah NewCustomerCreatedEvent. Code NewCustomerCreatedEvent adalah seperti ini.
4. Masukkan reporting
Seterusnya, apabila event tadi terhasil, selain dari disimpan kedalam event source dan juga eventsnapshot source, bahagian report juga untuk read process akan juga berlaku. Aku perlu create bagaimana report yang aku ingin keluarkan, report boleh digunakan untuk view di screen. So aku tidak perlu lagi ada join table, sebalinya setiap view UI akan ada report masing-masing.
EventHandler yang mengawal samaada update atau create new report ialah seperti ini
Aku akan tunjuk, rupa eventsnapshot source dan customerreport datasource.
EventSnapshotSource
CustomerDetailReport
Ringkasan
Ini adalah preview simple bagaimana menggunakan vaccine framework. InsyAllah akan buat demo dengan scenario yang lagi complex selepas ini.
0 comments:
Post a Comment