Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Jira Legacy
serverSystem Jira
columnIdsissuekey,summary,issuetype,created,updated,duedate,assignee,reporter,priority,status,resolution
columnskey,summary,type,created,updated,due,assignee,reporter,priority,status,resolution
serverId4733707d-2057-3a0f-ae5e-4fd8aff50176
keyCPS-791
Overview

In a spring application, we usually have three layers and each layer have a different responsibility.

  1. Web Layer (Controller, Exception handler, Mappers) - receive the request and send the response to the client. 
  2. Service Layer - Business logic 
  3. Repository Layer (Repository Interfaces & custom Repositories) - DB interaction at the lowest level

CPS have four layers of architecture and the 'Persistence Layer' was introduced to have loose coupling with DB. It gives an ability to move to another type of DB with little change.

...

The current implementation of the Persistence Service SPI is provided in 'cps-ri' which is specific to relational DB. If we want to use another type of DB later, the Persistence and Repository layer needs to be re-written. Therefore, to achieve the original intent (use a different DB type later), it is important to keep the business logic in the 'Service' layer and have only database-specific logic in the 'Persistence' layer. 

...

In this proposal,  the business logic of the 'Delete SchemaSet' and 'Delete Anchor' functionality will be moved to Service Layer and domain-specific services will be used to do any operation of those the domain objects. 

Delete Anchor

When an anchor gets deleted, all the associated data nodes should get deleted too. The suggestion is to use DataService to delete the data nodes instead of using Fragment Repository directly.

Drawio
bordertrue
diagramNameExisting Delete Anchor Sequence Diagram
simpleViewerfalse
width400600
linksauto
tbstyletop
lboxtrue
diagramWidth629
revision2

Drawio
bordertrue
diagramNameProposed Delete Anchor Sequence Diagram
simpleViewerfalse
width400600
linksauto
tbstyletop
lboxtrue
diagramWidth629
revision2

Delete Schema Set

Schemaset contains the model against which the anchor data nodes are validated. So, when a schema set is deleted, the logic to validate if associated anchors exist and whether it can be deleted is business logic and should be in the Service layer.

Code Block
titleDelete SchemaSet Business Logic
linenumberstrue
DELETE SCHEMASET( dataspaceName, schemaSetName, cascadedAllowed)
      anchors = CALL Get Anchors associated with Schema Set ( dataspaceName, SchemaSetName )
	  IF Cascade is Prohibited & anchors exists
 			throw exception
      END IF
	  Delete associated anchors if casacade allowed
	  Delete SchemaSet
END


Drawio
bordertrue
diagramNameExisting Delete Schema Set
simpleViewerfalse
width
linksauto
tbstyletop
lboxtrue
diagramWidth688
revision2

...