SPIKE: Store pop-up notes values

SPIKE: Store pop-up notes values

In Progress

Participants:

Role

Name

Approval

Role

Name

Approval

Solution Architect

@Taras Spashchenko



Java Lead

@Dima Tkachenko



Product Owner

@Khalilah Gambrell



Spike objective: show note pop-up on the Users/Check out app based on the flags 

Spike goal: define a way to inform applications about showing a note pop-up

Proposed solution:

Extend an existing note schema by allowing users to set up an additional properties. As a result we will have a note with properties for applications. Once Users/Check out application gets note with specific property, it decides to show a note to user.

{ "$schema":"http://json-schema.org/draft-04/schema#", "type":"object", "description":"Notes about all kind of objects", "additionalProperties":true, "properties":{ "id":{ "type":"string", "description":"Unique generated identifier for the note", "$ref":"../../raml-util/schemas/uuid.schema", "example":"62d00c36-a94f-434d-9cd2-c7ea159303da" }, "typeId":{ "type":"string", "description":"Type id of note", "$ref":"../../raml-util/schemas/uuid.schema", "example":"13d00c36-a94f-434d-9cd2-c7ea159303da" }, "type":{ "type":"string", "description":"Type of note (configured in settings)", "example":"Access issues", "readonly":true }, "domain":{ "type":"string", "description":"Domain associated with this note", "example":"eholdings" }, "title":{ "type":"string", "maxLength":255, "description":"Note title", "example":"BU Campus only issues" }, "content":{ "type":"string", "description":"Content of the note", "example":"There are access issues at BU campus" }, "status":{ "type":"string", "description":"Status of note - applies when searching by link.id and status", "enum":["ASSIGNED","UNASSIGNED"], "example":"ASSIGNED", "readonly":true }, "creator":{ "type":"object", "description":"User display info for creator of the note", "$ref":"userDisplayInfo.json", "readonly":true }, "updater":{ "type":"object", "description":"User display info for updater of the note", "$ref":"userDisplayInfo.json", "readonly":true }, "metadata":{ "type":"object", "$ref":"../../raml-util/schemas/metadata.schema", "readonly":true }, "links":{ "description":"Collection of links to associated objects", "type":"array", "items":{ "type":"object", "$ref":"link.json" } } }, "required":[ "typeId", "title", "domain", "links" ] }

Proposed property values by app:

  • Users app - popUpOnUser

  • Check out app - popUpOnCheckOut



Example for note in mod-notes
{ "id" : "11111111-1111-1111-1111-111111111111", "typeId" : "22222222-2222-2222-2222-222222222222", "domain" : "users", "title" : "test_title ", "content" : "test_content", "creator" : { "lastName" : "TEST_LAST_NAME", "firstName" : "TEST_FIRST_NAME" }, "metadata" : { "createdDate" : "2019-12-03T09:21:57.793+00:00", "createdByUserId" : "00000000-0000-0000-0000-000000000000", "createdByUsername" : "test_user", "updatedDate" : "2019-12-03T09:21:57.793+00:00", "updatedByUserId" : "00000000-0000-0000-0000-000000000000" }, "links" : [ { "id" : "55555555-5555-5555-5555-555555555555", "type" : "user" } ], "popUpOnUser": true, "popUpOnCheckOut": true }

Pros:

  • Simple solution with not much changes needed.

  • Filtering: should be investigated

Cons:

  • "popUpOnUser", "popUpOnCheckOut" tags considered as a specific case for marking notes and will not be stored to the "tags" table from the mod-tags. It means that on

    GET .../tags 

    request, user will receive set of tags shared across FOLIO and they will not include pop-up tags for Users/Check out app.

  • Tags proposed for this solution will be known only for UI.


Questions & Answers:

1

Will it be needed to search on those apps to find pop-up notes ? 




Implementation Stories: