workspace "Name" "Description" { // TODO: When do we assign identifier? !identifiers hierarchical model { rob = person "Rob mcjinty" { } chris = person "Chris sooty" { } scrcMetadata = softwareSystem "SCRC Metadata" "Holds metadata for Special Collections" "Google Sheet" { } dor = softwareSystem "Digital Object Repository" { api = container "Inspection API" "Provides digital object and workflow information; i.e., status and history" "Python, FastAPI" { tags "Web API" } ipq = container "Incoming Package Queue" "Package import requests; generated after submission package is fully transferred" "Message Topic, RabbitMQ" { tags "Message Topic" } incomingDrop = container "Incoming Package Storage" "Storage area for packages to be imported; packages contain metadata and/or assets for one or more digital objects" "Filesystem" { tags "Filesystem" } packageImport = container "Package Importer" "On-demand package import job; one per package, recording status " "Python, Dramatiq" { tags "Background Job" } preservationStorage = container "Preservation Storage" "Holds digital objects in full preservation form" "MiStorage, NFS, OCFL" { tags "Filesystem" } accessStorage = container "Access Storage" "Holds access copies; e.g., JP2 version of TIFF or EPUB of TEI document" "MiStorage, NFS" { tags "Filesystem" } registry = container "Preservation Registry" "Holds preservation and administrative properties of digital objects" "PostgreSQL" { tags "Database" } packageImport -> ipq "reads from" "AMQP" packageImport -> incomingDrop "reads from" "NFS" packageImport -> registry "reads from and writes to" packageImport -> preservationStorage "reads from and writes to" packageImport -> accessStorage "reads from and writes to" api -> registry "reads from" api -> preservationStorage "reads from" api -> accessStorage "reads from" } lsa = softwareSystem "LS&A metadata automation" { tags "External System" } scrc = person "Special Collections Staff" { } clements = person "Clements Library Staff" { } // AS DLXS STANDS: // assets are "on" shandy (mounted? copied?)... // metadata is on tang -- some in files (TEI docs), some in database (e.g., filemaker export, script enters stuff into mysql)... // LSA-XML: // - custom export format from LS&A // Feeds from Filemaker databases: // - AAEL // Spreadsheets from // - Special // Contacts at each museum... Natural History Museums, History of Art //lsa -> dor.metadataDrop "sends metadata" //scrc -> dor.metadataDrop " metadata files" //clements -> dor.metadataDrop "drop metadata files" //scrc -> scrcMetadata "updates" //scrc -> rob "notifies about metadata updates" //rob -> scrcMetadata "exports" //rob -> dor.metadataDrop //scrc -> dor.metadataDrop "updates" } views { systemContext dor "Diagram1" { include dor autolayout } container dor "Digital_Object_Repository_Containers" { include * } styles { element "Person" { shape Person } element "Web Application" { background #89ACFF } element "Web API" { background #89ACFF } element "Filesystem" { shape folder background #91F0AE } element "Database" { shape cylinder background #8CD0F0 } element "Message Topic" { shape cylinder background #FFAC33 } element "Background Job" { background #EDF08C shape hexagon } } } configuration { scope softwaresystem } }