Un oggetto può assumere uno dei seguenti stati:
Solo gli oggetti in stato “ATTIVO” sono ricercabili da api
Gli oggetti in stato “ATTIVO” o “GENERATO” sono caricabili e salvabili da API
Il comportamento degli oggetti in stato “CANCELLATO” in caricamento o aggiornamento è dipendente dall'implementazione e, tendenzialmente potrebbe essere:
Gli oggetti generati devono essere committati entro un tempo massimo, oltre il quale potrebbero essere rimossi, se la rimozione significhi portarli in stato CANCELLATO o eliminarli fisicamente è dipendente dall'implementazione. Un oggetto generato referenziato da un oggetto attivo potrebbe essere committato automaticamente alla scadenza.
Ciò nonostante non è richiesto (anzi, non bisogna) richiedere la cancellazione esplicita degli elementi non committati.
Questa specifica non prevede prescrizioni particolari per gli oggetti cancellati, se debbano essere archiviati esternamento o rimossi fisicamente dopo un certo tempo.
Esempio:
1) Un attore richiede la generazione di un oggetto di un certo modello
Il backend ritorna l'oggetto con:
Lo stesso viene salvato in base dati (non è ricercabile, ma è caricabile da api, salvabile, e utilizzabile come referenza in altri oggetti)
2) (facoltativo) L'attore popola i campi dell'oggetto e lo salva
Lo stesso viene salvato in base dati (non è ricercabile, ma è caricabile da api, salvabile, e utilizzabile come referenza in altri oggetti)
3) L'attore popola i campi dell'oggetto, e valorizza il campo committed a un numero intero positivo e lo salva
Lo stesso viene salvato in base dati, vengono valorizzati i campi committed e committedby (ora è utilizzabile e ricercabile a tutti gli effetti)
4) L'attore popola i campi dell'oggetto e lo salva
Lo stesso viene salvato in base dati
5) L'attore popola il campo deleted a un valore intero positivo e lo salva
Lo stesso viene salvato in base dati, vengono valorizzati i campi deleted e deletedby (l'oggetto non è più ricercabile)