Koppelingen overslaan

Processen automatisch besturen met een procesmachine.

JQuery

Scripts uitvoeren op FileMaker Server vanuit RuntimeBij gebruik van FileMaker-databases in de Netwerk het kan nodig zijn dat processen op verzoek worden uitgevoerd of automatisch door een cliënt in het lokale netwerk worden gecontroleerd. De toepassingsgebieden van een procesengine kunnen zeer divers zijn. Als uw FileMakerDatabase toegang van buitenaf via WebDirect kun je een procesengine gebruiken om bijvoorbeeld documenten te maken en deze beschikbaar te stellen om te downloaden als PDF-bestanden. Aangezien het proces wordt uitgevoerd op een client in je lokale netwerk, kunnen de aangemaakte bestanden eenvoudig worden opgeslagen op een netwerkschijf binnen het lokale netwerk. Een ander toepassingsgebied zijn zogenaamde cronjobs - d.w.z. processen die door de procesengine op een vooraf bepaald tijdstip en mogelijk met bepaalde tussenpozen worden uitgevoerd. In dit artikel wordt uitgelegd hoe u een eenvoudige procesengine met tijdgestuurde cronjobs en een uitvoeringslogboek in FileMaker kunt realiseren.

Virtuele medewerker met eigen FileMaker-client

Het uitgangspunt voor een procesmachine is uw eigen Mac of Windows-pc met een geïnstalleerde FileMaker-client. In FileMaker wordt slechts één opmaak (aut.tasks) opgeroepen, die wordt aangemaakt met een Script trekker werd verstrekt. Zodra de Tabel van de lay-out aut.processen een nieuwe gegevensrecord wordt aangemaakt, begint de procesmachine met het verwerken van het proces dat in de gegevensrecord wordt geleverd.

Activiteitentabel en logboek als basis

Om processen uit te kunnen voeren en op te slaan als een log, heb je eerst twee nieuwe gegevenstabellen nodig:

  • Processen (1 gegevensrecord = 1 bewerking voor verwerking voor de bewerkingsmachine)
  • Proceslogboek (1 gegevensrecord = 1 bewerking die door de bewerkingsmachine is verwerkt)

De tafel Processen bevat normaal geen gegevensrecords en wordt gevuld met een gegevensrecord onder scriptcontrole op het moment dat de procesmachine een specifiek proces moet uitvoeren. Zodra het proces is uitgevoerd, wordt een nieuw gegevensrecord aangemaakt in het logboek en wordt het gegevensrecord opgeslagen in de Processen weer verwijderd.

De procesmachine luistert...

Om de procesengine in realtime te laten weten dat er een nieuw proces wordt uitgevoerd, hebben we een overeenkomstige lay-out nodig die gegevensrecords bevat uit de tabel Processen wordt weergegeven. In ons voorbeeldbestand heet deze lay-out aut.processen. Deze lay-out heeft een lay-outScript-trigger (BeiDatensatzLaden), die het script voor het verwerken van de bewerking uitvoert zodra een nieuwe gegevensrecord wordt aangemaakt in de Processen zich bevindt.

Lay-out scripttrekker voor procesengine

Als een nieuwe gegevensrecord wordt toegevoegd aan de Processen wordt toegevoegd, voert de procesengine automatisch het script uit leggen. procesmachine met de scripttrekker trigger.layout uit. Voorwaarde hiervoor is dat de procesmachine de hele periode op de baan blijft. aut.processen omdat alleen deze lay-out de scripttrekker heeft ingesteld.

Op de procesmachine kunt u er automatisch voor zorgen dat de client direct na het starten van uw FileMaker database toegang krijgt tot de lay-out. aut.processen veranderingen. Om dit te doen, stelt u een aparte gebruiker in voor de transactiemachine als de standaardgebruiker in FileMaker Pro (Bestand > Bestandsopties, "Aanmelden met".). Als je oplossing een startscript heeft, kun je nu gewoon de gebruiker onderscheppen voor de procesengine en een constructie gebruiken zoals:

Als (Get(AccountName) = "TransactieMachine")
   Ga naar Layout [ "aut.processes" ]
Einde (Als)

Houd er rekening mee dat het afdrukken en maken van PDF-bestanden ook mogelijk is in WebDirect sinds het FileMaker 16 platform. Dus als u FileMaker Server 16 en FileMaker Pro 16 en alleen afdrukken of PDF-bestanden wilt maken in WebDirect, is de hier gepresenteerde oplossing mogelijk niet langer nodig voor uw oplossing.

Drie scripts om alle processen te besturen

Onze FileMaker voorbeeldoplossing bevat drie scripts waarmee alle processen eenvoudig kunnen worden aangestuurd:

leggen. procesmachine - Dit script wordt uitgevoerd door de procesengine zodra de tabel Processen een nieuw gegevensrecord is aangemaakt. De aanroep wordt gedaan via de lay-out aut.processen met de hierboven genoemde opmaak script trigger. Het deel voor het uitvoeren van processen is toegevoegd aan het script met de parameter trigger.layout zodat het mogelijk is om dit script met andere parameters ook voor andere taken te gebruiken.

Aangezien de opdracht die de procesengine moet uitvoeren zich direct in de database bevindt Processen kun je alle procesopdrachten definiëren en ze in dit script laten verwerken. Het basisprincipe is altijd hetzelfde:

Als [ Get(ScriptParameter) = "trigger.Layout" ]

Het script wordt alleen uitgevoerd als het is gedefinieerd met de scriptparameter trigger.layout wordt genoemd.

   Als [ Operations::Command = "Gegevens verzenden" ]

Het volgende script wordt alleen uitgevoerd als de verzonden opdracht Gegevens verzenden leest.

      Uw proces

U kunt elk proces hier programmeren

      Gegevensrecord/query verwijderen [Met dialoog: Uit]

Verwijdert het verwerkte gegevensrecord uit de tabel Processen

      Script uitvoeren [ "ts.process log"; Parameter: ... ]

Voegt een nieuw gegevensrecord in het proceslogboek in, rekening houdend met alle variabelen in het script.

   Einde (als)

Einde (als)

ts.enter_proces - Gebruik dit script om een bewerking in de tabel in te voeren Processen in. Je kunt dit script dus overal vandaan in je database aanroepen. Alle gebruikte commando's kunnen ook worden opgeslagen in FileMaker Go of in WebDirect. In ons voorbeeld accepteert het script vier scriptparameters: Opdracht, e-mail, gegevens-ID en de gebruikersnaam. Deze vier parameters worden gewoon ingevoerd als een nieuw gegevensrecord in de Processen ingevoerd. Natuurlijk kun je dit script individueel uitbreiden en bijvoorbeeld andere sleutels doorgeven, zoals een offerte-ID, factuur-ID of klant-ID. In dat geval moet je de tabel Processen en deze velden ook toevoegen aan het transactielogboek.

Het script heeft een heel eenvoudige structuur: In het eerste deel worden de scriptparameters (gescheiden door een apostrof) in variabelen geschreven. Hiervoor gebruiken we de Aangepaste functie "StringColumns". Je kunt hiervoor ook een andere technologie gebruiken en de parameters bijvoorbeeld als een normale lijst overbrengen, die je in het script kunt lezen met de functie "GetValue ()".

ts.transactielogboek - Zodra het script ts.enter_proces een nieuw gegevensrecord in de tabel Processen is gemaakt en de procesmachine staat op de lay-out aut.processen het proces wordt automatisch gestart door het script leggen. procesmachine wordt verwerkt en de gegevensrecord van de tabel Processen verwijderd. Het script ts.transactielogboek met identieke variabelen om een nieuw gegevensrecord aan te maken in het proceslogboek. De structuur van het script is grotendeels identiek aan het script ts.enter_procesmet het verschil dat de gegevensrecord wordt opgeslagen in het logboek en niet in de tabel Processen wordt gegenereerd.

Stamgegevens voor processen

In sommige gevallen heb je aanvullende stamgegevens nodig voor een proces, bijvoorbeeld om documenten per e-mail te kunnen versturen. Je wilt dan bijvoorbeeld vooraf definiëren welk onderwerp en welke tekst een overeenkomstige e-mail moet bevatten. Voor dit doel hebben we de gegevenstabel Transactie meester gecreëerd. Elke gegevensrecord in deze tabel komt overeen met de stamgegevens voor een proces. De waarde in het veld Naam_proces komt overeen met de naam van een proces zoals die ook wordt gebruikt door het script ts.enter_proces wordt gebruikt.

Processen definiëren in de proces master

Optionele plaatshouders voor e-mails

Indien gewenst kun je in de sjabloonteksten "E-mail subject" en "E-mail text" plaatshouders definiëren, die je in de subscripts van het "lay.process.machine" script kunt vervangen door echte gegevens. In ons voorbeeldscript worden beide teksten gemaakt met SQL-vraag in de variabelen $email_onderwerp en $email_tekst geschreven. Als u bijvoorbeeld een placeholder {naam_klant} wilt vervangen in een tekstsjabloon, voegt u de opdracht 'Vervangen ( )' toe aan de SQL-query in deze twee variabele definities:

Variabele set [$email_text; Waarde: Uitwisseling ( SQL-Query; "{Naam_klant}"; Tabel::Naam_klant) ]

Op deze manier kun je zoveel plaatsaanduidingen gebruiken als je wilt in je e-mailsjablonen, die je kunt definiëren in de variabele definities voor de variabelen $email_onderwerp en $email_tekst kan gemakkelijk worden vervangen door echte gegevens.

Tijdgestuurde processen met cronjobs (plugin vereist)

We hebben ons voorbeeldbestand voor een procesengine ook uitgerust met de optie om tijdgestuurde cron jobs te verwerken. De start- en einddatum, de gewenste tijd en het interval kunnen worden gedefinieerd in de procesmaster. Om deze functie te gebruiken, is het noodzakelijk om de MBS FileMaker Plugins als het commando 'FM.RunScript' nodig is. Als alternatief kan het commando 'BE_ExecuteScript' van de vrije Basiselementen Plugins kan worden gebruikt.

Het monitoringscript instellen op de procesmachine

Alle cronjobs worden bestuurd door het script cron.bewerking machine die je bijvoorbeeld elke tien minuten kunt oproepen via een timerscript. In onze voorbeeldoplossing hebben we een script opgenomen cron.timerscript geïntegreerd, die de uitvoering van het script regelt cron.bewerking machine elke 600 seconden, dus elke 10 minuten. Je kunt dit script integreren in het startscript van je oplossing door bijvoorbeeld de gebruikersnaam op te vragen, zodat de timer automatisch wordt gestart wanneer de gebruiker van de procesmachine is ingelogd.

Het script cron.bewerking machine schakelt eerst naar de lay-out Transactie meester en roept alle actieve cronjobs op. Vervolgens begint een uitvoeringslus waarin voor elke gevonden cronjob wordt gecontroleerd of deze moet worden uitgevoerd. Zo ja, dan wordt de bijbehorende cronjob uitgevoerd.

Voor cronjobs kun je de uitvoering van alle scripts en alle bijbehorende scriptparameters definiëren. Een cronjob voert dus geen subscripts uit van het script leggen. procesmachine maar u kunt elk script inclusief parameters voor een cronjob definiëren in de procesmaster. Een cronjob kan dus theoretisch alle scripts van uw FileMaker-oplossing op tijdgestuurde basis uitvoeren.

Voorbeeldbestand downloaden voor FileMaker 13 tot 16

Ons voorbeeldbestand bevat alle scripts die in het artikel worden genoemd voor integratie in uw eigen FileMaker-oplossingen. De tabel "Gegevenstabel" in de voorbeeldoplossing is alleen voor demonstratiedoeleinden en moet overeenkomen met gegevenstabellen van uw eigen FileMaker-oplossing.

FileMaker-voorbeeldbestand downloaden

Procesengine integreren in gFM-Business

Als onderdeel van een open licentie kunt u dit voorbeeld van een transactiemachine ook eenvoudig integreren in het gFM-Business ERP-systeem. Eigenaars van een gFM-Business Custom-licentie kunnen de functionaliteit van een procesmachine door ons in hun oplossing laten integreren.

Hoe scripts over te zetten van het voorbeeldbestand naar je oplossing

Scripts kunnen eenvoudig van de ene FileMaker-oplossing naar de andere worden overgezet via het klembord. Open gewoon het dialoogvenster Scripts beherenSelecteer het gewenste script met de muis en kopieer het script naar het klembord via het menu [Bewerken - Kopiëren] of toetsencombinatie [Ctrl/Cmd-C].. Open dan hetzelfde dialoogvenster in de doeloplossing en plak eenvoudig het eerder gekopieerde script met de menuopdracht [Bewerken - Plakken]. weer.

Tabellen overbrengen van het voorbeeldbestand naar je oplossing

Tabellen kunnen op verschillende manieren in een bestaande oplossing worden ingevoegd. De eenvoudigste manier is om de tabel te importeren met behulp van de [Importeren...]. in dialoog Database beheren. Alle tabellen die geïmporteerd moeten worden uit de bronoplossing kunnen dan geselecteerd worden in een volgende dialoog. Deze methode is daarom bijzonder geschikt als er meerdere tabellen tegelijk geïmporteerd moeten worden. Als slechts één tabel moet worden geïmporteerd, kan dit ook via het klembord worden gedaan, zoals een script. Als een tabel met alle gegevens moet worden geïmporteerd, kan dit worden gedaan met het commando [Bestand > Gegevensrecords importeren > Bestand]. in de import dialoog. In de importdialoog moet de doeltabel dan Nieuwe tabel moet worden opgegeven.

Om waardenlijsten over te zetten van het voorbeeldbestand naar je oplossing

Waardelijsten kunnen eenvoudig van de ene FileMaker-oplossing naar de andere worden geïmporteerd via het klembord. Open gewoon het dialoogvenster onder [Bestand > Beheren > Waardelijsten]selecteer de gewenste Waardelijst met de muis en kopieer de Waardelijst naar het klembord via menu [Bewerken - Kopiëren]of toetsencombinatie [Ctrl/Cmd-C].. Open dan hetzelfde dialoogvenster in de doeloplossing en plak de eerder gekopieerde waardenlijst met de menuopdracht [Bewerken - Plakken]. weer.

Hoe je je eigen functies uit het voorbeeldbestand kunt overbrengen naar je oplossing

In de dialoog [Bestand > Beheer > Eigen functies...]. op de knop [Import] en selecteer vervolgens het voorbeeldbestand. Selecteer de gewenste aangepaste functies in het volgende dialoogvenster en bevestig het dialoogvenster. Houd er rekening mee dat deze functie alleen beschikbaar is in FileMaker Pro Advanced, maar niet in FileMaker Pro.

Laat een reactie achter

Deel deze pagina:

ERP-software zo flexibel als uw bedrijf.
We geven je graag advies.

Aanpasbare ERP-software voor Mac, Windows en iOS.

U bevindt zich hier: FileMaker-processen automatisch besturen met een procesengine