2017-12-15 December learning session

Date

Attendees

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 Context
  • Discuss 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