Daemon
Il Daemon di Nios4 è un software per sistemi Windows. Questo programma nasce per poter eseguire delle operazioni di importazione ed esportazione dei dati da un database Nios4 in modo automatico e schedulato. Si ricorda che il programma deve essere caricato e funzionante per permettergli l'esecuzione dei task caricati. Il setup è scaricabile dal seguente link:
Installazione
Eseguita l'installazione lanciare il programma per eseguire la prima configurazione. Il primo passo sarà inserire una password per accedere al programma, Questa pasword verrà richiesta per accedere al pannello di gestione e modifica degli script da lanciare. Non è necessaria per l'avvio del programma.
Inserita la password il programma richiederà di selezionare il database MCP.mdb. Questo database è presente in ogni installazione dei sistemi Nios4. Il database contiene le informazioni di accesso a tutti i database attualmente collegati, sia locali che cloud. Questo significa che occorrerà sempre avere installato e raggiungibile un programma Nios4. Se si dovrà gestire un database cloud sarà necessario eseguire un primo accesso sempre dal programma Nios4 e la prima sincronizzazione. Il daemon non esegue la prima sincronizzazione in autonomia. Il database si trova all'interno della cartella data, ad esempio c:\software_d-one\nios4\data\MCP.mdb,
Interfaccia e comandi
Configurato il programma verrà visualizzata la schermata principale. Nella parte centrale vengono riportati gli script che verranno lanciati. Nella colonna Days vengono selezionati i giorni della settimana, nella colonna Time l'ora e in quella Script il programma da lanciare. Nell'ultima colonna viene riportato quando questo script verrà lanciato in base alla selezione.
Comandi della barra superiore
Script
Permette di creare o importare gli script da eseguire
Edit
Apre l'editor dello script attualmente selezionato dalla griglia principale
Play
Esegue lo script selezionato dalla griglia principale
Save
Salva i task da eseguire
Password
Permette di reimpostare la password di accesso
Lock
Blocca l'interfaccia del programma
Timer
Abilita o disabilita il timer per l'esecuzione automatica dei task
Esempio di importazione dati automatico da un file esterno
In questo esempio verrà creato uno script per importare da un file excel dei dati direttamente dentro a un database di Nios4. Si ricorda che se il database è attualmente aperto da un altro programma, i dati verranno ricaricati ma il programma non li mostrerà direttamente. Questo perchè non esiste un sistema che forzi l'aggiornamento dei dati in modo automatico. Per visualizzarli basterà chiudere il programma o aggiornare le sezioni con gli appositi comandi. Comunque, normalmente il daemon viene eseguito al di fuori degli orari lavorativi.
Creazione dello script
Premiamo sul pulsante Script per far comparire la finestra di gestione, Da questa possiamo selezionare uno script esistente da modificare, importarne uno creato precedentemente oppure crearne uno nuovo. Premiamo sul pulsante New.
Verrà visualizzata la finestra di editazione degli script. La finestra è impostata esattamente come quella standard di Nios4. Nella parte sinistra vengono riportati i comandi disponibili, in quella centrale l'editor vero e proprio. Nella parte sinistra l'anteprima del codice e nella parte inferiore la console.
Ora creeremo le prime righe dello script
db = program.createdatabase("dbname","user","password")
excel = program.loadspreadsheet("c:\\test.xls")
La prima riga apre il collegamento al database di Nios4. Occorre inserire la matricola del database, recuperabile dall'elenco dei database presente dentro a Nios4. La password e l'username di accesso. Si ricorda che questo tipo di operazione non controllare i permessi, quindi l'utente utilizzato potrà comunque eseguire tutte le operazioni di visualizzazione, modifica e cancellazione attraverso questo script.
La seconda riga carica il file di excel e lo trasforma in un oggetto DataTable. Questo significa che è possibile navigarlo come tutte le tabelle del programma. Le operazioni non eseguibili sono quelle di modifica e salvataggio. Il nome delle colonne corrisponde alle lettere delle colonne del file di Excel.
A questo punto eseguiamo il caricamento dei valori dal file controllando se dobbiamo creare un nuovo record o aggiornalo
rows = excel.getrows()
for i = 1,excel.countrows() do
row = rows[i]
ritem = nil
--search items
table_items = db.getsql("SELECT * FROM items WHERE code='" .. row.getvalue("A") .. "'"
if table_item.countrows() > 0 then
rows_items = table_items.getrows()
ritem = rows_item[1]
else
ritem = table_item.adddatarow()
end
ritem.setvalue("code",row.getvalue("A"))
ritem.setvalue("description",row.getvalue("B"))
ritem.setvalue("price",row.getvalue("C"))
ritem.setvalue("tid",tility.tid())
ritem.save()
end
Come prima cosa viene creato il primo ciclo for per iteratire tutte le righe valide presenti all'interno del file di Excel. Quindi per ogni riga si interroga il database per vedere se esiste un record che corrisponde al valore della prima colonna. Se il record non esiste viene creato un nuovo datarow, altrimenti viene impostato quello trovato. In questo modo il sistema gestisce sia l'aggiunta dei nuovi record che il loro aggiornamento. Naturalmente è possibile aggiungere altri sistemi di controllo per vedere se il record trovato va aggiornato oppure no. Infatti il difetto di questo sistema e che comunque aggiornerà sistematicamente tutti i record trovati anche se non ci sono delle effettive modifiche dei valori.
Supponendo che si tratti di un database cloud, dopo l'aggiornamento dei dati dobbiamo eseguire la sicronizzazione dei valori per inviare le modifiche.
tid = 0 --send all record
error = ""
returntid = db.sync(tid,error)
La variabile tid identifica il marker temporale da utilizzare per la selezione dei record da inviare al server. Il valore zero indica che tutti i record verranno inviati. Di solito questo valore non viene mai utilizzato perchè è il programma Nios4 che esegue la prima sincronizzazione. Risulta anche poco performante inviare a ogni esecuzione dello script tutti i dati anche perchè risulta inutile, infatti il server, se i marker temporali dei record risultano uguali a quelli in suo possesso non eseguirà nessuna operazione su questi. Questo valore viene gestito direttamente da Nios4, mentre per il daemon dovremmo essere noi a salvare questo valore su un file o all'interno di una tabella.
Dato il comando di sync il sistema ritornerà il tid aggiornato. Questo valore sarà quello da eseguire nella prossima sincronizzazione. In questo modo verranno inviati e ricevuti i dati aggiunti o modificati dopo questo valore temporale.
In caso la sincronizzazione non sia andata a buon fine sarà possibile vedere l'errore dalla variabile passata al comando di sincronizzazione.
Creato lo script dal menù Actions è possibile rinominarlo ed esportarlo.
Creazione del task
Salvato lo script e chiuso l'editor creiamo una nuova riga di task utilizzando la pulsantiera dei record in basso a sinistra
Selezioniamo la nuova riga e impostiamo i giorni, l'ora e lo script da eseguire. Salviamo i task per confermare il tutto.
Differenze tra gli oggetti LUA del Daemon e di Nios4
Essendo il Daemon nato per essere indipendente rispetto al programma completo non possiede diversi oggetti di gestione. Ad esempio non è possibile visualizzare e modificare i dati utilizzando le schede standard o generare stampe. Le sue funzioni rimangono sulla gestione massiva dei dati agendo direttamente sul database. D'altra parte possiede dei comandi per il caricamento di file esterni che non sono presenti dall'altra parte.