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:

  1. è uno strumento web (utilizzabile indipendente dalla piattaforma Windows, Linux, Mac).
  2. 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:


nuovo script editor

Da qui la bottoniera (configurabile) apre una serie di funzionalità (nuovo, apri esistente, visualizza, history, ecc…).


nuovo script

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).


modifica script

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:


modifica script

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).


modifica script


modifica script corrente full page

È 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:

modifica script corrente side panel

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:

salva con 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:

salva con nome esistente

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)

esamina membro schede

È possibile aprire in esame più script contemporaneamente:

 

esamina membro schede

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.