Jobs en planning
Een job is een script dat op de achtergrond draait: elke week een herinnering sturen aan wie een negatief saldo heeft, elke nacht de statistieken herberekenen, na elke wijziging aan een persoon een synchronisatie. Je stelt ze in onder Instellingen › Job › Job types.
Een jobtype
Section titled “Een jobtype”| Instelling | Betekenis |
|---|---|
| Naam | Scripts starten de job met deze naam. |
| Omschrijving, categorie | Voor jezelf. |
| Referenced entity | Het veld van de job dat het record bevat waarover de job gaat (bv. een persoon). Voeg daarvoor eerst een veld van het type entity toe aan Job (bv. persoon → personen); in het script is het dan job.persoon. |
| Cron-expressie | Optioneel: wanneer de job vanzelf start, bv. 0 8 * * 3 (elke woensdag om 8 uur). |
| Van toepassing op | Een filter: voor welke records er een job komt. Tabbr toont live hoeveel records er nu in aanmerking komen. |
| Zichtbaar voor | Wie de jobs ziet in de sectie Jobs op een record. |
| Script | Wat de job doet. Wat de laatste expressie oplevert, wordt bewaard als resultaat. |
Met een cron-expressie én een gekoppelde entiteit start Tabbr op het schema één job per record dat aan de filter voldoet. Zonder gekoppelde entiteit is het één job.


Hoe een job start
Section titled “Hoe een job start”- vanzelf, op de cron-expressie;
- vanuit een script:
jobUtils.triggerJobForEntity('Naam van het jobtype', record)— de job start na het bewaren; - met de hand: de actie Trigger job op een record, of Opnieuw uitvoeren op een job.
Een job heeft een status: PENDING → RUNNING → COMPLETED of FAILED (met de fout). Elke job draait apart, in zijn eigen transactie: een fout in de ene raakt de andere niet.
Voorbeelden
Section titled “Voorbeelden”const date = new Date()date.setDate(date.getDate() + 2)const signups = select().from('signup').where(filter('activity:date', EQ, date)).execute()signups.forEach(s => { if (s.owner != null && s.owner.isEntity()) { sendEmailByTemplate('Herinnering aanmelding', s.owner, s) }});({ emailCount: signups.length })function onUpdate() { jobUtils.triggerJobForEntity('ZweefApp persoon sync', person)}