Add new attachment

Only authorized users are allowed to upload new attachments.

This page (revision-1) was last changed on 17-Oct-2019 11:30 by UnknownAuthor

Only authorized users are allowed to rename pages.

Only authorized users are allowed to delete pages.

Difference between version and

At line 1 added 622 lines
%%(display:none)
{{{
WikiUp
}}}
/%
[{TableOfContents }]\\
!!! Visione Configuratore\\
\\
!! Copertura applicativa\\
Nella figura seguente vengono evidenzate, all'interno della mappa applicativa, le aree supportate da Buil.up\\
[{Image src='immagini/MBDOC_VIS-CF_001/CFBASE_040.png' caption='' width='100%' style='max-width: 100%;'}]\\
!! Concetto\\
L'idea di base che ha ispirato lo sviluppo di Build.up è quella di fornire alle aziende un valido strumento informatico di supporto al delicato processo di configurazione di un prodotto.\\
\\
!! Necessità della configurazione\\
Prima di presentare le numerose funzionalità applicative offerte dal programma è necessario introdurre le problematiche tipiche del contesto operativo in cui il programma stesso si troverà ad operare.\\
Il problema della configurazione si presenta ogni qual volta un'azienda si trova nella situazione di dover definire completamente un prodotto raccogliendo in modo organico tutte le informazioni necessarie alla sua produzione e commercializzazione.\\
\\
Di norma, la definizione di una configurazione richiede la raccolta di informazioni di tipo eterogeneo: ad informazioni tecniche, come materiali, tipo di lavorazione, ecc., potrebbero essereaffiancate anche informazioni commerciali come modalità di pagamento o di fatturazione.\\
\\
La quantità e la natura delle informazioni da raccogliere è variabile e dipende fortemente sia dal contesto operativo che dalla fonte di informazioni disponibile.\\
L'oggetto che permette la raccolta delle informazioni è il configuratore che, nel caso più semplice, potrebbe essere il classico questionario cartaceo caratterizzato da una struttura rigida e prefissata.\\
A prescindere dal tipo, è importante che il configuratore sia in grado di raccogliere tutte le informazioni necessarie alla definizione del prodotto e, se possibile, ottimizzare il processo alla raccolta alle sole informazioni effettivamente necessarie.\\
\\
La definizione di un configuratore può avere vari livelli di sofisticazione la cui scelta è legata principalmente al grado di conoscenza del prodotto della persona o ente che fornirà le informazioni: pertanto, mentre il questionario da sottoporre ad un cliente inesperto del prodotto dovrà essere maggiormente controllato per garantire la definizione di una configurazione effettivamente gestibile dall'azienda, quello destinato ad una persona esperta potrà garantire un numero maggiore di gradi di libertà e alleggerire il carico dei controlli.\\
\\
Ovviamente, maggiori controlli comportano una maggiore sicurezza sui risultati ottenuti ma portanoad una minore elasticità, intesa come maggior difficoltà nella gestione di situazioni non previste all'atto della creazione del configuratore.\\
\\
Il tipico processo di configurazione parte dalla descrizione generica di un prodotto, caratterizzata da una serie più o meno numerosa di varianti, per arrivare alla completa definizione di un oggetto specifico.\\
\\
Lo schema di massima di questo processo è illustrato dalla figura 1.\\
\\
[{Image src='immagini/MBDOC_VIS-CF_001/CFBASE_034.png' caption='' width='100%' style='max-width: 100%;'}]Figura 1: Schema generale del processo di configurazione\\
\\
\\
Ad ogni oggetto configurabile si associa un configuratore la cui compilazione, intesa come esecuzione dello stesso, porta alla definizione prima della configurazione e da essa dell'oggetto configurato.\\
\\
Un configuratore può essere utilizzato sia per definire un prodotto singolo sia un insieme di prodotti appartenenti alla stessa famiglia: pertanto, un'azienda può decidere di sviluppare un configuratore per ognuno dei prodotti in catalogo oppure un unico configuratore che gestisca contemporaneamente la definizione di tutti i prodotti disponibili.\\
\\
In generale, una volta che un configuratore è stato creato viene utilizzato più volte: quindi, mentre la definizione di un configuratore è un'operazione delicata, poco frequente e in genere eseguita da una o poche persone, la sua esecuzione è invece un'operazione che viene ripetuta molte volte e probabilmente da molte persone diverse.\\
\\
!!! Il Configuratore Build.up\\
!! Scopi del programma\\
Build.up si presenta sul mercato come un programma di gestione delle configurazioni di concezione moderna e basato su tecnologie sicuramente innovative per questo tipo di prodotti.\\
Rispetto al classico questionario su carta offre un ambiente di sviluppo visuale di sicuro interesse e funzionalità avanzate di grande utilità operativa.\\
\\
Lo scopo di Build.up è sostanzialmente uno: definire un oggetto in ogni sua parte attraverso un meccanismo di domande e risposte (un po' come nel gioco in cui si deve individuare un personaggio famoso ponendo una serie di domande ad una seconda persona).\\
\\
Il primo passo è quello di individuare tutte le varianti nella definizione dell'oggetto configurabile cioè tutte le caratteristiche o informazioni che devono essere conosciute per la sua completa definizione.\\
Sulla base delle varianti individuate nella prima fase è possibile implementare un questionario per la raccolta di tutte le informazioni necessarie, questionario che verrà infine proposto ad un utente finale perché possa essere compilato.\\
\\
Un questionario ben progettato e compilato con cura conterrà tutte le informazioni necessarie alla completa conoscenza dell'oggetto per cui è stato creato.\\
Le funzionalità di base di Build.up dovranno pertanto essere le seguenti:\\
# ''Definizione di un questionario'': Build.up offre un ambiente visuale per una agevole creazione e manutenzione di qualsiasi questionario. L'ambiente di sviluppo è semplice ed intuitivoed è strutturato in modo tale da "costringere" l'utente ad una corretta gestione dei dati, facilitando la creazione di questionari esaustivi. In Build.up un questionario è denominato configuratore.\\
# ''Compilazione di un questionario'': una volta creato, un questionario deve essere proposto ad un utente perché possa essere compilato. In Build.up la compilazione di un questionario è detta esecuzione di un configuratore; questa operazione consiste nel visualizzare le domande in un ambiente grafico, raccogliere le risposte date dall'utente e, dopo averle controllate, memorizzarle nel modo opportuno. Un configuratore eseguito completamente dà luogo ad un oggetto chiamato configurazione, concettualmente un questionario compilato.\\
# ''Memorizzazione della configurazione'': la configurazione, viene salvata in un file su AS400,che viene usato come contenitore di tutte le configurazioni realizzate. Una volta memorizzata, la configurazione deve essere utilizzata nell'ERP. Questa fase dipende strettamente dall'oggetto che si sta configurando. Se si sta configurando un ordine di vendita la configurazione può essere utilizzata per creare la distinta base, se invece si sta configurando una commessa deve essere istanziato su AS400 l'oggetto di tipo commessa che è stato configurato. Una soluzione generale non esiste ma deve essere creata ad hoc per ogni esigenza specifica.\\
È comunque garantita l'integrabilità con il sistema gestionale in quanto i risultati della configurazione sono disponibili su AS400 e quindi utilizzabili da qualunque applicazione ne abbia bisogno.\\
\\
I prodotti finali di Build.up sono quindi due oggetti, il configuratore e la configurazione: il primo definisce la struttura di un questionario, le sue domande e i suoi controlli mentre il secondo raccoglie le risposte date a seguito di una compilazione del questionario.\\
\\
Se ben strutturato, l'insieme delle domande e delle relative risposte consente la completa definizione di qualsiasi oggetto; da notare che un configuratore può essere mandato in esecuzione più volte e quindi da un unico questionario possono essere generate più configurazioni,una per ogni compilazione.\\
\\
Sia i dati contenuti nel configuratore che quelli delle relative configurazioni sono accessibili da parte di qualsiasi programma a cui possano servire e possono pertanto rappresentare la base per una grande varietà di elaborazioni successive.\\
\\
Le principali caratteristiche tecniche di Build.up possono essere riassunte nei seguenti punti:\\
* ''Struttura client-server e web'': la costruzione del questionario avviene all'interno di LoocUp o via terminale 5250. La compilazione e l'interrogazione, avvengono sia in LoocUp sia via browser (richiesti browser di ultima generazione)\\
* ''Ambiente di sviluppo grafico'': con una interfaccia visuale per una semplice definizione delconfiguratore: la creazione del questionario è completamente guidata da pannelli di inserimento,di significato semplice ed intuitivo. Un configuratore può essere modificato in ogni momento ed adattato alle mutate esigenze operative in modo semplice e veloce.\\
* ''Esecuzione dinamica del questionario'': le domande vengono sottoposte all'utente non in ordine prefissato ma secondo una sequenza definita dinamicamente in funzione delle risposte date e delle regole di esecuzione.\\
* ''Possibilità di definire delle regole'': utilizzando un linguaggio proprietario di struttura semplice ed intuitiva. Si tratta di un linguaggio completo, che associa alla potenza offerta dai suoi costrutti la semplicità ed immediatezza del normale parlato. La scrittura delle regole è facilitata dalla presenza di un completo controllore sintattico, capace di suggerire le soluzioni adatte ad ogni tipo di errore di sintassi.\\
* ''Struttura dinamica del questionario'': Possibilità di modificare la struttura del questionario durante la compilazione interagendo con un programma su AS400.\\
* ''Generazione di PDF'': sulla base delle risposte fornite è possibile generare un PDF e di arricchirlo con dati prelevati dal gestionale.\\
* ''Invio di e-mail multiple con allegati'': terminata la compilazione o consultando le precedenti configurazioni salvate è possibile inviare a una o più persone uno o più allegati dei PDF generati.\\
* ''Gestione delle autorizzazioni'': tutte le funzioni del programma possono essere utilizzate solo dagli utenti autorizzati al loro utilizzo. E' prevista la definizione di autorizzazioni parziali e la gestione di gruppi di lavoro, intesi come gruppi di utenti con uguali autorizzazioni.\\
* ''Integrazione con l'ambiente gestionale su AS/400'': i dati prodotti da Build.up sono disponibili su oggetti AS/400 e sono pertanto utilizzabili da qualsiasi applicativo gestionale presente sul sistema.\\
\\
!! Funzionalità specifiche di Build.up\\
Build.up non si limita a riproporre in un contesto informatico le stesse funzionalità offerte da un questionario su carta; al contrario, il programma consente di impostare il lavoro di configurazione secondo un approccio dinamico ottimizzato alla raccolta di informazioni.\\
\\
Le caratteristiche peculiari del programma si possono riassumere brevemente nei seguenti punti:\\
* ''Personalizzazione del configuratore'': la definizione del questionario è interamente personalizzabile in funzione delle diverse esigenze informative che si possono presentare ed offreun gran numero di gradi di libertà per favorire la perfetta adattabilità del configuratore alle esigenze più disparate. La definizione del questionario non è vincolata ad uno schema rigido ma può essere strutturata in modo da favorire un'organizzazione ottimale delle informazioniraccolte.\\
* ''Manutenzione agevolata'': una volta creato, un configuratore può essere facilmente modificato in ogni momento senza richiedere la sua completa ridefinizione. E' quindi facile aggiornare un questionario per allinearlo a mutazioni improvvise delle esigenze aziendali. La semplicità di inserimento delle modifiche invita ad uno sviluppo incrementale del configuratore: partendo da una prima definizione semplificata si può arrivare in poco tempo a configuratori moltocomplessi ed articolati operando di volta in volta piccole modifiche e valutando man mano gli effetti ottenuti.\\
* ''Adattabilità al contesto operativo'': accade di frequente che all'interno di uno stesso contesto operativo si debbano raccogliere informazioni di tipo eterogeneo (ad esempio, un configuratore potrebbe raccogliere contemporaneamente informazioni tecniche ed informazioni commerciali). Build.up è in grado di trattare informazioni di qualsiasi tipo e di eseguire un rigoroso controllo sul tipo di risposta data in funzione di quella attesa.\\
* ''Ottimizzazione del questionario'': un questionario su carta, basato su una struttura forzatamente fissa, non permette alcun controllo sulla sequenza con cui vengono poste le domande. In molte situazioni questo porta alla raccolta di una quantità di informazioni superiore a quella effettivamente necessaria alla definizione dell'oggetto, con la conseguenza di appesantire notevolmente la gestione dei dati. In Build.up la sequenza con cui vengono poste le domande viene costruita in modo dinamico in funzione delle risposte date dall'esecutore alle domande precedenti. L'utente dovrà pertanto rispondere alle sole domande necessarie alla definizione della configurazione e non verrà quindi sviato da domande incongruenti con il contesto operativo in cui sta operando.\\
* ''Linguaggio delle regole'': Build.up consente l'introduzione nel questionario di regole scritte in un linguaggio semplice ed intuitivo (vedremo un esempio più avanti). Le regole hanno molteplici funzioni: controllare la sequenza di esecuzione del configuratore, verificare le risposte date dall'utente, effettuare calcoli di vario tipo, gestire i valori di risposta predefiniti ed altro ancora. Attraverso le regole è possibile dare un'intelligenza propria al configuratore e garantirgli quel comportamento dinamico che lo rende unico nel suo genere. Per facilitare l'inserimento delle regole Build.up è dotato di un completo controllo sintattico in grado di suggerire per ogni errore le eventuali correzioni da introdurre.\\
Per quanto detto Build.up rappresenta un valido ausilio in tutti i processi in cui è necessaria una raccolta di informazioni ottimizzata, trova valide applicazioni in molti contesti applicativi ed in particolare nella definizione di offerte commerciali, nell'acquisizione di ordini clienti, nella definizione della distinta base di un prodotto e nella definizione dei cicli di produzione.\\
\\
!! Caratteristiche tecniche fondamentali\\
Dopo aver presentato a grandi linee le funzionalità di Build.up ci possiamo addentrare più a fondo nella comprensione dei meccanismi di funzionamento di questo programma.\\
\\
Prima di affrontare la questione della creazione di un configuratore è necessario capire la struttura base di questo componente e quali sono gli oggetti principali che lo compongono. La Figura 2 riassume graficamente lo schema costruttivo di un configuratore generico.\\
\\
[{Image src='immagini/MBDOC_VIS-CF_001/CFBASE_038.png' caption='' width='100%' style='max-width: 100%;'}]Figura 2: Struttura di un questionario Base\\
\\
L'oggetto base è il configuratore, formato da una lista di sezioni definita in un ordine qualsiasi. Ogni sezione contiene un certo numero di domande, ognuna delle quali è di tipo prefissato, ed ha associato una variabile in cui si salverà la risposta data. Alcune domande possono avere associati anche una serie di valori che rappresentano le opzioni predefinite di risposta.\\
Si possono individuare nel configuratore cinque elementi fondamentali:\\
||||
|__Domande__ | sono l'elemento base del configuratore. Sono oggetti costituiti principalmente da una descrizione, che rappresenta il testo della domanda, e da una variabile in cui verrà salvata la risposta data dall'utente in fase di esecuzione. Sono stati definiti diversi tipi di domanda, in funzione del tipo di risposta prevista e del formato grafico di visualizzazione; nel seguito della relazione verranno descritti dettagliatamente.\\
|__Sezioni__ | per garantire una migliore organizzazione del configuratore le domande vengono raggruppate all'interno di sezioni secondo criteri di omogeneità. La sezione rappresenta il modulo unitario di visualizzazione: durante l'esecuzione del questionario le sezioni vengono visualizzate una per volta e le domande in esse contenute vengono sottoposte all'utente affinché possa rispondere. Non esiste alcuna connessione tra la sequenza con cui sono state create le sezioni e la sequenza con cui verranno visualizzate in esecuzione.\\
|__Valori__ | i valori sono le opzioni (intese come possibili risposte) associate ad una domanda. In molti casi l'utente deve scegliere una risposta tra una lista di opzioni possibili: i valori rappresentano i singoli oggetti tra cui l'utente può scegliere la sua risposta.\\
|__Variabili__ | sono i contenitori in cui vengono salvate, durante l'esecuzione, le risposte date dall'utente. Ad ogni domanda creata deve essere associata una variabile di tipo conforme allanatura dei dati attesi come risposta: pertanto, se una domanda chiede l'inserimento di un dato numerico la variabile ad essa associata dovrà essere anch'essa numerica. Ogni tentativo di salvarein questa variabile una risposta non numerica produrrà automaticamente un errore di tipo e l'immediata segnalazione all'utente.\\
|__Regole__ | un discorso più approfondito è necessario per introdurre le Regole, data l'importanza di questi elementi nella definizione delle prestazioni di un configuratore. Grazie alle regole, infatti, il configuratore si comporta in modo diverso a seconda delle risposte che di volta in volta l'utente inserisce. Nel capitolo dedicato al linguaggio delle regole descriviamo approfonditamente questo argomento, ponendo particolare attenzione al lavoro svolto da noi nella definizione di questo linguaggio.\\
\\
\\
! La Struttura Estesa\\
Nella figura 3 trovate la struttura estesa del questionario:\\
\\
[{Image src='immagini/MBDOC_VIS-CF_001/CFBASE_025.png' caption='' width='100%' style='max-width: 100%;'}]Figura 3: La struttura del questionario estesa.\\
\\
Come si può notare la versione estesa del questionario ammette quattro tipi di sezione:\\
* ''Le sezioni che contengono domande''\\
* ''Le sezioni ripetibili'': sono sezioni che vengono dichiarate ripetibili e che mediante regole, implicite o esplicite, l'utente può ripetere n volte. Contengono al loro interno domande.\\
* ''Le sezioni che includono un questionario'': sono sezioni che non contengono domande ma che contengono un questionario. La sezione si esploderà quindi nelle sezioni contenute nel questionario incluso. La compilazione di una sezione di tipo questionario equivarrà allla compilazione delle n sezione incluse.\\
* ''Sezioni che contengono un questionario e che sono ripetibili'': rappresentano l'unione dei concetti 2 e 3. Sezioni di questo tipo consentono di definire n elementi complessi all'interno di un questionario.\\
La nuova struttura consente la definizione di questionari multi livello poiché un questionario può essere composto da sezioni che sono a loro volta questionari. Si può così superare il vincolo di non poter definire n oggetti complessi in un'unica configurazione e di poter seguire più agevolmente la struttura di una distinta base.\\
\\
Questa nuova struttura consente anche di definire e riutilizzare micro configuratori all'interno di strutture più complesse.\\
\\
Tale divisione agevola la manutenzione perchè le domande in gioco in un micro configuratore sono meno di un unico grande configuratore e specifiche per una parte.\\
\\
Un questionario può inoltre essere definito all'interno di script, rendendo più veloce la compilazione e la manutenzione in quanto tutte le informazioni sono in un unico membro del file SCP_CFG.\\
\\
La nuova struttura impone un vincolo sul formato e sul luogo delle risposte raccolte: venendo menol'assunto che il codice di una domanda sia univoco all'interno di un questionario si ha che le risposte descrivono un albero che segue la struttura del questionario. Le risposte risulteranno così suddivise per sezione.\\
\\
!! Le Domande\\
Le domande all'interno del configuratore sono oggetti applicativi. Il loro inserimento quindi consiste nella compilazione di un questionario. Ogni domanda, infatti, possiede degli attributi e la creazione di una domanda implica la configurazione della domanda stessa. Le domande, dopo essere state configurate sono salvate su AS400.\\
\\
Oltre alle domande "tradizionali", alle quali l'utente deve dare solo una risposta, Build.up implementa un altro tipo di definizione domande: le domande configurate. Se un utente ha bisogno di ordinare un prodotto deve sicuramente poter specificare il nome del modello; è possibile però che abbia la necessità di specificare una quantità, scegliere una tipologia di sconto o inserire la data entro il quale vuole che il prodotto sia consegnato. Invece di fare quattro domande diverse, come dovrebbe fare se avesse a disposizione solo le domande "tradizionali", può avvalersidelle domande configurate; esse consentono di chiedere informazioni legate al prodotto che si vuole configurare su una sola riga, memorizzando una sola domanda su AS400 anche se in realtà le domande sono di più.\\
\\
Di seguito vengono illustrati e commentati i diversi campi a cui bisogna rispondere quando si configura una domanda, e vengono mostrate delle figure che rappresentano la veste grafica con cui vengono presentate le domande all'utente che compila un questionario.\\
\\
[{Image src='immagini/MBDOC_VIS-CF_001/CFBASE_031.png' caption='' width='100%' style='max-width: 100%;'}]Figura 4 - La finestra di definizione di una domanda\\
\\
La Figura 4 mostra un esempio di come si presenta la schermata di Build.up quando si crea una nuova domanda, seguita da una descrizione del significato dei campi che devono essere compilati:\\
* ''Descrizione'': è il testo della domanda, quello cioè che viene presentato all'utente che compila il questionario. La massima lunghezza di questo campo è di 30 caratteri.\\
* ''Categoria domanda'': stabilisce quali caratteristiche deve avere la risposta associata alla domanda. In questo campo è possibile inserire uno dei codici a due caratteri contenuti nella Tabella 1.\\
||Codice||Significato||Descrizione||Esempio
|__01__ | Valore singolo | con questa opzione all'utente viene mostrata una casella in cui può inserire la risposta. Il valore che si inserisce deve essere compatibile con il tipo di oggetto associato alla domanda | fig. 4\\
|__02__ | Scelta in lista | con questa opzione l'utente vedrà una lista di possibili risposte dalla quale sceglierà quella desiderata | 5\\
|__03__ | Gestione in lista | l'utente può costruire una lista di valori aggiungendo un campo ad ogni risposta | 6\\
|__04__ | Aggiunta a lista | l'utente aggiunge una risposta alla volta ad una lista di risposte. Il valore che aggiunge può essere in seguito cancellato, ma non modificato. | 7\\
|__F-__ | File | la domanda è composta da tante domande (posizionate tutte sulla stessa riga, comeaccade per le domande configurate) quanti sono i campi del file il cui nome è specificato alla voce Par. presentazione (vedi dopo). Il testo delle domande è costituito dalle descrizioni dei campi del file. |\\
|__T-__ | Tabella | comportamento analogo a quello della voce precedente, tranne per il fatto che il testo delle domande è costituito dalle intestazioni delle colonne della tabella, specificata anch'essa alla voce Par. presentazione. |\\
|__Q-__ | Questionario | in questo caso la domanda è composta da tutte le domande del questionarioil cui nome è specificato alla voce Par. presentazione. |\\
|__C-__ | Cat. Parametri | analogo ai precedenti, ma il testo delle domande è formato dai parametri di un oggetto specificato alla voce Par. presentazione. |\\
\\
Tabella 1 - Le categorie di una domanda\\
\\
* ''Par.presentazione'': valori opzionali di personalizzazioni grafiche o comportamenti avanzati. E' un campo posizionale vediamo le opzioni possibili in tabella 2.\\
||Posto||Significato||Valori possibili
|__1__ | Carattere 1 | D = Solo descrizione domanda; S = Solo titolo di una subsezione; Blank = Domanda Normale\\
|__2__ | Cosa Emettere | Blank = Sia codice che decodifica; D = Descrizione in COMBOBOX; C = Codice in COMBOBOX; E = Codice - Descrizione - Immagine; F = Codice - Immagine; G = Descrizione - Immagine\\
|__3__ | Nota | N = Gestire la nota; Blank = Non gestire la Nota\\
|__4__ | Tipo compilazione | T = In finestra separata (tabella); A = Lista con 10 elementi; B = Lista con 15 elementi; 1 = Come check box su 1 colonna; 2 = Come check box su 2 colonne; 3 = Come check box su 3 colonne; Blank = Default\\
|__5__ | Soggetto condizionamento | Indico, mediante una lettera, che la variazione della rispostadi questa domanda provoca l'aggiornamento delle domande che hanno nell'oggetto di condizionamento la stessa lettera\\
|__6__ | Oggetto condizionamento | Domande la cui risposta viene modificata dalla variazione di un'altra domanda. Vedi 'Soggetto condizionamento'\\
|__7__ | Protezione | Blank = Modificabile; 1 = Non modificabili; 2 = Non visualizzato\\
|__8__ | Ricarica questionario | SI/NO = Abilita Disabilita il reload del questionario dopo una modifica - NON IMPLEMENTATO\\
|__9__ | Conversione carattere | Blank = Non convertire; U = Converti in MAIUSCOLO; L = Converti in minuscolo\\
|__10__ | Immagine / Formato | Blank = Non mostrare immagine; 1 = Immagine piccola; 2 = Immagine media; 3 = Immagine grande; L = Formato libero; D = Dimensioni come default\\
|__11__ | Risalita immagine | SI/NO = Abilita la ricerca delle immagini con la risalita\\
|__12__ | Forzatura regole | SI/NO = Abilita la possibilità di forzare le regole sulla domanda\\
|__13__ | Ricerca per Descriz. | SI/NO = Imposta come default la ricerca per descrizione\\
|__14__ | Attivato da regole | SI/NO = Disabilita la domanda.\\
|__15__ | Non utilizzato |\\
\\
Tabella 2: Valori campo Parametro Presentazione\\
Per esempio si può scegliere di non visualizzare il codice di un possibile valore di risposta, ma mostrarne solo la descrizione.\\
\\
Nel caso la domanda appartenga alla categoria F-, T-, Q-, o C- questo campo contiene il nome di un file, di una tabella, di un questionario o di un oggetto rispettivamente.\\
* ''Multipla'': questo campo accetta solo i valori '1' e ' ' (blank). Nel primo caso si permetteall'utente di inserire più risposte, nel secondo solamente una.\\
* ''Obbligatoria'': questo campo accetta solo i valori '1' e ' ' (blank). Nel primo caso non è possibile accedere a sezioni successive senza aver risposto alla domanda, nel secondo all'utente viene lasciata la possibilità di scegliere se rispondere o no.\\
* ''Accetta altro'': se impostato a '1' accetta, su richiesta dell'utente, risposte libere.\\
* ''Tipo oggetto'': in questo si inserisce il codice che identifica l'oggetto SmeUp associato alla domanda.\\
* ''Lunghezza'': In questo campo viene inserito un numero intero che stabilisce il numero massimo di caratteri della risposta. Per tutti gli oggetti SmeUp si suggerisce la lunghezza di 15 caratteri.\\
* ''Decimali'': Definisce il numero di decimali accettati dalla risposta, nel caso il tipo oggetto di quest'ultima sia un numero.\\
* ''Filtro risposta'': In questo campo si immette il tipo dell'oggetto SmeUp utilizzato per parzializzare le scelte dell'utente\\
* ''Param. Filtro'': Bisogna inserire il parametro dell'oggetto SmeUp utilizzato per parzializzare le scelte dell'utente, se è stato selezionato un filtro per la risposta.\\
Il filtro risposta e il suo parametro consentono di specificare un elenco di valori: la tabella CFV è pensata per questo scopo: contiene infatti tutti i possibili valori di risposta dei questionari.\\
Si può scegliere una delle seguenti opzioni:\\
||__Configuraz. risposta:__||__Param. Configurazione__
|Nessuna | -\\
|BA / Quantità/Prezzo/Sconto/Data/Nota | una sigla che identifica i campi scelti: es. 23 significa prezzo e sconto, 1 3 5 significa Quantità Sconto Nota ecc\\
|SE Sezione del questionario | Il codice di una sezione\\
\\
Tabella 3: Valori campo Parametro Presentazione\\
\\
!! Le Sezioni\\
Un questionario è diviso in sezioni che contengono domande; solitamente le sezioni raggruppano domande di significato omogeneo, anche se all'utente è lasciata completa libertà di scelta. Le sezioni sono memorizzate in un settore di tabella dell'AS400 chiamata CFS.\\
\\
Le domande possono essere associate alle sezioni in vari modi (descritti in seguito). Esse possonoessere viste come dei contenitori di domande. Quali tipi di domande debbano contenere è deciso al momento della configurazione delle sezioni. Essendo a loro volta degli oggetti, infatti, quandovengono create, le sezioni devono essere configurate; perciò, la creazione di una sezione è ancora la compilazione di un questionario.\\
\\
Di seguito vengono illustrati e commentati i diversi campi a cui bisogna rispondere quando si configura una sezione.\\
\\
Viene riportata in Figura 5 la schermata mostrata da Build.up quando si crea una nuova sezione.\\
\\
[{Image src='immagini/MBDOC_VIS-CF_001/CFBASE_032.png' caption='' width='100%' style='max-width: 100%;'}]Figura 5 - Creazione di una nuova sezione\\
\\
''Descrizione'': è il nome della sezione, quello che viene presentato all'utente che compila il questionario. La lunghezza massima di questo campo è di 30 caratteri.\\
\\
''Metodo costr. domande e Parametro Costruzione Domande'': nel primo si inserisce un codice che identifica il criterio con il quale le domande vengono aggiunte alla sezione creata e nel secondo viene specificato un parametro aggiuntivo.\\
\\
Esistono 8 possibilità:\\
||Opz.||Tipo di costruzione||Descrizione
|__1__ | Domande con Prefisso = Sezione | vengono inserite nella sezione le domande il cui prefisso del codice coincide con il codice della sezione stessa. In una ipotetica sezione il cui codice sia S010 vengono inserite tutte le domande il cui codice comincia con S010. In questo caso il Parametro Costruzione Domande è vuoto.\\
|__2__ | Definite in parametro | L'utente può specificare quali domande appartengono alla sezione scegliendo tra tutte quelle definite definendo anche l'ordine.\\
|__3__ | Con prefisso indicato | Vengono inserite nella sezione le domande che iniziano con il prefisso specificato.\\
|__4__ | Da programma utente | L'utente può invocare un programma che calcola le domande da inserire nella sezione\\
|__5__ | File | Le domande sono costruite analizzando l'intestazione dei campi del file specificato\\
|__6__ | Tabella | Come l'opzione File ma i dati vengono prelevati dalla tabella specificata\\
|__7__ | Questionario | Vengono inserite tutte le domande lette da un altro questionario.\\
|__8__ | Cat. parametri | Il testo delle domande inserite nella sezione è la descrizione dei parametri associati all'oggetto specificato in Param. Costr. Domande.\\
\\
Tabella 4 Valori campo Parametro Presentazione\\
\\
''Induzione Dinamica'': specifica quale programma chiamare su AS400 al cambio di sezione per ottenere un aggiornamento nella struttura/risposte del questionario. Vengono passate le risposte finora fornite e il programma può restituire, la nuova sezione, nuove domande, nuovi valori o nuove risposte.\\
\\
''Tipo ripetizione e Numero o Domanda'': specifica come la sezione è ripetibile. Se il tipo è numero allora il parametro che segue definisce quante volte la sezione va ripetuta. Si definisce in modo statico il numero di ripetizioni. Se invece si indica una domanda, allora il numero di ripetizioni dipende dalla risposta fornita.\\
\\
''Questionario legato'': è il codice del questionario da cui verranno estratte le sezioni.\\
\\
!! Il Questionario\\
Dopo aver creato le domande e le sezioni non resta che configurare un questionario che le contenga. Le sezioni possono essere associate al questionario in modi differenti (descritti in seguito). Il questionario può essere considerato un raccoglitore di sezioni, che a loro volta, come detto prima, sono dei raccoglitori di domande.\\
\\
Anche il questionario, come le domande e le sezioni, è un oggetto applicativo e per essere definito deve essere configurato. I questionari sono salvati su AS400 all'interno di un settore di tabella chiamato CFQ.\\
\\
Analogamente a quanto fatto precedentemente vengono illustrati e commentati i campi che si devono compilare per una corretta configurazione del questionario.\\
La Figura 6 mostra la videata di Loocu.up quando si vuole creare un questionario.\\
\\
[{Image src='immagini/MBDOC_VIS-CF_001/CFBASE_033.png' caption='' width='100%' style='max-width: 100%;'}]Figura 6 - Creazione di un nuovo questionario\\
\\
''Descrizione'': è il nome del questionario. La lunghezza massima di questo campo è di 30 caratteri.\\
\\
''Livello'': indica lo stato del questionario, ammette quattro possibilità.\\
||||
|__1__ | Immesso non attivo: è un questionario non ancora validato e pertanto non utilizzabile per la compilazione\\
|__2__ | Attivo: un questionario valido,\\
|__3__ | Chiuso: un questionario non modificabile\\
|__4__ | Annullato: un questionario non più valido\\
\\
''Subs. Sezioni/Domande'': in questo campo viene inserito il codice del subsettore della tabelladelle sezioni e delle domande da associare al questionario.\\
\\
''Metodo costr. Sezioni'': in questo campo si inserisce un codice che identifica il criterio con il quale le sezioni vengono aggiunte al questionario creato. Sono possibili tre modalità:\\
||||
|__1__ | Tutte le sezioni: vengono inserite nel questionario tutte le sezioni contenute nel subsettore associato al questionario. L'ordine di inserimento è dato dall'ordine alfabetico del codice delle sezioni.\\
|__2__ | Definite in parametro: alla sezione appartengono le sezioni specificate nel parametro di costruzione delle sezioni\\
|__3__ | Con prefisso indicato: vengono inserite nel questionario le sezioni che iniziano con il prefisso specificato in Param. Costr. Sezioni.\\
\\
''Parametro costr. Sezioni'': in base alla scelta fatta al punto precedente è possibile inserirediverse opzioni.\\
||||
|__1__ | Tutte le sezioni: rimane vuoto.\\
|__2__ | Definite in parametro: specifico il parametro che contiene l'elenco delle sezioni\\
|__3__ | Con prefisso indicato: specifico il prefisso che identifica le sezioni da includere.\\
\\
''Progr. di stampa'': va indicato quale programma si occuperà della stampa. Una volta finita la fase di compilazione del questionario è data la possibilità all'utente di stampare in formato PDF il risultato della configurazione.\\
\\
''Identificativo'': fornisce la chiave d'accesso al file nel quale sono salvate le configurazioni create. Si possono specificare tre chiavi d'accesso differenti. Se la chiave che si definisce è unica e automatica, allora la chiave del configuratore è definita dal programma che esegue il salvataggio su AS400.\\
\\
''Gestione Configurazioni'': Non Utilizzato. Il modo di salvare le configurazioni è definito nell'identificativo.\\
\\
''Eseguire regole'': consente di disabilitare le regole, farle eseguire al cambio di sezione o farle eseguire ad ogni risposta fornita. Quest'ultimo comportamento è disponibile solo per la compilazione in LoocUp.\\
\\
''Aspetto'': specifica come si deve presentare il questionario. Sono possibili tre modalità: In un'unica sezione, con le sezioni disposte in pannelli affiancati, con la sezione corrente e l'albero di navigazione.\\
\\
''Dati ausiliari'': richiede la gestione di variabili ausiliarie. Di seguito l'elenco di quelle gestite:\\
* *DE è la descrizione della configurazione\\
* *QU è il codice del questionario\\
* *DC è la data di creazione\\
* *IC l'ora di creazione\\
* *DM è l'utente che ha modificato la configurazione\\
* *IM l'ora di modifica\\
* *UM è l'utente che ha modificato\\
* *UC è l'utente che ha creato la configurazione\\
Queste variabili vengono salvate su AS400 ma sono anche accessibili tramite la funzione getAuxResp("codice"), dove codice è il codice della domanda senza l'asterisco.\\
\\
''Riepilogo'': flag che abilita la visualizzazione delle risposte fornite come ultima sezione. Ha senso solo per le compilazioni che avvengono in ambito WEB.\\
\\
''Struttura Ingresso'': Specifica quale è il formato dell'XML delle risposte ricevuto in input dal configuratore. Sono disponibili 3 formati:\\
* CDATA - a larghezza delimitata - disponibile per i questionari composti da una sola sezione\\
* Risposta - le risposte sono identificate dal codice della domanda. Ogni domanda è univoca pertanto questo formato non è adatto a gestire i questionari multi livello\\
* Sezione: le risposte sono raggruppate per sezione. Se il questionario è multilivello questo formato viene impostato di default.\\
Se questo parametro non è impostato il sistema cerca di interpretare le risposte che riceve in ingresso.\\
\\
''Struttura Uscita'': Specifica quale è il formato dell'XML delle risposte fornito in output dal configuratore. I formati disponibili sono gli stessi del parametro Struttura Ingresso.\\
\\
''Salvataggio Esteso'': Specifica se salvare la configurazione sul file B£MEDE0F o se usare i default. Se il questionario è multilivello la sua configurazione viene salvata obbligatoriamente nel B£MEDE e pertanto questo parametro risulta non considerato. Se il questionario non è multilivello allora, si può forzare il salvataggio sul B£MEDE invece che sul CFVARI.\\
\\
''Motore Regole'': Mantenuto per compatibilità con le versioni precedenti alla V2R2M070214. Consente di specificare il tipo di motore, statico o dinamico. Dalla versione V2R2M070214 non esistono differenze tra il motore statico e quello dinamico. I questionari multi livello necessitano del motore dinamico. Il valore di default per questo parametro è dinamico.\\
\\
[{Image src='immagini/MBDOC_VIS-CF_001/CFBASE_030.png' caption='' width='100%' style='max-width: 100%;'}]Figura 7 - L'ordine di esecuzione delle regole\\
\\
!! Il linguaggio delle Regole\\
Questo linguaggio di regole non è case sensitive e non fa quindi differenza tra lettere minuscole e lettere maiuscole (quindi la funzione AddVal è la stessa sia se invocata come "ADDVAL" che come "addval"). Inoltre non è posizionale e non tiene conto degli eventuali spazi bianchi compresi nelle chiamate alle procedure\\
\\
Tutte le regole sono espresse utilizzando i seguenti costrutti:\\
* SE condizione ALLORA azione\\
* SE condizione ALLORA azione1 ALTRIMENTI azione2\\
* Azione\\
* Commento\\
Le prime due strutture permettono di controllare se una parte di codice deve essere eseguita in base al risultato di una condizione. Se la condizione è vera vengono eseguiti i comandi della parte ALLORA, in caso contrario quelli della parte ALTRIMENTI (se si utilizza il secondo costrutto).\\
La sintassi è la seguente:\\
\\
SE ((condizione booleana) [E/O (condizione booleana)] ) ALLORA [azione]\\
\\
Oppure\\
\\
SE ((condizione booleana) [E/O (condizione booleana)] )ALLORA [azione] ALTRIMENTI [azione]\\
\\
Le parentesi quadre prima dell'istuzione ALLORA non fanno parte della sintassi. È una notazione che indica che il loro contenuto può essere ripetuto.\\
\\
Le lettere "E" e "O" sono utilizzate per indicare due operatori booleani And e Or.\\
\\
!! La condizione booleana\\
La condizione booleana ha la seguente forma:\\
\\
(valore sinistro, operatore di confronto, valore destro).\\
\\
Per decidere se la condizione è vera viene confrontato il valore sinistro con quello destro. Il tipo di confronto da fare viene determinato dalla scelta dell'operatore di confronto.\\
Nella tabella 5 sono elencati i tipi di operatori di confronto disponibili.\\
||__Valore sinistro__||__Operatore di confronto__||__Valore destro__
|Valore, Variabile, Proprietà di domanda, Proprietà di sezione, Attributo Sme.up oggetto risposta, Espressione | Codice Descrizione, == (uguale), < (minore), > (maggiore), <= (minore uguale), >= (maggiore uguale), <> (diverso) | Valore, Variabile, Proprietà di domanda, Proprietà di sezione, Attributo Sme.up oggetto risposta, Espressione\\
| | IN (compreso) | Range\\
\\
Tabella 5 - I possibili operatori di confronto\\
\\
''Valore'': identifica un valore costante, per esempio il numero 10 viene espresso con la stringa: '10'.\\
\\
''Variabile'': identifica la risposta fornita dall'utente.\\
\\
''Proprietà di una domanda o della Sezione'': posso accedere alla definizione della struttura della domanda o della sezione ed eseguire controlli sulla struttura o cambiarne la visibilià.\\
Nell'esempio che segue controlliamo il tipo della domanda V02_01 e se il tipo è numerico assegnamoil valore della domanda V01_01 incrementato di 5.\\
\\
''SE D.V02_01.TACFDC == 'NR' ALLORA V02_01 = V01_01 + '5'''\\
\\
''Attributo Sme.up oggetto risposta'': data una risposta ad una domanda viene identificato un oggetto Sme.up, identificato l'oggetto posso accedere ai suoi attributi.\\
Se per esempio richiedo un agente, posso poi testare la sua data di nascita, se è tra i suoi attributi.\\
\\
''Espressione'': è una struttura del tipo operando1 operatore operando2. Operando 1 e Operando2\\
\\
!! Le Funzioni\\
Le funzioni che questo linguaggio delle regole può implementare sono le seguenti:\\
\\
! Le funzioni sui valori e di filtro\\
* ''AddVal (cod_domanda; valore (o range))'': aggiungo un valore o un gruppo di valori alla domanda selezionata.\\
* ''RmvVal (cod_domanda; valore)'': rimuovo un valore o un gruppo di valori alla domanda selezionata.\\
* ''AddAll (cod_domanda)'': abilito tutti i valori della domanda selezionata\\
* ''RmvAll (cod_domanda)'': disabilito tutti i valori della domanda selezionata\\
* ''AddFunVal() e RmvFunVal()'':possono aggiungere o rimuovere una lista di valori letta da AS400 utilizzando un servizio che restituisca una griglia. I parametri ammessi sono i seguenti: domanda a cui vanno aggiunti/rimossi i valori, funzione da invocare, codice colonna che contiene valori, codice colonna di filtro e valore filtro. Gli ultimi due valori sono opzionali. Per rendere dinamica la chiamata da fare all'AS400 si possono inserire le variabili del configuratore con la sintassi "aperta quadra" codice_domanda "chiusa quadra". Se la variabile è multipla vengono eseguite n chiamate, una per ogni valore. La funzione accetta fino a 3 variabili.\\
* ''SetFiltro ( cod_domanda; cod_filtro; param1 filtro; ...; param N filtro)'': imposto un filtro sulle possibili risposte fornite. Se si desiderano utilizzare i filtri definiti nella JAC il codice del filtro deve diventare *JAC\\
* ''ResetFiltro(cod_domanda)'': annullo il filtro\\
\\
! Le funzioni sui messaggi\\
* ''AddMsgT(testo)'' emette un messaggio bloccante: la compilazione si arresta.\\
* ''AddMsgW(testo)'' emette un messaggio di avviso.\\
* ''AddMsgI(testo)'' emette un messaggio informativo.\\
* ''ClrMsg ( )'' rimuove tutti i messaggi della sezione alla quale la regola appartiene.\\
\\
! Le funzioni matematiche\\
Operano tutte su parametri numerici.\\
* ''abs(VAR)'' Restituisce il valore assoluto di VAR.\\
* ''acos(VAR)'' Restituisce l'arcocoseno dell'angolo VAR in radianti da 0 a PI\\
* ''asin(VAR)'' Restituisce l'arco seno dell'angolo VAR da -PI/2 a PI/2\\
* ''atan(VAR)'' Restituisce l'arco tangente dell'angolo VAR da -PI/2 a PI/2\\
* ''ceil(VAR)'' Approssima VAR all'intero successivo. Es. Ceil('12.23') = 13.\\
* ''cos(VAR)'' Restituisce il coseno di VAR.\\
* ''exp(VAR)'' Restituisce il numero di Eulero elevato alla potenza di VAR.\\
* ''floor(VAR)'' Approssima VAR all'intero precedente. Es. Flor('12,77') = 12.\\
* ''log(VAR)'' Restituisce il logaritmop naturale di VAR.\\
* ''max(VAR_A, VAR_B)'' Restituisce massimo tra i due valori\\
* ''min(VAR, VAR_B)'' Restituisce il minimo tra i due valori.\\
* ''pow(VAR, VAR_B)'' Eleva VAR alla potenza di VAR_B\\
* ''random()'' Genera un numero casuale compreso tra 0 e 1\\
* ''sin(VAR)'' Restituisce seno di VAR\\
* ''sqrt(VAR)'' Restituisce la radice quadrata di VAR\\
* ''tan(VAR)'' Restituisce la tangente di VAR\\
* ''toDegrees(angRad)'' Converte un angolo espresso in gradi in radianti\\
* ''toRadians(angDeg)'' Converte un angolo espresso in radianti in gradi.\\
\\
! Le funzioni sulle stringhe o di conversione\\
* ''concat(String a, String b)'' restituisce la stringa formata dal concatenamento di a e b\\
* ''substring(String A, Number B, Number C)'' restituisce la sottostringa di A che inizia dall'indice B e termina all'indice C escluso: esempio substring('ABCDEF',0,3) = ABC; substring('ABCDEF',2,3) = C\\
* ''substringFrom(String A, Number B)'' restituisce la sottostringa di A che inizia dall'indice B e va fino alla fine. Esempio substringFrom('ABCDE';2)=CDE\\
* ''number2string(a[,b,c])'' converte il numero a in una stringa. Esempio number2string('12345.6789') restituisce '123456.6789'. Se vengono specificati anche i parametri b e c allora il numero viene convertito in una stringa lunga b con c decimali, senza uso della virgola come separatore dei decimali. Esempio number2string('12345.6789'; '7', '2') restituisce 1234567 mentre - ''number2string('12345.6789'; '10','2')'' restituisce '0001234567'\\
* ''string2number()'' converte una stringa formattata secondo lo standard AS400 in numero. Esempio string2number('1234567'; '5'; '2' ) restituisce 123,45\\
\\
! Le funzioni di accesso alle risposte multiple e/o configurate\\
* ''getResponseAtIndex(cod_domanda; indice)'' restituisce la risposta della domanda di dato indice: si usa con le domande a risposta multipla.\\
* ''getRespAt(cod_domanda; indice)'' forma abbreviata della precedente.\\
* ''getNRRespAtIndex(cod_domanda; indice)'' restituisce la risposta di dato indice in formato numerico.\\
* ''getNRRespAt(cod_domanda; indice)'' forma abbreviata della precedente.\\
* ''getDescRespAt(cod_domanda; indice)'' restituisce la descrizione della risposta di dato indice.\\
* ''getDescResp( cod_domanda)'' restituisce la descrizione della risposta (se la domanda è a risposta multipla restituisce la descrizione della prima risposta).\\
* ''getObjDesc(tipo; parametro; codice)'' restituisce la decodifica dell'oggetto identificato dalla terna tipo-parametro-codice. Tipo parametro codice sono espressioni.\\
* ''getAuxResp('nome domanda ausliaria senza asterisco')'' restituisce la risposta ausiliaria. Le domande ausiliarie sono le seguenti:\\
** *DE è la descrizione della configurazione\\
** *QU è il codice del questionario\\
** *UC è l'utente che ha creato la configurazione\\
** *DC è la data di creazione\\
** *IC l'ora di creazione\\
** *DM è l'utente che ha modificato la configurazione\\
** *IM l'ora di modifica\\
** *UM è l'utente che ha modificato\\
Esempio getAuxResp('UM') restituisce il codice dell'utente che ha modificato la configurazione. Queste informazioni ausiliarie sono disponibili solo se nel questionario si specifica di aggiungere queste informazioni.\\
* ''getLoocupVarValue('cod_LoocupVariable')'' restituisce il valore della variabile di ambiente di Loocup. Le variabili di ambiente includono i dati relativi all'applicazione (es. posizione icone), i dati relativi alla macchina e i dati della JVM utilizzata. Maggiori dettagli sono disponibili nella documentazione di LoocUp.\\
\\
! Le funzioni di modifica delle risposte multiple e/o configurate\\
* ''setNota(cod_domanda; testo_nota)'' aggiunge una nota ad una domanda. Sono ammesse le sole lettere e i numeri.\\
* ''setRespAt(cod_domanda; nuova_risposta; indice_risposta)'' consente di variare una risposta di dato indice.\\
\\
! Le funzioni di test\\
''IsEmpty(cod_domanda)'' restituisce vero se alla domanda identificata da cod_domanda non è stata fornita nessuna risposta.\\
\\
!! I Commenti\\
E' possibile inserire dei commenti alle regole. Queste porzioni di testo non vengono interpretate dal sistema, ma servono solo all'utente per documentare il lavoro fatto.\\
Per inserire dei commenti è sufficiente farli precedere dalla stringa '//' (doppia barra); tutto quello compreso tra tale stringa e la fine della riga è considerato commento.\\
\\
!! I Messaggi\\
Build.up permette la visualizzazione di messaggi di testo definibili dall'utente. Esistono tre tipi di messaggi: bloccanti (identificati dalla lettera "T" ), di avviso ("W") e informativi ("I").\\
\\
I primi, quando vengono emessi, bloccano l'esecuzione del questionario ed obbligano l'utente a correggere le risposte sbagliate date in precedenza. I messaggi di avviso, invece, comunicano all'utente che i valori immessi potrebbero non essere corretti, ma lasciano proseguire la compilazione del questionario. Infine il terzo tipo di messaggio (informativo) serve per comunicare all'utente informazioni aggiuntive di carattere generale.\\
\\
I messaggi vengono emessi scrivendo, nelle regole, opportune funzioni. Ogni funzione richiede due parametri, un codice e una testo. Se il codice è vuoto significa che il messaggio è del questionario, altrimenti è della sezione o della domanda identificata.\\
\\
La rimozione dei messaggi è eseguita con la funzione CLRMSG( ): elimina tutti i messaggi dati fino a questo punto della compilazione.\\
\\
La funzione ADDMSGT visualizza un messaggio bloccante ( T sta per Terminale) nella sezione alla quale appartiene la regola che richiama questa funzione.\\
Ecco un esempio: ''ADDMSGT ( ' Hai inserito un valore fuori dal range consentito ' )''\\
Mentre la altre due servono per emettere messaggi di avviso o informativo.\\
Ecco alcuni esempi del loro utilizzo:\\
* ''ADDMSGW ( ' Questo è un messaggio di avviso' )''\\
* ''ADDMSGI ( ' Questo è un messaggio di informativo ' )''\\
La funzione CLRMSG ( ) rimuove tutti i messaggi della sezione alla quale la regola appartiene.\\
\\
!! L'editor delle regole\\
Per facilitare l'inserimento e la manutenzione delle regole del questionario è stato sviluppato un apposito editor ed il suo aspetto è mostrato in Figura 8:\\
\\
[{Image src='immagini/MBDOC_VIS-CF_001/CFBASE_028.png' caption='' width='100%' style='max-width: 100%;'}]Figura 8 - L'editor delle regole\\
\\
E' dotato di tutti gli strumenti di un classico editor di testo (funzioni di salvataggio, stampa, taglia, copia, incolla, help, etc') e facilita la lettura delle regole, evidenziando con colori differenti le parole riservate del linguaggio e i valori delle variabili.\\
\\
Il tasto "Compila" manda in esecuzione il parser che abbiamo realizzato al fine di validare sintatticamente la regola digitata. Quando si preme il tasto "Salva" viene comunque eseguito questo controllo per garantire che qualsiasi regola inserita sul server AS400 sia almeno sintatticamente corretta.\\
\\
l grande vantaggio di questo editor sta nella presenza del "Wizard", ossia di una procedura che guida l'utente nell'inserimento delle regole. Il Wizard, in base al punto in cui l'utente si trovacol cursore durante la scrittura della regola, suggerisce tutte le possibili opzioni valide tra le quali l'utente può selezionare quella desiderata. Ad esempio quando l'utente digita il "SE"il Wizard mostra la finestra riportata in figura 12, nella quale propone la scelta dell'oggetto (variabile) da testare nella condizione booleana, ed in seguito propone l'elenco dei possibili valori della parte destra dell'operazione di confronto, prendendo questa lista direttamente dalla tabella memorizzata su AS400 alla quale la domanda stessa è associata. Il processo guidato continua fino alla terminazione della regola.\\
\\
[{Image src='immagini/MBDOC_VIS-CF_001/CFBASE_033.png' caption='' width='100%' style='max-width: 100%;'}]Figura 9 - Il wizard dell'editor delle regole con la finestra di selezione degli operatori\\
\\
! La messa a punto delle regole\\
\\
In LoocUp non esiste un debugger interattivo vi è però la possibilità di visualizzare tutte le operazioni compiute.\\
Durante la compilazione viene, di default, tenuta traccia delle azioni compiute dalle regole. Questa traccia è visibile dalla finestra di compilazione di LoocUp. I pulsanti preposti sono quelli che riportano una pergamena.\\
La storia di esecuzione si può disabilitare con l'apposito pulsante oppure mediante parametri: se nella richiesta di configurazione si inserisce nel parametro P il valore DEBUG(0).\\
La storia di esecuzione può diventare molto grande. Se si desidera analizzare un particolare gruppo di regole si può cancellarla o tenerla disabilitata fino al momento opportuno.\\
\\
Esistono due modi di visualizzarla: in una tabella non riordinabile (molto veloce) oppure in una matrice. La seconda strada, se le regole eseguite sono molte è più lenta, ma permette inoltre di esportare la matrice in formato EXCELL e di eseguire ricerche più accurate.\\
\\
L'esportazione in EXCEL risulta molto utile quanto non si capisce quale regole abbia agito su una determinata domanda.\\
\\
!! Correlazione tra oggetti e regole\\
Per creare un questionario occorre, oltre che definire sezioni e domande, scrivere le regole. E' attraverso di esse che si riesce a dare al configuratore un comportamento dinamico, attivando o disattivando la visualizzazione di sezioni e di domande, o svolgendo funzioni particolari. Le regole legano tra loro gli oggetti che costituiscono un configuratore (li correlano), confrontandoli o modificandone i valori.\\
\\
Ad esempio, una regola potrebbe dover confrontare i valori di Oggetto1 e Oggetto2 e impostare il valore di un terzo oggetto chiamato Oggetto3. Al crescere della complessità del questionario aumenta, però, in proporzione, anche la possibilità che lo stesso oggetto compaia in più regole. E' facile quindi arrivare ad avere una struttura "ingarbugliata" del questionario, costituita da numerosissimi legami invisibili tra oggetti e regole. Il questionario, inoltre, non ha una struttura che, una volta realizzata, rimane tale per sempre. Viene sottoposto continuamente a modifiche e aggiornamenti perché il prodotto che viene configurato può avere nuove varianti, o certe sue parti possono finire fuori produzione ecc... Chi implementa questi cambiamenti ha quindila necessità di avere a disposizione strumenti che lo aiutino nell'apportare tali modifiche.\\
\\
Solitamente la sua necessità è quella di poter sapere in quali regole compare un determinato oggetto o, viceversa, dato un oggetto poter risalire a conoscere in quali regole compare: nella figura che segue vediamo lo strumento di analisi delle regole:\\
\\
[{Image src='immagini/MBDOC_VIS-CF_001/CFBASE_027.png' caption='' width='100%' style='max-width: 100%;'}]Figura 10 - La finestra Correlazione Regole\\
\\
Questo strumento riceve dall'AS400 tutte le regole di un questionario. Per ognuna di esse estrae tutti gli oggetti che la compongono e li inserisce in una tabella bidimensionale. Ad ogni riga corrisponde un oggetto di una regola; se lo stesso oggetto compare in più regole ci saranno più righe con quell'oggetto ma associate a regole diverse. Le colonne sono 8 e ognuna identifica una caratteristica dell'oggetto o della regola che caratterizzano la riga.\\
\\
In particolare sono:\\
* Questionario: è il nome del questionario a cui la regola appartiene;\\
* Tipo regola: dice se la regola è una regola di domanda, di sezione o di questionario;\\
* Codice regola: è il codice della sezione o della domanda alla quale la regola è associata;\\
* Significato: è il testo della domanda se la regola è associata alla domanda, è invece il nome della sezione se la regola è associata alla sezione;\\
* Tipo oggetto: è il tipo dell'oggetto che, assieme alla regola, identifica la riga;\\
* Oggetto: è l'oggetto trovato nella regola, con la regola identifica univocamente la riga;\\
* Significato: è la descrizione dell'oggetto. Ad esempio, se l'oggetto è una domanda, rappresenta il testo della domanda;\\
* Regola: è la regola nella quale l'oggetto compare.\\
A questo punto è possibile operare su questa tabella per ottenere informazioni sui legami che esistono tra oggetti e regole (la loro correlazione).\\
\\
L'idea è quella di poter "guardare" la tabella da diversi punti di vista, ognuno dei quali mette a fuoco determinati aspetti. Le righe della tabella possono essere riordinate secondo un ordine deciso dall'utente. Quest'ultimo si limita a scegliere quale ordinamento dare alle colonne.\\
\\
Se per esempio si vuole sapere in quali regole compare l'oggetto XXXX basta scegliere nell'ordine le colonne "Oggetto" e "Regola". A questo punto compare l'elenco di tutti gli oggetti presenti nelle regole; se espandiamo la riga dell'oggetto XXXX troviamo tutte le righe della tabella originale che avevano tale oggetto nella propria regola, ordinate per regola.\\
\\
!! Integrazione col sistema gestionale\\
Quando si progetta un configuratore bisogna tenere presente che un suo prerequisito fondamentale deve essere la possibilità di interfacciarsi col sistema gestionale esistente nell'azienda. Interfacciarsi significa dare allo strumento la possibilità di estrarre, immettere, o elaborare informazioni significative per la gestione dell'azienda stessa. Uno strumento che raccoglie semplicemente informazioni (magari le risposte ad alcune domande) e le salva, per esempio, in un foglio Excel ha un'utilità relativa. Esso richiede comunque la presenza di un operatore che, leggendo tale documento, inserisce le informazioni nel posto giusto del sistema informativo. Questa fase del processo di introduzione dei dati (ad esempio un ordine di acquisto) può essere lunga e soprattutto non esente da errori. Un errore in questo punto vanifica tutto il lavoro compiuto per presentare una configurazione corretta. Anche l'impiego della configurazione nel gestionale dovrebbe dunque essere automatizzata.\\
\\
A questo punto riteniamo doveroso fare una precisazione. Quando si costruisce uno strumento come il configuratore e si decidono quali funzionalità deve svolgere e quali problemi deve risolvere, bisogna considerare che i suoi utilizzatori finali possono essere di diversa natura e avere necessità differenti. Per questo motivo lo strumento che si realizza sarà composto sia da parti standard che da parti che dovranno essere soggette a personalizzazioni sulla base delle caratteristiche del cliente (o del suo sistema gestionale).\\
\\
Riferendoci a Build.up questa separazione è abbastanza evidente soprattutto per quanto riguarda il livello di integrazione con l' E.R.P.\\
\\
Quando si costruisce un questionario, infatti, si inserisce nel configuratore una serie di domande, alcune delle quali tipizzate. Ricordiamo che una domanda è tipizzata quando alla sua risposta è associato un Tipo di oggetto. Esempi di queste domande sono la richiesta di una data, che sulla base della risposta istanzia un oggetto applicativo di tipo Data, oppure la richiesta di un articolo che ha, tra le risposte possibili, l'elenco degli articoli (ognuno di essi è un oggetto applicativo) tra i quali l'utente può scegliere quello desiderato. In entrambi i casi viene stabilita una relazione tra l'oggetto che sto configurando e l'oggetto istanziato dalla risposta (la data) o l'oggetto scelto dall'elenco (l'articolo). Questo approccio produce una seriedi innegabili vantaggi. In primo luogo viene evitata la duplicazione dei dati perché decidendo, ad esempio, che una domanda è di tipo Articolo l'elenco di tutti gli articoli non deve essere copiato nel configuratore, ma il configuratore automaticamente si preoccupa di andare a leggere tale elenco nell'unico punto del gestionale in cui è presente. Evitare la duplicazione dei dati porta dei risparmi economici all'azienda, dovuti al risparmio delle spese di manutenzione e gestione dei dati stessi, nonché ad una limitazione dello spazio fisico occupato [13]. In secondo luogo la manutenzione dei questionari viene notevolmente ridotta, in quanto se inserisco un nuovo articolo nel sistema automaticamente questo sarà disponibile nell'elenco degli articoli associato alla domanda, senza dover compiere nessuna operazione particolare. Questa parte è standardizzata, in quanto i dati necessari al configuratore vengono letti direttamente nel database e passati in formato XML, indipendentemente dalla struttura gestionale sottostante.\\
\\
La parte del configuratore, legata all'integrazione col gestionale, che non è standardizzabile è il processo che, partendo dalla raccolta delle risposte ad un questionario di configurazione di un prodotto porta, ad esempio, alla costruzione di una distinta base. Questo limite è dovuto al fatto che aziende differenti gestiscono la loro distinta base in modi differenti.\\
\\
!! Il Questionario visto da Looc.up\\
Anche il configuratore utilizza Looc.up come strumento di interfaccia verso l'utente.\\
\\
Chi scrive questionari utilizzerà questo client grafico visibile in Figura 14.\\
\\
Analizzando la Figura 14 possiamo vedere che sulla sinistra vengono elencate tutte le sezioni, mentre sulla destra si possono vedere le domande appartenenti alla sezione selezionata. Ad ogni domanda e sezione sono associate le regole PRE e POST; cliccando su queste regole si accede all'editor grafico preposto alla loro manutenzione (inserimento, modifica, salvataggio, compilazione).\\
\\
Sempre sulla sinistra vengono mostrate tutte le funzioni necessarie alla gestione del configuratore, quali ad esempio "Nuova Domanda" e "Nuova Sezione" per inserire rispettivamente unadomanda ed una sezione, "Modifica definizione questionario" per reimpostare le caratteristiche del questionario (ad esempio come associargli le sezioni), "Elenco configurazioni" per visualizzare tutte le configurazioni (cioè i questionari compilati) e "Gestione configurazione" che lancia un browser Internet per utilizzare il configuratore e rispondere alle domande.\\
\\
[{Image src='immagini/MBDOC_VIS-CF_001/CFBASE_029.png' caption='' width='100%' style='max-width: 100%;'}]Figura 11 - La gestione del questionario in Looc.up\\
\\
! La Scheda del Configuratore\\
L'accesso alle funzioni del configuratore avviene mediante un'apposita scheda (CFBASE).\\
\\
Questa scheda è accessibile dal menù delle applicazioni di Loocup con il seguente percorso: Menù Ingresso utente, *AP: Applicazioni, LOOC_Up Graphic Environment, Schede, configuratore.\\
\\
Verrà visualizzata la seguente scheda (Figura 12):\\
\\
[{Image src='immagini/MBDOC_VIS-CF_001/CFBASE_037.png' caption='' width='100%' style='max-width: 100%;'}]Figura 12 - La scheda del configuratore (CFBASE)\\
\\
Sulla sinistra si possono vedere cinque tab, quattro raggruppano i questionari in base al loro tipo.\\
Esistono quattro tipi di configuratori:\\
* i questionari Q- sono quelli definiti dall'utente, hanno una struttura ad albero e sono quelli descritti in questo documento\\
* i questionari T-, sono questionari dedicati alla manutenzione tabelle\\
* i questionari L- sono i setup e i questionari dedicati a definire i wizard di script\\
* i questionari C- sono quelli ricavati dalle categorie parametri.\\
\\
In questo documento analizzeremo solo quelli definiti dall'utente.\\
\\
Per accedere alle funzioni disponibili sul questionario bisogna selezionarne uno dall'elenco di sinistra.\\
Sulla destra verrà caricata la scheda del questionario (RE):\\
\\
! La scheda del questionario\\
E' composta da tre sotto schede: una dedicata alla manutenzione della struttura del questionario (è la prima visibile e riporta la dicitura "Questionario"), una dedicata alla gestione delle configurazioni (riporta la dicitura "Configurazioni") e una dedicata alla manutenzione delle regole (riporta la dicitura "Regole").\\
\\
In figura 13 possiamo vedere le 3 schede con in primo piano quella del questionario.\\
\\
[{Image src='immagini/MBDOC_VIS-CF_001/CFBASE_036.png' caption='' width='100%' style='max-width: 100%;'}]Figura 13 - La scheda del questionario.\\
\\
Analizziamo in dettaglio le 3 schede.\\
La sottoscheda del questionario consente la navigazione e la manutenzione del questionario e di tutti i suoi componenti logici (sezioni, domande e valori).\\
\\
Le prime informazioni che compaiono sono gli attributi del questionario (Figura 13).\\
\\
Per ogni oggetto contenuto è attivo un menù di popup sensibile al contesto. In figura 13 si vede il popup di una sezione: le ultime due voci consentono di aggiungere una pre o post regola.\\
Se queste sono già definite per la sezioni in questione si entrerà in manutenzione.\\
\\
\\
Con un doppio click sul talloncino delle regole si ottiene che la scheda vada a pieno schermo:\\
\\
[{Image src='immagini/MBDOC_VIS-CF_001/regole.png' caption='' width='100%' style='max-width: 100%;'}]Figura 14 - La scheda delle regole\\
\\
qui si possono vedere tutte le regole nella zona "Elenco regole" e selezionandone una si può vedere la scomposizione sulla sinistra e la sua traduzione in italiano sulla destra.\\
\\
In basso un pulsante che consente la manutenzione.\\
\\
Per aggiungere nuove regole su sezioni o domande ci si posiziona sulla scheda del questionario e con il tasto destro si accede a queste funzioni.\\
\\
\\
La sottoscheda elle configurazioni, visibile in figura 15, riporta sulla sinistra l'elenco delle configurazioni create, e sulla parte destra l'elenco delle risposte.\\
\\
Posizionandosi su una configurazione e utilizzando il tasto destro, sotto la voce "Questionario" si hanno le azioni di Gestione, Visualizza o Elimina.\\
\\
[{Image src='immagini/MBDOC_VIS-CF_001/CFBASE_026.png' caption='' width='100%' style='max-width: 100%;'}]Figura 15 - La sotto scheda della configurazione e il popup di gestione\\
\\
\\
! la compilazione di un questionario\\
Compilare un questionario porta alla creazione di una configurazione.\\
\\
La creazione di una nuova configurazione avviene con il tasto F8 mentre la modifica di una precedentemente salvata avviene con la voce "Gestione questionario" e poi "Gestione (Imm/Cop/Del)" del popup della configurazione.\\
\\
[{Image src='immagini/MBDOC_VIS-CF_001/CFBASE_024.png' caption='' width='100%' style='max-width: 100%;'}]Figura 16 - La compilazione di un questionario in LoocUp\\
\\
\\
[{Image src='immagini/MBDOC_VIS-CF_001/CFBASE_039.png' caption='Da sinistra a destra: passa alla sezione precedente, alla sezione successiva, auto compilazione' width='100%' style='max-width: 100%;'}][{Image src='immagini/MBDOC_VIS-CF_001/CFBASE_022.png' caption='Da sinistra a destra: abilita la storia di esecuzione, visualizza la storia di esecuzione in tabella non ordinabile, visualizza in tabella ordinabile e filtrabile' width='100%' style='max-width: 100%;'}][{Image src='immagini/MBDOC_VIS-CF_001/CFBASE_021.png' caption='Da sinistra a destra: esegui controllo sintattico sulle regole, attiva ricerca all'interno delle regole, traduci le regole in italiano, esegui controllo su ricerca domande e/o sezioni duplicate' width='100%' style='max-width: 100%;'}]\\
!! La compilazione su WEB\\
! Prerequisiti.\\
Buildup è integrato in WEB-Up e pertanto necessario avere un Web-Server con installato WEB-Up. Per le ulteriori informazioni si rimanda alla documentazione di WEB-Up.\\
\\
! L'interfaccia WEB.\\
La compilazione su WEB è simile a quella che avviene in LoocUp. Visto l'ambiente nel quale ci si trova viene disattivata la traccia di esecuzione delle regole. Mancano anche i pulsanti relativi ai possibili controlli (duplicazione domande, controllo sintattico, rigenerazione motore regole).\\
\\
Nella figura 17 si può vedere l'interfaccia della finestra di compilazione:\\
\\
[{Image src='immagini/MBDOC_VIS-CF_001/CFBASE_023.png' caption='' width='100%' style='max-width: 100%;'}]Figura 17 - La compilazione di un questionario mediante browser.\\
\\
In questa versione l'albero delle sezioni è stato portato in alto. Le sezioni percorse appaiono n grigio chiaro, quella corrente ha il testo in grassetto mentre quelle ancora da percorrere sono con lo sfondo grigio scuro.\\
\\
Le sezioni disabilitate non vengono mostrate.\\
\\
L'interfaccia è facilmente personalizzabile attraverso la modifica di fogli di stile che definiscono colori e dimensioni dei principali componenti.\\
\\
Si possono anche aggiungere o rimuovere pulsanti secondo specifiche esigenze.\\
\\
!! Glossario\\
''Application Server''. È un server che riceve la richiesta di una pagina che deve ancora essere creata; esegue del codice coinvolgendo solitamente anche altri moduli, quali ad esempio un database server e scrive il risultato della richiesta in una pagina HTML (quindi statica) che restituisce al web server che l'ha richiesta.\\
\\
''Colloquio di configurazione''. Durante la fase iniziale del processo di configurazione si svolge la raccolta delle informazioni sulle caratteristiche del prodotto richieste dal cliente. Questa fase prevede un colloquio, denominato appunto "colloquio di configurazione", tra commerciale e cliente in cui il cliente risponde a domande che riguardano le diverse possibilità di scelta previste, le risposte date permettono la completa specificazione del prodotto.\\
\\
''Configuratore''. È lo strumento che serve per realizzare un questionario e per utilizzarlo. Permette quindi l'inserimento di domande e regole e gestisce il suo comportamento. Sulla base cioè delle risposte che l'utente fornisce e dell'interpretazione delle regole sceglie quali altre domande devono essere poste.\\
\\
''Configurazione''. È il risultato della compilazione di un questionario. Una configurazione è l'elenco delle risposte fornite alle domande del questionario e identifica una particolare variante di prodotto.\\
\\
''Distinta base''. È l'elenco di tutti gli articoli che costituiscono il prodotto finale, unitamente alla loro quantità.\\
\\
''Looc.up''. È il client grafico della Smea. Fornisce un'interfaccia grafica al gestionale Sme.up.\\
\\
''Mass Customization''. È un nuovo modo di concepire la produzione dei beni, con il riconoscimento della centralità delle esigenze e dei desideri dei clienti, ma senza nessuna rinuncia all'efficienza, all'efficacia ed al contenimento dei costi.\\
\\
''Oggetto applicativo''. È l'entità su cui si basano le azioni di inserimento e di reperimento delle informazioni del sistema gestionale Sme.up. Ogni oggetto è individuato dalla classe di appartenenza (chiamata "tipo") e dall'identificativo che è univoco all'interno della classe stessa; per alcune classi si identifica anche la sottoclasse (chiamata "Parametro"). Ad ogni oggetto sono associate delle funzioni che determinano quali azioni possono essere eseguite sull'oggetto stesso.\\
\\
''Pagina dinamica''. È una normale pagina basata su codice HTML che però viene generata da un server, con parametri e metodologie diverse a seconda delle circostanze. Esempi di tecnologie che realizzano pagine dinamiche sono gli script CGI (Common Gateway Interface) e le JSP (Java Server Pages).\\
\\
''Prodotto configurabile''. È un tipo di prodotto offerto, non corrisponde ad un oggetto fisico ma ad una categoria di prodotti potenzialmente realizzabili.\\
\\
''Prodotto configurato''. È una singola variante del prodotto configurabile e corrisponde ad un oggetto fisico, costruito o da costruire. Il prodotto configurato si ottiene personalizzando (precisando la scelta delle caratteristiche configurabili) un prodotto configurabile.\\
\\
''Questionario''. È l'insieme di tutte e sole quelle domande che servono a definire univocamente un prodotto. La compilazione del questionario, cioè le risposte fornite alle domande, permettono di identificare la variante di prodotto desiderata.\\
\\
''Variante di prodotto''. È uno fra i possibili prodotti che si ottengono modificando i parametri e le caratteristiche di un prodotto configurabile.\\
\\
''Web server''. Viene detto anche HTTP Server, è un programma che, avendo ricevuto delle richieste da parte del browser, spedisce il documento richiesto (o un messaggio di errore) al browser stesso.\\
\\
''Web.up''. È un modulo aggiuntivo di Sme.up. E' pensato per fornire strumenti di aiuto all'inserimento di dati prelevati dal database aziendale in pagine HTML.\\
\\
!! Conclusioni\\
Questa breve presentazione del prodotto Build.up ha mostrato le principali caratteristiche del programma nella speranza di offrire una panoramica d'insieme che possa rendere giustizia alle effettive qualità del pacchetto proposto.\\
\\
La versione attuale di Build.up rappresenta quanto di meglio è oggi ottenibile nel settore dei configuratori: la struttura fortemente modulare di Build.up, tipica di tutti i prodotti della Smea, lascia comunque aperte molte strade di sviluppo e miglioramento e rende più agevole la manutenzione del pacchetto stesso anche in funzione delle nuove tecnologie che si renderanno disponibili in futuro.\\
This page has only one version
«