Tuesday, March 22, 2011

vaccine framework example - preview 1

Salam

Ok, just nak tunjuk simple example macam maner vaccine framework berfungsi. So example yang paling mudah ialah classic example customer order product. Rules yang perlu ada ialah order mestilah tak lebih dari balance amount yang ada pada customer dan juga quantiti order product mestilah kurang atau sama dari available quantiti stock pada setiap product yang dipilih.

So, langkah pertama macam maner kita nak design domain model dia? Kalau normal domain model design kita akan hasilkan design seperti ini



Domain diatas digunakan untuk write dan read, so akan ada join table sana dan sini untuk hasilkan maklumat tertentu ke screen atau apa-apa bentuk reporting.

Domain design menggunakan vaccine framework pula akan hasilkan design sebegini



Hasilnya tiada lagi reference order ke customer dan tiada lagi reference orderline ke product. So mana perginya reference ini. Kalau dilihat dalam image reference tu sekarang berada dalam makeorderrole tetapi ianya hanyalah short term reference, hanya berlaku apabila role tersebut digunakan. Maklumat reference disimpan didalam event untuk read model.

Oleh kerana ini adalah preview untuk vaccine framework, so untuk detail pasal architecture akan dibincang di lain kali.

Antara konsep yang penting dalam cqrs ialah messaging. Message terbahagi kepada 2 bahagian, command dan juga event.

Command dimap kepada verb dan dalam bentuk "present tense" seperti RegisterNewCourse etc.

Manakala event pula ialah sesuatu yang telah berlaku hasil dari process dari command. Name convention untk map ialah seperti berikut NewCourseRegistered ianya juga map kan verb dalam bentuk "past tense".

Okay cukup serba sedikit pasal command dan event, berbalik semula kepada macam maner hendak hasilkan solution kepada user story yang kat atas berserta rules yang perlu dipenuhi.

Apabila menggunakan vaccine framework, ada 3 object penting perlu di kenal pasti sebelum pergi ke step seterusnya. Pertama sekali kena kenal pasti

1. RolePlayer - Object yang akan menggunakan Role didalam berkomunikasi dengan object2 yang lain.

2. Command Message - Ialah intention/mental model dari user kepada system untuk buat sesuatu.

3. RoleMethod - Fungsi role dan boleh dikongsi fungsi ini dengan RolePlayer yang lain yang ada contract Role yang sama.

Habis preview 1 :)

0 comments: