IKON SERVER permette di comandare lo stato di oggetti al variare di stato di altri oggetti attraverso gli EVENTI ATTIVI (vv. manuale di installazione), tuttavia questo meccanismo determina l'esecuzione in cascata di eventuali eventi attivi a sua volta associati agli oggetti che vengono comandati. Se tra questi ultimi è presente anche l'oggetto che inizialmente è cambiato di stato, si genera un loop.
Lo script presentato in questo tutorial permette di evitare questa situazione, aggiornando solo lo stato nel DB con il valore ricevuto in ingresso, senza determinare l'esecuzione di eventuali eventi associati.
Il primo passo consiste nel creare uno SCRIPT, procedendo come segue:
Accedere alla sezione di AMMINISTRAZIONE di IKON SERVER
Selezionare la voce "FUNZIONI AVANZATE", quindi "SCRIPTING" ed infine "SCRIPTS"
Premere il pulsante "NUOVO" ed assegnare un nome univoco al nuovo script (ad esempio "updatval")
Accedere alla scheda del nuovo SCRIPT mediante l'apposito pulsante di MODIFICA (verde)
A questo punto, cancellare il contenuto dello SCRIPT ed inserire il codice seguente:
//Scanning child relations foreach($me->childRelations as $childRelation) { $child = $childRelation->child; $child->updateToDb("value",input()); debug("Oggetto " . $child->name . " aggiornato allo stato " . input(),true); } output(''); |
Salvare mediante l'apposito pulsante SALVA.
Per ogni oggetto che, con il cambio di stato, deve aggiornare uno o più altro oggetti, è necessario configurare un nuovo SCRIPT RUNNER nel seguente modo:
Selezionare la voce "RUNNERS" nella sezione "SCRIPTING" del menu di amministrazione
Creare un nuovo oggetto mediante il pulsante "AGGIUNGI" della TOOLBAR
Accedere alla scheda del nuovo oggetto tramite il pulsante "MODIFICA" della TOOLBAR
A questo punto inserire nella sezione "DATI GENERALI" un nome identificativo per il nuovo oggetto, e selezionare lo SCRIPT creato in precedenza nell'omonimo menu a tendina; lasciare inalterate le altre opzioni della sezione "ASPETTO".
Nella sezione "INGRESSI" trascinare l'oggetto il cui cambio di stato determina l'aggiornamento degli oggetti, avendo cura di specificare "$VAL" come valore; e nella sezione "USCITE" viceversa trascinare uno o più oggetti che si desidera aggiornare con lo stato dell'ingresso, anche in questo caso specificando "$VAL" come valore. In questo caso, gli identificativi non sono utilizzati.
A questo punto, è possibile simulare il funzionamento dello script nella parte DEBUG: cambiare il valore dell'oggetto di ingresso e verificare che, nella sezione "debug", sia riportato l'aggiornamento di stato di tutte le uscite.