Flow description
- JobDefinition (uuid, profile - defines job type: insert/update) for import created in mod-srm
- MARC file + JobDefinition ID are uploaded from WEB client to mod-data-import (stored in memory, can be persisted. possible oom)
- MARC records are packed into batches and put to Kafka queue
- mod-srm reads batches from the queue, validates and passes to mod-srs via Kafka queue. JobStarts on first chunk received
- mod-srs stores records (creates new generation for updates, has exclusion! Kateryna Senchenko ) into PostgreSQL database and returns the result back via Kafka queue (broken records are also stored as 'error record') -
- mod-srm reads the profile and creates JSON payload (containing parsed MARC, profile, mapping parameters) for processing. exports it to Kafka queue (one message per MARC entry), (topic-1 Kateryna Senchenko)
FOR CREATE
- mod-inventory reads the message, creates Instance. Stores (via OKAPI HTTP) in mod-inventory-storage. Exports message ('INVENTORY_INSTANCE_CREATED')
- mod-srs reads message and updates according entry with instance id. Creates new message with updated payload ('DI_SRS_MARC_BIB_INSTANCE_HRID_SET')
- mod-inventory updates Instance with updated fields (Kateryna Senchenko export or same thread?)
- mod-inventory reads the message, creates Holdings. Stores (via OKAPI HTTP) in mod-inventory-storage. Exports message (Kateryna Senchenko)
- mod-inventory reads the message, creates Items. Stores (via OKAPI HTTP) in mod-inventory-storage. Exports message (Kateryna Senchenko)
- mod-inventory reads message and exports to 'DI_COMPLETED' (Kateryna Senchenko)
FOR UPDATE
- mod-inventory / mod-srs reads the message from (topic: Kateryna Senchenko)
UPDATE:
- mod-inventory reads message from 'topic-1'. Tries to find entity according to match criteria (in mod-inventory-storage via OKAPI HTTP)
- If found: exports result to ('inventory instance matched': Kateryna Senchenko )
- mod-inventory receives match result and updates Instance/Holding/Item (according to action in profile) in mod-inventory-storage according to profile. And publishes result to applied topic (one per entity type) Kateryna Senchenko)
- mod-inventory reads message from prev. step (1 of 3 topics) and seeks for more actions (return to a.) If no more actions in profile: export to 'DI_COMPLETED'
- mod-inventory receives match result and updates Instance/Holding/Item (according to action in profile) in mod-inventory-storage according to profile. And publishes result to applied topic (one per entity type) Kateryna Senchenko)
- If not found: follow 'NON-MATCHED' branch in profile (go to 'CREATE' or 'UPDATE' or export to 'DI_COMPLETED' for empty actions)
AFTER PROCESSING
- mod-srm reads 'DI_COMPLETED'/'DI_ERROR' updates job progress