Skip to content

Conversation

@maximiliani
Copy link
Member

@maximiliani maximiliani commented Jul 25, 2025

Problem

Formerly, IDORIS used Spring Data Rest for its APIs because it provided an easy way to a fully HATEOAS compliant CRUD API without writing a single Controller. This was fine at first to explore the IDORIS data model with little cost. More advanced features such as the assignment of PIDs and the rule-based validation were integrable with some config (called controller advice). This didn't allow for fine grained behavioral control, e.g., the validation had to be executed with every request, not just upon creation, this is inefficient.

Reason for this PR

Therefore, to gain more flexibility IDORIS needs a traditional Spring MVC REST API. This means, we need controllers, services, DAOs, DTOs, and entity models (for HATEOAS). A lot of components that are highly specialized to single entities. In the spirit of domain-driven design and clean architecture, this needs to be decoupled as much as possible, although the data model in the graph database is highly coupled. IDORIS needs to be modularized...

Content of this PR

  • Transform IDORIS into a Spring Modulith project
  • Introduce DAOs, DTOs, services, controllers and entity models for each domain aggregate
  • Reduce internal dependencies through internal APIs for each module and event-driven design
  • Add observability features (metrics, logs, traces)
  • Demonstrate the new capabilities with the creation of PID records upon creation

Reading materials

Signed-off-by: Maximilian Inckmann <[email protected]>
Signed-off-by: Maximilian Inckmann <[email protected]>
Signed-off-by: Maximilian Inckmann <[email protected]>
Signed-off-by: Maximilian Inckmann <[email protected]>
Signed-off-by: Maximilian Inckmann <[email protected]>
Signed-off-by: Maximilian Inckmann <[email protected]>
@maximiliani maximiliani added this to the v1 milestone Jul 25, 2025
@maximiliani maximiliani self-assigned this Jul 25, 2025
This was linked to issues Jul 25, 2025
Signed-off-by: Maximilian Inckmann <[email protected]>
Signed-off-by: Maximilian Inckmann <[email protected]>
Signed-off-by: Maximilian Inckmann <[email protected]>
Signed-off-by: Maximilian Inckmann <[email protected]>
Signed-off-by: Maximilian Inckmann <[email protected]>
Signed-off-by: Maximilian Inckmann <[email protected]>
Signed-off-by: Maximilian Inckmann <[email protected]>
Signed-off-by: Maximilian Inckmann <[email protected]>
other bugfixes

Signed-off-by: Maximilian Inckmann <[email protected]>
Signed-off-by: Maximilian Inckmann <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Integrate Typed PID Maker Add resolver logic

2 participants