mirror of
https://gitlab.com/Chill-Projet/chill-bundles.git
synced 2025-06-07 18:44:08 +00:00
85 lines
2.7 KiB
Plaintext
85 lines
2.7 KiB
Plaintext
@startuml
|
|
'https://plantuml.com/sequence-diagram
|
|
|
|
autonumber
|
|
|
|
User -> ExportController: configure export using form
|
|
activate ExportController
|
|
ExportController -> ExportForm: build form
|
|
activate ExportForm
|
|
|
|
loop for every ExportElement (Filter, Aggregator)
|
|
ExportForm -> ExportElement: `buildForm`
|
|
activate ExportElement
|
|
ExportElement -> ExportForm: add form to builders
|
|
deactivate ExportElement
|
|
end
|
|
|
|
ExportForm -> ExportController
|
|
deactivate ExportForm
|
|
|
|
ExportController -> User: show form
|
|
deactivate ExportController
|
|
|
|
note left of User: Configure the export:\ncheck filters, aggregators, …
|
|
|
|
User -> ExportController: post configuration of the export
|
|
activate ExportController
|
|
|
|
ExportController -> ExportForm: `getData`
|
|
activate ExportForm
|
|
ExportForm -> ExportController: return data: list of entities, etc.
|
|
deactivate ExportForm
|
|
|
|
loop for every ExportElement (Filter, Aggregator)
|
|
ExportController -> ExportElement: serializeData (data)
|
|
activate ExportElement
|
|
ExportElement -> ExportController: return serializedData (simple array with string, int, …)
|
|
deactivate ExportElement
|
|
end
|
|
|
|
ExportController -> Database: `INSERT INTO RequestGeneration_table` (insert new entity)
|
|
ExportController -> MessageQueue: warn about a new request
|
|
activate MessageQueue
|
|
ExportController -> User: "ok, generation is in process"
|
|
deactivate ExportController
|
|
|
|
note left of User: The user see a waiting screen
|
|
|
|
MessageQueue -> MessengerConsumer: forward the message to the MessengerConsumer
|
|
deactivate MessageQueue
|
|
activate MessengerConsumer
|
|
MessengerConsumer -> Database: `SELECT * FROM RequestGeneration_table WHERE id = %s`
|
|
activate Database
|
|
Database -> MessengerConsumer: return RequestGeneration with serializedData
|
|
deactivate Database
|
|
|
|
loop for every ExportElement (Filter, Aggregator)
|
|
MessengerConsumer -> ExportElement: deserializeData
|
|
activate ExportElement
|
|
ExportElement -> MessengerConsumer: return data (list of entities, etc.) from the serialized array
|
|
deactivate ExportElement
|
|
MessengerConsumer -> ExportElement: alter the sql query (`ExportElement::alterQuery`)
|
|
activate ExportElement
|
|
ExportElement -> MessengerConsumer: return the query with WHERE and GROUP BY clauses
|
|
deactivate ExportElement
|
|
end
|
|
|
|
MessengerConsumer -> MessengerConsumer: prepare the export
|
|
MessengerConsumer -> MessengerConsumer: save the export as a stored object
|
|
MessengerConsumer -> Database: `UPDATE RequestGeneration_table SET ready = true`
|
|
deactivate MessengerConsumer
|
|
|
|
User -> ExportController: pull every 5s to know if the export is generated
|
|
activate ExportController
|
|
ExportController -> User: warn the export is generated
|
|
deactivate ExportController
|
|
|
|
User -> ExportController: download the export from object storage
|
|
|
|
|
|
|
|
|
|
|
|
@enduml
|