Om att köra scripts på FileMaker Server och FileMaker Cloud

Script i filer som finns i FileMaker Server och FileMaker Cloud körs vanligtvis på klienten. Du kan dock köra ett script på servern (ett script på serversidan) genom att använda:

Hur script på serversidan körs annorlunda

Ett script som startas av dessa metoder körs av FileMaker Script Engine (FMSE), en komponent av FileMaker Server och FileMaker Cloud. FMSE är en klient som kör varje script i en separat session på servern. Det leder till att script på serversidan:

  • inte har klientens sammanhang (aktuell layout, hittade poster, sorteringsordning, post, fält som använder global lagring och lokala eller globala variabelvärden)

    Du kan skicka information om klientens sammanhang till ett script på serversidan med hjälp av scriptparametern i scriptsteget Utför script på server. Scriptet på serversidan kan använda den informationen i scriptsteg som Scriptsteget Gå till layout och Scriptsteget Utför sökning för att ange vilken layout och vilka hittade poster som det ska agera på.

  • har stöd för scriptparametrar och scriptresultat på upp till 1 miljon tecken

  • kan bara komma åt andra FileMaker Pro-filer när följande stämmer:

    • filerna finns hos samma värd

    • filerna har redan öppnats av den klient som startade scriptet på serversidan, eller ställts in med ett kontonamn och lösenord som anges i filens dialogruta för filtillval

Script på serversidan körs på samma sätt oavsett hur de startas, förutom följande:

  • En klient som använder scriptsteget Utför script på server kan vänta på att scriptet körs klart på servern och använda Funktionen Get ( Scriptresultat ) för att samla in resultatet.

  • Ett schema kan ställas in för att avsluta om det script som körs överskrider den angivna tiden.

Hantera scriptsteg som inte stöds

Många scriptsteg stöds av FMSE. Om du däremot försöker utföra ett scriptsteg som inte stöds returneras fel 3 (Kommandot är inte tillgängligt). Scriptet hoppar över de steg som inte stöds och fortsätter till nästa. Om du vill hantera steg som inte stöds kan scriptet använda If-scriptsteget med:

  • Funktionen Get ( SenasteFel ) efter ett steg för att kontrollera om steget inte stöds och utför sedan de steg som stöds istället. Scriptsteget Öppna fil stöds till exempel inte av FMSE, så följande script som körs på servern kommer att hoppa över det steget och returnera "stöds inte" i resultatet.

    Kopiera
    Öppna fil [Öppna gömt: Av ; "Fakturasäkerhetskopior"]
    If [ Get( SenasteFel ) = 3 ]
        Avsluta script [ Textresultat: "stöds inte" ]
    End If

  • Funktionen Get ( Programversion ) före andra steg för att kontrollera om scriptet körs i FileMaker Server eller FileMaker Cloud och utför sedan bara de steg som stöds. Till exempel:

    Kopiera
    If [ PatternCount ( 
    Get ( Programversion ) ; "Server" ) > 0 ] 
        # Fortsätt med scriptsteg som stöds av FMSE End If

Om du vill se vilka scriptsteg som stöds av FMSE går du till Scriptfönster i FileMaker Pro. Öppna ett script, klicka på Kompatibilitetsknapp och välj sedan Server. Scriptsteg som inte stöds visas i en annan färg. Du kan även referera till kompatibilitetstabellen för varje scriptsteg i Scriptsteg.

Anledningar till att köra ett script på servern

  • för att förbättra prestandan genom att minska mängden nätverkstrafik mellan klient och server

  • för att avlasta långvariga uppgifter från långsammare klienter till en snabbare server

  • för att tillåta att FileMaker Go-klienter utför uppgifter som kräver plugin-program, vilket stöds på FileMaker Server men inte i FileMaker Go

  • för att använda scriptstegen Importera poster eller Utför SQL med en ODBC-datakälla som använder serverns DSN

Kommentarer 

  • Om poster är låsta av en klient kan inte scripts som utförs på serversidan komma åt icke-verkställda data eller ändra innehållet i sådana poster.

  • När du kör script på serversidan öppnas och stängs de filer som innehåller scripten. Därför är scripttriggern VidFörstaFönsterÖppna aktiverad när scriptet startar och scripttriggern VidSistaFönsterStäng aktiveras när scriptet avslutas.

  • Script på serversidan kan använda Scriptsteget Utför script för att utföra delscript som körs i samma FMSE-klientsession. Det gäller bara om dessa delscript finns i filer på samma server. När en klient använder scriptsteget Utför script på server för att köra ett script som utför delscript i en annan fil, måste filen som innehåller delscripten dessutom redan ha öppnats av klienten.

    Script på serversidan kan också använda scriptsteget Utför script på server på ett liknande sätt, förutom att det anropade scriptet körs i en separat FMSE-klientsession. Alternativet Vänta på att avsluta fungerar på samma sätt som i ett script som körs av en FileMaker Pro-klient, och skickar ett scriptresultat eller en felkod tillbaka till anroparen, i det här fallet den anropande FMSE-klienten. Men om det här alternativet är inaktiverat kan det anropande scriptet fortsätta köras och det anropade scriptet kan köras i sin egen tråd.

  • Script på serversidan kan också använda scriptsteget Utför script på server på ett liknande sätt, förutom att det anropade scriptet körs i en separat FMSE-klientsession

  • Script som körs av Utför script på server använder samma konto som klienten. Script som körs av ett schema använder det konto som anges i schemat.

  • Script på serversidan kan inte göra så att en FileMaker-klient visar varningsmeddelanden som när script körs på klienter, så script på serversidan utförs alltid som om Scriptsteget Manuell felhantering vore På. Använd Funktionen Get ( SenasteFel ) i script på serversidan för att hantera fel. För att hjälpa dig att felsöka problem skrivs även fel i händelseloggen i FileMaker Server och FileMaker Cloud.

  • Klienter kan inte stoppa script på serversidan. Ett script på serversidan kan dock stoppas om:

    • en serveradministratör stoppar scriptet, vilket visas som en separat klient som kan kopplas från i Admin Console för FileMaker Server eller FileMaker Cloud

    • scriptet som körs överskrider den tid som angetts i det schema som startade det

    • scriptet stöter på ett okänt scriptsteg (mer information finns i Scriptsteget Tillåt användaren att avbryta)

    Mer information finns i FileMaker Server Hjälp och FileMaker Cloud Hjälp.

  • I script på serversidan returnerar funktioner som är relaterade till maskinvara, till exempel Get ( SystemIPAdress ), information från databasserverkomponenten i FileMaker Server och FileMaker Cloud, inte från klienten.

  • När det gäller script på serversidan är filåtkomsten begränsad till dokumentmappen och den tillfälliga mappen. Mer information finns i Sökvägar i script på serversidan.

  • I script på serversidan kan scriptsteg med tillvalet Med dialogruta aktiverat inte visa dialogrutor och kan eventuellt returnera ett fel. Undvik felet genom att stänga av Med dialogruta i script på serversidan.