Indice articolo
Questo documento descrive il funzionamento dell’editor web degli script di Sme.UP (componente EDT).
Script di Sme.UP ed editor di script (componente EDT)
Gli script di Sme.UP sono testi (memorizzati all’interno di membri AS400) che di fatto fanno parte di quello che è il DSL (Domain Specific Language) di Sme.UP.
Tramite gli script è possibile sia disegnare schede (le schermate dell’interfaccia utente) che configurare il comportamento di funzionalità di Sme.UP ERP.
Sebbene siano modificabili tramite lo strumento SEU di AS400 (strumento in puro ambiente carattere 5250), è preferibile l’utilizzo del componente EDT, in quanto quest’ultimo copre due importanti aspetti:
- è uno strumento web (utilizzabile indipendente dalla piattaforma Windows, Linux, Mac).
- ha una serie di features grafiche e controlli che facilitano l’editazione e forniscono liste di valori possibili, aiutando lo sviluppatore nella stesura degli script stessi.
Stiamo parlando quindi di editing grafico user friendly che permette all’utente (sia esso sviluppatore o meno) di visualizzare e/o modificare tutti gli script.
Features
- Inserimento, modifica, duplicazione
- Esamina script (apertura in sola lettura)
- Area Split (per confronti di più membri)
- Gestione Concorrenza
- Intellisense
- Wizard
- Snippet
- Ricerca testo
Nomenclatura
Le “coordinate” per accedere ad uno script vengono definite da tre informazioni (le cui lunghezze dei nomi non possono eccedere i 10 caratteri)
LIBRERIA/FILE/MEMBRO
e la struttura dati è tipica di un albero, dove gerarchicamente la libreria può contenere più file, ed ogni file può contenere più membri:
(N.B.: Nel contesto script di Sme.UP, membro e script sono la medesima cosa).
Il tipo di contenuto dello script viene definito da una regola legata al nome dello script stesso, con prefisso “SCP_“.
SCP_AOP: Modelli AOP SCP_AZI: Script Azioni SCP_A36: Setup A36 Standard SCP_A41: DASHBOARD SCP_A42: Script Costruttore A42 SCP_BCD: Script di BCD SCP_CFG: Script di configurazione SCP_CHL: Script di Changelog dell'applicazione SCP_CLO: Configurazioni di LOOC.up SCP_FLU: Script di flussi SCP_G53: Report come PDF SCP_LAY: Script Layout SCP_MAP: Script Mappe SCP_MNU: Script menù / azioni SCP_NAV: Schemi Q2 Standard da Script SCP_PDF: Script PDF SCP_PTF: Setup delle PTF / Gruppi Distribuzione SCP_QRY: Script Query Standard SCP_SCH: Script Schede SCP_SET: Setup dei servizi SCP_SIM: Unit Test SCP_SPL: Script Spool SCP_TAB: Script Tabelle Proposte(V4) SCP_UPP: Script Sme UPP(SU) SCP_WFA: Script workflow SCP_XML: Documenti XML di lavoro
Editing
L’editor può essere invocato senza avere definito quale script aprire (nuovo script), oppure a partire dallo script sul quale si è posizionati (apri script di “questa” scheda).
Nel primo caso l’editor mostrerà una board vuota:
Da qui la bottoniera (configurabile) apre una serie di funzionalità (nuovo, apri esistente, visualizza, history, ecc…).
Ogni script gestisce il proprio set di attributi e di conseguenza anche l’intellisense (cioè la funzione di autocompletamento) varia a seconda della tipologia di script (SCP_AOP, SCP_SCH, SCP_LAY, ecc…).
(N.B.: E’ indispensabile che lo script sia stato salvato almeno una volta, cioè che “esista”, altrimenti l’intellisense non ha modo di agire non sapendo a priori la tipologia dello stesso).
Nel secondo caso (in cui l’editor riceve lo script da aprire) l’apertura dell’editor può avvenire come comando da spotlight digitando:
-
EDT <nome_file> <nome_membro>
oppure:
-
EDT <nome_membro>
Qualora il <nome_file> venga omesso, verrà implicitamente utilizzato SCP_SCH (Script di scheda) come default.
(N.B.:Non è necessario specificare la libreria in quanto verrà utilizzata la lista librerie utente).
Se si è già all’interno dello script editor, un altro modo per modificare uno script è quello di cliccare il bottone “Apri membro esistente” nella bottoniera:
E’ possibile posizionarsi sulla videata relativa allo script di scheda che si vuole editare ed entrare in modifica del relativo script cliccando sul bottone “Edit main script” nella barra laterale
(N.B.: la presenza del bottone è configurabile).
È possibile modificare lo script relativo ad una sezione, agendo sul bottone “Edit” del menù a scomparsa della relativa sezione:
che produrrà l’apertura dello slide panel contenente lo script:
Copia
È possibile copiare uno script cliccando il bottone “Salva con nome” dopo aver aperto lo script di origine. Questa operazione presenta la richiesta dei riferimenti dello script di cui si vuole effettuare il salvataggio
con un altro nome:
Se lo script di destinazione esiste già, verrà visualizzato un dialog che chiederà la conferma di sovrascrittura del testo esistente.
Nell’esempio sopra, è stato digitato volutamente il riferimento W_COSANT/SCP_SCH/TESTCOSA14 che era già stato creato in precedenza.
Segue il dialog di conferma di sovrascrittura:
Esamina
A volte è utile consultare un altro membro oltre a quello aperto in modifica; per questo cliccare sul bottone “Esamina altro membro” nella bottoniera:
(N.B.: il membro in esame verrà aperto in sola lettura)
È possibile aprire in esame più script contemporaneamente:
Autocomplete
I bottoni “Nuovo”, “Modifica”, “Salva”, “Esamina” mostrati precedentemente, presentano una dialog di richiesta parametri in cui vi sono sempre i tre valori “coordinate” (campi): LIBRERIA, FILE e MEMBRO.
In questi campi è attivo l’autocompletamento che presenta i rispettivi elenchi da cui e’ possibile effettuare una scelta.
(N.B.: l’autocompletamento non è presente nel caso di “Nuovo” e “Salva” dove il membro non esiste ancora e quindi non può soddisfare i criteri di l’autocompletamento).
Area split
Durante l’attività di modifica di uno script esistente, può risultare utile visualizzare la versione pre-salvataggio dello script originale.
Tramite il bottone “Mostra area split”, viene mostrata un’area sottostante con il medesimo script è in sola lettura, il cui contenuto è quello immediatamente prima dell’ultimo salvataggio.
Il testo rimane lo stesso anche aprendo altri membri in esame a meno che non lo si sostituisca con il bottone “Copia membro in area di split” .
Come da esempio dell’immagine seguente, dopo aver aperto l’editor dello script TESTCOSAN2 ed aver effettuato una modifica alla linea 5, cliccando il bottone “Mostra area split”, il testo originale viene
riportato nella finestra in basso.
(N.B.: quando il testo di uno script viene modificato, appare un indicatore di testo modificato di colore blu)
Aprendo in esame lo script TESTCOSANT, l’area di split rimane in basso e contiene il testo dello script TESTCOSAN2.
Ora, se dallo script TESTCOSANT si clicca sul bottone “Copia membro in area di split” notiamo che il contenuto dell’area di split viene sostituito:
Tramite il bottone “Apri editor in nuovo tab” è possibile invece aprire lo script editor in una nuova scheda (tab) del web browser.
Concorrenza
L’allocazione dello script avviene seguendo la politica del “lock ottimistico”, e cioè una volta letto e caricato nell’editor, lo script è modificabile senza vincoli da qualsiasi altra istanza di editor web.
Solo in fase di salvataggio il sistema attuerà una serie di controlli con conseguente segnalazione per informare che il contenuto dello script su disco è cambiato rispetto a quello caricato in memoria nell’editor.
ATTENZIONE: Premendo sul bottone “Refresh” il testo dello script sarà sostituito da quello presente sul server, tutte le modifiche eventualmente fatte da noi andranno perdute.
È anche possibile utilizzare i due bottoni “Mostra-Nascondi history locale” e “Mostra history remota” per verificare le modifiche effettuate come mostrato nelle figure seguenti.
Helpers
Durante la fase di editing è possibile sfruttare una serie di funzioni che facilitano la scrittura dello script.
Ricerca/sostituzione testo
In tutti i web browser esiste la funzione di ricerca, ma l’editor di script contiene una propria ricerca interna che permette alcune operazioni avanzate:
Funzione | Comando Windows | Comando Mac |
---|---|---|
Inizio ricerca | Ctrl-F | Cmd-F |
Trova successivo | Ctrl-G | Cmd-G |
Trova precedente | Shift-Ctrl-G | Shift-Cmd-G |
Sostituisci | Shift-Ctrl-F | Cmd-Option-F |
Sostituisci tutti | Shift-Ctrl-R | Shift-Cmd-Option-F |
Ricerca persistente | Alt-F | Alt-F |
Vai a linea | Alt-G | Alt-G |
Ricerca interna dello script editor:
Intellisense
Tutte le istruzioni devono iniziare con i caratteri “::”, diversamente la riga sarà considerata un commento.
L’istruzione prevede 3 livelli principali:
-
TAG
-
ATTRIBUTO
-
VALOREATTRIBUTO
Il TAG deve avere obbligatoriamente un primo SUBTAG, che a sua volta può avere opzionalmente un suo SUBTAG. Quindi la struttura del TAG è la seguente:
TAG.SUBTAG1 [.SUBTAG2]
Ogni TAG può avere opzionalmente degli ATTRIBUTI.
Ogni ATTRIBUTO può avere opzionalmente un VALOREATTRIBUTO.
In conclusione, un’istruzione quindi deve avere la seguente struttura:
::TAG.SUBTAG1 [.SUBTAG2] [ATTRIBUTO [",(] VALOREATTRIBUTO [",)]]
Esempio di istruzioni valide:
-
::G.SEZ Pos(A2A)
-
::G.SUB.CHA Tit="Categories Graph" Usr="00"
-
::D.FUN.STD F(EXB;JT_00_00;HELLOWORLD) 1(;;PIE)
Nell’immagine sotto, queste istruzioni vengono separate in modo da evidenziare i livelli.
L’intellisense è una funzione che permette l’autocompletamento del codice e ha effetto sui 3 livelli dell’istruzione .
Passando da un elemento all’altro nella lista dei suggerimenti (hints), appare una descrizione sulla destra.
L’intellisense viene attivato nei seguenti casi:
- Digitando i caratteri “::”
- Scrivendo il carattere “.” dopo il TAG
- Digitando il carattere “.” dopo il SUBTAG1
- Con la combinazione di tasti “Ctrl + Spazio”
- Dopo aver selezionato un attributo che prevede dei valori al suo interno
Nelle immagini seguenti, si vede l’intellisense richiamato in tutte le sue fasi
Gli attributi del TAG possono essere elencati anche utilizzando il bottone “Mostra attributi del tag” che corrispondono a quelli proposti dall’intellisense con l’unica differenza che in questo caso vengono
elencati tutti insieme, con le relative descrizioni ed oggetti senza possibilità di selezione per l’auto-completamento.
(esempio di elenco di attributi del tag ::G.SUB.CHA. )
Snippet
Gli snippet sono porzioni di script “template” che possono essere importati all’interno di altri script.
Gli snippet hanno un codice che può essere richiamato con l’intellisense.
Cliccando sul bottone “Snippet” si apre una nuova tab del web browser con un nuovo script editor che permette di modificare il testo dello snippet.
I testi degli snippet vengono memorizzati sempre nel FILE DOC_VOC, mentre il MEMBRO varia a seconda del tipo di Script che quindi ha la seguente nomenclatura I_EDT_ + TipoScript. Nel caso di script di
scheda, il nome del MEMBRO sarà I_EDT_SCH, mentre nel caso di script RPG, il nome del MEMBRO sarà I_EDT_RPG e cosi via.
Wizard
Il wizard è uno strumento che permette di inserire/modificare gli attributi di un TAG su di una videata dialog. La potenzialità di questo strumento è quella di permettere anche ricerche su campi “oggettizzati”, ossia referenziati su tabelle di database come oggetti dipendenti dal TAG che si sta modificando.
Il wizard può essere attivato in 3 modi:
- Il bottone “Wizard” nella bottoniera
- La combinazione di tasti “CTRL+H”
- Il bottone “Wizard” a fianco alla numerazione della riga
Nell’esempio seguente viene mostrata la videata di wizard per il tag ::G.SEZ. Quando si avvia il wizard, i valori presenti nello script vengono riportati nella videata.
I campi a video vengono disegnati dinamicamente a seconda delle proprietà dell’attributo.
Come si può vedere nella videata ci sono: campi di testo, combo box, campi con ricerca etc.
A seconda del tipo di attributo vengono proposte ricerche diverse.
Lista di un combo box | Ricerca per l’immagine di background |
---|---|
![]() |
![]() |
Ovviamente, tutti i valori aggiunti o modificati vengono riportati nello script in fase di conferma e saranno evidenziati in giallo.
Dopo una qualsiasi operazione sull’editor, l’evidenziazione scompare.