Task Scheduler in de backend van de AppMaster applicatie creëert, net als in het klassieke geval van de backend, herhalende scenario's. Bijvoorbeeld wanneer u een specifieke actie op een schema moet uitvoeren. Een klassiek voorbeeld van zulke taken is het opschonen van tijdelijke bestanden op de server, wekelijkse back-ups, het genereren van rapporten volgens een bepaald algoritme, enz.
Laten we eens kijken naar een voorbeeld van het gebruik van de taakplanner in de AppMaster applicatie backend. Stel dat u een proces wilt bouwen dat elke ochtend om 9.00 uur de gebruiker het weer naar zijn mobiele telefoonnummer stuurt.
De taak is dus verdeeld in verschillende logische stappen:
- Installeren en configureren van de module voor het verzenden van mobiele berichten
- Creëren en configureren van een extern request API proces
- Het opzetten van een scheduler in de applicatie backend
1. Installeren en configureren van de module voor het versturen van mobiele berichten.Met de Nexmo-module kunt u in de AppMaster-applicatie de mogelijkheid integreren om SMS-berichten naar een geselecteerd nummer te sturen.
- API Key - API sleutel die kan worden verkregen in uw Nexmo account(https://dashboard.nexmo.com/settings);
- API Secret - een privésleutel die samen met de API-sleutel wordt gebruikt om de gebruiker te identificeren. Deze kunt u ook verkrijgen in uw Nexmo-account (https://dashboard.nexmo.com/settings);
- Van nummer - nummer dat tijdens de registratie in uw Nexmo-account is opgegeven.
De volgende bedrijfsprocessen worden automatisch geïnstalleerd bij de installatie van de module:
- Nexmo.Send SMS - hiermee kunt u berichten sturen naar het opgegeven nummer via de
Nexmo module:
- Phone [telefoon] - het telefoonnummer waarnaar het bericht wordt verzonden;
- Inhoud [string] - tekstbericht;
2. De gratis OpenWeather API web resource zal worden gebruikt als bron van weergegevens(https://openweathermap.org/api).De eerste stap is het aanmaken van een extern verzoek API template. API request templates worden gepresenteerd in de Business Process sectie van het External API Requests tabblad. Klik op Create API request om een nieuw template aan te maken.
Type verzoek: GET
Adres verzoek: https://api.openweathermap.org/data/2.5/weather
Query Params:
- Lat [string] - breedtegraad
- Lon [string] - lengtegraad
- Appid [string] - OpenWeather API sleutel
In het kader van deze opdracht zijn we alleen geïnteresseerd in een paar velden van de respons body in de main(https://openweathermap.org/api/one-call-3).
- Temp [float] - temperatuur
- Temp_min [float] - min temperatuur
- Temp_max [float] - maximum temperatuur
- Pressure [float] - druk
- Vochtigheid [float] - vochtigheid
3. Voordat u de taakplanner instelt, moet u een Bedrijfsproces maken dat weerinformatie via de API zal ontvangen. Het bedrijfsproces ziet er als volgt uit:
- Make Weather Query Model In - creëert een virtueel request parameter model. Lon, lat - coördinaten van de gewenste locatie, appid - API key van de OpenWeather service;
- API Request: Weather - het bedrijfsproces dat verantwoordelijk is voor de interactie met de OpenWeather API
- Expand Weather: Body Model Out - nodig om het Body response model in te zetten.
- Expand Weather: Body Model Out_main - breidt het hoofdmodel van de body van de request-response Body uit om de temperatuur (temp) te krijgen.
- To String - converteert de waarde van het temp-veld naar het type string;
- Nexmo: Send SMS - stuurt een bericht met informatie over de temperatuur (Content) naar het opgegeven telefoonnummer (Phone)
Stel een planner in het bedrijfsprocesgedeelte van het tabblad Planning in.
De planningsinstellingen in het tabblad Planning verschillen afhankelijk van hun type.
Laten we ze elk in detail bekijken
1. Dagelijks - maakt het mogelijk dagelijkse planningen te configureren
- 2. Tijd - definieert de tijd in UTC+0 waarop de planner de geselecteerde BP zal starten;
- 2. Dagen van de week - definieert de dagen van de week waarop de planner moet werken;
- Automatisch starten - indien ingesteld op Waar, zal een nieuwe BP niet starten als de vorige niet is voltooid. Standaardwaarde: False.
- Automatisch opnieuw proberen - start het proces automatisch opnieuw als het werd onderbroken/niet succesvol werd gestart.
Retry failed items processing - aantal pogingen om het proces opnieuw te starten;
Wacht voor elke nieuwe poging - vertragingstijd voor elke poging om het proces opnieuw te starten;
- Forceer stoppen - beëindig het proces geforceerd als het niet binnen enkele seconden is voltooid. Waar, standaard. Het aantal seconden tot voltooiing is standaard 3 seconden.
2. Maandelijks - maandelijkse planner
- Tijd - definieert de tijd in UTC+0 waarop de planner het geselecteerde BP zal starten;
- Dagen van de week - bestaat uit twee instellingen:
Herhalingsfrequentie:
- Elke eerste
- Elke tweede
- Elke derde
- Elke vierde
- Deze dag
Dag van de week - bepaalt de dag van de week
- Maand - de maand wordt bepaald
- Auto Start - indien ingesteld op True, wordt een nieuwe PSU niet gestart tenzij deze spoedig wordt voltooid. Standaardwaarde: False.
- Automatisch opnieuw proberen - start het proces automatisch opnieuw als het werd onderbroken/niet gestart
Retry processing failed items - het aantal keren dat het proces opnieuw wordt gestart;
Wacht voor elke nieuwe poging - vertragingstijd voor elke poging om het proces opnieuw te starten;
- Force Quit - Beëindigt een proces als het niet binnen enkele seconden is voltooid. Waar, standaard. Het aantal seconden tot voltooiing is standaard 3 seconden.
3. Periodiek - hiermee kunt u de frequentie van de planner flexibel configureren
- Elke - de mogelijkheid om de herhaalbaarheid elke N seconden/minuten/uren/dagen in te stellen. Standaard: elk 1 uur.
- 4. Automatisch starten - indien ingesteld op Waar, zal een nieuwe BP niet starten als de vorige niet is voltooid. Standaardwaarde: False.
- Automatisch opnieuw proberen - herstart het proces automatisch als het werd onderbroken/niet succesvol werd gestart.
Retry failed items processing - aantal pogingen om het proces opnieuw te starten;
Wacht voor elke nieuwe poging - vertragingstijd voor elke poging om het proces opnieuw te starten;
- Forceer stoppen - beëindig het proces geforceerd als het niet binnen enkele seconden is voltooid. Waar, standaard. Het aantal seconden tot voltooiing is standaard 3 seconden.
4. Na het starten van de app - de eenmalige taakplanner
- Delay - definieert de vertraging tussen het starten van de applicatie en het opstarten. Standaard - 0 sec
- Automatisch opnieuw proberen - herstart het proces automatisch als het werd onderbroken/niet succesvol werd gestart
Retry failed items processing - aantal pogingen om het proces opnieuw te starten;
Wacht voor elke nieuwe poging - vertragingstijd voor elke poging om het proces opnieuw te starten;
- Forceer stoppen - beëindig het proces geforceerd als het niet binnen enkele seconden is voltooid. Waar, standaard. Het aantal seconden tot voltooiing is standaard 3 seconden.
5. Voor het beëindigen van de app - voer de planner uit telkens wanneer de toepassing eindigt
- 6. Automatisch opnieuw proberen - start het proces automatisch opnieuw als het werd onderbroken/niet succesvol werd gestart
Herhaling mislukte verwerking - aantal pogingen om het proces opnieuw te starten;
Wait before each retry attempt - vertragingstijd voor elke poging om het proces opnieuw te starten;
- Forceer stoppen - beëindig het proces geforceerd als het niet binnen enkele seconden is voltooid. Waar, standaard. Het aantal seconden tot voltooiing is standaard 3 seconden.
Op het tabblad Params van de plannerinstellingen is het ook mogelijk om parameters door te geven aan de BP-invoer wanneer deze wordt gestart door de planner:
In ons voorbeeld zien de instellingen van de planner er als volgt uit:
- Berichten worden elke dag om 9 uur UTC+0 verstuurd
- Probeert automatisch het proces 3 keer te herstarten met een vertraging van 10 minuten tussen de pogingen als het proces niet onmiddellijk is gestart;
- Beëindigt geforceerd een proces als het niet binnen drie seconden is voltooid.
Onze applicatie leeft en werkt in de backend, dus om het te laten werken is het voldoende om het te publiceren.