Sfondo: sto sviluppando un modulo web basato su procedura guidata in cui gli utenti possono accedere a un riempimento in alcuni dettagli e premere avanti e indietro per andare avanti e indietro nella procedura guidata prima che vengano effettivamente inviati. Quando l'utente inoltra, effettuo una chiamata di servizio che esegue alcuni processi sui dati.
Problema: Non tutti i dati sono disponibili prontamente all'utente, e l'utente può scegliere di "salvare" i dati invece di "inviarli" e poi tornare (se sceglie a) e finirlo più tardi. Questi dati intermedi sarebbero incompleti (e in alcuni casi non validi), ma per praticità lasceremo che l'utente li salvi.
Soluzioni che ho visto in passato: In passato mi sono occupato di questo con 2 soluzioni distinte -
- Salva i dati intermedi nelle tabelle normali (dove i dati inviati vengono salvati) e contrassegna tali dati come "inattivi". I dati verrebbero "attivati" d solo quando l'utente fa clic su invia e tutti i dati sono validi. Ciò comporta la modifica del servizio che viene richiamato per accettare i dati sul salvataggio dei dati intermedi e non validi. Inoltre questo pone l'onere sul team di ricordare di controllare il flag "attivo" in ogni query.
- L'altra opzione è quella di memorizzare i dati salvati intermedi in enormi CLOB denormalizzati. I dati potrebbero essere strutturati all'interno dei CLOB come XML o JSON. I dati intermedi (salvati) sono completamente disgiunti dal completamento (inviato). Il lato negativo è che ora il modulo deve essere in grado di lavorare con 2 diversi set di servizi in base allo stato del ciclo del flusso di lavoro (se in corso leggere l'XML dal CLOB - se completato leggere dal servizio che ha dati validi !)
Domanda: Esiste un modo migliore per risolvere questo problema poiché sembra un problema universale nel mondo aziendale, almeno? Qualcuno potrebbe indicarmi qualsiasi "schema" di archiviazione o di dati che la comunità ha seguito per risolvere questo problema di archiviazione nei flussi di lavoro Web?
Nota: La tecnologia di database sottostante può essere pensata per un sistema che supporta le tabelle e i singoli campi possono contenere stringhe molto grandi come i CLOB.