Script dispatching met het FMP-protocol

je kan tijdens het scripten in FileMaker van alles aanroepen en bewerken door de naam op te geven: ga naar layout, veld instellen op naam, evalueer, ga naar object etc.

Nu vroeg iemand in de FileMaker Community waarom je scripts niet dmv een variabele een script kan starten. Ik heb daar even over nagedacht en dit zou je prima kunnen doen met het FMP-protocol.

Er zijn wel een paar valkuilen waar je rekening mee moet houden, maar op zich kan het goed werken. Voordat we de valkuilen bespreken, kijken we eerst naar hoe dit in zijn werk gaat.

Werking

De werking van het FMP-protocol staat mooi uitgelegd in de help-documentatie van FileMaker 16. Alle oudere versies kunnen er ook mee omgaan. Het voorbeeld waar ik het voor wil gebruiken is om in het geopende bestand (al of niet vanaf een FM-Server geopend) met alleen een parameter een script aan te roepen.

Het gebruikte commando is open-url, staat in één enkel script dat je vanaf knoppen in layouts aanroept en het heeft als inhoud:

“fmp://$/” & Get ( FileName ) & “?script=” & Get ( ScriptParameter )

Op de layout staan knoppen die allemaal dit script aanroepen. Het enige dat jij als programmeur doet is een script-parameter meegeven met de juiste script-naam.

Beveiliging

Om alles te laten werken en fouten goed te behandelen, moet is er wat error-trapping nodig en je moet rekening houden met privilege-sets en uitgebreide privileges (extended privileges). Sinds FM16 is er bijvoorbeeld het uitgebreide privilege “fmpurlscript” dat aan moet staan om het FMP-protocol te kunnen gebruiken.

Voor oudere versie kan je dat uitgebreide privilege prima zelf definiëren. Je moet dan de beveiliging daarop nog wel zelf programmeren. In het voorbeeld bij dit artikel heb ik dat ook gedaan. Het bestand start automatisch op als “[guest]” en dan is het FMP-protocol uitgeschakeld (ook oudere versie van FMP), klik je op een knop, dan krijg je een foutmelding.

Zelf testen

Je kan dan in het menu “File”/”Bestand” kiezen voor de optie “Re-login”. Inloggen als de gebruiker “Admin” en het nogmaals proberen. Je hoeft FM of het bestand niet af te sluiten. Hieronder kan je de demo downloaden:

 

FMP_Protocol

 

Veel plezier met verkennen en vragen kunnen uiteraard worden gesteld op Clarify

 

EDIT: FileMaker 17

Met de komst van FM 17 is er de script-stap “Perform-Script by name” en dan is deze manier van werken niet meer nodig. Zie ook de help van FileMaker.