Versions Compared

Key

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

...

RolePersonComments
Solution ArchitectConfirmed
Java Lead
UI Lead
Product OwnerStephanie Buck


Jira Legacy
serverSystem JiraJIRA
columnskey,summary,type,created,updated,due,assignee,reporter,priority,status,resolution
serverId01505d01-b853-3c2e-90f1-ee9b165564fc
keyUXPROD-2272
 - Connect SRS and SMRE for MARC Bibs (SMRE work)

...

  • The edits are saved to the SRS MARC Bib (including updates to the size of the MARC record in MARC Leader bytes 00-04): (a) the corresponding updates are made to the MARCcat MARC bib automatically (once MARCcat and SRS are integrated); (b) the corresponding updates are made to the Inventory Instance automatically.
  • Current scope for SMRE would be editing existing SRS Bib records only. Not creating new MARC records from Instances or creating new MARC records from scratch.
  • SMRE will use a simple UI, rather than a text editor.
  • The only expected validation is the general structural validation that SRS currently does. Any more rigorous MARC validation would happen in MARCcat or external to FOLIO.
  • If displayed in the SMRE, data in MARC 001 and 999 ff fields would be visible, but not editable
  • Once SRS is expanded to include MARC holdings records, the SMRE may be expanded to allow for editing of MARC holdings also.
  • Since record update is performed asynchronously, SMRE must provide information about current updating status and last successful update.


Approach & Design

quickMARC application should be implemented as separate micro service in its own module mod-quick-marc. It allows to extend number of use cases in future, for example, for Data Import could involve editing MARC as part of those workflows. Two endpoints must be implemented to meet the requirements for the MARC editor:

MethodPathProvided permissionsRequestResponseDescriptionNotes
GET

records-editor/records?instanceId={instanceId}

records-editor.records.item.getNA200 OK (QuickMarcJson)Get MARC record in quickMARC-compatible representation

{instanceId} - corresponding instance id

PUTrecords-editor/records/{parsedRecordId}records-editor.records.item.putQuickMarcJson204 UPDATED202 ACCEPTEDUpdate an existed MARC record{parsedRecordId} - UUID of a parsed MARC record

...

Drawio
bordertrue
viewerToolbartrue
fitWindowfalse
diagramNameSMRE Algorithm
simpleViewerfalse
diagramWidth8721079
revision2122

(A) Get MARC record

  1. Client makes request to quickMARC GET /records-editor/records/instanceId={instanceId}
  2. quickMARC proxies request to source-record-storage: GET /source-storage/records?query=externalIdsHolder.instanceId==={instanceId} / CM: GET change-manager/parsedRecords?instanceId={instanceId}
  3. quickMARC transforms request to appropriate format (accepted by UI)
  4. quickMARC returns response 200 OK

...

  1. Client makes request to inventory PUT /records-editor/records/{id}
  2. quickMARC transform record from UI-compatible format to marc-json and updates to the size of the MARC record in MARC Leader bytes 00-04
  3. quickMARC updates corresponding instance in CM
  4. quickMARC returns response 204 UPDATED202 ACCEPTED

Drawio
bordertrue
viewerToolbartrue
fitWindowfalse
diagramNameSMRE UML
simpleViewerfalse
diagramWidth501
revision21

...

Full QM-CM/SRS diagram is presented below. More details about SRM/SRS can be found on SRM/SRS Design Document.

Drawio
bordertrue
diagramNameQM-CM_Integration
simpleViewerfalse
linksauto
tbstyletop
lboxtrue
diagramWidth1181
revision3

...

externalDtoId
PropertyTypeDefaultRequiredNotes
parsedRecordIdUUIDNYMARC record Id
parsedRecordDtoIdUUIDNId of parsedRecordYParsedRecordDto identifier
supressDiscoverybooleanfalseYFlag indicates if the record is displayed during a search
instanceIdUUIDNYId Identifier of external DTOinstance
leaderstringNYLeader field value
fieldscollection<object>NYAt least 3 items: 001, 008, 999f are required
updateInfo

...

updateInfoNYUpdate information sub-object - holds data about record update


updateInfo

PropertyTypeDefaultRequiredNotes
recordStatestringACTUALYState of source record in QM workflow
updatedDatedate-timeNN

Date and time of last successful record update

Converter QuickMarcJson ↔ ParsedRecordDto

Converters should be implemented as separate components implementing Converter<ParsedRecordConverter<ParsedRecordDto, QuickMarcJson> and Converter<QuickMarcJson, ParsedRecord>ParsedRecordDto>. Since it is necessary to be able to integrate with SRS and CM, both of services should be implemented. Each of these services uses its own object types for MARC records representation: record.json (SRS) and parsedRecordDto.json (SRM). The quickMARC editor uses its own type quick_marc_json.json to represent the corresponding MARC record. The connection between the required IDs of is shown in the following diagram:

...

DateReportNotes

 

GET - direct integration with SRS;

PUT - simple stub.


Jmeter report generation: jmeter -n -t <TestPlan.jmx> -l <report.jtl> -e -o dashboard



https://github.com/marc4j/marc4j

*integration with SRS is planned by source-record-manager; API isn't ready yet 

Jira Legacy
serverSystem JiraJIRA
columnskey,summary,type,created,updated,due,assignee,reporter,priority,status,resolution
serverId01505d01-b853-3c2e-90f1-ee9b165564fc
keyUXPROD-2273