├── .gitignore ├── README.md ├── assets ├── examples │ ├── availability │ │ └── board-booking-conference-room.png │ └── loan │ │ └── board-loan-application-process.png └── logo.png └── examples ├── example-availability-resource.md ├── example-cart-shopping-basket.md ├── example-loan-application.md ├── java └── cart │ ├── .gitignore │ ├── .mvn │ └── wrapper │ │ ├── maven-wrapper.jar │ │ └── maven-wrapper.properties │ ├── design-level-event-storming │ ├── firstdesign │ │ └── design-level-event-storming.png │ └── seconddesign │ │ ├── alternate-design-more-cohesion.png │ │ └── cart-design-level-event-storming.png │ ├── mvnw │ ├── mvnw.cmd │ ├── pom.xml │ └── src │ ├── main │ └── java │ │ └── io │ │ └── pillopl │ │ ├── firstdesign │ │ ├── Cart.java │ │ ├── CartCommandsHandler.java │ │ ├── CartDatabase.java │ │ ├── CartId.java │ │ └── ExtraItemsPolicy.java │ │ └── seconddesign │ │ ├── Cart.java │ │ ├── CartCommandsHandler.java │ │ ├── CartDatabase.java │ │ ├── CartId.java │ │ └── ExtraItemsPolicy.java │ └── test │ └── java │ └── io.pillopl │ ├── firstdesign │ └── CartTest.java │ └── seconddesign │ └── CartTest.java └── php ├── composer.json ├── composer.lock ├── phpunit.xml ├── src ├── Availability │ ├── Policy.php │ ├── Policy │ │ ├── Allowance.php │ │ ├── LimitedDuration.php │ │ ├── NoGapsBetween.php │ │ ├── NoOverlapping.php │ │ └── Rejection.php │ ├── Reservation.php │ ├── Resource.php │ └── ResourceId.php └── Loan │ ├── AttachmentContent.php │ ├── AttachmentDecision.php │ ├── AttachmentDecisions.php │ ├── AttachmentId.php │ ├── Decision.php │ ├── DecisionProcessingPolicy.php │ ├── DecisionRegistrationPolicy.php │ ├── LoanApplication.php │ ├── LoanApplicationId.php │ └── Policy │ ├── DecisionProcessing │ └── AllDecidedTo.php │ └── DecisionRegistration │ ├── Deadline.php │ ├── OverwritingDecisions.php │ └── SingleDecisions.php └── tests ├── Availability └── ReservationTest.php └── Loan └── LoanApplicationTest.php /.gitignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mariuszgil/aggregates-by-example/HEAD/.gitignore -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mariuszgil/aggregates-by-example/HEAD/README.md -------------------------------------------------------------------------------- /assets/examples/availability/board-booking-conference-room.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mariuszgil/aggregates-by-example/HEAD/assets/examples/availability/board-booking-conference-room.png -------------------------------------------------------------------------------- /assets/examples/loan/board-loan-application-process.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mariuszgil/aggregates-by-example/HEAD/assets/examples/loan/board-loan-application-process.png -------------------------------------------------------------------------------- /assets/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mariuszgil/aggregates-by-example/HEAD/assets/logo.png -------------------------------------------------------------------------------- /examples/example-availability-resource.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mariuszgil/aggregates-by-example/HEAD/examples/example-availability-resource.md -------------------------------------------------------------------------------- /examples/example-cart-shopping-basket.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mariuszgil/aggregates-by-example/HEAD/examples/example-cart-shopping-basket.md -------------------------------------------------------------------------------- /examples/example-loan-application.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mariuszgil/aggregates-by-example/HEAD/examples/example-loan-application.md -------------------------------------------------------------------------------- /examples/java/cart/.gitignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mariuszgil/aggregates-by-example/HEAD/examples/java/cart/.gitignore -------------------------------------------------------------------------------- /examples/java/cart/.mvn/wrapper/maven-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mariuszgil/aggregates-by-example/HEAD/examples/java/cart/.mvn/wrapper/maven-wrapper.jar -------------------------------------------------------------------------------- /examples/java/cart/.mvn/wrapper/maven-wrapper.properties: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mariuszgil/aggregates-by-example/HEAD/examples/java/cart/.mvn/wrapper/maven-wrapper.properties -------------------------------------------------------------------------------- /examples/java/cart/design-level-event-storming/firstdesign/design-level-event-storming.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mariuszgil/aggregates-by-example/HEAD/examples/java/cart/design-level-event-storming/firstdesign/design-level-event-storming.png -------------------------------------------------------------------------------- /examples/java/cart/design-level-event-storming/seconddesign/alternate-design-more-cohesion.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mariuszgil/aggregates-by-example/HEAD/examples/java/cart/design-level-event-storming/seconddesign/alternate-design-more-cohesion.png -------------------------------------------------------------------------------- /examples/java/cart/design-level-event-storming/seconddesign/cart-design-level-event-storming.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mariuszgil/aggregates-by-example/HEAD/examples/java/cart/design-level-event-storming/seconddesign/cart-design-level-event-storming.png -------------------------------------------------------------------------------- /examples/java/cart/mvnw: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mariuszgil/aggregates-by-example/HEAD/examples/java/cart/mvnw -------------------------------------------------------------------------------- /examples/java/cart/mvnw.cmd: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mariuszgil/aggregates-by-example/HEAD/examples/java/cart/mvnw.cmd -------------------------------------------------------------------------------- /examples/java/cart/pom.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mariuszgil/aggregates-by-example/HEAD/examples/java/cart/pom.xml -------------------------------------------------------------------------------- /examples/java/cart/src/main/java/io/pillopl/firstdesign/Cart.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mariuszgil/aggregates-by-example/HEAD/examples/java/cart/src/main/java/io/pillopl/firstdesign/Cart.java -------------------------------------------------------------------------------- /examples/java/cart/src/main/java/io/pillopl/firstdesign/CartCommandsHandler.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mariuszgil/aggregates-by-example/HEAD/examples/java/cart/src/main/java/io/pillopl/firstdesign/CartCommandsHandler.java -------------------------------------------------------------------------------- /examples/java/cart/src/main/java/io/pillopl/firstdesign/CartDatabase.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mariuszgil/aggregates-by-example/HEAD/examples/java/cart/src/main/java/io/pillopl/firstdesign/CartDatabase.java -------------------------------------------------------------------------------- /examples/java/cart/src/main/java/io/pillopl/firstdesign/CartId.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mariuszgil/aggregates-by-example/HEAD/examples/java/cart/src/main/java/io/pillopl/firstdesign/CartId.java -------------------------------------------------------------------------------- /examples/java/cart/src/main/java/io/pillopl/firstdesign/ExtraItemsPolicy.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mariuszgil/aggregates-by-example/HEAD/examples/java/cart/src/main/java/io/pillopl/firstdesign/ExtraItemsPolicy.java -------------------------------------------------------------------------------- /examples/java/cart/src/main/java/io/pillopl/seconddesign/Cart.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mariuszgil/aggregates-by-example/HEAD/examples/java/cart/src/main/java/io/pillopl/seconddesign/Cart.java -------------------------------------------------------------------------------- /examples/java/cart/src/main/java/io/pillopl/seconddesign/CartCommandsHandler.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mariuszgil/aggregates-by-example/HEAD/examples/java/cart/src/main/java/io/pillopl/seconddesign/CartCommandsHandler.java -------------------------------------------------------------------------------- /examples/java/cart/src/main/java/io/pillopl/seconddesign/CartDatabase.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mariuszgil/aggregates-by-example/HEAD/examples/java/cart/src/main/java/io/pillopl/seconddesign/CartDatabase.java -------------------------------------------------------------------------------- /examples/java/cart/src/main/java/io/pillopl/seconddesign/CartId.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mariuszgil/aggregates-by-example/HEAD/examples/java/cart/src/main/java/io/pillopl/seconddesign/CartId.java -------------------------------------------------------------------------------- /examples/java/cart/src/main/java/io/pillopl/seconddesign/ExtraItemsPolicy.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mariuszgil/aggregates-by-example/HEAD/examples/java/cart/src/main/java/io/pillopl/seconddesign/ExtraItemsPolicy.java -------------------------------------------------------------------------------- /examples/java/cart/src/test/java/io.pillopl/firstdesign/CartTest.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mariuszgil/aggregates-by-example/HEAD/examples/java/cart/src/test/java/io.pillopl/firstdesign/CartTest.java -------------------------------------------------------------------------------- /examples/java/cart/src/test/java/io.pillopl/seconddesign/CartTest.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mariuszgil/aggregates-by-example/HEAD/examples/java/cart/src/test/java/io.pillopl/seconddesign/CartTest.java -------------------------------------------------------------------------------- /examples/php/composer.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mariuszgil/aggregates-by-example/HEAD/examples/php/composer.json -------------------------------------------------------------------------------- /examples/php/composer.lock: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mariuszgil/aggregates-by-example/HEAD/examples/php/composer.lock -------------------------------------------------------------------------------- /examples/php/phpunit.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mariuszgil/aggregates-by-example/HEAD/examples/php/phpunit.xml -------------------------------------------------------------------------------- /examples/php/src/Availability/Policy.php: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mariuszgil/aggregates-by-example/HEAD/examples/php/src/Availability/Policy.php -------------------------------------------------------------------------------- /examples/php/src/Availability/Policy/Allowance.php: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mariuszgil/aggregates-by-example/HEAD/examples/php/src/Availability/Policy/Allowance.php -------------------------------------------------------------------------------- /examples/php/src/Availability/Policy/LimitedDuration.php: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mariuszgil/aggregates-by-example/HEAD/examples/php/src/Availability/Policy/LimitedDuration.php -------------------------------------------------------------------------------- /examples/php/src/Availability/Policy/NoGapsBetween.php: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mariuszgil/aggregates-by-example/HEAD/examples/php/src/Availability/Policy/NoGapsBetween.php -------------------------------------------------------------------------------- /examples/php/src/Availability/Policy/NoOverlapping.php: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mariuszgil/aggregates-by-example/HEAD/examples/php/src/Availability/Policy/NoOverlapping.php -------------------------------------------------------------------------------- /examples/php/src/Availability/Policy/Rejection.php: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mariuszgil/aggregates-by-example/HEAD/examples/php/src/Availability/Policy/Rejection.php -------------------------------------------------------------------------------- /examples/php/src/Availability/Reservation.php: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mariuszgil/aggregates-by-example/HEAD/examples/php/src/Availability/Reservation.php -------------------------------------------------------------------------------- /examples/php/src/Availability/Resource.php: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mariuszgil/aggregates-by-example/HEAD/examples/php/src/Availability/Resource.php -------------------------------------------------------------------------------- /examples/php/src/Availability/ResourceId.php: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mariuszgil/aggregates-by-example/HEAD/examples/php/src/Availability/ResourceId.php -------------------------------------------------------------------------------- /examples/php/src/Loan/AttachmentContent.php: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mariuszgil/aggregates-by-example/HEAD/examples/php/src/Loan/AttachmentContent.php -------------------------------------------------------------------------------- /examples/php/src/Loan/AttachmentDecision.php: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mariuszgil/aggregates-by-example/HEAD/examples/php/src/Loan/AttachmentDecision.php -------------------------------------------------------------------------------- /examples/php/src/Loan/AttachmentDecisions.php: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mariuszgil/aggregates-by-example/HEAD/examples/php/src/Loan/AttachmentDecisions.php -------------------------------------------------------------------------------- /examples/php/src/Loan/AttachmentId.php: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mariuszgil/aggregates-by-example/HEAD/examples/php/src/Loan/AttachmentId.php -------------------------------------------------------------------------------- /examples/php/src/Loan/Decision.php: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mariuszgil/aggregates-by-example/HEAD/examples/php/src/Loan/Decision.php -------------------------------------------------------------------------------- /examples/php/src/Loan/DecisionProcessingPolicy.php: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mariuszgil/aggregates-by-example/HEAD/examples/php/src/Loan/DecisionProcessingPolicy.php -------------------------------------------------------------------------------- /examples/php/src/Loan/DecisionRegistrationPolicy.php: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mariuszgil/aggregates-by-example/HEAD/examples/php/src/Loan/DecisionRegistrationPolicy.php -------------------------------------------------------------------------------- /examples/php/src/Loan/LoanApplication.php: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mariuszgil/aggregates-by-example/HEAD/examples/php/src/Loan/LoanApplication.php -------------------------------------------------------------------------------- /examples/php/src/Loan/LoanApplicationId.php: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mariuszgil/aggregates-by-example/HEAD/examples/php/src/Loan/LoanApplicationId.php -------------------------------------------------------------------------------- /examples/php/src/Loan/Policy/DecisionProcessing/AllDecidedTo.php: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mariuszgil/aggregates-by-example/HEAD/examples/php/src/Loan/Policy/DecisionProcessing/AllDecidedTo.php -------------------------------------------------------------------------------- /examples/php/src/Loan/Policy/DecisionRegistration/Deadline.php: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mariuszgil/aggregates-by-example/HEAD/examples/php/src/Loan/Policy/DecisionRegistration/Deadline.php -------------------------------------------------------------------------------- /examples/php/src/Loan/Policy/DecisionRegistration/OverwritingDecisions.php: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mariuszgil/aggregates-by-example/HEAD/examples/php/src/Loan/Policy/DecisionRegistration/OverwritingDecisions.php -------------------------------------------------------------------------------- /examples/php/src/Loan/Policy/DecisionRegistration/SingleDecisions.php: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mariuszgil/aggregates-by-example/HEAD/examples/php/src/Loan/Policy/DecisionRegistration/SingleDecisions.php -------------------------------------------------------------------------------- /examples/php/tests/Availability/ReservationTest.php: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mariuszgil/aggregates-by-example/HEAD/examples/php/tests/Availability/ReservationTest.php -------------------------------------------------------------------------------- /examples/php/tests/Loan/LoanApplicationTest.php: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mariuszgil/aggregates-by-example/HEAD/examples/php/tests/Loan/LoanApplicationTest.php --------------------------------------------------------------------------------