/
2017-11-24 November learning session

2017-11-24 November learning session

Date

Attendees

Goals

Discussion

  • Ubiquitous language – same language for developers and domain experts. We have different meanings for technical words (e.g. order line item) than client can have.
  • Bounded Context – boundaries.
    • Orderable
      • Do we need whole object or just code in different services?
      • Orderable can change and we need/use its properties in requisition.
      • If all orderable information need to be in snapshot? Other approach is versioning of orderables.
    • Requisition
      • During approve we need only two fields from line items. We validate every field even we don't use it.
      • Separate resource for requisition for approval?
      • Immutable orderables as a way to make requisition proper Aggregate.
    • Do we have bounded contexts in OpenLMIS?
      • Are microservices give us proper bounded context? We believe they will after few adjustments.
      • Orderable is everywhere.
      • Is Referencedata shared kernel? We can say so.
      • Can we extract bounded context somewhere?
        • Divide Requisition.
    • Report, Management, Auth contexts.
    • User is used everywhere. Only display name should be shared between services.
    • Every service should have own abstraction e.g. CCE should not be impacted if Referencedata user is changed.
    • Importer/Exporter pattern can be helpful with abstraction.
    • Dtos are abstraction itself. Should be in shared library so every dependent service doesn't have to be updated after dto will change.
  • Problem domain in OpenLMIS – medical products management.
  • Core domain in OpenLMIS
    • Who is customer? Ministry of Health or any Organization that want to implement OpenLMIS.
    • Requisition is core domain.
  • Sub-domains
    • Stock management
    • CCE

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:  7.25/10
How useful was this specific material? (DDD - Fundamentals):  5.62/10


Final thoughts

  • Requisition as an aggregate, to manage line items we should use only requisition class and snapshot orderables.
  • "Talking" with client on material was not necessary.
  • We should follow up with DDD in more practical way.

Action items

Related content

2017-12-15 December learning session
2017-12-15 December learning session
More like this
DDD and package name improvements
DDD and package name improvements
More like this
OpenLMIS v3 OOAD Requisition Redesign
OpenLMIS v3 OOAD Requisition Redesign
More like this
OpenLMIS Re-Architecture Design Week
OpenLMIS Re-Architecture Design Week
More like this
Domain Modeling Technical Deep Dive
Domain Modeling Technical Deep Dive
More like this
2018-01-12 January learning session
2018-01-12 January learning session
More like this

OpenLMIS: the global initiative for powerful LMIS software