CMDBuild Forum

Vincoli domini e relazioni 1:1

Buongiorno,

mi sto avventurando nella realizzazione di un progetto con CMDbuild, ho però una difficoltà che non riesco a risolvere.

Dovrei gestire l'assegnazione dei nome macchina assegnati ai vari computer e server in azienda, verficando non ci siano nomi duplicati all'interno della base dati. Purtroppo non essendo possibile rendere univoco un attributo di superclasse, avevo pensato di creare una classe esterna "LocationName" collegata con delle relazioni 1:1 alle varie classi che devono condividere lo spazio dei location name ma anche in questo caso non sono riuscito a risolvere perchè non riesco a capire come collegare la chiave esterna sulla relazione 1:1.

 

L'ultima alternativa che avevo valutato era ricorrere alla tabella lookup, ma non so come rendere utilizzabili una sola volta i valori.

 

Ogni suggerimento è il benvenuto.

Grazie

Buongiorno,

CMDBuild consente di creare "domini" 1:1 ma sono trattati solo come relazione fra tabelle, senza cioè poter definire attributi "reference" nelle due schede collegate (rispetto al caso 1:N il reference dovrebbe essere presente su entrambe le schede e al momento questo non è gestito).

E' possibile però controllare l'univocità del nome macchina tramite trigger "custom" da aggiungere direttamente nelle tabelle del database PostgreSQL corrispondenti alle sottoclassi interessate, che ritornino un errore in caso di duplicazione del nome ed impediscano in tal modo la registrazione della scheda.

In alternativa, sempre tramite trigger del database PostgreSQL, è possibile valorizzare automaticamente il campo nome concatenando un eventuale prefisso a piacere ad un valore numerico univoco ottenuto tramite un oggetto di tipo "sequence".

Fabio

Alla fine ho risolto con la tabella di appoggio e le relazioni 1:1.

in pratica ho aggiunto un trigger sulla tabella di relazione che copia il valore del location name su un attributo read only degli oggetti e flagga come occupato, tramite un attributo boolean, il location name assegnato. A sto punto dovrebbe essere sufficiente aggiungere una verifica sul boolean della tabella dei location name. L'univocità la gestisco direttamente sulla colonna dei location name.

Sicuramente la soluzione è un po' macchinosa, ma dovrebbe consentirmi di gestire correttamente la situazione.

Grazie mille per il suggerimento comunque

 

Tecnoteca ha scritto:

Buongiorno,

CMDBuild consente di creare "domini" 1:1 ma sono trattati solo come relazione fra tabelle, senza cioè poter definire attributi "reference" nelle due schede collegate (rispetto al caso 1:N il reference dovrebbe essere presente su entrambe le schede e al momento questo non è gestito).

E' possibile però controllare l'univocità del nome macchina tramite trigger "custom" da aggiungere direttamente nelle tabelle del database PostgreSQL corrispondenti alle sottoclassi interessate, che ritornino un errore in caso di duplicazione del nome ed impediscano in tal modo la registrazione della scheda.

In alternativa, sempre tramite trigger del database PostgreSQL, è possibile valorizzare automaticamente il campo nome concatenando un eventuale prefisso a piacere ad un valore numerico univoco ottenuto tramite un oggetto di tipo "sequence".

Fabio