FileMaker-scripts tegelijkertijd voor verschillende taken gebruiken

Hoe u meer kunt bereiken met uw FileMaker-scripts


7. April 2021In TipsBy Karsten Risseeuw7 Minutes

FileMaker-scripts worden gebruikt om processen te standaardiseren. Het is de “programmeertaal” van FileMaker, als je wilt. Acties worden meestal geactiveerd door op een knop te klikken. Een script op de achtergrond voert dan de taak uit. Dit maakt het bijzonder eenvoudig om workflows te creëren. Naarmate de applicatie groeit, groeit ook het aantal scripts tot er honderden scripts zijn. Het wordt al snel verwarrend. Veel scripts bestaan vaak maar uit een paar regels. Kan dit worden vereenvoudigd?

Ja, je kunt scripts vereenvoudigen. De volgende procedures hebben voor mij goed gewerkt:

  1. Maak indien mogelijk scripts per lay-out
  2. Groepeer scripts indien mogelijk per tabel
  3. Verschillende kleinere scripts combineren tot één script.

Het basisidee moet altijd zijn om kleinere eenheden te maken die gemakkelijk getest kunnen worden en vervolgens samengevat kunnen worden voor grotere taken.

Controleer alle scripts met if-query’s

Als vuistregel roep ik elk script aan met een scriptparameter. Als je een script aanroept zonder scriptparameters, gebeurt er niets. De functionaliteit zit altijd in een if-query. Dit verhoogt niet alleen de veiligheid, maar maakt het ook mogelijk om één script voor meerdere taken te gebruiken.

Veel scripts voeren slechts kleine taken uit. Ik heb bijvoorbeeld vaak een pagina met instellingen die ik kan aanpassen. Ik kan deze instellingen opslaan en opnieuw importeren. Beide taken (opslaan/lezen) kunnen gemakkelijk in één script worden ondergebracht. Bijvoorbeeld als volgt:

Deze schermafbeelding toont een vereenvoudigde weergave. De naam van het script staat bovenaan. Je kunt hier meer informatie toevoegen als je dat wilt. Daaronder staat een lijst met alle scriptparameters waarmee het script kan worden aangeroepen. Dit dient voor de duidelijkheid en is tegelijkertijd zoiets als een index van het script. De scriptparameters tonen de secties in het script. Pas daarna volgt de eigenlijke functionaliteit.

  1. Naam script
  2. Lijst met scriptparameters waarmee het script kan worden aangeroepen
  3. De werkelijke functionaliteit in als-query’s.

Elke sectie wordt vervolgens weergegeven met een if-query. Als ik bijvoorbeeld presets wil lezen en schrijven in een script, zou het script er als volgt uit kunnen zien:

Als [ Get ( ScriptParameter ) = “write” ]
*** HIER IS DE LOGICA ***
Einde

Als [ Get ( ScriptParameter ) = “read” ]
*** HIER IS DE LOGICA ***
Einde

Dit geeft me een script dat ik kan gebruiken om verschillende taken op te lossen. Dit vermindert het aantal scripts. Ik heb scripts die vaak wel een dozijn kleinere taken uitvoeren. Dit is geen vereiste, maar een manier om je werk gemakkelijker te maken.

Subtaken gebruiken

Met deze aanpak kunnen subtaken netjes worden gescheiden en toch bij elkaar worden gehouden. In plaats van een script met veel subscripts te gebruiken, kunnen de taken misschien worden samengevat in één script. Elke if-query kan een subtaak zijn. Dit houdt de scripts overzichtelijk en je kunt subtaken achter elkaar of afzonderlijk oproepen.

Subtaken kunnen op twee manieren worden geactiveerd:

  1. Je roept hetzelfde script aan vanuit het script met een andere parameter
  2. Een if-query wordt aangevuld met een extra parameter, die verderop in het script wordt opgenomen.

Hier volgt een uitleg van de tweede variant: Natuurlijk moeten scriptparameters worden ingesteld wanneer het script voor de eerste keer wordt aangeroepen. Dit weerhoudt je er echter niet van om altijd de volgende stap in de loop van het script te specificeren – bijvoorbeeld met een variabele.

Als [ Get ( ScriptParameter ) = “write” ]
*** HIER IS DE LOGICA ***
Stel variabele [ $NextStep ; Waarde: “uitvoer” ] in.
Einde

Een variabele met het sleutelwoord “output” wordt ingesteld aan het einde van een if-query. Deze variabele is bedoeld om de volgende stap met de naam “uitvoer” aan te geven. Als deze sectie is opgenomen in een andere if-query, moet de tweede sectie nu worden geactiveerd nadat de eerste sectie is voltooid. Je kunt het bijvoorbeeld zo doen:

Als [ Get ( ScriptParameter ) = “uitvoer” of $NextStep = “uitvoer” ]
*** HIER IS DE LOGICA ***
Einde

De toevoeging aan de if-query is nu zo geformuleerd dat dit deel kan worden geregeld met een scriptparameter of met een lokale variabele uit het script. Dit betekent dat verschillende secties in één keer kunnen worden “verwerkt” zonder dat het script meerdere keren moet worden opgeroepen.

Klopt deze informatie? Dit is misschien niet alleen een kwestie van programmeerstijl, maar heeft ook te maken met het soort projecten waar je aan werkt. Voor mij is de eerste vraag altijd: “Hoe kan ik alles zo eenvoudig mogelijk houden?

Waarom zou je dit gebruiken?

Nadat ik bovenstaande tekst op sociale media had geplaatst, werd de vraag gesteld “Waarom zou je dit gebruiken?”. Ik realiseerde me dat ik niets had gezegd over de redenen waarom ik naar deze structuur was gekomen. Hier zijn een paar woorden hierover:

Ten eerste is het gewoon één (van de vele) methoden om scripts te schrijven. Er zijn geen specificaties. Voor mij waren het verschillende ervaringen die tot deze methode leidden:

De uitdagingen

  1. Ik had honderden scripts in grotere databases. Veel ervan waren maar een paar regels lang.
  2. Ik had vaak dezelfde functie op verschillende plaatsen geïntegreerd of ik had er verschillende scripts voor in gebruik.

“Hoe groter” betekende nu ook “hoe verwarrender”. Daarom had ik de volgende zorgen:

Optimalisatieverzoeken

  1. Verminder het aantal scripts
  2. Overbodige functies vermijden
  3. De algemene structuur van alle scripts vereenvoudigen
  4. Optimaliseer de mogelijkheden van elk afzonderlijk script.

Het idee van modulaire ontwikkeling van FileMaker-functies liet me zien hoe dit mogelijk is. Vooral de volgende benaderingen bleken nuttig te zijn:

Realisatie

  1. Groepeer scripts indien mogelijk per tabel / lay-out
  2. In het ideale geval beperkt u scripts tot uw “eigen” tabellen / lay-outs
  3. Combineer verschillende functies per tabel / lay-out in één script
  4. Elk script heeft daarom verschillende “delen” die kunnen worden geregeld door een scriptparameter.

Moet dit een strikte regel zijn? Nee. Het heeft echter al mijn scripts vereenvoudigd en het aantal scripts drastisch verminderd. Deze methode is voor mij succesvol gebleken.