2014

Oct

13

Av Rolf

Sitter du och väntar på att långa manus ska bli färdiga? Kör dem på servern istället så kan du fortsätta arbeta med FileMaker samtidigt som servern jobbar. Det kräver förstås att du har databasen på en server och att de finns på FileMaker Server 13. Manussteget Utför manus på servern är en av nyheterna i FileMaker 13 och en viktig anledning för många att uppgradera från tidigare versioner.

Det är inte alla manus som lönar sig att köra på servern istället för i din FileMaker Pro (eller FileMaker Go). Det måste vara ett manus som tar en stund att köra och som endast innehåller manussteg som är tillgängliga på servern. Det är långt från alla manussteg som kan användas på en server, t.ex. Visa anpassad dialogruta kan inte användas (finns ingen att visa dialogrutan för på servern 🙂 ), inte heller Exportera fältinnehåll eller Importera poster från annan FileMaker-databas m.fl.

Det finns några saker att tänka på när du utför manus på servern.

Tillgängliga manussteg

Du kan se vilka manussteg som inte är tillgängliga på servern i manus-fönstret. Välj Server i menyn Visa kompatibilitet som finns längst ner till vänster i fönstret.

UtforManus1

De manussteg som inte är tillgängliga på servern visas dimmade i listan. Några manussteg är delvis inte tillgängliga, t.ex. de som visar dialogrutor. Det visas då med texten ”EJ KOMPATIBEL” i manuset, men så fort du sätter kryss i t.ex. Visa ingen dialogruta för manussteget försvinner varningen.

UtforManus2

I manussteget Utför manus på servern kan du välja att vänta på manuset eller låta manuset köra på egen hand så att du kan fortsätta arbeta med något annat.

Du kan alltså inte använda något av de dimmade eller icke-kompatibla manusstegen i ett manus som ska köras på servern, de kommer inte att köras och du kommer att få felmeddelande.

UtforManus3

 

Väljer du att vänta på att manuset ska utföras på servern vinner du på att det går snabbare att köra manuset på servern än på din dator, du behöver helt enkelt vänta kortare tid. Du kan också få tillbaka manusresultat från servern på samma sätt som om manuset utförts i din FileMaker Pro.

Väljer du att inte vänta på att manuset ska utföras på servern kan du fortsätta och arbeta med annat under tiden.

Layout, hittade poster och sortering

När ett manus (eller en knapp) kör manussteget Utför manus på servern är det inte så enkelt att det är samma layout och samma urval av poster på servern som när manuset startas från din FileMaker Pro. Varje gång ett manus startas på servern öppnas databasen på nytt på servern, eventuellt utförs ett startmanus och databasen till den layout du valt som startlayout.

Det är upp till dig att se till att samma layout är vald och samma hittade poster visas med samma sorteringsordning som användaren hade i FileMaker Pro. Detta förs inte över med automatik.

Du kan enkelt skicka med layouten som manusparameter och låta manuset på servern byta till layouten det första det gör. För att även skicka aktuellt urval till servern finns några olika metoder.

  1. Enklast är att helt enkelt göra om sökning och sortering på servern. Det är möjligt om du t.ex. ska bearbeta alla dagens poster, alla förfallna fakturor eller något annat som är enkelt att söka fram. Antagligen använder du en manusmall liknande den som jag skrivit om innan.
  2. Har användaren gjort ett manuellt urval av poster måste dessa på något sätt föras över till manuset som körs på servern. Det gör du med en manusparameter.
    Du kan inte skicka med ”all information” om alla hittade poster, men väl ett id-nummer för varje post. Id-numren kan du sedan använda för att söka fram posterna igen på servern. Det finns en ny funktion, ett nytt statistikfält, i FileMaker 13 som du använder för att samla ihop innehållet i ett fält för alla hittade poster.
    Skapa ett statistikfält av typen ”Lista över” och välj fältet för id-nummer för listan. Innehållet i statistikfältet skickar du sedan med som manusparameter i manussteget Utför manus på servern.
    Det finns dock begränsningar för hur mycket data en manusparameter kan innehålla, den här metoden använder du bäst om du har ett mindre antal poster valda.

En tabell i databasen innehåller t.ex. följande tre fält:

UtforManus6

 

Användaren gör ett urval och id-numren för de hittade posterna beräknas i statistik-fältet Hittade_id som skickas med som parameter.

UtforManus4

 

Manuset på servern tilldelar ett globalt fält alla id-nummer som kommer som manusparameter. Med manussteget Gå till relaterade poster söks enkelt samma poster fram på servern (gå till rätt layout först). Det behövs förstås en relation mellan fältet gId och id-nummer-fältet i tabellen.

UtforManus5

 

 

  1. Använd en speciell tabell där du sparar alla id-nummer som behövs för att återskapa urvalet i en post och skicka endast id-numret för posten i den speciella tabellen som manusparameter. Det har fördelen att du enkelt kan använda manussteget Gå till relaterade poster när manuset körs på servern för att snabbt få fram aktuellt urval. Dessutom kan posten användas för loggning av vad manuset på servern gör (mer on detta längre fram).

Behörigheter

Databasen öppnas på servern med samma användare och samma behörigheter som den användare som startade manuset.

Start- och stängmanus

Ofta innehåller startmanus en mängd manussteg för att t.ex. tilldela globala värden, byta till lämplig startlayout mm. Det är inte säkert att allt det behövs när du utför ett manus på servern. Det är smart att kontrollera om startmanuset körs på servern eller med FileMaker Pro och endast utföra de nödvändiga manusstegen när det körs på servern.

Du kontrollerar vilket program som öppnar databasen med funktionen Get (Programversion) som jag skrev om för någon vecka sedan. Detsamma gäller förstås om du har definierat ett ”stängmanus” (som körs när databasen stängs) i databasen.

Uppdatera användaren

Det dröjer inte länge förrän användaren undrar vad som händer med manuset på servern. Är det klart? Gick det bra? Manuset behöver uppdatera någon form av logg eller fält så att användaren kan se när manuset på servern blir klart och få reda eventuella problem.

Ett sätt är att uppdatera t.ex. en räknare som visar antal bearbetade poster eller liknande i en post. Eftersom servern kan uppdatera samma post som du tittar på i FileMaker Pro får du enkelt ett bevis på att något händer på servern. Det går förstås också att skriva i en speciell loggtabell, något jag ofta använder själv. Jag använder då en metod som jag skrivit om innan (var det verkligen 8 år sen?) för att skapa poster i en annan tabell.

Admin-konsollen

Du kan också se att manuset körs i admin-konsollen för servern. Där kan du också avbryta det om det mot förmodan skulle gå i evig loop eller på något annat sätt inte avslutas.

Kan jag köra manus på servern om jag inte har version 13?

Ja, faktiskt! Det är dock inte lika enkelt och elegant som i version 13. Du får använda kommandona i XML eller PHP för att starta manus på servern. Kräver förstås att du har en webbserver.

Skriv en kommentar

Din epost-adress stannar hos oss.