Förra veckans nya version av FileMaker innehåller, trots versionsnumret 19.6.1, en stor nyhet: transaktioner. Samt ett gäng förbättringar i olika områden och buggrättningar. Ända sedan FileMaker introducerades på 1980-talet har avsaknad av transaktionshantering i några sammanhang legat programmet till last. I takt med att FileMaker numer allt oftare körs i server-version med flera samtidiga användare är transaktioner viktigare än tidigare.
Transaktioner
Ända sedan databaser började användas på 1960-talet har transaktioner varit viktiga. Syftet är att databasen inte blir delvis uppdaterad, ändringar i databasen som hör ihop ska göras i helhet som en transaktion. Om t.ex. en försäljning av en artikel gjorts ska lagersaldot för artikeln räknas ner, vilket betyder en ändring i tabellen för order och en ändring i tabellen för artiklar. Om strömmen går mitt i eller artikelposten är låst av en annan användare (troligare) ska databasen förbli oförändrad. Ändringar i en transaktion utförs inte förrän allt är klart och kontrollerat, skulle det inte gå återställs alla ändringar såsom det var före transaktionen.
Jag har periodvis använt Microsoft SQL Server där transaktioner är A och O. Inga ändringar i databasen görs utan en transaktion, det sitter i ryggmärgen. Jag brukar föreställa mig ändringar som görs i en transaktion som en "inspelning". Alla nya poster, raderade poster, ändringar i poster som görs i ett script, ser ut att utföras men spelas istället in. Först när allt klart och allt har fungerat, poster ändrats utan fel, poster raderats utan problem m.m. verkställs transaktionen, dvs. alla ändringarna utförs "på riktigt". Alternativet är förstås att inte utföra ändringarna, att återställa databasen så som den såg ut före transaktionen.
Det finns 3 nya scriptsteg för transaktioner som börjar en transaktion, och sedan verkställer eller återställer transaktionen. Öppna transaktion börjar en transaktion, eller startar "inspelningen". Verkställ transaktion utför alla ändringar "på riktigt" medan Återställ transaktion kastar alla "inspelade" ändringar och återställer databasen så som den var före transaktionens början.
Transaktioner är per fönster och kan inte nästlas, dvs. det kan bara finnas en pågående transaktion i taget. En transaktion måste påbörjas och avslutas i samma script. Om något går fel i scriptet avslutas automatiskt transaktionen och databasen återställs. Scriptet fortsätter då på raden efter Verkställ transaktion. Du kan också själv avgöra om du vill återställa med scriptsteget Återställ transaktion.
Det finns sedan tidigare några liknande scriptsteg, Öppna post som låser aktuell post och hindrar andra från att göra ändringar samt Verkställ post/Återställ post som sparar/återställer utförda ändringar i posten. Den stora skillnaden är att de nya transaktionerna kan innehålla ändringar i flera poster i flera olika tabeller, och är mycket enklare.
Observera att det finns inget krav att transaktioner måste användas, alla befintliga script i din databas kommer att fungera precis som tidigare även i version 19.6.
För transaktioner finns också 3 nya funktioner: Get ( TransaktionÖppenStatus ) ger resultatet 1 (sant) om en transaktion är startad, annars 0 (falskt), Get ( SenasteFelDetalj ) (som tidigare hette Get ( SenasteExternaFelDetalj )) ger namn på script, scriptsteg och radnummer för det scriptsteg som gav fel i en transaktion, Get ( SenasteFelPlats ) ger samma resultat om Get ( SenasteFel ) är skiljt från 0.
Exempel
Jag gjorde en databas med ett fält och började skriva i fältet i ett fönster. Öppnade ett nytt fönster och utförde ett script som tilldelade samma fält ett värde. Scriptet ser ut så här:
Eftersom posten är låst i och med att jag börjat skriva i fältet, och inte klickat utanför fältet eller tryckt Enter, kan inte scriptet som tilldelar samma fält i ett annat fönster utföras. I och med att det är en transaktion hoppar scriptet direkt till raden efter Verkställ transaktion, hämtar felet och om det är fel visas en dialogruta som ser ut så här:
Dialogrutan visar att felet uppstod i scriptet Transaktion i scriptsteget Tilldela fält på rad 3.
Om jag inte hade haft med raden Manuell felhantering [På] som första rad i scriptet visar FileMaker först en dialogruta att fältet inte kan tilldelas, med raden visas den inte.
Några andra nyheter
-
Uppdelning av användare i olika grupper i admin-konsollen för FileMaker Server har kommit tillbaka. Tanken är att olika avdelningar på ett företag ska kunna administrera FileMaker Server, men endast se sina egna databaser.
-
Som en följd av det är det numera förvalt att endast visa databaser i dialogrutan Visa värdar i FIleMaker Pro/Webdirect som användaren har behörighet att logga in i.
-
Inloggning med Apple-id i FIleMaker Pro/Go/WebDirect finns nu som alternativ, förutom Microsoft, Google och Amazon sedan tidigare.
-
Det kan finnas fler mappar för backup och container-filer. Det går också att begränsa åtkomst till admin-konsolen till vissa IP-nummer.
-
Maximalt antal användare av WebDirect har ökats från 100 till 120 på varje server, med maximala 5 servrar blir det nu maximalt 600 användare istället för 500. Det gäller dock endast FileMaker Server på Linux.
-
Custom Web Publishing med XML (inte PHP) finns nu också för FileMaker Server på Linux.
Samma nyheter finns i Claris Pro/Claris Server.
Version 20?
Frågan som alla ställer är "när kommer version 20?". Ryktet säger att när FileMaker Pro försvinner och helt ersätts av Claris Pro kommer den första versionen av Claris Pro få version 20. Den som lever får se!
Uppdatering 2022-12-14: En uppdatering som löser problem med hastighet i WebDirect har kommit, version 19.6.2.