« FileMaker Marketplace… | Home | MBS FileMaker Plugin,… »

Neues vom MBS Plugin 9.3


In diesem Artikel möchte ich ihnen die neuen Funktionen vorstellen, die wir ihnen mit der im Juli erschienen Version 9.3 des MBS FileMaker Plugin anbieten.

Neue Funktionen für einen besseren Umgang mit dem Plugin

Vielleicht haben sie sich schon einmal gefragt, wie oft sie eigentlich eine MBS FileMaker Plugin Funktion benutzen. Nun können sie es mit der Plugin.CallCounter Funktion einfach herausfinden. Diese Funktion zeigt ihnen, wie oft sie eine MBS FileMaker Plugin Funktion aufrufen. Der Aufruf dieser Funktion zählt auch als Pluginfunktionsaufruf mit.

Für eine bessere Fehleranalyse des MBS FileMaker Plugin gibt es nun die Plugin.InstallSignalHandlers Funktion. Mit dieser Funktion installieren sie einen Signal-Handler. Mit dieser Hilfe können Fehler einfacher erkannt und gefunden werden. Im Normalfall wird diese Funktion nur aufgerufen, wenn wir sie darum bitten mit uns gemeinsam auf die Suche nach dem Grund eines Absturzes unter Linux oder MacOS zu gehen.

Neue Funktionen für die Fehlersuche

Bei der Fehlersuche wird ihnen nun auch die Trace.SetErrorsOnly Funktion helfen. Wenn sie bei gleichzeitiger Nutzung unserer Trace Funktionen diese Funktion aufrufen, werden nur MBS Aufrufe mitgeschrieben, die einen Fehler melden. Das kann ihnen bei der Fehleranalyse hilfreiche Informationen liefern. Sie können auch während dem Laufen eines Scrips abfragen, ob diese Fehlermitschrift eingeschaltet ist. Dazu rufen sie dann die Trace.GetErrorsOnly Funktion auf. Mit Trace.SetWithTimes notieren sie zusätzlich den Zeitstempel eines Log Eintrages. Trace.GetWithTimes liefert zurück ob diese Funktion in einem Programm aufgerufen wurde.

Ihnen steht bei der Fehlersuche in Kommandozeilen Programmen die Shell.GetArguments Funktion zur Verfügung. Diese Funktion liefert uns eine Liste aller Argumente der Shell. Dadurch können wir überprüfen, ob ein Argument fehlt, das wir benötigen.

Überprüfen von XML Importen

Um ihre XML Importe besser auf Fehler zu untersuchen, bieten wir ihnen nun die XML.Import.Errors Funktion. Diese listet alle Fehler auf und sortiert Fehler aus, die mehrfach auftreten. Mit XML.Import.ErrorCount können sie die Fehler zählen. So können sie auch sehr einfach abfragen, ob überhaupt Fehler während des Imports aufgetreten sind. Wenn der zurück gelieferte Wert dieser Funktion 0 entspricht, sind keine Fehler aufgetreten.

Neues von JSON

Ähnliche Funktionen haben wir auch für den JSON Import entwickelt. JSON.Import.Errors and JSON.Import.ErrorCount helfen ihnen Fehler zu finden.
Eine weitere neue Funktion für JSON ist die JSON.Sort Funktion. Diese Funktion sortiert die Elemente eines Arrays oder eines Objekts. Wenn ihre Eingabe beispielsweise so aussieht: [9, 6, 108, 4, 78, 45, 24, 9388, 788, 167], bekommen sie das folgende Array als Ergebnis zurückgeliefert: [4, 6, 9, 24, 45, 78, 108, 167, 788, 9388].

Sortieren sie alte Verbindungen aus

Die CURL.SetOptionMaxAgeConn Funktion gibt an, wie alt eine CURL Verbindung maximal sein darf, wenn sie genutzt wird. Wenn eine Verbindung älter ist, wird sie gelöscht. Wie lange eine Verbindung genutzt werden darf, legen sie selbst in den Parametern fest.

Vergleichen sie ihre Tabellen

Vielleicht haben sie zwei Tabellen mit Datensätzen, die sie miteinander vergleichen wollen. Testen sie, ob und was sich an den Datensätzen geändert hat, ob Felder hinzugefügt oder gelöscht wurden etc. Das MBS FileMaker Plugin bietet ihnen nun eine neue Funktion, mit der sie diesen Vergleich einfacher und schneller vorziehen können als mit den Bordmitteln von FileMaker. Wenn sie zwei Tabellen haben, die sie vergleichen wollen, können sie dazu die FM.CompareTables Funktion nutzen. In den Parametern müssen sie den Dateinamen, die Tabellennamen und ein Identifizierungsfeld (Primärschlüssel) anhand dessen der Vergleich durch geführt werden soll, jeweils für beide Tabellen angegeben. Sie erhalten als Rückgabe ein JSON Objekt das z.B. so aussehen kann:

{
  "Messages":   [],
  "TableName1":   "Import2PropertyVal",
  "TableName2":   "Import2PropertyVal",
  "FileName1":   "test1.fmp12",
  "FileName2":   "test2.fmp12",
  "RemovedFields":   [],
  "Fields":   ["Hex", "Hex.bytes", "PropertyVal.Name", "_CreationTimeStamp", "_ParentRecordUUID", "_RecordUUID", "test"],
  "AddedFields":   [],
  "RemovedIDs":   [],
  "AddedIDs":   [],
  "ChangedRecords":   {
    "B92DB7FE-2506-4070-A384-BE99AE829EB8":   [{
        "Field":   "Hex.bytes",
        "OldValue":   "",
        "NewValue":   "3"
      }, {
        "Field":   "test",
        "OldValue":   "Hello",
        "NewValue":   "World"
      }],
    "8D9BD00C-C31B-401B-B18C-0BCB0CC9EC73":   [{
        "Field":   "Hex.bytes",
        "OldValue":   "1",
        "NewValue":   "2"
      }],
    "2FED79CC-1BBF-4C5D-96E4-5E42C8454C3A":   [{
        "Field":   "Hex.bytes",
        "OldValue":   "1",
        "NewValue":   "2"
      }]
  }
}



Wir vergleichen die Feldnamen beider Tabellen und vermerken hinzugefügte, gelöschte und gemeinsame Feldnamen.
Dann vergleichen wir die Identifikationsfelder auf hinzugefügte, geänderte und übereinstimmende Werte. Sind alle Identifikationsfelder in den Tabellen identisch, vergleichen wir die einzelnen Datensätze auf Änderungen.
Die Datensätze werden in 100er Blöcken verglichen, um den Arbeitsspeicher nicht zu überlasten.

Neue Freiheit für Bilder in Containern

Mit der neuen Funktion GMImage.WriteToContainer können sie ihr Bild, das sie mit GraphicsMagick Funktionen bearbeitet haben und das ihnen nun durch die Referenznummer vorliegt, in einen Container ablegen. Die neue Funktion ist ähnlich zu den bereits vorhandenen Container Export Funktionen aus der Komponente GraphicsMagick. Das besondere ist, dass sie sich eine beliebige Codierung für ihr Bild, das sie in Container ablegen, aussuchen können.

Lassen sie sich die Version der Zint library ausgeben

Auch neu ist die Barcode.LibVersion Funktion. Mit dieser Funktion wird die Version der Zint library abgefragt. Die Bibliothek wird zum encodieren und decodieren verschiedenster Barcodes benötigt, die sie mit dem MBS FileMaker Plugin erzeugen können.

Informationen zu ihren Texten

Zu dieser Plugin Version haben wir auch zwei neue Textfunktionen hinzugefügt. Mit Text.Styles können sie Informationen zum Stil ihres Textes abfragen. Das Ergebnis wird dann im JSON Format zurückgeben. Eine Ausgabe sieht dann z.B. so aus:

{
    "hasColor":   true,
    "color":   16711680,
    "colorHex":   "FF0000",
    "red":   255,
    "green":   0,
    "blue":   0,
    "alpha":   255,
    "hasFont":   false,
    "hasSize":   false,
    "hasFace":   false
}



Wir bekommen als Ausgabe ein JSON Array mit verschiedensten Werten. Wenn der Text eine Farbe hat (hasColor: true) so wird die Farbe als numerischer Wert, hexadecimal und den einzelnen RGB Werten mit alpha Kanal angegeben. Wenn der Text eine Schriftart hat (hasFont: true) bekommen wir die FontID, fontScript und den Font Namen. Wenn der Text eine Schriftgröße hat (hasSize: true) wird die Schriftgröße in Schriftpunkten (pt) angegeben. Wenn ein Stil angegeben wurde (hasFace: true) werden diese als interner Wert angeben. Wir unterstützen
bold, italic, outline, shadow, condense, extend, strikethrough, smallCaps, superscript, subscript, wordUnderline und doubleUnderline.

Die zweite neue Textfunktion ist Text.FilterUTF16. Diese Funktion findet alle UTF32 characters und ersetzt sie durch einen von ihnen vorgegebenen Text.



Datentypen der Voreinstellungen abfragen

Die Preferences.GetValueType Funktion liefert uns die Datentypen einzelner Voreinstellungen. Es kann folgende Ergebnisse geben: Text, Data, Integer, Double, Boolean, Array or Dictionary. In den Parametern dieser Funktion können sie anhand des passenden Schlüssels entscheiden von welcher Voreinstellung sie den Datentyp abfragen.

Bekommen sie neue Informationen zum Benutzerkonto

Wir haben der neuen Version des Plugins eine Funktion namens SystemInfo.ADSystemInfo beigefügt für die Abfrage des Benutzerkontos für LDAP oder Active Directory. Mit dieser für Windows geschriebene Funktion bekommen sie UserName, ComputerName, SiteName, DomainShortName, DomainDNSName, ForestDNSName, PDCRoleOwner, SchemaRoleOwner, IsNativeMode, DCNam und DCSiteName im JSON Format zurückgeliefert. Dieses sieht z.B. so aus:

{
"UserName": "CN=John Doe,OU=2SH User,DC=2SXXX,DC=2S",
"ComputerName": "CN=2SMBP16W10,CN=Computers,DC=2SXXX,DC=2S",
"SiteName": "Default-First-Site-Name",
"DomainShortName": "2SXXX",
"DomainDNSName": "2SXXX.2S",
"ForestDNSName": "2SXXX.2S",
"PDCRoleOwner": "CN=NTDS Settings,CN=2SDCERP,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=2SXXX,DC=2S",
"SchemaRoleOwner": "CN=NTDS Settings,CN=2SDCERP,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=2SXXX,DC=2S",
"IsNativeMode": true,
"DCName": "2SDCSTORAGE.2SXXX.2S",
"DCSiteName": "Default-First-Site-Name"
}


Wenn ein leeres JSON Objekt zurückgeliefert wird, so ist gerade keine Verzeichnisdienst in Verwendung.
Für macOS können wir prüfen, ob das Programm auf einem Mac mit dem Betriebssystem MacOS 10.15 Mojave oder einer neueren Version läuft. Dazu nutzen wir die Funktion SystemInfo.isCatalina. Wenn dieser Fall zu trifft, erhalten wir als Rückgabe ein 1. Eine Null erhalten wir, wenn es sich um ein älteres MacOS handelt oder um ein anderes Betriebsystem, welches nicht aus dem Hause Apple stammt.

Neue Funktionen für iOS und den Mac

Die MBS FileMaker Plugin Version 9.3 bietet auch weitere neue Funktionen für Mac und iOS an.

Neue Funktionen für die Terminerinnerungen

Wir haben dem Plugin zwei Funktionen für Termin Erinnerungen hinzugefügt. Man kann nun den Fälligkeitstag und den Starttag als Zeitstempel abfragen. Der Aufruf liefert nur dann ein Ergebnis zurück, wenn es sich um eine genaue Angabe handelt. Das bedeutet, dass Datenkomponenten wie „jeden zweiten Freitag nicht ausreichend sind.

Benachrichtigungen für iOS

Zusätzlich haben wir neue Benachrichtigungsfunktionen. Mit UNNotification.Deliver geben sie direct die gewünschte Benachrichtigung aus. Wenn Sie eine Benachrichtigung an einem bestimmten Datum zu einer bestimmten Zeit ausliefern lassen möchten, können sie einen Trigger mit UNNotification.SetCalendarDateTrigger für ihre Benachrichtigung setzen. UNNotification.GetDescription zeigt ihnen technische Details des Framework zu einer speziellen Benachrichtigung an.

Mehr Funktionen für den WebView

Wir haben neue Funktionalitäten für den WebView. Mit WebView.StopLoading kann man das Laden von allen Elementen der aktuell aufgerufenen Webseite stoppen. In Kombination mit der neuen Funktion WebView.HasOnlySecureContent, welche überprüft, ob die Daten aller Elemente einer Webseite aus einer sicheren Verbindung stammen, kann die Anwendung sicherer gestaltet werden. Die Funktion WebView.HasOnlySecureContent kann auch unter Windows angewendet werden, prüft aber nur, ob die zu ladende Seite ein https Protokoll verwendet. Zusätzlich gibt es eine neue Funktion mit der man bestimmen kann, ob zu einer Webseite eine Vorschau angezeigt werden darf. Sie heißt Webview.SetAllowsLinkPreview. Passend dazu kann man den Status dieser Eigenschaft mit Webview.GetAllowsLinkPreview abfragen. Die Voreinstellung erlaubt eine Voransicht.

MapView

Wir haben auch die Funktionalitäten rund um MapView erweitert. Nun können sie einen Script trigger für die Stecknadeln setzen. Dazu benötigen sie die MapView.SetScript Funktion. Wenn eine Stecknadel angeklickt wird, kann ein Skript aktiviert werden. Außerdem können sie mit der MapView.Screenshot Funktion nun Screenshots rendern. Das beinhaltet auch Stecknadeln und übergelegte Elemente.
Ein Screenshot mit der Funktion MapView.Screenshot erstellt:



Wir würden uns freuen wenn diese Funktionen Sie in ihren Lösungen unterstützen können. Gerne können Sie die Funktionen mit einer Testlizenz kostenlos ausprobieren. Lizenzen erhalten sie beim K&K Verlag oder auf unserer Webseite.
Sollten sie unser Plugin betreffend Fragen oder Wünsche haben, kontaktieren sie uns gerne.

von Stefanie Juchmes
13 09 19 - 10:44