2017-12-15 December learning session
Date
Dec 15, 2017
Attendees
@Sebastian Brudziński
@Nikodem Graczewski (Unlicensed)
@Mateusz Kwiatkowski
@Łukasz Lewczyński (Deactivated)
@Paweł Albecki (Deactivated)
Goals
Watch learning material Domain-Driven Design in Practice
(https://www.pluralsight.com/courses/domain-driven-design-in-practice) - Extending the Bounded Context with Aggregates, Introducing the Second Bounded ContextDiscuss watched materials and compare to how things are handled in OpenLMIS - are there any ideas/approaches/workflows we can adopt in OpenLMIS?
Discussion
Aggregates:
Requisition - root entity
line item - entity
Line items should not be available outside of Aggregate.
Getter should return immutable list of immutable objects or no getter, line items should be updatable through Requisition Aggregate.
Setter should be removed.
Line item should not have id in DTO.
Value Objects - worth having (discussion already on Dev Group)
Order
POD has Order, Order has line item, POD line item has order line item.
Order line item should not be referenced from outer context.
Proof of Delivery
for every line item values of quantity shipped, quantity received, quantity returned, replaced product code.
How to get order line item details on ui? e.g. by orderable code.
Bounded Context - follow up from previous learning meeting discussion, solution space
Sub-domains - problem space
Wrap up
We have asked every participant to give a score on how useful this meeting was and how helpful this specific material was. The voting was anonymous and each participant could give a score from 1 (useless) to 10 (very useful).
The averages were:
How useful are those meetings: 8/10
How useful was this specific material?
Extending the Bounded Context with Aggregates: 8.2/10
Introducing the Second Bounded Context: 6.8/10
Final thoughts
It's worth to consider using AggregateRoot, ValueObject superclass/interface.
Getters should return immutable list of immutable objects or should be not implemented.
Action items
OpenLMIS: the global initiative for powerful LMIS software