{"id":27599,"date":"2022-06-20T19:00:53","date_gmt":"2022-06-20T17:00:53","guid":{"rendered":"https:\/\/help.qualiware.it\/qw-help\/?p=27599"},"modified":"2022-08-26T22:32:15","modified_gmt":"2022-08-26T20:32:15","slug":"qwntsec_trigger_cfgform","status":"publish","type":"post","link":"https:\/\/help.qualiware.it\/qw-help\/qwntsec_trigger_cfgform\/","title":{"rendered":"Trigger"},"content":{"rendered":"<p>La funzionalit\u00e0 <strong>Trigger<\/strong>, introdotta nella release 2021.06++, ha lo scopo di consentire la definizione di script che vengono eseguiti automaticamente al momento della registrazione sulla tabella LOGDOC di una specifica operazione, come ad esempio il salvataggio, la cancellazione o la pubblicazione di un documento o di una registrazione.<\/p>\n<p>Gli script sono di fatto molto simili a <a href=\"https:\/\/help.qualiware.it\/qw-help\/sd-task-scheduler\/\" target=\"_blank\" rel=\"noopener\">Task<\/a>, la cui esecuzione non \u00e8 per\u00f2 attivata in base ad una schedulazione temporale ma viene attivata nel momento in cui viene effettuata un&#8217;operazione sul database, sia essa di inserimento, aggiornamento o eliminazione.<\/p>\n<p>A differenza dei trigger che vengono definiti a livello di database, sulle operazioni &#8220;fisiche&#8221; effettuate su specifiche tabelle, i Trigger di QualiWare vengono definite sulle operazioni &#8220;logiche&#8221; che vengono registrate, come detto, sulla tabella LOGDOC, e che sono visibili nella funzionalit\u00e0 &#8220;<a href=\"https:\/\/help.qualiware.it\/qw-help\/logdocform\/\" target=\"_blank\" rel=\"noopener\">Cronologia<\/a>&#8221; disponibile nella toolbar di ogni scheda.<\/p>\n<p>La definizione dei Trigger viene effettuata da QualiWare Server Daemon.<\/p>\n<p><a href=\"https:\/\/help.qualiware.it\/qw-help\/wp-content\/uploads\/Pasted-4.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-27604\" src=\"https:\/\/help.qualiware.it\/qw-help\/wp-content\/uploads\/Pasted-4.png\" alt=\"\" width=\"700\" height=\"619\" srcset=\"https:\/\/help.qualiware.it\/qw-help\/wp-content\/uploads\/Pasted-4.png 1081w, https:\/\/help.qualiware.it\/qw-help\/wp-content\/uploads\/Pasted-4-768x679.png 768w\" sizes=\"(max-width: 700px) 100vw, 700px\" \/><\/a><\/p>\n<p>La scheda di configurazione si presenta come nella figura seguente:<\/p>\n<p><a href=\"https:\/\/help.qualiware.it\/qw-help\/wp-content\/uploads\/Pasted-5.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-27608\" src=\"https:\/\/help.qualiware.it\/qw-help\/wp-content\/uploads\/Pasted-5.png\" alt=\"\" width=\"700\" height=\"647\" srcset=\"https:\/\/help.qualiware.it\/qw-help\/wp-content\/uploads\/Pasted-5.png 1022w, https:\/\/help.qualiware.it\/qw-help\/wp-content\/uploads\/Pasted-5-768x710.png 768w\" sizes=\"(max-width: 700px) 100vw, 700px\" \/><\/a><\/p>\n<p>Nel riquadro subito sopra l&#8217;area dove pu\u00f2 essere specificato lo script, \u00e8 possibile specificare i 4 criteri in base ai quali il trigger deve essere attivato, che corrispondono ad altrettanti campi della tabella LOGDOC.&nbsp;<\/p>\n<p>I 4 campi sono<\/p>\n<ul>\n<li><strong>IDDOC<\/strong>: tipo della registrazione, come definito nella scheda <a href=\"https:\/\/help.qualiware.it\/qw-help\/permessiform\/\" target=\"_blank\" rel=\"noopener\">Utenti e Abilitazioni<\/a>, linguetta &#8220;Abilitazioni&#8221;;<\/li>\n<li><strong>CODDOC<\/strong>: codice del documento o registrazione, contenuto nel campo &#8220;_CODDOC&#8221; della tabella principale della registrazione stessa, o della tabella DOCUMENT;<\/li>\n<li><strong>Operazione<\/strong>: operazione a seguito della quale deve essere eseguito il trigger;<\/li>\n<li><strong>NOTE<\/strong>: note relative all&#8217;operazione.&nbsp;<\/li>\n<\/ul>\n<p>Sui campi IDDOC, CODDOC e NOTE \u00e8 possibile utilizzare il carattere &#8220;%&#8221; come wildcard. Ad esempio, se si vuole applicare un trigger ai documenti presenti in una specifica categoria, \u00e8 possibile assegnare IDDOC=&#8217;DW&#8217; e CODDOC='&lt;codice categoria&gt;%&#8217;. Se poi si vuole eseguire il trigger solo in caso di pubblicazione del documento, \u00e8 possibile inserire NOTE=&#8217;%#PUBLISHDOCUMENT%&#8217;. Questo perch\u00e8 la gestione documentale inserisce, nelle note della registrazione su LOGDOC, degli hashtag specifici che consentono di distinguere i vari tipi di azione effettuata sul documento.<\/p>\n<p><strong>E&#8217; di particolare importanza specificare correttamente questi criteri per evitare che il codice venga eseguito quando non \u00e8 necessario, il che potrebbe avere un impatto anche molto negativo sulle prestazioni dell&#8217;applicazione.<\/strong><\/p>\n<p>Lo script pu\u00f2 fare uso della variabile <strong>DB<\/strong>, che contiene un riferimento all&#8217;oggetto <a href=\"https:\/\/help.qualiware.it\/qw-help\/classi-di-supporto\/#QWDatabase\" target=\"_blank\" rel=\"noopener\">QWDatabase<\/a> che implementa la connessione del database, nonch\u00e8 delle variabili <strong>IDDOC<\/strong>, <strong>CODDOC<\/strong>, <strong>TOP<\/strong> e <strong>NOTE<\/strong>, che contengono i valori effettivi dei rispettivi campi del record di LOGDOC che \u00e8 stato registrato a seguito dell&#8217;operazione, dove TOP=Tipo operazione.&nbsp;<br \/>\nLo script pu\u00f2 ritornare &#8220;False&#8221; se si desidera che vengano annullate anche tutte le operazioni effettuate sul database (inserimenti, aggiornamenti o eliminazioni di record) nella stessa transazione, compresa la registrazione su LOGDOC che ha attivato il trigger.&nbsp;<br \/>\nNel caso il trigger ritorni &#8220;False&#8221;, all&#8217;utente verr\u00e0 mostrato un messaggio d&#8217;errore, che pu\u00f2 essere specificato assegnandolo alla variabile <strong>ErrorMessage<\/strong> all&#8217;interno del codice. Tale variabile non deve essere dichiarata in quanto ci\u00f2 avviene implicitamente. Nel caso tale assegnazione non venga effettuata, verr\u00e0 restituito un messaggio generico.<\/p>\n<p>NOTE IMPORTANTI<br \/>\n1) <strong>le modifiche apportate ai trigger vengono&nbsp; recepite all&#8217;avvio della sessione utente<\/strong>. Solamente in fase di modifica, queste vengono attivate immediatamente senza che l&#8217;utente che le sta sviluppando debba disconnettersi. per fare i test. Pertanto, dopo avere effettuato il test e abilitato il trigger, \u00e8 necessario comunicare agli utenti di disconnettersi e riconnettersi a QualiWare o, in alternativa, riavviare il pool. Analogamente, se si sta effettuando lo sviluppo su un database diverso da quello principale, e si \u00e8 attivata una sessione di QualiWare su quel database per effettuare i test, \u00e8 necessario ricordarsi di uscire dalla sessione corrente e rientrare in QualiWare prima di effettuare le prove, altrimenti non verranno recepite le modifiche.<br \/>\n2) \u00e8 bene effettuare lo sviluppo e la modifica di uno script disattivando il flag &#8220;Abilitato&#8221;, e riabilitarlo solo al termine delle modifiche e dopo avere effettuato il test con successo. Le modifiche saranno attive al successivo accesso dell&#8217;utente. In altre parole, come detto al punto precedente, se un utente ha una sessione attiva, questa continuer\u00e0 ad utilizzare la versione in vigore al momento dell&#8217;accesso. Per questo motivo, se il trigger esiste gi\u00e0 ed \u00e8 attivo, <strong>si suggerisce di effettuare le modifiche su una copia, e, una volta validata, attivare la nuova versione, disattivare la vecchia e riavviare il pool di IIS <\/strong>per essere certi che le sessioni esistenti siano disconnesse;<br \/>\n3) \u00e8 possibile disattivare l&#8217;esecuzione dei trigger che agiscono su una specifica tabella assegnando a &#8220;True&#8221; la propriet\u00e0 DontExecuteTrigger dell&#8217;oggetto <a href=\"https:\/\/help.qualiware.it\/qw-help\/classi-di-supporto\/#QWTable\">QWTable<\/a>.&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>La funzionalit\u00e0 Trigger, introdotta nella release 2021.06++, ha lo scopo di consentire la definizione di script che vengono eseguiti automaticamente al momento della registrazione sulla tabella LOGDOC di una specifica operazione, come ad esempio il salvataggio, la cancellazione o la pubblicazione di un documento o di una registrazione. Gli script sono di fatto molto simili&hellip;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"ngg_post_thumbnail":0,"footnotes":""},"categories":[60],"tags":[],"acf":[],"_links":{"self":[{"href":"https:\/\/help.qualiware.it\/qw-help\/wp-json\/wp\/v2\/posts\/27599"}],"collection":[{"href":"https:\/\/help.qualiware.it\/qw-help\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/help.qualiware.it\/qw-help\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/help.qualiware.it\/qw-help\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/help.qualiware.it\/qw-help\/wp-json\/wp\/v2\/comments?post=27599"}],"version-history":[{"count":2,"href":"https:\/\/help.qualiware.it\/qw-help\/wp-json\/wp\/v2\/posts\/27599\/revisions"}],"predecessor-version":[{"id":29536,"href":"https:\/\/help.qualiware.it\/qw-help\/wp-json\/wp\/v2\/posts\/27599\/revisions\/29536"}],"wp:attachment":[{"href":"https:\/\/help.qualiware.it\/qw-help\/wp-json\/wp\/v2\/media?parent=27599"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/help.qualiware.it\/qw-help\/wp-json\/wp\/v2\/categories?post=27599"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/help.qualiware.it\/qw-help\/wp-json\/wp\/v2\/tags?post=27599"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}