LA SCHEDULAZIONE DI UN COMANDO
Come già accennato, la funzionalità di schedulazione permette di salvare ed eseguire dei comandi personalizzati (query) in un’apposita tabella.
Da qui è possibile schedulare alcuni comandi particolari che potranno essere eseguiti in automatico in un determinato momento senza l’ausilio di alcun utente; ad esempio, tutte le sere inviare ad un responsabile la lista degli appuntamenti previsti per il giorno dopo, oppure la lista degli ordini, la lista dei nuovi clienti inseriti, ecc.
In più, l'applicativo è in grado di inviare una mail od un SMS ad un utente specifico coi risultati del comando (necessita attivare preventivamente l'apposito modulo "SMS Gateway" sul CRM ed avere un abbonamento con un fornitore per l'invio dei messaggi).
Nota: per il corretto funzionamento della schedulazione in oggetto è necessario avere installato l'ultima versione di Siseco License Manager & Scheduling Tools
(versione 1.1.36 core 1.1.83 o superiore. Consigliata versione 1.2.12).
Per la schedulazione del comando, i campi da compilare saranno:
-
Comando SQL: è il campo dove indicare la query di estrazione dati
-
Annotazioni: si può scrivere una nota libera, es. cosa fa il comando (facoltativo)
-
Storia esecuzioni: viene compilata in automatico dal sistema ed indica le volte in cui è stato eseguito il comando.
-
Attiva schedulazione
: indica al sistema che il comando è “attivo”. In questo caso vanno anche inseriti i dati relativi al periodo di tempo nel quale far girare il comando (es. dal / al, esegui ogni N minuti, ecc):
Il programma indica anche quando il comando è stato eseguito l’ultima volta, quando verrà eseguita la prossima volta e se è stata inviata una mail ed a chi.
-
Minuti tra due esecuzioni: è possibile far girare il comando diverse volte al giorno. Indicando ad esempio “1440” significa che il comando verrà eseguito una volta al giorno; indicando “60” significa che il comando verrà eseguito una volta ogni 60 minuti (quindi più volte in un giorno)
Segue poi la prima sezione:
Si indica il luogo “fisico” dove verranno salvati i dati estratti col comando ed il formato. Non è obbligatorio indicare questi dati. La sezione seguente permette di inviare via mail il risultato del comando.
Selezionando “Abilita invio email” ed indicando un indirizzo, al termine dell’esecuzione del comando verrà spedita una e-mail in formato HTML col risultato del comando.
E’ possibile definire il mittente e tutti i campi dell’email (A, CC, CCn, Oggetto, Corpo, Allegato. E’ presente un pulsante per vedere l’anteprima Html del corpo dell’email.
Vi sono diverse modalità di invio:
-
(1) Invia unica mail con un allegato (file HTML) del risultato (se numero di record > 0)
-
(2) Invia unica mail senza allegati (anche se numero di record = 0)
-
(4) Invia unica mail senza allegati (solo se numero record > 0). Utile per inviare mail in cui si faccia utilizzo della sintassi [[TABLERESULT]] nel corpo dell’email
-
(3) Invia una mail per ogni record senza allegati, facendo la stampa unione del risultato con i campi della mail, utilizzando la consueta sintassi [[nomecampo]], dove [[nomecampo]] è un campo della query definita come Comando SQL. I comandi SQL inseriti in questa funzione vengono utilizzati anche come repository e come sorgente dati per le funzionalità di "Servizi Web del CRM"
-
(5) Invia una mail per ogni record con in allegato l’appuntamento formato Outlook (ICS). In questo caso il comando SQL deve essere come segue:
SELECT AgEmail as Email, AgEmailCC as EmailCC, AnnoOrdine, NumeroOrdine, DataOrdine, DataAppto, OraAppto, Cliente, Indirizzo, Città, Prov, Cap, Tel1, Agenti.Cognome AS Agente, Ordini.Note From Ordini Inner Join Agenti On Agenti.IDAgente = Ordini.IDAgente Where not DataAppto is null
Qualora si voglia inviare tante email con all’interno del corpo una query di dettaglio, è possibile utilizzare la sintassi [[SUBTABLERESULT]]. Ad esempio se si desidera inviare tutti gli appuntamenti agli agenti attivi con Tipo='Invio Email' è possibile impostare come segue:
ComandoSQL: estra l’elenco degli agenti a cui inviare:
SELECT IDAgente, AgEmail as Email, AgEmailCC as EmailCC, ISNULL(Nome,'')+' '+ISNULL(Cognome,'') AS Agente From Agenti Where Disabilitato=0 AND AgTipoInvio='E' AND Tipo='Agente'
Corpo dell’email
Buongiorno <b>[[Agente]]</b>, ecco i tuoi appuntamenti:<p>[[SUBTABLERESULT]]</p><p>Un saluto</p><p><b><font size="1">powered</font><font size="1"> by </font><a target="_blank" href="http://www.siseco.com"><font size="1"></font></a></b></p>
Comando SQL Sub Query: estrae gli appuntamenti del singolo Agente
SELECT AnnoOrdine as Anno, NumeroOrdine as [Num.App.to], DataAppto as [Data], OraAppto as [Ora], Cliente, Indirizzo, Città, Prov, Cap, Tel1, Note From Ordini Where IDAgente = [[IDAgente]] AND not DataAppto is null ORDER BY DataAppto, OraAppto
Dalla terza sezione è anche possibile inviare un SMS (necessita attivazione di apposito modulo come sopra indicato).
-
Invia un SMS del risultato, con le seguenti modalità di esecuzione:
- Invia unico SMS con i dati sotto indicati
- Invia un SMS per ogni record con merge dei campi
ALCUNI APPROFONDIMENTI
E’ importante definire il momento in cui avverrà il Primo Avvio della schedulazione.
Una volta determinato il primo avvio, occorre determinare la frequenza di esecuzione del comando, impostando il campo “Minuti tra due esecuzioni”, come indicato nei parametri precedenti.
Esempio: se si volesse eseguire una volta al giorno alle ore 12 dal 1° marzo 2011 si dovrebbe mettere…
-
Primo Avvio = 01/03/2011 12.00.00
-
Minuti tra due esecuzioni = 1440 (ovvero i minuti che ci sono in 24 ore)
La data/ora di prossima esecuzione verrà calcolata sempre imponendo un multiplo intero del valore di “Minuti tra due esecuzioni” e sommandolo alla data/ora del “Primo Avvio”.
Quando il Job viene realmente eseguito il sistema memorizza la data/ora di ultima esecuzione.
Questo momento potrebbe differire di alcuni secondi/minuti in eccesso rispetto alla data/ora di prossima esecuzione che si era calcolata in quanto il motore di schedulazione viene eseguito realmente a cicli periodici.
La periodicità è modificabile nelle “Opzioni del License Manager”, nel campo “Interval (s)”, il cui default è 600 secondi. Pertanto se si desidera eseguire un Job con una frequenza superiore ad una volta ogni 10 minuti (es. ogni 5 minuti) occorre ridurre il tempo di “Interval (s)” nelle “Opzioni del License Manager”, affinché quest’ultimo sia inferiore (es. 100 secondi).
Attenzione: la modifica di questa opzione richiede il riavvio del Servizio di Windows relativo al License Manager.