CMDBuild Forum

Elenchi finiti e campi calcolati

Ciao a tutti.

Ho la seguente esigenza (diciamo doppia):

in una classe devo definire degli indici (dei pesi) di valutazione del rischio. Questi pesi sono numerici (interi) e hanno un range ben definito (es. 1-10 oppure 1-5). Poi, alla fine, ho un algoritmo che mi calcola il rischio finale come media pesata sui vari indici.

Ora...la mia prima difficoltà è capire come "implementare" gli attributi relativi ai pesi: meglio un lookup o un intero? Il lookup avrebbe il vantaggio di "chiudermi" l'insieme dei possibili valori (elenco finito), mentre banalmente l'intero mi è sicuramente più comodo (almeno credo) nel calcolo dell'indice finale. Quindi chiedo: è possibile fare calcoli utilizzando l'attributo Code di un elenco lookup? oppure... è possibile limitare il range di un attributo integer ad un intervallo (es. 1-10)?

Seconda difficoltà: calcolare questo indice finale. Su altre piattaforme avrei creato una vista con un "campo calcolato" in real time di volta in volta attraverso la relativa formuletta (es. 1/3*attributo1 + 2/3*attributo2), oppure avrei impostato il calcolo in una maschera direttamente in fase di visualizzazione. Su CMDBuild, qual è il miglior sistema per raggiungere questo scopo? La mia esigenza ovviamente è poi sia ordinare che ricercare gli oggetti della mia classe in base a questo indice derivato. Come devo muovermi?

Grazie

Gianluca Giaconia

Per rispondere alla prima domanda non è al momento possibile limitare il range di un attributo integer ad un intervallo (es. 1-10). Potrebbe rientrare nel punto "Personalizzazioni grafiche delle form, meccanismi di validazione e campi calcolati" (http://www.cmdbuild.org/it/progetto/roadmap) su cui avvieremo delle nuove implementazioni nel corso del 2013.

Nel frattempo è possibile utilizzare una lookup e negli script SQL di gestione eseguire un "cast" a "integer" del campo "Code".

Per quanto riguarda la seconda domanda, la modalità più immediata - sempre in attesa dei campi calcolati - è quella di aggiungere un trigger custom nel database.

Fabio