Add new attachment

Only authorized users are allowed to upload new attachments.

This page (revision-1) was last changed on 28-Aug-2023 14:15 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 118 lines
%%(display:none)
{{{
WikiUp
}}}
/%
[{TableOfContents }]\\
!!! Scopo del documento\\
Lo scopo principale del seguente documento è quello di fornire una presentazione di massima dell'interfaccia grafica sviluppata per il modulo schedulatore inserito all'interno del prodotto grafico LoocUp.\\
Nell'ambito di questo documento ci si limiterà ad una presentazione puramente grafica e non verranno trattate, se non in maniera marginale, problematiche relative alla logica del processo di schedulazione.\\
\\
!!! Elementi e nozioni di base\\
La funzionalità di base richiesta alla interfaccia in oggetto è quella di dare una rappresentazione grafica dello stato di un sistema ottenuto a seguito di un processo di schedulazione. In questo contesto, l'elemento grafico di base diventa la cosiddetta attività, intesa come elemento logico identificato principalmente da un intervallo di tempo (la durata) e, in via opzionale, da una serie di tempi caratteristici (come ad esempio, il tempo di inizio di attività, il tempo di fine, ecc ecc).\\
Da un punto di vista grafico, una attività è identificata da un oggetto caratterizzato da un tempo di inizio e da una durata e rappresentato all'interno di un asse temporale; la rappresentazione dello stato globale di un sistema avviene attraverso la rappresentazione di tutte le attività che contribuiscono alla definizione del sistema stesso in un unico contenitore dimensionato attorno a precisi limiti temporali, variabili a piacere sia nella estensione che nella granularità di rappresentazione. Questo tipo di visualizzazione grafica consente di avere immediatamente una vista di insieme sulla disposizione delle varie attività nel tempo e consentire una valutazione "ad occhio" della posizione reciproca delle singole attività e delle relazioni che intercorrono tra di esse. È ovvio che in un contesto grafico di questo tipo potranno essere rappresentate solo quelle attività che sono state completamente definite a livello temporale, cioè quelle attività per cui è stato definito un tempo di inizio e una durata e che quindi sono collocabili su di un asse temporale senza bisogno di ulteriori informazioni.\\
\\
Un ulteriore punto da rimarcare è che a livello di interfaccia grafica una attività è identificata solamente a livello di limiti temporali; in altre parole, qualsiasi entità logica che possa essere rappresentata nel tempo può essere identificata come potenziale elemento grafico da visualizzare. Questa entità logica può definire al suo interno tutta una serie di informazioni aggiuntive oltre a quelle temporali, informazioni che sono importanti per la definizione logica dell'oggetto che si vuole rappresentare ma che non sono fondamentali per la corretta rappresentazione all'interno dell'interfaccia grafica. Ad esempio, una fase di un ciclo di lavorazione è un classico esempio di entità logica che si presta ad una rappresentazione grafica su di un asse temporale. Questo perché dopo un processo di schedulazione la fase avrà una collocazione temporale ben precisa e potrà quindi essere rappresentata in maniera grafica in un pannello che ha l'asse temporale come asse delle ascisse. Ma la fase, vista come elemento logico, porta con se tutta una serie di informazioni aggiuntive che sono tipiche di questo tipo di oggetto. Queste informazioni aggiuntive sono importanti per la valutazione dell'oggetto "fase" ed è importante che l'interfaccia grafica fornisca all'utente un modo pratico e veloce per analizzare ed evidenziare queste informazioni. Ma è anche importante che l'interfaccia grafica non limiti il numero e la natura di queste informazioni aggiuntive ma consenta in ogni momento di estendere per tipo e natura le informazioni logiche associate all'oggetto da visualizzare. Quindi l'interfaccia grafica non deve definire l'oggetto "Fase" come oggetto potenzialmente visualizzabile ma deve fornire un modo aperto ed estendibile per definire gli oggetti visualizzabili senza limitare il campo di applicazione ad una ristretta tipologia di oggetti. Nel primo caso avrei progettato un sistema chiuso, adatto a visualizzare solo oggetti "Fase" all'interno di un processo di schedulazione, nel secondo caso avrei invece un sistema aperto adatto a visualizzare oggetti di qualsiasi tipo (e definiti con un qualsiasi insieme di dati) a patto che per essi abbia senso parlare di una visualizzazione su un asse temporale.\\
\\
!!! Gli elementi grafici di base\\
[{Image src='immagini/MBDOC_OPE-LOCGNT_OP/LO_CGNT_01.png' caption='' width='100%' style='max-width: 100%;'}]Visione globale del modulo schedulatore\\
\\
La figura mostra una visione di assieme dell'aspetto grafico del modulo schedulatore. Attraverso l'utilizzo di questa figura andremo a identificare le parti principali dell'interfaccia grafica al fine di spiegare il loro utilizzo e le loro funzionalità. Prima però una premessa importante: tutti gli elementi grafici che compongono l'interfaccia hanno il duplice scopo di consentire una visualizzazione grafica dei dati e di funzionare da "pannello di controllo" delle funzionalità ad essi associate. In generale, la selezione delle funzioni associate ad un componente grafico passa attraverso l'utilizzo di menù di popup, attivabili attraverso la pressione del tasto destro del mouse. Il menù di popup è contestuale, nel senso che può avere formati e contenuti diversi in funzione del tipo di oggetto a cui è stato associato.\\
\\
!! Pannello delle attività e linea temporale\\
È l'elemento principale dell'interfaccia grafica, e rappresenta l'elemento grafico all'interno del quale viene effettuate la rappresentazione grafica delle attività. Da un punto di vista logico, il pannello delle attività è un pannello che ha per ascissa l'asse temporale e che quindi mostra nella direzione orizzontale lo scorrere del tempo. Ovviamente il pannello delle attività mostra un intervallo di tempo ben preciso: i limiti e la granularità di rappresentazione di questo intervallo di tempo è definita dalla linea temporale che è un elemento grafico che sta nella parte superiore del pannello delle attività. Attraverso l'utilizzo della linea temporale è possibile avere informazioni sugli istanti di tempo rappresentati nonché cambiare i limiti e la scala di rappresentazione. Il modulo grafico consente la rappresentazione secondo una scala dei tempi molto vasta: in pratica, è possibile una rappresentazione temporale che va da una scala annuale (dove ogni singola cella del pannello di visualizzazione è un intervallo lungo un anno) ad una scala centesimale (ogni cella è un centesimo di secondo). In ogni momento è possibile variare la scala di visualizzazione del pannello delle entità utilizzando la bottoniera presente nella parte in alto a destra dell'interfaccia grafica. Attraverso questa bottoniera è possibile variare la granularità temporale (attraverso i tasti + e - e con lo slider posto nella parte superiore) nonché visualizzare velocemente l'istante attuale, l'attività più remota e quella più recente.\\
[{Image src='immagini/MBDOC_OPE-LOCGNT_OP/LO_CGNT_02.png' caption='' width='100%' style='max-width: 100%;'}]\\
Lo scorrimento del pannello delle attività nel tempo può invece essere ottenuto in due modi: il primo è quello di utilizzare la barra di scorrimento posta nella parte bassa del pannello delle attività. Con questo metodo è possibile scorrere l'asse temporale tra un tempo minimo e un tempo massimo, definiti come tempi limite inferiore e superiore e passati insieme ai dati dello schedulatore. Un secondo modo è invece quello di premere il tasto del mouse sulla linea temporale e spostare in orizzontale in mouse stesso mantenendo il tasto premuto. A differenza del modo precedente, questo secondo metodo consente di traslare la linea temporale su qualsiasi tempo.\\
[{Image src='immagini/MBDOC_OPE-LOCGNT_OP/LO_CGNT_03.png' caption='' width='100%' style='max-width: 100%;'}]\\
Al pannello delle attività sono associate anche una serie di funzionalità operative, che possono essere selezionate visualizzando il menù di popup associato al componente (tasto destro del mouse sul pannello delle attività): nella figura è mostrato l'aspetto del menù di popup che viene mostrato all'interno dell'interfaccia grafica. L'analisi in dettaglio di questo popup va oltre gli scopi di questo documento, ma è utile osservare come vengono classificate le funzionalità associate ad un particolare oggetto grafico. In particolare, ogni voce del menù è preceduta da un simbolo colorato che identifica lo scope della voce di menù. Le voci con indicatore blu, sono voci che identificano funzionalità associate al componente grafico in oggetto e quindi cablate nella implementazione del codice. Di norma sono funzioni di tipo grafico e sono strettamente legate all'oggetto grafico a cui sono associate. Le voci identificate dal simbolo rosso, identificano invece delle funzioni che sono legate al tipo di oggetto SmeUp associato all'oggetto grafico. Normalmente queste funzioni non solo cablate ma sono identificate da associazioni oggetto-funzione definite all'interno del prodotto gestionale. Le voci identificate invece con il simbolo giallo o azzurro identificano invece delle funzionalità implementate direttamente dal fornitore dei dati. In pratica, il sistema che produce i dati da visualizzare nello schedulatore può anche definire delle funzioni specifiche ed associarle a particolari oggetti all'interno dell'interfaccia grafica. Con questo meccanismo è quindi possibile estendere le funzionalità del sistema e fare in modo che in certe condizioni sia possibile richiedere dall'interfaccia grafica l'esecuzione di funzioni che sono implementate a livello di motore logico e vederne poi graficamente l'effetto risultante sul sistema. Ad esempio, la voce "Schedulazione globale" nel menù mostrato come esempio non è relativa ad una funzione del modulo grafico di visualizzazione ma richiede al motore dei dati l'esecuzione di una operazione di schedulazione che può avere (ma non è detto che l'abbia per forza) un effetto anche sulla parte grafica. La lista di funzioni invocabili secondo questa tecnica non è cablata nel programma ma è liberamente definibile dal lato server a livello di produzione dei dati XML.\\
\\
!! Tabella\\
La tabella definisce la rappresentazione delle attività sull'asse verticale delle ordinate.\\
[{Image src='immagini/MBDOC_OPE-LOCGNT_OP/LO_CGNT_04.png' caption='' width='100%' style='max-width: 100%;'}]Tabella dei dati\\
\\
Ad ognuna delle attività definita all'interno dell'interfaccia grafica sono associate una serie di informazioni tipiche dell'entità logica che si vuole rappresentare. Il numero e la natura di queste informazioni aggiuntive sono legati alla tipologia del dato che si vuole rappresentare. Tra le informazioni fornite per ognuna delle attività da visualizzare ci sono anche le informazioni temporali che identificano l'attività collocandola in una precisa posizione nel tempo.\\
La tabella è l'elemento grafico dell'interfaccia che consente la visualizzazione delle informazioni associate alla singola entità e la riorganizzazione della visualizzazione in funzione di alcuni criteri di associazione delle singole attività.\\
All'interno della tabella sono disponibili due tipi diverse di righe:\\
# ''Righe di dettaglio'': sono righe in cui è definita una singola attività. Ad esempio, nella figura l'attività 8802 visualizzata nel pannello delle attività è associata ad una riga di dettaglio della tabella che mostra tutte le informazioni ad essa associate. Nel caso specifico, la tabella mostra che l'attività 8802 appartiene alla risorsa 240 ed è relativa all'ordine M435601. Le colonne della tabella non sono fissate a priori ma sono definite in maniera dinamica in funzione del tipo di dati che si devono visualizzare: in pratica, il file XML che fornisce i dati all'interfaccia grafica definisce anche la struttura dei dati associati alla singola attività e, di conseguenza, il numero e la natura delle colonne che compaiono nella tabella. L'utente può in ogni momento decidere il livello di visibilità di queste informazioni e quindi decidere quali colonne mostrare e quali nascondere in funzione della tipologia di informazione che si vuole evidenziare.\\
# ''Righe di gruppo'': all'interno della tabella è possibile riorganizzare la visualizzazione delle singole attività in funzione di una chiave di raggruppamento applicata su uno dei campi dati che definiscono la singola attività. Ad esempio, in figura si è proceduto ad un raggruppamento delle attività in funzione del valore assunto dal campo "Risorsa" che diviene pertanto il campo chiave per il raggruppamento. Questo raggruppamento porta alla creazione, all'interno della tabelle, di righe di gruppo, cioè righe che rappresentano un insieme di attività accomunate dal fatto di avere lo stesso valore associato al campo scelto come chiave. Sempre per rimanere all'esempio di figura, la riga "Risorsa:240" è una riga di gruppo che fa da radice a un sottoalbero di elementi formato da tutte le righe di dettaglio che hanno il valore 240 nel campo "Risorsa". Da un punto di vista grafico la riga di gruppo propone una rappresentazione grafica che è una specie di "riepilogo" dello stato di tutte le attività che compongono il gruppo stesso. Ovviamente la chiave di raggruppamento può essere cambiata in ogni momento. Per far ciò è sufficiente clickare con il tasto destro del mouse in corrispondenza della intestazione della tabella e selezionare la voce opportuna nel sottomenù "Raggruppa per.." del menu di popup che viene visualizzato (vedi esempio in figura). La colonna identificata come chiave di raggruppamento corrente è segnalata all'interno del menù con un segno di spunta.\\
[{Image src='immagini/MBDOC_OPE-LOCGNT_OP/LO_CGNT_05.png' caption='' width='100%' style='max-width: 100%;'}]\\
!! Rappresentazione grafica di una attività\\
\\
All'interno del pannello delle attività, la singola attività è rappresentata sotto forma di rettangolo colorato la cui ampiezza in orizzontale è determinata in funzione della durata della attività in rapporto alla scala temporale di visualizzazione attiva.\\
[{Image src='immagini/MBDOC_OPE-LOCGNT_OP/LO_CGNT_06.png' caption='' width='100%' style='max-width: 100%;'}]Esempio di rappresentazione grafica di una attività\\
\\
A livello di sistema è possibile modificare l'aspetto grafico delle singole attività agendo principalmente su due parametri grafici:\\
\\
# ''Colore'': Il colore di riempimento della cella è determinato automaticamente del sistema in funzione di una chiave colore, cioè a seconda del valore assunto da uno dei campi dati associati alla attività. Quindi, per fare un semplice esempio, si può decidere che tutte le attività che fanno capo allo stesso centro siano tutte rappresentate con celle dello stesso colore. Qualsiasi campo associato alla attività può diventare una campo chiave per la determinazione del colore; l'associazione avviene allo stesso modo visto in precedenza per la chiave di gruppo e passa dalla voce "Chiave per colore attività" presente nel menù di popup associato alla intestazione della tabella. L'associazione chiave-colore è determinata in maniera automatica dal sistema ma può essere modificata in ogni momento accedendo alla specifica funzione dalla toolbar del sistema (vedi succ.).\\
# ''Testo'': oltre al colore, la cella grafica che rappresenta una attività può essere personalizzata con un testo che compare all'interno della cella stessa. Il testo può essere il valore di uno qualsiasi dei campi associati ad una attività e viene definito fissando una chiave di testo. La selezione della chiave di testo passa dalla voce "Chiave per testo attività" presente nel popup associato alla intestazione della tabella.\\
[{Image src='immagini/MBDOC_OPE-LOCGNT_OP/LO_CGNT_07.png' caption='' width='100%' style='max-width: 100%;'}]\\
Anche l'oggetto grafico che rappresenta una attività consente la visualizzazione di un popup di funzioni attivabile clickando con il tasto destro. Inoltre, è possibile fare in modo che al passaggio del cursore del mouse su una cella venga mostata una finestra di riepilogo dei dati associati alla cella. Questa finestra di riepilogo, riportata a lato a titolo di esempio, non fa altro che replicare in tutto e per tutto il contenuto dei campi valore associati alla cella in esame. In pratica è una forma alternativa per visualizzare il contenuto della riga di dettaglio della tabella che definisce l'attività. L'unica differenza sostanziale sta nel fatto che la finestra di riepilogo mosta sempre tutte le informazioni associate alla cella mentre la visualizzazione in tabella consente di filtrare le colonne da vedere.\\
\\
L'attivazione della funzione di visualizzazione rapida dei dati è ottenibile selezionando la voce opportuna presente nella toolbar di sistema.\\
\\
!! La Toolbar\\
Nella parte alta dell'interfaccia grafica (vedi figura 1) è presente una toolbar di sistema che raggruppa in gruppi funzionali una serie di funzioni associate al modulo grafico. A questo livello sono definite unicamente funzioni di tipo grafico che consentono un controllo sulla visualizzazione grafica dei dati. Non ci sono invece funzioni di tipo operativo che vengono invece demandate completamente ai menù di popup associati ai rispettivi componenti.\\
[{Image src='immagini/MBDOC_OPE-LOCGNT_OP/LO_CGNT_08.png' caption='' width='100%' style='max-width: 100%;'}]\\
A seguire, una breve descrizione delle funzionalità offerte dalla toolbar:\\
\\
* ''Undo'': annulla l'ultima operazione grafica (non ancora implementato)\\
* ''Redo'': ripeti l'ultima operazione grafica (non ancora implementato)\\
* ''Selection mode'': abilita la modalità di navigazione e selezione\\
* ''Drag&Drop mode'': abilita la modalità di spostamento delle attività\\
* ''Resize mode'': abilita la modalità di ridimensionamento delle attività\\
* ''Select all'': seleziona tutte le attività visibili nel pannello delle attività\\
* ''View grid'': visualizza/nascondi la griglia nel pannello delle attività.\\
* ''Tooltip'': abilita o disabilita la visualizzazione del riepilogo sulle attività\\
* ''Color association'': modifica l'associazione chiave/colore per le attività\\
* ''Print'': stampa della finestra corrente\\
* ''Table view'': attiva la visualizzazione alternativa come tabella.\\
\\
!! La barra di stato e bottoniera\\
L'ultimo elemento caratteristico dell'interfaccia grafica è bottoniera, visualizzata nella parte bassa della finestra. La bottoniera è divisa in tre parti fondamentali: in alto c'è una barra di stato, la cui funzione è quella di mostrare alcune informazioni sullo stato del sistema.\\
[{Image src='immagini/MBDOC_OPE-LOCGNT_OP/LO_CGNT_19.png' caption='' width='100%' style='max-width: 100%;'}]Barra di stato e bottoniera\\
\\
In particolare, la barra di stato superiore mostra nella parte sinistra alcune informazione relative alla attività su cui sta puntando il mouse. Nella parte destra sono invece presenti alcune icone che visualizzano lo stato di alcuni indicatori: la prima indica la modalità di modifica attiva (navigazione, drag&drop e resize), la seconda indica lo stato della visualizzazione colonne e la terza lo stato della visualizzazione del tooltip.\\
La zona centrale è destinata alla bottoniera, tipica di tutti i moduli di LoocUp: i bottoni possono essere divisi in due gruppi funzionali. A sinistra, in formato piccolo, i bottoni destinati alla gestione della navigazione tra moduli e alle funzionalità comuni ai moduli di LoocUp. A destra ci sono invece i bottoni relativi a funzionalità specifiche del modulo schedulatore: la visualizzazione di tutti i bottoni può essere ottenuta scrollando il pannello che li contiene attraverso l'utilizzo della due frecce blu di scorrimento, poste all'estrema desta del pannello.\\
Infine, nella parte bassa della barra di stato, c'è un ulteriore pannello informativo che mostra (con una scritta blu) la chiamata di funzione che ha portato alla visualizzazione dello schedulatore attuale, informazione utile soprattutto a scopi di debug.\\
\\
\\
!!! Modifica dello stato di uno schedulatore\\
Fino a questo punto, il modulo grafico dello schedulatore è stato presentato come un visualizzatore grafico dello stato di un processo di schedulazione, cioè come uno strumento per avere una visione d'insieme della distribuzione nel tempo e nelle risorse di una serie di attività.\\
\\
Il modulo grafico può però anche essere utilizzato per effettuare, in maniera puramente grafica, delle modifiche sullo stato corrente del processo attraverso spostamenti e variazioni delle attività visualizzate.\\
\\
È comunque importante ricordare che anche nel caso di modifica dello stato, il modulo grafico si limita a fornire una rappresentazione grafica (drag & drop con il mouse, o resize) di una operazione che in realtà ha una controparte logica interamente controllata dal motore di schedulazione. In questo senso ogni modifica effettuata sull'interfaccia grafica deve successivamente essere notificata al motore di schedulazione ed elaborata di conseguenza. L'elaborazione logica si una modifica può essere in due modalità:\\
* ''Real time'': ogni modifica grafica viene immediatamente notificata al motore logico di schedulazione che la elabora immediatamente. Questa metodologia è sicuramente più pesante da gestire da un punto di vista operativo ma ha il vantaggio di mantenere allineato lo stato mostrato dall'interfaccia grafica con il reale stato delle informazioni presenti nel motore di schedulazione. In altre parole, l'utente è sempre certo che quello che sta vedendo è la rappresentazione grafica dei dati realmente presenti nel motore di schedulazione. Per contro, il fatto che ogni modifica va a cambiare lo stato della schedulazione richiede una maggiore attenzione e una maggiore consapevolezza di quello che si sta facendo.\\
* ''Cumulativa'': le modifiche grafiche vengono memorizzate a livello di interfaccia grafica e non vengono notificate immediatamente al motore di schedulazione. La notifica cumulativa delle modifiche avviene dietro richiesta dell'utente o in particolari condizioni (ad esempio quando si esce da uno schedulatore che è stato modificato). Questa metodologia consente un approccio incrementale alla modifica dei dati: l'utente può liberamente modificare lo stato delle attività presenti sull'interfaccia grafica senza preoccuparsi della integrità dei dati sul motore di schedulazione. Solo quando ha raggiunto una situazione che ritiene soddisfacente può richiedere la notifica cumulativa di tutte le modifiche al motore di schedulazione e valutarne le conseguenze reali. Per contro c'è il fatto che con questa metodologia si verifica un disallineamento temporale tra dati reali e dati mostrati dall'interfaccia grafica.\\
\\
In entrambe le modalità, la notifica di modifiche al motore di schedulazione è sempre di tipo confermato. Ogni volta che l'interfaccia grafica invia una richiesta di modifica al motore di schedulazione riceve una risposta che notifica l'esito, positivo o negativo, dell'operazione richiesta. Il motore di schedulazione può rispondere in modi diversi:\\
\\
* ''Modifica accettata'': la modifica notificata dall'interfaccia grafica è stata accettata dal motore logico ed applicata correttamente ai dati reali di schedulazione. La modifica grafica viene quindi accettata.\\
* ''Modifica rifiutata'': la modifica notificata dall'interfaccia grafica è stata rifiutata dal motore logico per un qualsiasi motivo (che può essere eventualmente specificato all'interno di un messaggio visualizzato all'utente). L'interfaccia grafica è chiamata ad annullare la modifica effettuata dall'utente.\\
* ''Modifica accettata con variazioni di stato'': la modifica proposta dall'interfaccia grafica viene accettata ma il motore di schedulazione propone, in risposta alla modifica fatta, una serie di modifiche sullo stato delle attività. È il caso classico in cui lo spostamento di una singola attività provoca un processo di rischedulazione che si conclude con lo spostamento di n altre attività.\\
\\
Andremo ora a valutare le due principali tipologie di modifica previste dal modulo grafico di schedulazione.\\
\\
!! Ridimensionamento (resize) di una attività\\
Il ridimensionamento di una attività (detto anche resize) consiste nella variazione grafica della durata di una singola attività. Il ridimensionamento di una attività può avvenire spostando sia il punto di inizio che il punto di termine dell'attività stessa.\\
\\
L'operazione di resize può avvenire in due modi:\\
* ''Richiesta dall'utente'': l'utente all'interno dell'interfaccia grafica abilita la modalità di resize delle attività. L'abilitazione di questa modalità avviene attraverso la pressione dell'icona nel menù di toolbar: lo stato di attivazione di questa modalità è confermato dalla comparsa di un'icona corrispondente nella parte sinistra della barra di stato inferiore. A questo punto l'utente è pronto a modificare graficamente le dimensioni di una cella di attività utilizzando il mouse. Ogni modifica delle dimensioni viene notificata al motore di schedulazione nelle modalità previste dallo stato di notifica attivo (real time o cumulativo). Se il motore di schedulazione rifiuta la modifica, le variazioni grafiche attuate dall'utente vengono annullate e viene ripristinata la situazione originaria.\\
* ''Richiesta dal sistema'': è anche possibile che la durata di una attività venga modificata dal motore di schedulazione in risposta ad una notifica di modifica da parte dell'interfaccia grafica. Un esempio classico: l'utente sposta una attività e richiede la rischedulazione di un centro di lavoro. La rischedulazione fa si che una seconda attività venga spostata in una posizione tale da dover essere ridimensionata, ad esempio perché cade a cavallo di un weekend. Quindi il sistema forza un resize di questa attività che viene visto e recepito dalla interfaccia grafica e applicato in automatico.\\
\\
In generale, l'operazione di resize di una attività può in molti casi non avere senso o non essere fisicamente consentita dalla logica dello schedulatore. Per questo motivo è prevista la possibilità di disabilitare questa funzionalità in tutti i casi in cui si ritiene opportuno non offrirla.\\
\\
!! Spostamento (drag&drop) di una attività\\
Maggiore importanza da un punto di vista logico ha invece l'operazione di spostamento di una attività. Da un punto di vista puramente grafico, lo spostamento di una attività viene effettuato con una operazione di Drag&Drop effettuata con il mouse. L'abilitazione della modalità di spostamento avviene attraverso la selezione della icona dal menù di toolbar e dalla comparsa di una icona corrispondente nella parte sinistra della barra di stato.\\
\\
Lo spostamento della cella che rappresenta l'attività avviene con le classiche modalità del drag and drop, cioè clickando su una cella (Drag) e spostandola mantenendo premuto il tasto del mouse. Il rilascio (Drop) del mouse è interpretato dal sistema grafico come il rilascio della cella nella nuova posizione.\\
[{Image src='immagini/MBDOC_OPE-LOCGNT_OP/LO_CGNT_22.png' caption='' width='100%' style='max-width: 100%;'}]Esempio di spostamento di una attività\\
\\
Durante lo stato di Drag, cioè di cattura di una cella, il cursore si modifica e diventa una croce, indicativa della modalità di spostamento. Inoltre nella interfaccia grafica compaiono delle righe nere orizzontali che mostrano le posizioni in cui è concessa l'operazione di Drop, in pratica le posizioni in cui può essere rilasciata una cella dopo lo spostamento.\\
\\
È importante notare che da un punto di vista logico lo spostamento della cella può essere interpretato in tre modi distinti.\\
* ''Spostamento temporale'': l'attività viene catturata e spostata in orizzontale lungo la sua riga di appartenenza. In questo caso l'operazione di spostamento può essere interpretata semplicemente come uno spostamento temporale della attività che mantiene inalterate tutte le altre informazioni associate all'attività stessa.\\
* ''Spostamento di gruppo'': l'attività viene catturata e spostata verticalmente, perpendicolarmente alla riga di appartenenza. In questo caso lo spostamento avviene secondo l'asse dei gruppi e quindi lo spostamento viene interpretato come variazione del gruppo di appartenenza della cella. Un esempio chiarirà meglio il concetto: partiamo dal caso di figura, in cui il pannello delle attività mostra nel tempo (asse orizzontale) lo stato delle attività organizzate in gruppi secondo la chiave "Risorsa" (asse verticale). L'attività spostata è in origine appartenente al gruppo di attività che ha Risorsa = 055 e difatti la sua riga di dettaglio compare come sottonodo della riga di gruppo 055. L'interfaccia grafica mostra chiaramente che l'attività spostata può essere rilasciata o sulla stessa riga con una traslazione orizzontale (e qui si ricade nella variazione temporale descritta al punto precedente) oppure con una traslazione verticale su una riga di un altro gruppo, ad esempio la riga identificata da Risorsa = 040. In questo caso l'operazione di spostamento grafico è interpretabile da un punto di vista logico come variazione del valore del campo "Risorsa" dal valore originario 055 al nuovo valore 040. Se con risorsa si dovesse intendere un centro di lavoro, l'operazione è in pratica lo spostamento di una attività da un centro di lavoro 055 al centro di lavoro 040. In linea teorica, la visualizzazione delle attività può essere effettuata scegliendo uno qualsiasi dei campi dati come campo di raggruppamento: da un punto di vista pratico questo di ripercuote nel fatto che attraverso l'interfaccia grafica è possibile cambiare qualsiasi valore associato ad una attività, cosa che di per sé non è corretta. Per questo è prevista l'implementazione di un sistema di filtro che identifica i campi dati che possono essere modificati dall'utente e consente lo spostamento di gruppo solo quando le attività sono visualizzate secondo una chiave di gruppo compresa tra quelle autorizzate alla modifica.\\
* ''Spostamento combinato'': una attività viene spostata sia nel tempo che da un gruppo all'altro. Questo caso è in pratica una combinazione dei due casi precedenti e viene gestito come tale dal sistema.\\
\\
Lo spostamento di una o più attività può anche essere forzato dal motore di schedulazione oltre che richiesto direttamente dall'utente. Il meccanismo è lo stesso visto nel caso precedente del resize, dove il motore di schedulazione può rispondere alla richiesta di spostamento o resize proveniente dal client grafico con una sua richiesta di attuazione di una serie di modifiche o spostamenti da applicare al pannello grafico. A livello di client grafico non esiste una distinzione tra modifiche grafiche richieste da una azione dell'utente e richieste grafiche forzate dal motore di schedulazione e recepite in automatico dall'interfaccia grafica. L'unica vera differenza risiede nel fatto che il client grafico memorizza solo le azioni dell'utente e applica, senza però memorizzarle, le modifiche\\
This page has only one version
«