...
Role | Person | Comments |
---|---|---|
Solution Architect | Confirmed | |
Java Lead | ||
UI Lead | ||
Product Owner | Stephanie Buck |
- Connect SRS and SMRE for MARC Bibs (SMRE work) Jira Legacy server System JiraJIRA columns key,summary,type,created,updated,due,assignee,reporter,priority,status,resolution serverId 01505d01-b853-3c2e-90f1-ee9b165564fc key UXPROD-2272
...
- 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:
Method | Path | Provided permissions | Request | Response | Description | Notes |
---|---|---|---|---|---|---|
GET | records-editor/records?instanceId={instanceId} | records-editor.records.item.get | NA | 200 OK (QuickMarcJson) | Get MARC record in quickMARC-compatible representation | {instanceId} - corresponding instance id |
PUT | records-editor/records/{parsedRecordId} | records-editor.records.item.put | QuickMarcJson204 | UPDATED202 ACCEPTED | Update an existed MARC record | {parsedRecordId} - UUID of a parsed MARC record |
...
Drawio border true viewerToolbar true fitWindow false diagramName SMRE Algorithm simpleViewer false diagramWidth 8721079 revision 2122
(A) Get MARC record
- Client makes request to quickMARC GET /records-editor/records/instanceId={instanceId}
- quickMARC proxies request to source-record-storage: GET /source-storage/records?query=externalIdsHolder.instanceId==={instanceId} / CM: GET change-manager/parsedRecords?instanceId={instanceId}
- quickMARC transforms request to appropriate format (accepted by UI)
- quickMARC returns response 200 OK
...
- Client makes request to inventory PUT /records-editor/records/{id}
- 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
- quickMARC updates corresponding instance in CM
- quickMARC returns response 204 UPDATED202 ACCEPTED
Drawio border true viewerToolbar true fitWindow false diagramName SMRE UML simpleViewer false diagramWidth 501 revision 21
...
Full QM-CM/SRS diagram is presented below. More details about SRM/SRS can be found on SRM/SRS Design Document. Drawio border true diagramName QM-CM_Integration simpleViewer false links auto tbstyle top lbox true diagramWidth 1181 revision 3
...
Property | Type | Default | Required | Notes | ||
---|---|---|---|---|---|---|
parsedRecordId | UUID | N | Y | MARC record Id | ||
parsedRecordDtoId | UUID | N | Id of parsedRecord | externalDtoIdY | ParsedRecordDto identifier | |
supressDiscovery | boolean | false | Y | Flag indicates if the record is displayed during a search | ||
instanceId | UUID | N | Y | Id Identifier of external DTOinstance | ||
leader | string | N | Y | Leader field value | ||
fields | collection<object> | N | Y | At least 3 items: 001, 008, 999f are required | ||
updateInfo |
...
updateInfo | N | Y | Update information sub-object - holds data about record update |
updateInfo
Property | Type | Default | Required | Notes |
---|---|---|---|---|
recordState | string | ACTUAL | Y | State of source record in QM workflow |
updatedDate | date-time | N | N | 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:
...
Date | Report | Notes |
---|---|---|
| GET - direct integration with SRS; PUT - simple stub. |
Jmeter report generation: jmeter -n -t <TestPlan.jmx> -l <report.jtl> -e -o dashboard
Links
https://github.com/marc4j/marc4j
*integration with SRS is planned by source-record-manager; API isn't ready yet Jira Legacy server System JiraJIRA columns key,summary,type,created,updated,due,assignee,reporter,priority,status,resolution serverId 01505d01-b853-3c2e-90f1-ee9b165564fc key UXPROD-2273