Task Scheduler nel backend dell'applicazione AppMaster, come nel caso classico del backend, crea scenari ripetuti. Ad esempio, quando è necessario eseguire un'azione specifica in base a una pianificazione. Un esempio classico di tali attività è la pulizia dei file temporanei sul server, i backup settimanali, la generazione di report secondo un determinato algoritmo, ecc.
Consideriamo un esempio di utilizzo del task scheduler nel backend dell'applicazione AppMaster. Supponiamo di voler creare un processo che ogni mattina alle 9.00 invii all'utente il meteo al suo numero di cellulare.
Il compito è quindi suddiviso in diverse fasi logiche:
- Installare e configurare il modulo per l'invio di messaggi mobili.
- Creazione e configurazione di un processo API di richiesta esterna
- Impostazione di uno scheduler nel backend dell'applicazione.
1. Il modulo Nexmo consente di integrare nell'applicazione AppMaster la possibilità di inviare messaggi SMS a un numero selezionato.
- API Key - chiave API che può essere ottenuta nel proprio account Nexmo(https://dashboard.nexmo.com/settings);
- API Secret - una chiave privata che viene utilizzata insieme alla chiave API per identificare l'utente. Si può ottenere anche nel proprio account Nexmo(https://dashboard.nexmo.com/settings);
- Numero di telefono - numero specificato durante la registrazione nell'account Nexmo.
I seguenti processi aziendali vengono installati automaticamente con l'installazione del modulo:
- Nexmo.Send SMS - consente di inviare messaggi al numero specificato attraverso il modulo Nexmo.
Nexmo:
- Phone [telefono] - numero di telefono a cui inviare il messaggio;
- Contenuto [stringa] - messaggio di testo;
2. La risorsa web gratuita OpenWeather API sarà utilizzata come fonte di dati meteo(https://openweathermap.org/api). Il primo passo consiste nel creare un modello di richiesta esterna API. I modelli di richiesta API sono presentati nella sezione Processo aziendale della scheda Richieste API esterne. Per creare un nuovo modello, fare clic su Crea richiesta API.
Tipo di richiesta: GET
Indirizzo della richiesta: https://api.openweathermap.org/data/2.5/weather
Parametri della richiesta:
- Lat [stringa] - latitudine
- Lon [stringa] - longitudine
- Appid [stringa] - Chiave API OpenWeather
Nell'ambito di questo compito, siamo interessati solo ad alcuni campi del corpo della risposta nella parte principale(https://openweathermap.org/api/one-call-3).
- Temp [float] - temperatura
- Temp_min [float] - temperatura minima
- Temp_max [float] - temperatura massima
- Pressure [float] - pressione
- Umidità [float] - umidità
3. Prima di impostare il task scheduler, è necessario creare un processo aziendale che riceverà le informazioni meteo tramite l'API. Il processo aziendale si presenta come segue:
- Make Weather Query Model In - crea un modello di parametri di richiesta virtuale. Lon, lat - coordinate della località desiderata, appid - chiave API del servizio OpenWeather;
- Richiesta API: Weather - il processo aziendale responsabile dell'interazione con l'API di OpenWeather.
- Espandere Meteo: Body Model Out - necessario per distribuire il modello di risposta Body.
- Espandere Weather: Body Model Out_main - espande il modello principale del corpo della richiesta-risposta Body per ottenere la temperatura (temp).
- To String - converte il valore del campo temp in un tipo di stringa;
- Nexmo: Send SMS - invia un messaggio con le informazioni sulla temperatura (Content) al numero di telefono specificato (Phone).
Impostare un pianificatore nella sezione dei processi aziendali della scheda Pianificazione.
Le impostazioni dei pianificatori nella scheda Pianificazione variano a seconda del loro tipo.
Analizziamo ciascuna di esse in dettaglio
1. Giornaliero - consente di configurare pianificazioni giornaliere
- Ora - definisce l'ora in UTC+0 alla quale lo scheduler avvierà il BP selezionato;
- Giorni della settimana - definisce i giorni della settimana in cui lo schedulatore deve lavorare;
- Avvio automatico - se impostato su Vero, un nuovo BP non verrà avviato se il precedente non è stato completato. Valore predefinito: Falso.
- Riprova automaticamente - riavvia automaticamente il processo se è stato interrotto/non è stato avviato con successo.
Riprova elaborazione elementi falliti - numero di tentativi di riavvio del processo;
Attendi prima di ogni tentativo di riprova - tempo di ritardo prima di ogni tentativo di riavvio del processo;
- Force quit - termina forzatamente il processo se non viene completato entro pochi secondi. Vero, per impostazione predefinita. Il numero di secondi fino al completamento è di 3 secondi, per impostazione predefinita.
2. Mensile - pianificatore mensile
- Ora - definisce l'ora in UTC+0 in cui lo scheduler avvierà il BP selezionato;
- Giorni della settimana - consiste in due impostazioni:
Frequenza di ripetizione:
- Ogni primo
- Ogni secondo
- Ogni terzo
- Ogni quarto
- Questo giorno
Giorno della settimana - definisce il giorno della settimana
- Mese - determina il mese
- Avvio automatico - Se impostato su Vero, una nuova PSU non verrà avviata se non completata a breve. Valore predefinito: Falso.
- Riprova automaticamente - riavvia automaticamente il processo se è stato interrotto/non avviato.
Riprova elaborazione elementi non riusciti - il numero di riavvii del processo;
Attendi prima di ogni tentativo - tempo di ritardo prima di ogni tentativo di riavvio del processo;
- Force Quit - Termina un processo se non viene completato entro pochi secondi. Vero, per impostazione predefinita. Il numero di secondi fino al completamento è di 3 secondi, per impostazione predefinita.
3. Periodicamente - consente di configurare in modo flessibile la frequenza dello scheduler.
- Ogni - consente di impostare la ripetibilità ogni N secondi/minuti/ore/giorni. Valore predefinito: ogni 1 ora.
- Avvia automaticamente - se impostato su Vero, un nuovo BP non verrà avviato se il precedente non è stato completato. Valore predefinito: Falso.
- Riprova automaticamente - riavvia automaticamente il processo se è stato interrotto/non è stato avviato correttamente.
Riprova elaborazione elementi falliti - numero di tentativi di riavvio del processo;
Attendi prima di ogni tentativo di riprova - tempo di ritardo prima di ogni tentativo di riavvio del processo;
- Force quit - termina forzatamente il processo se non viene completato entro pochi secondi. Vero, per impostazione predefinita. Il numero di secondi fino al completamento è di 3 secondi, per impostazione predefinita.
4. Dopo l'avvio dell'applicazione - il pianificatore di attività singole
- Ritardo - definisce il ritardo tra l'avvio dell'applicazione e l'avvio. Valore predefinito: 0 secondi
- Riprova automaticamente - riavvia automaticamente il processo se è stato interrotto/non è stato avviato correttamente.
Riprova elaborazione elementi falliti - numero di tentativi di riavvio del processo;
Attendi prima di ogni tentativo di riprova - tempo di ritardo prima di ogni tentativo di riavvio del processo;
- Force quit - termina forzatamente il processo se non viene completato entro pochi secondi. Vero, per impostazione predefinita. Il numero di secondi fino al completamento è di 3 secondi, per impostazione predefinita.
5. Prima di terminare l'applicazione - esegue lo scheduler ogni volta che l'applicazione termina.
- Riprova automaticamente - riavvia automaticamente il processo se è stato interrotto/non è stato avviato correttamente.
Riprova elaborazione elementi falliti - numero di tentativi di riavvio del processo;
Attendi prima di ogni tentativo di riavvio - tempo di ritardo prima di ogni tentativo di riavvio del processo;
- Force quit - termina forzatamente il processo se non viene completato entro pochi secondi. Vero, per impostazione predefinita. Il numero di secondi fino al completamento è di 3 secondi, per impostazione predefinita.
Nella scheda Params delle impostazioni dello scheduler, è anche possibile passare dei parametri all'input di BP quando viene lanciato dallo scheduler:
Nel nostro esempio, le impostazioni dello scheduler sono le seguenti:
- I messaggi saranno inviati ogni giorno alle 9:00 UTC+0
- Tenta automaticamente di riavviare il processo per 3 volte con un ritardo di 10 minuti tra un tentativo e l'altro se il processo non si è avviato immediatamente;
- Termina forzatamente un processo se non è stato completato entro tre secondi.
La nostra applicazione vive e funziona nel backend, quindi per farla funzionare è sufficiente pubblicarla.