[[:start|Sommario]] ===== Lifecycle di un oggetto ===== Un oggetto può assumere uno dei seguenti stati: ==== GENERATO ==== ==== ATTIVO ==== ==== CANCELLATO ==== 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: * consentito (low-consistency - high availability environments, undelete feature) * triggerare un errore (high-consistency scenario) 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: * uuid * created * createdby * ownedby * campi con valori di default 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)