Category: FileMaker

  • FileMaker 2025 ! Les nouveautés

    FileMaker 2025 ! Les nouveautés

    [vc_row bg_color=””][vc_column][vc_column_text]

    Claris vient d’annoncer la sortie de FileMaker 2025 (nom commercial de la version 22). Comme il est de coutume, vous retrouverez dans cet article les nouveautés et un point de vue critique pour, d’une part, essayer d’analyser la direction prise, et d’autre part vous permettre d’appréhender ces nouveautés.

    Généralités importantes

    Commençons par quelques remarques très importantes à lire avant de franchir le pas.

    • FileMaker Server 2025 ne permet les connexions que depuis FileMaker Pro 2024 (21) et 2025 (22). Attention donc si vous avez encore des parcs avec de plus anciennes versions
    • En revanche, à partir de la 22, la mise à jour inApp supportera les versions majeures. Cela simplifiera le maintien à jour du parc logiciel.
    • Très important – et qui ne facilitera pas les transitions si, justement, vous avez des versions disparates : sous Windows il sera désormais impossible d’installer FileMaker Pro 2025 aux côtés de plus anciennes versions. FileMaker Pro 22 devrait remplacer les anciennes versions (je n’ai pour ma part pas testé cela, n’hésitez pas à réagir pour compléter cette information).
    • À prendre en compte avant de faire la mise à jour de votre serveur, si vous utilisez OData : il y a de grandes améliorations mais aussi quelques changements qui pourraient perturber les systèmes existants (voir paragraphe sur FileMaker Server en fin d’article)

    Aussi, c’est la première fois que les interfaces pour Windows et pour Mac divergent. La version mac apporte de nombreuses nouveautés qui tendent à se rapprocher des applications Apple telles que Keynote, Pages ou Numbers – mais cela concerne la partie “développeur” (on reviendra dans le détail). Mais c’est aussi l’interface utilisateur qui change avec la nouvelle barre d’outils. J’avoue ne pas bien comprendre ce qui empêchait de remplacer les icônes sur PC également afin de maintenir une cohérence.

    [/vc_column_text][/vc_column][/vc_row][vc_row bg_color=””][vc_column][vc_column_text]

    IA, IA, IA

    Déjà largement présente avec la version 21 (on l’a peut-être oublié, mais l’IA est au sein de FileMaker depuis la version 19 en 2020 avec CoreML), l’intelligence artificielle est la grande star de cette version 2025.

    Je ne vais pas ici rentrer dans le détail de l’implémentation car elle comporte d’innombrables fonctions et pas de scripts – pour une lecture détaillée des nouveautés, je vous recommande toujours la lecture des notes de version publiées par Claris – mais de manière générale on peut dire ceci :

    • on est dans la continuité de ce qui était déjà présent en version 21, à savoir une priorité donnée à l’utilisateur final pour interagir avec les données, plutôt qu’un mode “agentic” permettant au développeur de générer du code ou des interfaces automatiquement. Personnellement, cela me semble être la bonne stratégie, le “code” FileMaker étant déjà si rapide à produire, mais on peut déduire des immenses progrès faits dans la représentation XML d’un fichier (grosses évolutions du XML quand on sauve une copie en XML, avancées de l’utilitaire Upgrade Tool, intégré à FileMaker Server…) que Claris est en train de préparer l’arrivée de l’assistant au développeur.
    • les principales nouveautés sont :
      • RAG (pour limiter les réponses d’un LLM à des informations trouvées dans un corpus de données précis (vos documents, votre site web…) afin d’obtenir des réponses précises et d’éviter les hallucinations.
      • recherche sémantique (texte et images) côté serveur
      • génération de requêtes SQL en langage naturel
      • implémentation des modèles directement sur FileMaker Server. Certains modèles sont même livrés avec l’installeur de FileMaker Pro pour une encore plus grande facilité.

    Sur ce dernier point, qui se caractérise par un nouvel onglet de la console d’administration du serveur, d’où l’on peut activer des modèles d’IA installés localement, on peut contester la pertinence. En effet, si cela a l’immense avantage d’être ultra-simple, il est très difficile, voire impossible, de contrôler la répartition des ressources entre en les modèles d’IA et FileMaker Server lui-même. Ainsi, à moins d’utiliser un serveur local grandement fourni en RAM et en VRAM – un mac Studio par exemple -, on peut très vite pénaliser l’exécution normale de FileMaker Server. On peut parier que dans un avenir proche, une machine secondaire pourra être désignée pour faire tourner l’IA, à l’image de ce que l’on peut déjà faire avec Web Direct. Pour l’heure, les principaux services d’hébergement, dont notre service fmcloud.fm, ont choisi de masquer cet onglet et de ne le proposer que dans des configurations “custom”.

    [/vc_column_text][vc_column_text]

    Localisation en français revue

    C’est un petit point, mais qu’il fallait bien mentionner quelque part : j’ai proposé à Claris de revoir un grand nombre de traductions et d’abréviations inutiles qui étaient présentes dans l’interface en français. Un grand nombre de ces modifications ont été appliquées, pour une plus grande clarté et une meilleure cohérence. La plupart de ces modifications vous sembleront parfaitement naturelles et vous ne les remarquerez même pas. J’attire toutefois votre attention sur les fonctions ObtenirTexteDynamique et ObtenirTexteDynamiqueEnJson où “TexteDynamique” remplace “TexteEnDirect” pour respecter la traduction d’Apple de sa technologie LiveText, mais qui pourrait vous laisser chercher ces fonctions longtemps.

    [/vc_column_text][vc_column_text]

    Navigation dans les ensembles trouvés (found sets)

    Immense nouveauté : la possibilité de mémoriser et restituer une liste d’enregistrements, en utilisant l’ID interne des enregistrements, tels que retournés par la fonction Get ( RecordID ) / Obtenir ( IDenregistrement )

    La fonction GetRecordIDsFromFoundSet ( type ) / ObtenirIDEnregistrementDansJeuTrouvé retourne un texte ou un tableau JSON (array) en fonction du paramètre type.

    [/vc_column_text][ish_table header_bg_color=”color2″ border_color=”color5″]

    Valeur du paramètre Forme du résultat
    0 liste d’IDs séparés par un retour chariot – ¶ ou Char (13) : 75¶76¶77¶78¶79¶81¶83¶87¶88¶89
    1 tableau JSON des IDs sous forme de strings (je ne comprends pas l’intérêt)
    2 tableau JSON des IDs sous forme de nombres
    3 liste des intervalles séparés par un retour chariot : 75-79¶81¶83¶87-89
    4 tableau JSON des intervalles

    [/ish_table][vc_column_text]

    Retenez les points suivants :

    • la fonction retourne un résultat immédiat, car elle ne fait pas appel à la “couche” données. Aucun téléchargement de données entre le serveur et le client n’est nécessaire
    • l’ordre de tri est respecté, mais il n’existe aucune information de contexte (ni table, ni modèle, ni… ordre de tri : les enregistrements sont dans le bon ordre mais on n’a pas les critères de tri).
    • il n’existe pas de fonction pour passer d’une notation liste (ou tableau) à son équivalent avec les intervalles, et vice versa. Il faut donc savoir ce que l’on veut faire lors de la restitution dès le moment de sa mémorisation (pour une restitution simple, la notation avec les intervalles est bien plus efficace (prend beaucoup moins de place), mais si vous comptez utiliser l’action de script Activer les enregistrements liés, alors vous avez besoin de la liste complète des IDs.

    Restitution : comme il est logique, la restitution de cet ensemble d’enregistrements se fait avec l’action de script Go to list of records, qui prend en paramètre n’importe quelle variante du résultat de la fonction ci-dessus, et permet de sélectionner le modèle de destination et d’ouvrir une nouvelle fenêtre.

    L’utilisation de ce pas de script ainsi que la gestion d’erreur a été harmonisée avec Activer les enregistrements liés.

    Remarque : si l’ordre de tri n’est pas l’ordre naturel, soit que les enregistrements eussent été triés à l’origine, soit que l’on aura manipulé l’ordre “manuellement”, par exemple avec un calcul du type : “3¶1¶2” – car oui, il est possible de définir un ordre qui ne pourrait être obtenu par un tri naturel – alors l’ensemble restitué sera semi-trié. C’est très important car, ne disposant pas des critères de tri à l’origine, FileMaker ne peut véritablement trier. Il faut donc prendre en compte que les sous-récapitulatifs après tri ne seront pas affichés, ou que la fonction GetSummary / Recapitulatif ne fonctionnera pas.

    Pourquoi est-ce si important ?

    • En combinaison avec l’exécution de scripts sur serveur et aux transactions, il devient extrêmement aisé de déléguer au serveur le traitement d’un ensemble d’enregistrements. Cette fonction personnalisée (c’est cadeau !) vous permettra de plus d’inclure plus d’information sur l’ensemble trouvé.
    • Vous pouvez mémoriser facilement de nombreux ensembles, afin, par exemple, de revenir en arrière dans un historique de navigation
    • Bien que toutes les fonctions d’un snapshot ne soient pas présentes (tri, alerte en cas d’enregistrements supprimés…), il est possible de communiquer un ensemble d’enregistrements, et ce sans faire appel au système de fichier. Ainsi, c’est utilisable en Web Direct.

    [/vc_column_text][vc_column_text]

    Remplacer contenu de rubrique sans exécuter les auto-entrées

    Pour moi, c’est ici la nouveauté la plus “révolutionnaire”. Elle figurait en tête de mes “feature requests” depuis bien longtemps. On peut maintenant, uniquement dans le cadre d’un script, éviter l’exécution des auto-entrées lors du remplacement du contenu d’une rubrique (Replace Field Contents).

    Cas d’utilisation :

    • Après une migration de données d’une ancienne application à une nouvelle : corrigez les données sans modifier les horodatages de modification.
    • Populez une nouvelle rubrique sur les anciens enregistrements.

    Conseil :

    Si vous avez un menu personnalisé pour les développeurs, remplacez la commande Remplacer par un script avec une seule instruction : Remplacer contenu rubrique. Ainsi, en tant que développeur, vous aurez la possibilité de cocher ou non la case pour exécuter les auto-entrées.

    Remarque : Nous avons désormais trois pas de scripts permettant d’éviter les auto-entrées : Importer enregistrements, Ouvrir transaction, Remplacer contenu rubrique.

    [/vc_column_text][vc_column_text]

    JSONParse

    Cette nouvelle fonction de calcul permet de stocker dans une variable, à côté de la classique représentation texte d’un objet (ou tableau) JSON, un réel objet JSON, permettant des traitements nettement (vraiment très très nettement !) plus rapides.

    Exemple d’utilisation :

    Soit $json contenant du JSON, par exemple un tableau dans lequel nous allons effectuer une boucle (par script ou avec la fonction While / TantQue.

    Définir Variable [ $json ; JSONParse ( $json )] retourne une variable $json inchangée quand on l’exploite avec des fonctions texte ou nombre (par exemple : Longueur ( $json ) ou Debut ( $json ; 1 )), mais qui contient également un véritable objet JSON, permettant aux fonctions JSON, notamment JSONGetElement d’agir beaucoup, plus vite.

    D’autre part, la fonction JSONParsedState ( $json ) permet de savoir si la variable $json contient un objet/tableau JSON, et si oui de quel type (3 pour objet, 4 pour tableau).

    [/vc_column_text][vc_column_text]

    Insérer texte : la limite de longueur supprimée

    Depuis que la cible de ce pas de script peut être une variable, ce pas de script est de retour en grâce car il permet d’introduire une constante de texte sans utiliser le moteur de calcul, et donc sans échapper les guillemets et autre retours chariot.

    Mais la limite de longueur de 30 000 caractères pouvait parfois être un problème. C’est désormais résolu, la limite est désormais de 250 000 000 (deux-cent-cinquante millions). Attention, si vous utilisez le plugin MBS sur mac, pensez à le mettre à jour, de longues variables pourraient le faire planter (c’est de toute façon une bonne idée que de le maintenir à jour).

    [/vc_column_text][vc_column_text]

    Dossiers dans les fonctions personnalisées

    Dans le même genre d’idée, on peut désormais regrouper les fonctions personnalisées par dossiers. Malheureusement, cette nouveauté se fait au détriment de la possibilité – indispensable à mes yeux – de trier les fonctions, soit par ordre alphabétique, soit par ordre de création.

    La possibilité nouvelle de rechercher dans les fonctions personnalisées ne vient que très partiellement pallier cet inconvénient.

    Plus grave, le fait de créer des dossiers avec la version 2025 (22) rendra la gestion des fonctions impossible avec les versions antérieures. En combinaison avec le fait que la version 2025 ne peut plus cohabiter, sous Windows, avec d’anciennes versions, c’est hautement problématique.

    De plus la fenêtre de gestion des fonctions personnalisées semble avoir été faite par un stagiaire, avec des boutons rectangulaires comme on n’en trouvait plus que dans la gestion des modèles – partout ailleurs nous avons des boutons arrondis), mais sans respecter la taille de police ou la marge. (à gauche, la fenêtre de gestion des modèles, à droite celle des fonctions personnalisées)

    [/vc_column_text][vc_column_text]

    Espace de travail de script : code repliable

    On peut désormais plier/déplier des partie de code dans les scripts, notamment à chaque fois qu’un pas de script provoque l’indentation (Si, Sinon, Fin de si, Boucle, Ouvrir transaction…).

    Note : à propos d’indentation, le comportement a changé : les pas de script désactivés ne modifient plus l’indentation, facilitant ainsi la lecture d’un script dont certains pas de script on été désactivés.

    [/vc_column_text][vc_column_text]

    Un SQL plus puissant

    De nombreuses améliorations ont été apportées à l’interface SQL utilisée par ODBC ou les plugins. Grâce à la mise à jour de la bibliothèque utilisée, on peut désormais utiliser les intervalles, les clauses IN, ALTER…

    On peut donc désormais facilement renommer un champ (par exemple) avec un plugin capable d’exécuter une requête SQL (MBS, BaseElements…) et une requête ALTER.

    FETCH NEXT facilitera les systèmes de pagination.

    Autre amélioration, dont bénéficie aussi la fonction de calcul ExecuterSQL : on a désormais accès à une nouvelle table système : FileMaker_ValueLists, ainsi, pour les listes non relationnelles, qu’à leurs valeurs FileMaker_ValueList_{NomDeLaListe}

    [/vc_column_text][vc_column_text]

    Extraire le texte d’un PDF

    Une nouvelle fonction de calcul permet d’extraire le texte d’un PDF stocké dans une rubrique conteneur.

    Attention, il ne s’agit pas de magie ou d’OCR, simplement de l’extraction de la couche texte du PDF, et c’est déjà très bien.

    [/vc_column_text][vc_column_text]

    Nouveautés de la gestion de base de données

    Cette interface apporte plusieurs nouveauté :

    • à l’image de ce qui était possible au niveau des rubriques, il est désormais possible d’ajouter un commentaire au niveau des tables. Chouette !… sauf que Claris a oublié de nous donner la fonction de calcul correspondante !
    • le type de résultat des rubriques Calcul est affiché dans la liste des rubriques. Enfin ! Malheureusement l’icône à gauche des rubriques dans l’éditeur de calcul ne distingue pas, elle, les différents types. Mais c’est un bon début !

    [/vc_column_text][vc_column_text]

    Modèles

    Quand on modifie la base de données, les changements sont automatiquement reflétés dans les modèles. On pouvait déjà, dans les réglages de l’application, demander à ce que les nouvelles rubriques ne soient pas ajoutées au modèle courant. On peut désormais faire en sorte qu’aucune modification de la structure de la base de données ne soit reflétée (pas de changement des libellés, pas de création de modèle pour une nouvelle table…)

    Mais la grande nouveauté, ou plutôt la petite nouveauté que vous allez adorer, c’est la possibilité d’ajouter des objets à un groupe sans avoir besoin de défaire le groupe (et de perdre les conditions de masquage…). Ceci peut se faire par les menus ou, plus naturellement, grâce à la palette d’objets. Bien sûr l’opération inverse (retirer du groupe) est également possible.

    [/vc_column_text][vc_column_text]

    Nouveautés pour Windows

    Deux nouveautés très importantes à mes yeux pour Windows :

    • l’action de script Envoyer courrier en passant par le client de messagerie devrait normalement fonctionner correctement avec tous les clients (Thunderbird…) et non plus seulement avec Outlook (et pour Outlook, on devrait en avoir fini avec les problèmes des versions récentes)
    • si l’utilisateur est connecté à son réseau local via Entra ID, le Web Viewer héritera de cette authentification. C’est un grand progrès pour les situation ou une application web interne requiert l’authentification.

    [/vc_column_text][vc_column_text]

    Nouveautés pour macOS

    Il y a énormément à dire sur ce chapitre. Comme dit précédemment, Claris se rapproche de sa maison mère, Apple, et il est important de matérialiser cela par l’expérience utilisateur. Il était anormal que, pour satisfaire l’aspect multi-plateforme de FileMaker, un utilisateur soit perdu en ouvrant FileMaker.

    Ainsi, voici les nouveautés remarquables :

    • la couleur de surbrillance définie dans les réglages système est désormais appliquées aux dialogues de FileMaker.
    • le design des volets gauche (liste de rubriques / objets / add-ons) et droit (inspecteur) est revu complètement. Personnellement, je trouve qu’on passe plus de temps à scroller dans l’inspecteur, mais un peu de fraicheur ne fait pas de mal.
    • la vue Tableau dispose de nouvelles options qui permettent un résultat graphiquement beaucoup plus “clean”.
    • le centre de lancement est revu. Attention, il n’est pas évident de trouver comment supprimer un favori ou une application récente. Il faut le sélectionner et l’effacer au clavier (Delete)
    • enfin et peut-être surtout, la barre d’outils est revue. Nouvelles icônes, nouvelles possibilités de personnalisation de la barre d’outils (chaque élément peut être ajouté/supprimé individuellement…), et fin des couleurs pour le mode modèle.

    [/vc_column_text][vc_column_text]

    FileMaker Server

    Comme dit plus haut, le gros des nouveautés concerne l’IA (recherche sémantique sur serveur, RAG, exécution de modèles en local…)

    De grandes améliorations ont été apportées à OData, notamment les fonctions d’agrégation (y compris AS). On peut donc contrôler pleinement la forme de la réponse, par exemple en concaténant le nom et le prénom et en renommant (AS) “nomComplet”. Pour l’instant, ces fonctions ne s’appliquent à la partie $select de la requête et non à la partie $filter (équivalent de WHERE en SQL). Cela reste pour moi la principale raison de continuer à utiliser ODBC, mais espérons qu’une version ultérieure apporte cette amélioration.
    D’autre part, les problèmes avec les caractères spéciaux introduits en version 21 ont été réglés.
    Attention toutefois, une modification importante dans la manière de retourner le ROWID vous obligera à adapter votre code pour parser cet élément. J’avoue mon étonnement concernant ce choix.

    Il est désormais très facile d’installer et de mettre à jour un certificat SSL Let’s Encrypt (ce que fmcloud.fm fait pour vous depuis “toujours”).

    On peut maintenant définir la page d’accueil de Web Direct depuis la console d’administration ainsi que depuis l’admin API.

    Web Direct : une alerte prévient l’utilisateur qu’il va quitter l’application quand il clique sur le bouton Back (retour) de son navigateur. Enfin la fin de cette technique de Romain Dunand et Ceydrick Valentini.

    On peut, depuis FileMaker Pro, désactiver pour Web Direct le menu local sur une rubrique conteneur.

    Voici pour un premier tour. J’espère vous avoir fait gagner du temps pour appréhender cette nouvelle version. N’hésitez pas à commenter ci-dessous.

    [/vc_column_text][/vc_column][/vc_row]

  • Ecriture d’une fonction de calcul: json2sql

    Ecriture d’une fonction de calcul: json2sql

    [vc_row bg_color=””][vc_column][vc_column_text]Après avoir passé deux jours sur l’écriture d’une fonction de calcul, je me suis dit que je n’étais plus à un jour près et que raconter l’histoire de cette écriture pourrait être intéressant pour d’autres développeurs, non pas tellement pour cette fonction en elle-même, mais pour capter l’état d’esprit et les idées générales qui permettent d’aborder une fonction complexe.

    En plus, Claris m’ayant fait l’honneur de me programmer à la conférence Engage en mars prochain à Austin, avec un sujet aussi peu banal et prétentieux que “comment, moi, Fabrice Nordmann, j’aborde une problématique à résoudre avec la plateforme FileMaker”, il faut que je commence sérieusement à faire de l’introspection pour comprendre moi-même comment je fonctionne afin de l’expliquer. En tant que lecteur vous me servez donc de cobaye, ce dont je vous remercie.[/vc_column_text][vc_column_text]

    Tout d’abord, expliquons ce que fait la fonction.

    La fonction s’appelle json2sql et permet de formuler une requête SQL pour FileMaker en utilisant un paramètre JSON.

    En effet, la fonction d’écriture de JSON, JSONSetElement, est devenue franchement agréable à utiliser avec la version 21 de FileMaker, et on prend vite l’habitude, alors qu’écrire du SQL est vraiment pénible, surtout si on veut l’écrire bien, sans dépendance au nom des champs, afin que la requête ne s’arrête pas de fonctionner si on renomme une rubrique.

    L’idée est donc de passer un paramètre JSON à cette fonction, qu’elle le traduise en requête SQL et l’exécute (ça c’est l’idée avec laquelle j’ai commencé, mais ça s’est bien compliqué ensuite, vous allez voir).

    Nous avions déjà une fonction que nous utilisons beaucoup, sql.match ( _requestedField ; _matchField ; _match ), qui permet de retrouver les valeurs d’une colonne (_requestedField) dans les enregistrements correspondant à un critère dans une requête du type.

    SELECT _requestedField WHERE _matchField = _match

    Elle nous permet, de réaliser une grosse proportion des requêtes dont nous avons besoin quand on code en FileMaker.

    Mais évidemment, c’est très limité. Si on veut plusieurs colonnes, des fonctions, plusieurs comparaisons (WHERE)… ça ne suffit pas.

    Nous avons aussi un ensemble de fonctions qui nous aident à écrire proprement du SQL, comme sql.table, sql.col, sql.in.clause… mais rien d’aussi cool que le JSON.

    Et puis aussi, il y avait de la vaisselle sale dans l’évier, donc vraiment c’était le moment de trouver une fonction à écrire.

     

    Donc c’est parti, “yapuka”

    D’abord, quelle doit être “l’empreinte” de cette fonction ? Quel nom ? quels paramètres ?

    J’aime faire simple, alors :

    json2sql ( _json )

    Ben oui, JSON, c’est déjà fait pour structurer l’information, donc je vais tout indiquer dans le JSON, c’est joli. (Spoiler : ça ne finira pas comme ça).[/vc_column_text][vc_column_text]Je réfléchis donc à la structure du JSON, en ayant bien en tête que la fonction doit, in fine, appeler la fonction native

    ExecuteSQL ( sqlQuery ; fieldSeparator ; rowSeparator { ; arguments... } )

    Si vous n’êtes pas familier avec la fonction ExecuteSQL, rappelons que sqlQuery est une requête SQL de type SELECT uniquement, que l’on peut utiliser des ? en lieu et place des valeurs de comparaison et que ces ? vont être remplacés par FileMaker par des éléments dans la liste d’arguments passés en fin de fonction, dans l’ordre. L’avantage de cela est que FileMaker gère tout seul les types de données (transforme les dates au format SQL, ajoute les guillemets autour des textes mais pas des nombres, gère le séparateur décimal…)

    Donc par exemple si j’écris :

    ExecuteSQL ( "SELECT primaryKey FROM invoices WHERE clientName > ? AND invoiceDate = ? AND totalAmount > ?" ; "" ; "" ; "L" ; Date ( 6 ; 1 ; 2024 ) ; round ( 100/3 ;2 ) )

    Alors FileMaker va comprendre tout seul et exécuter la requête:

    SELECT primaryKey FROM invoices WHERE clientName > 'L' AND invoiceDate = '2024-06-01' AND totalAmount > 333.33

    (ajout des guillemets simples, transformation de la date, et utilisation du point comme séparateur décimal, même si mon fichier utilise la virgule, car SQL comprend le point).

    Voilà pour ce rappel concernant ExecutesSQL, revenons maintenant à l’écriture de la fonction.

    On aura donc un JSON écrit avec une fonction du type:[/vc_column_text][vc_column_text]

    JSONSetElement ( ""
       ; [ "query" ; <un objet JSON compliqué auquel je réfléchirai dans le détail après> ; JSONObject ]
       ; [ "fieldSeparator" ; "" ; JSONString ]
       ; [ "rawSeparator" ; "" ; JSONString ]
       ; [ "arguments" ; <un array JSON puisque les arguments doivent être passés dans l'ordre> ; JSONArray ]
    )

    [/vc_column_text][/vc_column][/vc_row][vc_row bg_color=””][vc_column width=”1/1″][vc_column_text]Notons aussi que je souhaite écrire

    • "{table}"."{column}" et nom simplement {column}
    • "{table}" et non simplement {table}

    Ceci afin d’éviter les problèmes de noms réservés de SQL ainsi que les nommages bizarre des champs avec par exemple une espace. Il est très important selon moi d’être dans cet état d’esprit : tout le monde doit pouvoir utiliser cette fonction, dans n’importe quel fichier FileMaker. Je ne prends donc ni pour acquis que les rubriques seront nommées “correctement” ou que le séparateur décimal d’un fichier sera forcément le mien, ou la langue le français (même si j’utilise la version anglaise de FileMaker). Donc toujours penser “ubiquité” : la fonction doit marcher partout, et si elle ne le peut pas, cela doit être conscient, assumé et documenté.[/vc_column_text][/vc_column][/vc_row][vc_row bg_color=””][vc_column width=”1/1″][vc_column_text]La structure “algorithmique” de la requête est donc :

    "SELECT" & [ boucle sur une liste ordonnée de noms de colonnes ] & " FROM " & [ table, qui est une information que je peux extraire de la même liste si je qualifie pleinement les références aux rubriques avec la notation table::rubrique ]

    Suivi d’une partie facultative (on n’est pas obligé d’avoir des critères) :

    & " WHERE " & [ boucle sur un tableau de critères composés d'un opérateur logique (sauf pour le premier), d'une colonne, d'un opérateur de comparaison, et d'une valeur ]

    [/vc_column_text][vc_column_text]Je me lance donc enfin dans l’écriture d’un prototype de JSON pour le paramètre query.

    J’ouvre donc le DataViewer et…[/vc_column_text][vc_column_text]

    JSONSetElement ( ""
       ; [ "query.columns[+]" ; GetFieldName ( invoice::invoiceNumber ) ; JSONString ]
       ; [ "query.columns[+]" ; GetFieldName ( invoice::invoiceDate ) ; JSONString ]
       ; [ "query.columns[+]" ; GetFieldName ( invoice::amount ) ; JSONString ]
    )

    [/vc_column_text][vc_column_text]Voici donc un premier tableau, celui du nom des colonnes (il s’agit bien du nom et non de la valeur, c’est pourquoi le type est toujours String).

    Sauf que… je réalise que j’ai oublié les fonctions. Je sais que je ne veux pas les gérer tout de suite, mais il faut que ma structure permette l’évolution. J’ai aussi en tête que si un jour je veux gérer les jointures, il va me falloir un peu plus d’information sur les colonnes, mais ça, c’est pour plus tard. Je reprends :[/vc_column_text][vc_column_text]

    JSONSetElement ( ""
       ; [ "query.columns[+].name" ; GetFieldName ( invoice::invoiceNumber ) ; JSONString ]
       ; [ "query.columns[:].function" ; "Sum" ; JSONString ]
       ; [ "query.columns[+].name" ; GetFieldName ( invoice::invoiceDate ) ; JSONString ]
       ; [ "query.columns[+].name" ; GetFieldName ( invoice::amount ) ; JSONString ]
    )

    [/vc_column_text][vc_column_text]Bien, maintenant j’ai un tableau qui représente la liste des colonnes, je dois maintenant en faire quelque chose.

    Avant tout, il me faut un environnement pour ça. J’écris donc dans mon Visualiseur de données :[/vc_column_text][vc_column_text]

    Let ([
       _json = JSONSetElement ( ""
             ; [ "query.columns[+].name" ; GetFieldName ( invoice::invoiceNumber ) ; JSONString ]
             ; [ "query.columns[:].function" ; "Sum" ; JSONString ]
             ; [ "query.columns[+].name" ; GetFieldName ( invoice::invoiceDate ) ; JSONString ]
             ; [ "query.columns[+].name" ; GetFieldName ( invoice::amount ) ; JSONString ]
          );
       _query = ""
    ];
       _query
    )

    [/vc_column_text][vc_column_text]Je peux maintenant attaquer le paramètre query, et observer le résultat.

    Je ne vous remets pas tout le contenu du Visualiseur de données, juste le paramètre _query de la fonction Let (Definir en français)[/vc_column_text][vc_column_text]

    "SELECT " & While ([
            j = _json ;
    	          c = ValueCount ( JSONListKeys ( j ; "columns" )) ;
    	          i = 0 ;
    	          r = "" ;
    	          v = "" ;
    	          to = "" ;
    	        toq = "" 
    	     ];
    	        i < c ;
    	     [
    		        v = Substitute ( JSONGetElement ( j ; "columns[" & i & "].name" ) ; "::" ; ¶ ) ;
    		        function = JSONGetElement ( j ; "columns[" & i & "].function" ) ;
    		        // as we are selecting from 1 table only, let's extract the table occurrence name only during the first iteration
    		        to = Case ( i = 0 ; GetValue ( v ; 1 ) ; to ) ;
    		        // quoted version, to avoid issue with reserved words or blanks
    		        toq = Case ( i = 0 ; Quote ( to ) ; toq ) ;
    		        column = GetValue ( v ; 2 ) ;
    		        colq = Quote ( column ) ; // quoted version
    		        // append to the list
    		        r = List ( r ; Case ( IsEmpty ( function ) ; colq ; function & "(" & colq & ")" )) ;
    		        i = i+1
    	     ];
    		        Substitute ( r ; ¶ ; ", " ) & " FROM " & to 
       )
    )

    [/vc_column_text][vc_column_text]D’abord, rassurez-vous, je n’ai pas écrit ça d’un seul coup, mais je ne peux pas décortiquer chaque étape, sans quoi vous allez vous ennuyer et la vaisselle dans l’évier va commencer à sentir…

    Notez tout de même que :

    • je ne me suis pas occupé des fonctions tout de suite
    • j’utilise pour mes fonctions While (TantQue) un certain nombre de conventions qui me font aller assez vite :
      • l’itérateur est toujours i (sauf dans le cas d’une boucle imbriquée (While dans While, auquel cas c’est j)
      • je commence par c (le nombre d’itérations), et par initialiser i (l’itérateur), r (le résultat), et en général v (la valeur traitée)
      • la condition est presque toujours i < c
      • l’incrémentation de l’itérateur (i = i+1) intervient en premier paramètre de la partie logique, ou en dernier quand on travaille sur un array JSON (0-based)
    • je n’ai ajouté les commentaires que plus tard

    Vous pourriez aussi vous demander pourquoi avoir to et toq, column et colq, et pas seulement la version q (entre guillemets). Vous avez raison, à ce stade ça n’est pas nécessaire. Je les ai laissés ici pour que la comparaison avec les versions suivantes soient facilitées (je vous mâche le travail !)[/vc_column_text][vc_column_text]

    Clause WHERE

    Je peux donc passer aux critères.

    Je commence à écrire le tableau (array), sauf que là, il me faut quelques données, ou du moins, à ce stade, une table et des rubriques.

    Je demande à ChatGPT de me fournir un échantillon de données en csv, en faisant bien attention d’avoir différents types (texte (dont au moins une colonne contenant des textes multi-lignes), nombre, date) et des doublons (pour pouvoir faire des regroupements). Je m’assure aussi d’avoir des colonnes dont les noms comportent des espaces ou des caractères accentués. Je glisse mon CSV sur l’icone de FileMaker qui le convertit en fichier .fmp12 et hop, on peut travailler “pour de vrai”. En fait, pas tout à fait encore. Je dois d’abord convertir les données de type date qui sont au format YYYY-MM-DD au format FileMaker, qui dans mon fichier est DD/MM/YYYY. Cela aurait dû me mettre la puce à l’oreille, mais… vous allez voir.

    Retour au Visualiseur de données.[/vc_column_text][vc_column_text]

    JSONSetElement ( "" 
       ; [ "criteria[+].column" ; GetFieldName ( invocies::total ) ; JSONString ]
       ; [ "criteria[:].operator" ; "<" ; JSONString ]
       ; [ "criteria[:].value" ; 100.23 ; JSONNumber ]
       ; [ "criteria[+].column" ; GetFieldName ( invoices::invoiceNumber ) ; JSONString ]
       ; [ "criteria[:].operator" ; "LIKE" ; JSONString ]
       ; [ "criteria[:].logicalOperator" ; "OR" ; JSONString ]
       ; [ "criteria[:].value" ; "NC%" ; JSONString ]
       ; [ "criteria[+].column" ; GetFieldName ( invoices::clientVatNumber ) ; JSONString ]
       ; [ "criteria[:].operator" ; "=" ; JSONString ]
       ; [ "criteria[:].value" ; "*" ; JSONString ]
       ; [ "criteria[+].column" ; GetFieldName ( invoices::taxTotal ) ; JSONString ]
       ; [ "criteria[:].operator" ; "=" ; JSONString ]
       ; [ "criteria[:].value" ; "=" ; JSONString ]
       ; [ "criteria[+].column" ; GetFieldName ( invoices::date ) ; JSONString ]
       ; [ "criteria[:].operator" ; ">" ; JSONString ]
       ; [ "criteria[:].value" ; Date ( 12 ; 1 ; 2015 ) ; JSONString ]
    )

    [/vc_column_text][vc_column_text]Comme vous le voyez, avec cette nouvelle notation [+] et [:] de la version 21, il est vraiment très aisé d’écrire un array de manière naturelle. Avec [+], je commence une nouvelle rangée, avec [:] j’ajoute une “colonne” (“attribut”) en restant dans la même rangée.

    Je peux donc écrire presque naturellement, et donc au cours de l’écriture me viennent des idées. Par exemple l’idée d’utiliser des opérateurs de recherche classiques et bien pratiques en FileMaker tel que “=” (vide) et “*” (non vide). Je prévois donc ces cas dans le prototype en pensant que je les traiterais pour des opérateurs IS NULL et IS NOT NULL en SQL. L’important ici est que je n’y avais pas pensé avant de commencer, et que je juge au fil de l’eau que ce sera assez facile à gérer et que donc je vais l’intégrer dès la première version.

    Premier écueil

    En revanche, en écrivant ce prototype je me rends compte d’une chose à laquelle je n’avais pas pensé (j’aurais dû, mais je dois bien me rendre à l’évidence, au risque de décevoir ma mère : je suis imparfait)
    Note: pour ma grand mère, dont je vous parlais ici, c’est tout noir ou tout blanc, elle est très booléenne.

    Et donc, ce problème, c’est qu’en arrivant à la comparaison de date, je me rends compte que si je passe comme je le voulais les arguments sous forme de ? pour qu’ils soient substitués pas les valeurs (voir plus haut sur la syntaxe de ExecuteSQL), le type sera forcément perdu par un passage par JSON, JSON étant dépourvu de type date, et donc FileMaker sera incapable de passer le bon type de donnée (il n’y verra que du texte ou du nombre).

    Cela s’ajoute à ce que j’avais déjà en tête, à savoir que pour passer un nombre variable de paramètres à une fonction (ce qu’indiquent les {} (facultatif) et les … (nombre variable) dans l’empreinte de la fonction

    ExecuteSQL ( sqlQuery ; fieldSeparator ; rowSeparator { ; arguments... } )

    Et ça, je sais que ça va m’obliger à utiliser l’indirection et la fonction Evaluate… et je n’ai pas très envie à ce stade, en particulier quand on est dans un contexte où on joue avec l’indépendance des noms des champs, avec des guillemets, des conversions de type… Bref, le truc pénible qui va compliquer l’écriture de cette fonction, sa maintenance, et éventuellement sa qualité. On verra plus tard qu’on y arrivera, à l’indirection (Evaluate), mais pour d’autres raisons.

    Donc je laisse tomber l’idée de passer les arguments avec des ?, et je dois donc insérer directement les valeurs correctement dans le JSON à l’aide d’une fonction que j’utilisais déjà pour écrire les requêtes SQL : sql.getAsSqlData ( _data ; _type ). C’est vrai pour les données de types date, heure et horodatage. Les nombres sont bien gérés par JSON.

    D’ailleurs, en écrivant cet article, je me rends compte que le nom même de la fonction json2sql n’est pas forcément le bon. Dans notre bibliothèque de fonction, le premier mot nous permet de regrouper alphabétiquement les fonctions selon ce qu’elles traitent. Nous avons une ribambelle de text.<quelque chose>, de json.<quelque chose>… or ici, il me semble que le sujet est plus le SQL que le JSON. Donc je devrais probablement renommer la fonction sql.fromJson… je vais devoir encore réfléchir un peu à ça.[/vc_column_text][vc_column_text]Cette mésaventure me pousse à reconsidérer l’empreinte que j’avais choisie, avec un simple paramètre en JSON.

    Sans que ce soit évident (je pourrais très bien continuer dans cette voie, je me dis que le fait de passer les paramètres fieldSeparator et rowSeparator dans le JSON ne mettra pas en valeur la différence avec ExecuteSQL et la manière de passer les arguments. Je décide de revenir sur cette décision et de passer à l’empreinte suivante :

    json2sql ( _jsonQuery ; _fieldSeparator ; _rowSeparator )

    qui ressemble plus à l’empreinte de la fonction native :

    ExecuteSQL ( sqlQuery ; fieldSeparator ; rowSeparator { ; arguments... } )

    et cela allège un peu la documentation que l’utilisateur (développeur) devra lire pour utiliser la fonction.

    Cela aussi, ça fait partie de “l’état d’esprit” dans lequel je me mets pour écrire une fonction personnalisée : j’essaie de respecter les usages de la plateforme FileMaker, et d’être aussi cohérent que possible. Je ne renonce pas pour autant aux _ (underscores) devant les paramètres : d’abord ils rappellent qu’il s’agit d’une fonction personnalisée, et ensuite c’est une convention que je trouve assez importante dans mon code, mais on ne va pas discuter conventions de nommage…[/vc_column_text][vc_column_text]J’ajoute donc à ma fonction la partie qui s’occupe des critères (clause WHERE) :[/vc_column_text][vc_column_text]

    <the first part of the function here>
    & Case ( not IsEmpty ( JSONListKeys ( j ; "criteria" )) ; 
       " WHERE " &
       While ([
          i = 0 ;
          c = ValueCount ( JSONListKeys ( j ; "criteria" )) ;
          v = "" ;
          r = ""
       ];
          i < c ;
       [
          f = GetValue ( Substitute ( JSONGetElement ( j ; "criteria[" & i & "].column" ) ; "::" ; ¶ ) ; 2 ) ;
          o = JSONGetElement ( j ; "criteria[" & i & "].operator" ) ;
          o = Case ( IsEmpty ( o ) ; "=" ; o ) ; // default comparison operator is =
          lo = JSONGetElement ( j ; "criteria[" & i & "].logicalOperator" ) ; 
          lo = Case ( IsEmpty ( lo ) ; "AND" ; lo ) ; // default logical operator is AND
          value = JSONGetElement ( j ; "criteria[" & i & "].value" ) ; 
          type = JSONGetElementType (  j ; "criteria[" & i & "].value" ) ;
          // this ugly things converts the data to JSON then parses it as a string to handle decimal separators and single quotes.
          v = Case ( type = JSONNumber or type = JSONBoolean ; Substitute ( JSONSetElement ( "" ; "v" ; value ; JSONNumber ) ; [ "{\"v\":" ; "" ] ; [ "}" ; "" ] ) ; "'" & value & "'" ) ;
          r = r & Case ( i ; " " & lo & " " ) // the logical operator is omitted for the first criterion
              & Quote ( f ) & " " & Case ( o = "=" and ( IsEmpty ( value ) or value = "=" ) ; "IS NULL" ; o = "=" and value = "*" ; "IS NOT NULL" ;  o & " " &  v ) ;
          i = i+1 
       ] ;
          r
       )
    )

    [/vc_column_text][vc_column_text]Quelques commentaires :

    • cette partie est conditionnée au fait qu’on trouve bien un tableau (array) “criteria” dans le JSON, j’aurais pu inclure le ” WHERE ” dans le résultat du While, mais je trouve que c’est plus lisible ainsi. On voit tout de suite qu’il s’agit de la clause WHERE de la requête.
    • pour l’opérateur de comparaison (o), on voit que s’il est vide, j’utilise “=”, valeur par défaut. Penser à des valeurs par défaut permet de faciliter l’usage de la fonction.
    • pour l’opérateur logique, c’est AND par défaut
    • comme prévu, le traitement de * et de = est très simple (voir la définition de r)

    [/vc_column_text][vc_column_text]Je passe rapidement sur les autres clauses GROUP BY, ORDER BY, OFFSET et FETCH FIRST. Elles sont assez facilement compréhensibles dans le code de la fonction.

    Notons simplement que j’ai volontairement exclus le OFFSET par pourcentage, parce que ça introduisait une ambiguité au niveau du paramètre JSON : dois-je envoyer un nombre (5) ou un texte (“5%”). Et puis je vous avoue que je n’ai jamais utilisé ce pourcentage, donc pas envie d’ajouter de la complexité pour rien, en tout cas pas dans la première version.[/vc_column_text][vc_column_text]

    // GROUP BY
    & Case ( not IsEmpty ( JSONListKeys ( j ; "group" )) ; " GROUP BY " &
    
       While ([
          i = 0 ;
          c = ValueCount ( JSONListKeys ( j ; "group" )) ;
          f = "" ;
          r = ""
       ];
          i < c ;
       [
          f = GetValue ( Substitute ( JSONGetElement ( j ; "group[" & i & "].column" ) ; "::" ; ¶ ) ; 2 ) ;
          r = List ( r ; Quote ( f )) ;
          i = i+1 
       ] ;
          Substitute ( r ; ¶ ; ", " )
       )
    )
    
    // ORDER BY
    & Case ( not IsEmpty ( JSONListKeys ( j ; "sort" )) ; " ORDER BY " &
       While ([
          i = 0 ;
          c = ValueCount ( JSONListKeys ( j ; "sort" )) ;
          d = "" ;
          r = ""
       ];
          i < c ;
       [
          f = GetValue ( Substitute ( JSONGetElement ( j ; "sort[" & i & "].column" ) ; "::" ; ¶ ) ; 2 ) ;
          d = JSONGetElement ( j ; "sort[" & i & "].dir" ) ; 
          d = Case ( IsEmpty ( d ) ; "A" ; d ) ;
          r = List ( r ; Quote ( f ) & Case ( Left ( d ; 1 ) = "d" ; " DESC" ; " ASC" )) ;
          i = i+1 
       ] ;
          Substitute ( r ; ¶ ; ", " )
       )
    )
    
    // OFFSET and FETCH FIRST
    & Case ( JSONGetElement ( j ; "offset" ) ; " OFFSET " & JSONGetElement ( j ; "offset" ) & " ROWS" )
    & Case ( JSONGetElement ( j ; "limit" ) ; " FETCH FIRST " & JSONGetElement ( j ; "limit" ) & " ROWS ONLY" )

    [/vc_column_text][vc_column_text]

    Exécution du SQL et c’est fini !

    Et donc me voilà avec une fonction qui crée un parfaite requête SQL à partir d’un parmètre JSON. Je n’avais plus qu’à exécuter le SQL et retourner le résultat.

    Rien de plus simple.

    Quelques tests. Ça marche du feu de Dieu ! (pour les plaintes en blasphèmes, adressez-vous au guichet d’à côté). Les requêtes fonctionnent, j’obtiens bien les bons résultats, avec ou sans fonctions, avec ou sans critères…

    Et puis… j’ai eu une idée.

    Et c’est donc là que les ennuis ont commencé…

    … mais je vous les raconterai dans une seconde partie.[/vc_column_text][vc_column_text]

    Conclusions de la première partie

    • se mettre dans un certain état d’esprit. Ici je sais que je travaille sur une fonction générique, elle doit donc être capable de fonctionner dans n’importe quel contexte, et être facilement utilisable pas n’importe quel développeur. Quand je crée une fonction dans le cadre d’un projet client, je préfixe le nom de la fonction du nom du projet, et en fin de projet, je parcours ces fonctions pour voir si certaines mériteraient d’être rendues génériques et d’entrer dans notre boîte à outil. Mais si certaines se qualifient, ce n’est JAMAIS sans une revue du code pour qu’il soit présenté de manière cohérente avec nos autres fonctions, qu’il prévoie bien des cas dont nous n’avions pas besoin dans ce projet spécifique…
    • dans la mesure du possible, respecter la plateforme FileMaker et écrire les fonctions d’une manière qui les rendra utilisables assez naturellement dans ce cadre.
    • penser à gérer des valeurs par défaut pour ne pas contraindre l’utilisateur (le développeur) à renseigner tous les paramètres.
    • planifier, mais pas trop. J’ai une idée de ce que dois faire la fonction, je diffère d’emblée certaines possibilités (ici les jointures par exemple), mais d’un autre côté je ne m’interdis pas d’avoir des idées en cours de route (le traitement des opérateurs de comparaison = et * dans cet exemple). Comme vous le verrez dans la seconde partie, avoir eu une idée en cours de route m’a coûté très cher en temps, mais d’un autre côté le résultat méritait cette peine.
    • travailler avec des données. Partir du concret et aller vers l’abstrait. Beaucoup plus efficace que de monter toute une construction mentale et d’ensuite la confronter à la réalité et se rendre compte que rien ne va.
    • penser aux types de données, et garder en tête que quand on va boucler (While), les textes multi-lignes sont en soi un type de données.
    • avoir des conventions (ici la structure de la boucle While, entre autres) et s’y tenir.

    [/vc_column_text][/vc_column][/vc_row]

  • Ma version FileMaker 21.1 à moi

    Ma version FileMaker 21.1 à moi

    [vc_row bg_color=””][vc_column][vc_column_text]Voici exactement deux ans, lors de la première conférence EngageU à Malmö, Matt Navarre organisait un panel de discussion et me faisait l’honneur de m’y inviter.

    En présence de Brad Freitag, CEO de Claris et de Robert Holsey, chef de produit FileMaker, je lançai l’idée que Claris devrait consacrer une petite partie de son énergie à reprendre des vieilles choses qui embêtent les développeurs et qui ne demanderaient pas de développements compliqués.

    Brad et Robert ont tout de suite réagi et compris, et j’ai pu, durant ces deux années, travailler en plus étroite collaboration avec eux, notamment avec Rick Kalman qui a organisé ce cadre de travail, et avec David McKee et d’autres. De mon côté, je me suis tourné vers la communauté des développeurs pour connaître leurs idées sur les priorités, et de l’autre, je rapportais cela aux équipes de Claris.

    Une grande partie de ce qu’apporte la version 21.1 est issue de ce processus, mais pas exclusivement.

    Il y a donc, dans cette version 21, des grandes nouvelles fonctionnalités, et ces “petits changements qui n’ont l’air de rien”, dont certains sont simplement un meilleur confort pour le développeur, et d’autres de vraies révolutions. On trouve aussi pas moins de 309 corrections !

    Alors commençons par ces petites améliorations, et nous finirons par les vraies nouveautés.

    Tout d’abord, ma préférée, qui va très au-delà de la petite évolution.

    Ignorer les options d’auto-entrée

    [/vc_column_text][/vc_column][/vc_row][vc_row bg_color=””][vc_column width=”1/2″][ish_image image=”101632″ size=”full” align=”center” show_caption=”yes”][/vc_column][vc_column width=”1/2″][ish_image image=”101630″ size=”full” align=”center” show_caption=”yes”][/vc_column][/vc_row][vc_row bg_color=””][vc_column width=”1/1″][vc_column_text]Oui ! on peut enfin écrire dans la base de données sans déclencher les auto-entrées. Le seul moyen qui existait jusqu’ici était de passer par un import, mais c’était extrêmement compliqué et pas dynamique, sauf à passer par des techniques vraiment très complexes pour un développement courant.

    Attention cela dit, cette option, très puissante, met aussi à mal les techniques rudimentaires d’audit log. Aussi, si l’intégrité de vos données repose sur les auto-entrées, veuillez faire attention à retirer le privilège d’édition de scripts aux utilisateurs (en réalité, s’ils avaient ce privilège, ils pouvaient déjà altérer les données en utilisant un import)[/vc_column_text][/vc_column][/vc_row][vc_row bg_color=””][vc_column width=”1/1″][vc_column_text]

    Thème par défaut

    Enfin ! Il est désormais possible de définir un thème par défaut pour un fichier (depuis Fichier/Gérer/Thèmes). Enfin donc la création d’un nouveau modèle ne fera pas réapparaître le thème Aqua Blue. Une étape importante  vers le Nirvana qui consisterait à ce que FileMaker ne soit plus jamais un produit moche.[/vc_column_text][vc_column_text]

    Mémorisation de la largeur des colonnes dans les interfaces pour développeurs.

    On cherche encore ce que vous allez pouvoir faire avec tout le temps gagné puisque vous n’aurez plus besoin de redimensionner les colonnes des listes de tables, de rubriques, de listes de valeurs, de fonctions personnalisées…[/vc_column_text][vc_column_text]

    Valeurs par défaut dans les pas de script.

    Oh ! que je suis content avec ça. Tout ces pas de script qui avaient des valeurs par défaut absurdes. Tous les pas de script qui ont comme option d’ouvrir une boîte de dialogue ou de demander une confirmation ont maintenant cette option à Non par défaut, à l’exception de Tronquer table, Supprimer Enregistrement, Supprimer rangée externe, Supprimer tous les enregistrements…

    En effet, quand on écrit un script, on veut automatiser au maximum. L’intervention de l’utilisateur doit être l’exception. Le fait que, par exemple, Valider enregistrement ait cette option -que personne n’utilise- à Non par défaut la rend immédiatement compatible serveur (pour les scripts exécutés sur serveur).

    Petit regret : j’aurais aimé que Mode recherche ait aussi l’option Pause à Non par défaut, mais il faut croire que ç’aurait été trop parfait.

    La meilleure nouvelle dans tous cela : Aller à l’enregistrement suivant/précédent a désormais l’option Sortir après dernier à Oui par défaut. Idem pour l’action correspondante pour les rangées externes. Finies les boucles infinies par étourderie ![/vc_column_text][/vc_column][/vc_row][vc_row bg_color=””][vc_column width=”1/1″][vc_column_text]

    Passons maintenant aux grandes nouveautés de cette version. Il y en a !

    D’abord, signalons la compatibilité complète avec le dernier macOS : Sequoia.

    PSoSoS

    Sans doute la plus importante nouveauté : Exécuter Script sur Serveur est désormais compatible… serveur. Cela signifie que l’on peut déclencher des actions en parallèle sur serveur. Attention, à ce jeu-là, il vaut mieux bien choisir son hébergeur, et bonne nouvelle pour notre service d’hébergement fmcloud.fm, d’après les tests de Nick Lightbody, notre architecture permet 4 fois plus de sessions de script sur serveur que les services classiques.

    J’en profite pour vous signaler que vous pouvez demander la mise à jour de votre serveur fmcloud.fm dès maintenant. Au passage vous pourrez découvrir notre nouvelle console, avec plein de fonctionnalités très pratiques.

    Cette nouveauté signifie que notre fameux FMSDIFM, présenté il y a 13 ans, peut désormais, enfin, prendre sa retraite.[/vc_column_text][vc_column_text]

    Fin de la limite de bande passante pour OData et Data API

    Dans le cas où vous hébergez votre propre serveur ou faites appel à un service d’hébergement autre que celui de Claris (FileMaker Cloud), la limite de traffic est levée. Enfin ! Il n’y avait aucune logique à faire payer l’accès à vos propres données sur votre propre serveur ! De plus, cela introduisait une incertitude sur le coût réel de la plateforme. Ces limites sont supprimées, vous pouvez foncer sur OData ! (J’en profite pour signaler que je présenterai dans 10 jours une session sur OData à la conférence EngageU à Malmö. Dépêchez-vous de vous inscrire ![/vc_column_text][/vc_column][/vc_row][vc_row bg_color=””][vc_column width=”1/1″][vc_column_text]

    AI : Cohere et la recherche sémantique sur les images

    La grande révolution introduite par FileMaker 21 reste l’intégration de l’intelligence artificielle.

    La version 21.1 améliore encore ces possibilités en intégrant Cohere comme alternative à Open AI.

    Également, la recherche sémantique peut maintenant s’appliquer aux images ! Ça permet des choses vraiment très intéressantes ![/vc_column_text][/vc_column][/vc_row][vc_row bg_color=””][vc_column width=”1/1″][vc_column_text]

    Améliorations d’Open Quickly

    Je suis un immense fan de cette fonctionnalité, accessible par le raccourcis clavier cmd-K (macOS) / ctrl-K (Windows). Elle permet au développeur de naviguer dans son application bien plus facilement qu’avant, et de concevoir des interfaces très efficaces pour l’utilisateur.

    Mais il est vrai que la version 21.0 posait quelques problèmes de “sécurité” : on exposait trop de choses à l’utilisateur final.

    Désormais, ce qui est affiché est logique et cohérent avec les cases à cocher correspondant à la visibilité des modèles et des scripts, sauf quand on est en Accès intégral et donc on a accès à tout.
    De plus, un nouveau privilège permet de désactiver complètement l’accès à Open Quickly.

    D’autre part, on peut désormais limiter le résultat des recherches au fichier actif.

    Enfin et surtout, on peut désormais activer une rubrique, une table ou une occurrence de table directement depuis Open Quickly ! Dans ce cas la fenêtre Gérer la base de données s’ouvre avec le bon élément directement sélectionné !
    Étonnamment, les listes de valeurs et les fonctions personnalisées ne sont pas (encore) concernées.[/vc_column_text][ish_image image=”101654″ size=”full” align=”center”][vc_column_text]Deux petits regrets (mais patience…) : l’ordre de tri des résultats n’est toujours pas satisfaisant. Il me semble que les éléments du fichier actif devraient arriver avant les autres.
    Et puis, il me semble qu’un pas de script permettant d’ouvrir Open Quickly permettrait vraiment de proposer des interfaces extraordinaires. Un bouton dans l’interface pour tout faire. Mais il faut bien pouvoir continuer de rêver à quelque chose…[/vc_column_text][/vc_column][/vc_row][vc_row bg_color=””][vc_column width=”1/1″][vc_column_text]

    Calculs de modèle : les rubriques sont référencées

    Désormais, si vous référencez une rubrique avec son nom complet dans un calcul de modèle (table::rubrique), alors le calcul est mis à jour si le nom de la rubrique change.[/vc_column_text][/vc_column][/vc_row][vc_row bg_color=””][vc_column width=”1/1″][vc_column_text]

    Pas de script : Set Revert Transaction on Error (On/Off)

    Permet de modifier le comportement des transactions et de les empêcher de se terminer dès qu’elles rencontrent une erreur.[/vc_column_text][/vc_column][/vc_row][vc_row bg_color=””][vc_column width=”1/1″][vc_column_text]

    Option Restreindre sans les index

    Dans le cas où vous travaillez avec une table comportant plusieurs centaines de milliers ou millions d’enregistrements et que vous avez déjà effectué une pré-sélection (recherche), le pas de script Restreindre l’ensemble trouvé permet désormais de ne pas passer par l’index de toute la table, ce qui est plus efficace.

    Honnêtement, les cas sont rares où c’est utile, et on pouvait déjà écrire soi-même une boucle pour tester chaque enregistrement, mais c’est toujours bon à prendre.[/vc_column_text][/vc_column][/vc_row][vc_row bg_color=””][vc_column width=”1/1″][vc_column_text]

    Sécurité : limite de références aux fichiers hébergés sur le même serveur

    Une nouvelle case à cocher fait sont apparition sur le dernier volet du dialogue de sécurité, qui permet de limiter aux fichiers sur le même serveur le droit d’établir des références au fichier actif.[/vc_column_text][/vc_column][/vc_row][vc_row bg_color=””][vc_column width=”1/1″][vc_column_text]

    FileMaker Server

    Plusieurs nouveautés importantes pour FileMaker Server.

    OData

    On a déjà parlé de la suppression de la limite de trafic pour OData et Data API, mais OData gagne aussi en fonctionnalités, notamment avec la possibilité d’utiliser des alias dans les requêtes.

    Selon Claris, la conformité à OData 4.01 est achevée, ce qui est presque vrai ;). Cela ouvre la porte à ce que l’on voie apparaître un pas de script Exécuter OData dans une prochaine version, comme on l’avait vu pour Data API.

    Web Direct : déclencheurs sur frappe clavier

    Les déclencheurs surFrappeClavierObjet et surFrappeClavierModèle sont désormais pris en charge, mais seulement pour les touches Entrée, Retour et Escape. J’aurais pour ma part aimé que les flèches (droite, gauche, haut, bas) en fasse aussi partie, mais ça n’est pas le cas.

    Console d’administration

    De nombreuses améliorations sont apportées à la console, notamment la gestion des sous-dossiers de bases de données et l’affichage de la version de Java installée.

    Une nouvelle option vraiment intéressante permet, lors d’un redémarrage, de ne pas rouvrir toutes les bases de données mais seulement celles qui était ouvertes avant le redémarrage.

    HTTPS Tunneling

    Les version macOS et Windows se mettent à la page et intègre désormais cette fonctionnalité. On peut se connecter avec FileMaker Pro via https au lieu du port 5003. Je rappelle que notre service d’hébergement fmcloud.fm est le seul à permettre le double standard : vous pouvez avoir certains clients qui se connectent en https et d’autres avec le port 5003.[/vc_column_text][/vc_column][/vc_row][vc_row bg_color=””][vc_column width=”1/1″][vc_column_text]

    Claris Studio et Claris Connect

    Profitant de la sortie de FileMaker 21.1, on rappelle la mise à jour récente du connecteur Claris Studio de Claris Connect, avec un nouveau déclencheur (Création d’enregistrements multiples) et de nouvelles actions.[/vc_column_text][/vc_column][/vc_row][vc_row bg_color=””][vc_column width=”1/1″][vc_column_text]

    Si vous avez aimé…

    Si vous avez aimé cet article, merci de visiter le site de Claris en cliquant sur ce bouton. Claris aime que vous cliquiez sur ce bouton et c’est bon pour votre Karma (et pour le mien). Merci ![/vc_column_text][ish_button el_text=”Site de Claris” url=”url:https%3A%2F%2Fcontent.claris.com%2Fcpl-q1fy25-1more|target:_blank” size=”medium” align=”center” color=”color7″ text_color=”color4″][/vc_column][/vc_row][vc_row bg_color=””][vc_column width=”1/1″][vc_column_text]

    Et pour tester…

    Bien sûr, si vous déployez un serveur d’essai sur fmcloud.fm, il est immédiatement déployé en 21.1, et vous recevez un lien de téléchargement de la nouvelle version.[/vc_column_text][ish_button el_text=”Essayer” url=”url:https%3A%2F%2Fwww.fmcloud.fm%2Fchatbot%3Futm_source%3D1mt_blog|target:_blank” size=”medium” align=”center” color=”color7″ text_color=”color4″][/vc_column][/vc_row]

  • Tout ce qu’il faut savoir sur FileMaker 2024

    Tout ce qu’il faut savoir sur FileMaker 2024

    [vc_row bg_color=””][vc_column][vc_column_text]FileMaker 2024 est annoncé à l’instant par Claris!

    [/vc_column_text][/vc_column][/vc_row][vc_row bg_color=””][vc_column width=”1/1″][ish_button el_text=”Voir sur Claris.com” url=”url:https%3A%2F%2Fcontent.claris.com%2Fclaris-filemaker2024-announce-1morething-lp|target:_blank” size=”medium” align=”center” color=”color7″ text_color=”color4″ border=”no”][/vc_column][/vc_row][vc_row bg_color=””][vc_column width=”1/1″][vc_column_text]Comme d’habitude à l’occasion d’une sortie, vous trouverez sur notre blog tout ce qu’il faut savoir pour les geeks et les moins geeks.

    Prêt(e) ? C’est parti ![/vc_column_text][/vc_column][/vc_row][vc_row bg_color=””][vc_column width=”1/1″][ish_headline tag_size=”h2″]Intégration de l’Intelligence Artificielle (AI) et des modèles larges de langage (LLM)[/ish_headline][vc_column_text]C’est bien sûr LA fonctionnalité la plus visible de cette version 2024, mais aussi la plus complexe à expliquer et à maîtriser. Nous lui dédierons un article séparé. Sachez toutefois qu’il est désormais possible d’interagir avec virtuellement tous les modèles larges de langage tels que Chat GPT (Open AI), Gemini (Google) ou Llama (Meta/Facebook).

    On peut employer ces modèles pour de la recherche sémantique sur ses propres données (on peut donc rechercher des données en formulant des requêtes dans un langage humain !) ou demander à l’outil graphique de représenter vos données.

    Mais cela ne s’arrête pas là. Avec un peu d’entraînement, on peut développer son propre générateur de code FileMaker pour générer des calculs compliqués ou des fonctions.

    De quoi passer beaucoup de temps pour en gagner un peu, certes, mais c’est beau :)[/vc_column_text][/vc_column][/vc_row][vc_row bg_color=””][vc_column width=”1/1″][ish_headline tag_size=”h2″]Open Quickly, un nouveau mode d’interaction avec vos applications[/ish_headline][vc_column_text]Depuis quelques versions, le raccourcis Cmd-option-K (macOS)/Ctrl-alt-K (Windows) permettait de changer de modèle, et ce uniquement en mode modèle.

    Open Quickly ouvre des possibilités beaucoup plus importantes, mais présente aussi un risque dont les développeurs doivent être informés.

    Je vous recommande de mettre en pause la lecture de cet article après cela, de faire le tour de vos applications pour voir si vous n’êtes pas impacté, et de revenir lire la suite plus tard.

    De quoi s’agit-il ?

    1. la fonctionnalité est désormais si puissante qu’elle devait aussi être plus accessible. Le raccourcis est donc Cmd-K (macOS) et Ctrl-K (Windows). L’ouverture du panneau de gauche en mode modèle est donc relayé au deuxième niveau (Cmd-option-K / Ctrl-alt-K). Ceci est bien logique
    2. Open Quickly est désormais disponible dans les autres modes (utilisation, recherche, prévisualisation), et peut activer 3 types d’éléments :
      1. les modèles (ceux du fichier courant s’ils sont définis pour être visibles dans la liste des modèles ou ceux pour lesquels vous avez le droit de modification). Si on sélectionne un modèle, on va a ce modèle (en restant dans le même mode). Si on maintient la touche option (macOS)/alt (Windows) enfoncée, on voit que l’icône change et le modèle s’ouvre dans une nouvelle fenêtre)
      2. les scripts. Les scripts apparaissent s’ils sont définis pour être visibles dans la liste ou si vous êtes connecté avec un compte permettant la modification du script.
        Attention, c’est ici que se situe le “problème”. Si vous avez le droit de modifier les scripts, vous pouvez sélectionner un script pour le modifier ou, en maintenant option (macOS)/alt (Windows) enfoncée, exécuter le script. Si vous n’avez pas ce droit, le script est exécuté. Cette fonctionnalité est fantastique ! on peut vraiment créer des interfaces très efficaces, mais il est extrêmement important de ne pas exposer les scripts qui ne peuvent pas être exécutés par un utilisateur sans cliquer sur un bouton spécifique. Il faut donc passer en revue vos applications pour décocher la case visibilité pour les scripts qui ne doivent pas être accessibles.
      3. les fichiers (les fichiers récents et les favoris sont accessibles). Open Quickly est donc aussi un super lanceur.

    [/vc_column_text][/vc_column][/vc_row][vc_row bg_color=””][vc_column width=”1/1″][ish_headline tag_size=”h2″]Les fonctions JSON évoluent[/ish_headline][vc_column_text]Une nouvelle fonction et une belle évolution rendent le travail avec JSON bien plus efficace.

    JSONMakeArray ( listOfValues ; separator ; type )

    permet de convertir une liste séparée par des retours chariot (¶) en Array (tableau) JSON. La liste étant pour des raisons historiques l’élément structurel le plus répandu en FileMaker, c’est une possibilité qui faisait vraiment défaut et empêchait souvent d’améliorer/moderniser son code sans se lancer dans un refactoring long et coûteux.

    Nouveaux opérateurs [+] et [:]

    Les nouveaux opérateurs permettent d’écrire des Arrays (tableaux) JSON beaucoup plus facilement.

    [+] permet de passer à l’index suivant

    [:] permet de rester sur le même index.

    Ainsi la simple expression :

    JSONSetElement ( ""
       ; [ "contact[+].nameLast" ; "Doe" ; JSONstring ]
       ; [ "contact[:].nameFirst" ; "John" ; JSONstring ]
       ; [ "contact[+].nameLast" ; "Smith" ; JSONstring ]
       ; [ "contact[:].nameFirst" ; "Emma" ; JSONstring ]
    )

    permet d’obtenir le résultat :

    {
       "contact" :
       [
          {
             "nameFirst" : "John",
             "nameLast" : "Doe"
          },
          {
             "nameFirst" : "Emma",
             "nameLast" : "Smith"
          }
       ]
    }

    L’opérateur [:] permet aussi de récupérer le dernier élément d’un tableau avec la fonction JSONGetElement

    GetLiveTextAsJSON

    est une nouvelle fonction réservée au matériel Apple (tant sur FileMaker Pro que FileMaker Go ou FileMaker Server) qui permet, comme GetLiveText, de récupérer le texte contenu dans une image, mais cette fois-ci en JSON.[/vc_column_text][/vc_column][/vc_row][vc_row bg_color=””][vc_column width=”1/1″][ish_headline tag_size=”h2″]Exécuter FileMaker Data API en écriture ![/ish_headline][vc_column_text]Le pas de script Exécuter FileMaker Data API est désormais capable d’écrire dans la base de données, et donc précisément de créer un nouvel enregistrement, de modifier ou dupliquer des enregistrements, et bien sûr de les supprimer.

    Il est donc vraiment possible, depuis un script FileMaker, de faire (presque) toutes les opérations sur la base de données sans changer de contexte.

    Avantage ou inconvénient ? la Data API travaillant dans une autre session, les modifications faites par ce biais ne déclenchent pas de script (déclencheurs), ne sont pas prises en compte dans l’événement SurTransactionFenêtre… d’un autre côté cela permet d’écrire dans la base de données indépendamment de la transaction en cours.[/vc_column_text][/vc_column][/vc_row][vc_row bg_color=””][vc_column width=”1/1″][ish_headline tag_size=”h2″]Annulation d’une transaction dans un sous-script[/ish_headline][vc_column_text]À propos de transactions… une des faiblesses de l’implémentation des transactions de script est que toute la transaction devait avoir lieu dans le même script.

    Bien que cela ne change pas fondamentalement, le pas de script Annuler transaction peut désormais être dans un sous-script, ce qui atténue le problème.[/vc_column_text][/vc_column][/vc_row][vc_row bg_color=””][vc_column width=”1/1″][ish_headline tag_size=”h2″]Scripts serveur (PSoS), callback et notifications[/ish_headline][vc_column_text]Il s’agit ici d’améliorations, mais non des moindres :

    Quand on exécute un script sur serveur, on peut désormais appeler le script de callbak par nom. De plus, les notifications (Configurer Notification Locale) fonctionne désormais sur Pro (macOS et Windows). On se demandait bien pourquoi ça n’était pas le cas, mais voici cela réparé. Il est donc désormais aisé de lancer un script sur serveur et d’obtenir une notification sur l’écran de son mac/pc quand celui-ci a terminé.

    De plus, il est possible de déterminer si le script de call back doit reprendre un éventuel script en pause.

    Malheureusement, bien qu’on ait accès à la configuration des boutons et de presque tous les aspects d’une notification système, on ne peut contrôler l’icône ou l’image. a technique exposée ici par Laurent Spielmann, de 1-more-thing (2016), est donc toujours utile.[/vc_column_text][/vc_column][/vc_row][vc_row bg_color=””][vc_column width=”1/1″][ish_headline tag_size=”h2″]Autres améliorations de FileMaker Pro[/ish_headline][vc_column_text]En dehors de ces nouveautés, des dizaines de bugs ont été résolus.

    Également, des améliorations plus discrètes doivent être mentionnées

    • support des numéros de répétitions de variables dans les chemins de fichiers. On peut donc par exemple exporter des données vers un fichier dont le chemin est contenu dans $var[3]
    • ceci n’est pas une mince affaire : le moteur utilisé pour la conversion en/de XML/XSLT a été remplacé, on est passé de Xeres/Xalan à libxml2/libxslt. Ceci permet le support des fonctions EXSLT. Nul doute que l’on verra bientôt fleurir de belles applications dans le cadre de FileMaker.
    • Très important également, le Web Viewer évolue. Sur Windows, l’installeur met à jour WebView2 Runtime, ce qui évitera à certaines applications de ne pas tourner jusqu’à une installation manuelle. Plus important : les Web Viewers (macOS et Windows) supportent le WebRTC. On va donc pouvoir intégrer des applications telles que des visioconférences ou autres au sein de nos applications FileMaker.
    • Enfin (il y a d’autres petites choses mais il faut bien s’arrêter), notons que le format EPS n’est plus supporté en tant qu’image sur macOS. Claris suit ainsi Apple qui a arrêté le support d’EPS dans son système d’exploitation.

    [/vc_column_text][/vc_column][/vc_row][vc_row bg_color=””][vc_column width=”1/1″][ish_headline tag_size=”h2″]Du côté de FileMaker Server 2024[/ish_headline][vc_column_text]FileMaker Server 2024 n’est pas en reste. Il y a là aussi de fort belles nouveautés.

    Tout d’abord, notons qu’il n’y a pas de changement de compatibilité entre Pro/Go et Server. Les versions 19.4.2 de FileMaker Pro et Go pourront toujours se connecter.

    Améliorations des performances

    Par la mise en cache de CSS (pour Web Direct) et, surtout, du graphique des liens, les nouvelles sessions serveur devraient s’ouvrir plus rapidement. On devrait donc observer des sessions PSoS plus rapides, avec moins de “overhead”.

    Le tunneling https est désormais également disponible sur les versions macOS et Windows du serveur. Il ne l’était jusqu’à présent que pour Linux. FileMaker peut désormais être installé n’importe où. Même plus besoin d’ouvrir le port 5003.

    Les certificats SSL Let’s Encrypt peuvent désormais facilement être installés grâce à un script système fourni (seulement sur Linux et macOS). Pour information cela fait quelques années que ces certificats sont installés gratuitement si vous optez pour un hébergement sur fmcloud.fm

    Des progrès ont été fait du côté des “Custom OAuth”. On peut maintenant configurer l’icone, et tout peut se faire par l’Admin API.

    L’admin API ajoute de nouvelles fonctionnalités comme l’upload et le download de fichiers de base de données (attention, les conteneurs ne suivent pas ! c’est logique mais présente un réel problème). On peut également modifier les informations de contact qui accompagnent les notifications par email.

    Les rôles d’administrateurs ont été améliorés. Chaque administrateur peut agir sur ses bases de données pendant que l’administrateur principal peut agir sur toutes. Plusieurs administrateurs peuvent partager les mêmes dossiers.

    Le log “Script Events” peut maintenant être activé côté serveur, permettant ainsi de séparer le log d’événements serveur du log des scripts.

    Toujours dans la rubrique log, le pas de script “Activer la journalisation des erreurs” (Set Error Logging) fonctionne désormais pour Web Direct et Data API.
    Également, les logs TopCallStats et Statistiques (stats.log) sont désormais activés par défaut. Attention, nous anticipons que sur certaines configurations extrêmement sollicitées avec un grand nombre d’utilisateurs, l’activation du TopCallStats pourra causer des problèmes. Si vous observez une chute drastique des performances après le passage à FileMaker Server 2024, pensez à désactiver ce log.

    Dans la console d’admin, le log viewer a un peu progressé

    L’ergonomie du panneau “Programmes” a été améliorée. Par exemple on peut double cliquer pour modifier les programmes ou afficher les colonnes de son choix dans la liste, filtrer la liste, dupliquer plusieurs programmes à la fois…

    Enfin ! il est possible via l’admin API et via la console d’administration de bloquer les nouvelles connexions. Vous pourrez donc enfin fermer les fichiers sans que de nouveaux utilisateurs se connectent ou se reconnectent pendant la fermeture.[/vc_column_text][/vc_column][/vc_row][vc_row bg_color=””][vc_column width=”1/1″][ish_headline tag_size=”h2″]Les versions Moyen-Orient et Europe Centrale disponibles sur Linux[/ish_headline][vc_column_text] C’est une première ! Non seulement les versions localisées éditées par Winsoft International pour le Moyen-Orient (qui permet de concevoir des interface pour les langues s’écrivant de droite à gauche comme l’Arabe, l’Hébreu ou le Persan) et pour l’Europe Centrale sont disponibles en même temps que la version classique, mais en plus le serveur est désormais disponible pour Linux.

    Vous pourrez donc générer des PDF sur le serveur ou proposer à vos utilisateurs des interfaces Web Direct réellement pensées pour ces langues.

    Bien entendu, ces versions sont disponibles immédiatement sur fmcloud.fm, l’hébergement de 1-more-thing. Vous devrez pour cela disposer de la licence appropriée, que nous pouvons vous fournir également.[/vc_column_text][/vc_column][/vc_row][vc_row bg_color=””][vc_column width=”1/1″][ish_headline tag_size=”h2″]Compatibilité[/ish_headline][vc_column_text]FileMaker Pro 2024 (ou 21.0) requiert

    • macOS Ventura 13 ou supérieur
    • Windows 10 ou 11

    et peut se connecter à FileMaker Server 19.4.2 et supérieur. (Attention, nous avouons avoir du mal à comprendre que l’a connexion à 19.4.2 soit encore tolérée car cela ne contribue pas à l’indispensable mise à jour des serveurs. Si vous devez impérativement rester en FileMaker Server 19, nous recommandons de manière extrêmement appuyée de passer sans délai à FileMaker Server 19.6.4. De même, si vous devez conserver une version 20 (on ne voit pas très bien pourquoi puisque la 21 propose la même compatibilité avec les versions clientes), veuillez mettre à jour votre serveur en 20.3.2.
    Chez fmcloud.fm, 100% de nos serveurs sont à jour.

    Pour FileMaker Server 2024

    • Ubuntu 20.04 LTS Server (AMD64)
    • Ubuntu 22.04 LTS Server (AMD64 ou ARM64)
    • macOS Ventura 13 ou supérieur
    • Windows Server 2019 ou 2022

    Les clients Pro/Go en 19.4.2 ou supérieur peuvent se connecter.[/vc_column_text][/vc_column][/vc_row][vc_row bg_color=””][vc_column width=”1/1″][ish_headline tag_size=”h2″]Où se procurer FileMaker ?[/ish_headline][vc_column_text]Si vous commencez avec la plateforme, nous recommandons de passer par l’essai gratuit notre service d’hébergement fmcloud.fm de démarrer.

    En moins de 10 minutes, vous aurez une copie d’essai de FileMaker Pro et un serveur installé dans le cloud.

    Une petite vidéo explicative ici.[/vc_column_text][/vc_column][/vc_row]

  • Tutorial : Démarrez avec FileMaker en 10 minutes… gratuitement !

    Tutorial : Démarrez avec FileMaker en 10 minutes… gratuitement !

    [vc_row bg_color=””][vc_column][vc_column_text]En matière de gestion de bases de données et de développement d’applications, la plate-forme FileMaker est un choix de confiance depuis des années. Cependant, avec autant d’informations disponibles, il peut parfois sembler difficile de commencer. C’est là que Fabrice Nordmann intervient pour vous simplifier la tâche.

    Qui est Fabrice Nordmann ?

    Fabrice Nordmann est un expert FileMaker chevronné et certifié qui a pour passion de rendre les concepts complexes faciles à comprendre. Avec son aide, vous pourrez naviguer en toute confiance sur la plateforme FileMaker et commencer à créer vos propres applications.

    Qu’y a-t-il dans cette vidéo ?

    Ce guide vidéo de 10 minutes est la clé qui vous permettra de découvrir la puissance de la plate-forme FileMaker. Voici ce qui vous attend :

    1. Accès facile : La première étape est souvent la plus difficile, mais Fabrice vous guidera à travers elle. Il vous montrera comment télécharger le logiciel FileMaker sans difficulté.

    2. L’installation : Vous êtes préoccupé par les aspects techniques de l’installation ? N’ayez crainte ! Fabrice vous guidera à travers le processus d’installation, pour en faire un jeu d’enfant.

    3. Création de votre première application : Le cœur de la plateforme FileMaker réside dans la création de vos propres applications. Fabrice vous montrera comment mettre en place votre toute première application, la sécuriser, et la télécharger sur le cloud pour qu’elle soit disponible de n’importe où dans le monde. Et le meilleur ? Vous pouvez faire tout cela gratuitement !

    4. Apprendre les bases : Vous verrez comment plusieurs clients peuvent collaborer en temps réel et comment FileMaker Pro est utilisé pour créer des contenus qui peuvent être utilisés directement à partir du navigateur.[/vc_column_text][vc_video link=”https://vimeo.com/1morething/filemaker-get-started” align=”center”][/vc_column][/vc_row][vc_row bg_color=””][vc_column width=”1/1″][ish_list]

    Sommaire

    • Déployez un serveur dans le cloud
    • Téléchargez et installez FileMaker Pro
    • Créez votre première application
    • Sécurisez votre application pour le cloud
    • Téléchargez votre application dans le nuage. Elle est désormais disponible partout dans le monde.
    • Activez Web Direct pour partagez l’application avec votre équipe
    • Modifiez votre application avec FileMaker Pro
    • Travaillez sur les données avec FileMaker Pro et Web Direct

    Mémo

    • Les login/mot de passe du serveur ne sont utilisés que pour :
      • accéder à la console d’administration
      • téléverser (uploader) des applications avec FileMaker Pro
      • accéder à vos sauvegardes en FTPs
    • Pour toutes les autres fois où vous devez vous authentifier, il s’agit de votre compte sur la base de données, sur le serveur.
    • Le service cloud utilisé dans cette vidéo est fmcloud.fm

    [/ish_list][ish_button el_text=”Commencez votre voyage” url=”url:https%3A%2F%2Fwww.fmcloud.fm|title:Commencez%20votre%voyage” size=”big” align=”center” color=”color7″ text_color=”color4″][/vc_column][/vc_row]

  • FileMaker 2023 – “Audit log”

    FileMaker 2023 – “Audit log”

    [vc_row bg_color=””][vc_column width=”1/1″][vc_column_text]Comme nous l’avons vu dans cette revue détaillée des nouveautés de FileMaker 2023, une des deux fonctionnalités phares, avec l’exécution de script sur serveur avec call-back, est ce que Claris appelle “Audit Log”

    Il y a tellement de choses à savoir sur cette fonctionnalité que nous avons préféré lui consacrer un billet complet.[/vc_column_text][ish_headline tag_size=”h2″]Pas un audit log[/ish_headline][vc_column_text]Tout d’abord mettons-nous d’accord, même si le marketing de Claris n’a pas résisté à la tentation de l’appeler ainsi, cette fonctionnalité n’est pas un réel audit log, et ce pour plusieurs raison.

    • D’abord pour une raison assez simple : cette fonctionnalité ne logue rien du tout. Elle permet éventuellement à un développeur de bâtir son audit log dessus.
    • Ensuite un audit log, pour être digne de se nom, doit répondre à certains impératif d’inviolabilité (on ne doit pas pouvoir faire une modification sans qu’elle soit loguée, on ne doit pas pouvoir modifier une entrée dans le log…). Même si on verra que c’est ce que FileMaker pouvait proposer de mieux, la nouvelle fonctionnalité ne répond pas à ces critères.

    Est-ce à dire qu’il faut passer son chemin sans regarder ? Pas du tout ! La nouvelle fonctionnalité est enthousiasmante, mais comme disait Camus, “mal nommer les choses c’est s’exposer à la critique”  (ou un truc comme ça). Et s’exposer à la critique d’un auditeur externe à qui on aurait vendu un “audit log” qui n’en serait pas un… voilà bien une situation que je préférerais éviter.

    Donc non, l’audit log n’est pas un audit log. Soit. Comment l’appeler alors ?[/vc_column_text][ish_headline tag_size=”h2″]Transactions de fenêtre[/ish_headline][vc_column_text]C’est le nom “technique” de la fonctionnalité. C’est sous ce nom qu’on la retrouve dans FileMaker Pro, et ça me semble être déjà beaucoup plus proche de la réalité.

    Enfin, c’est ainsi qu’on la retrouve dans FileMaker Pro… en anglais (OnWindowTransaction), car le déclencheur a été étrangement traduit par SurOperationFenetre en français, mais à moins que l’on parle de finance ou de compatibilité, c’est bien de transaction qu’il s’agit ici. Je réalise en écrivant que les transactions de la version 19.6 sont également, partiellement traduites en “opérations”, mais pas le nom de la fonction Obtenir ( EtatTransactionOuvert ).

    Les transactions de fenêtres apparaissent sous la forme d’un déclencheur de script dans les options de fichier, et vont s’appliquer à toutes les transactions.

    Une fois activé, chaque transaction (ou presque) déclenchera le script.

    Qu’est-ce qu’une transaction ? La question se pose car quand on nomme mal les choses… et depuis 30 ans, il faut dire que nommer les choses bizarrement est une spécialité de FileMaker (essayez de parler de rubriques à des pros de la base de données, ou de modèles à des designers, et vous verrez ce que je veux dire). Donc une transaction n’est pas particulièrement ce que Claris a appelé transaction dans la version 19.6.
    Une transaction, c’est simplement le fait de créer, modifier, supprimer un ensemble d’enregistrements (y compris un seul enregistrement) et de valider. Ça existait déjà avant la 19.6, même si la 19.6 a permis d’écrire des transactions plus facilement, ou de rendre certaines actions “transactionnelles” alors que ça n’était pas possible préalablement.
    Notons que la modification d’une rubrique globale, qui n’est pas a proprement parler une modification de données, ne provoque pas de transaction de fenêtre, (sauf bien sûr si la modification d’une rubrique globale entraîne une modification d’une autre rubrique, standard elle, par le truchement d’une auto-entrée en résultat de calcul).

    Bref, vous avez compris ce qu’est une transaction de données. Lors d’une transaction on peut :

    • créer des enregistrements
    • modifier des enregistrements
    • supprimer des enregistrements

    Les transactions de fenêtre sont en FileMaker ce qui se rapproche le plus d’une transaction de données, ou plus exactement d’un événement qui a lieu sur transaction de données.

    Mais ce sont des transactions… de fenêtre. Encore faut il donc avoir une fenêtre, même virtuelle.

    Autrement dit, sont exclus de ces transactions les interactions directes avec la couche data :

    • Data API (sauf si elle exécute un script)
    • OData (sauf si elle exécute un script)
    • PHP/XML (sauf s’ils exécutent un script)
    • ODBC
    • Instruction de script Tronquer la table
    • Un fichier est défini comme une source de données externes d’un fichier d’interface dans lequel les transactions de fenêtres sont activées (déclencheur actif), mais les données sont modifiées depuis un autre fichier.

    Voilà pourquoi même si un système de log était fourni, cette fonctionnalité ne permettrait pas d’avoir un réel “audit log”.[/vc_column_text][ish_headline tag_size=”h2″]Description des transactions de fenêtre[/ish_headline][vc_column_text]Nous l’avons déjà évoqué, l’interface de configuration se trouve dans les options de fichier.

    Audit Log file options trigger

    On peut sélectionner le script qui sera activé quand on valide une transaction, et indiquer facultativement le nom hard-codé d’une rubrique. Comme pour les autres déclencheurs au niveau du fichier, seul un script du fichier en cours peut être sélectionné. Dans ce cas ci, c’est un peu dommage, mais on comprend bien la raison.

    Quand une transaction est validée, le script sera déclenché et recevra automatiquement un paramètre en JSON tel que :[/vc_column_text][/vc_column][/vc_row][vc_row bg_color=””][vc_column width=”1/1″][vc_column_text]

    {
       "nomDuFichier":
       {
           "nomDeLaTable":
           [
                 [ //(pour chaque enregistrement):
                      type de modification ("New", "Modified" ; "Deleted"),
                      ID de l'enregistrement,
                      "paramètre facultatif"
                 ];
                 [ 
                      type de modification ("New", "Modified" ; "Deleted"),
                      ID de l'enregistrement,
                      "paramètre facultatif"
                 ]
            ]
       }
    }

    [/vc_column_text][vc_column_text]Comme vous l’avez repéré du premier coup d’œil car vous êtes désormais des experts en JSON, les enregistrements modifiés sont les éléments d’un tableau (array), avec 3 informations dont il faut donc connaître l’ordre : le type de modification (New, Modified, Deleted), l’ID de l’enregistrement, et le paramètre facultatif, qui sera présent mais vide si vous ne l’avez pas défini.

    L’autre chose que vous avez immédiatement repérée est qu’il n’y a pas de trace de données ou de noms de rubriques modifiées.[/vc_column_text][ish_headline tag_size=”h3″]Le paramètre facultatif[/ish_headline][vc_column_text]Le contenu du paramètre facultatif provient de la fameuse rubrique que vous avez pu choisir dans les options du fichier.

    Si vous n’avez pas indiqué de nom de rubrique et qu’il existe une rubrique du nom de OnWindowTransaction (un truc que vous n’auriez pas inventé si on ne vous l’avait pas dit… un peu comme la chanson de la Sorcière du placard aux balais), cette rubrique sera prise en compte.

    Donc au moment de la validation de la transaction, pour chaque enregistrement créé, modifié, ou supprimé (dans ce dernier cas la rubrique est évaluée avant la suppression), la rubrique -qui peut bien sûr être calculée- est évaluée et son contenu transmis comme paramètre facultatif pour cet enregistrement.

    JSON

    Notons que si le contenu de la rubrique est un JSON, ce JSON n’est pas rendu en string (“stringifié”). Pour être très précis, afin de ne pas perdre trop de temps à valider chaque JSON, ce qui ralentirait fortement les transactions avec beaucoup d’enregistrements, FileMaker considère que si le contenu commence et finit par { et } ou [ et ], il s’agit d’un JSON valide.[/vc_column_text][ish_headline tag_size=”h3″]Transactions massives[/ish_headline][vc_column_text]Il existe neuf manières de modifier plusieurs enregistrements en une opération avec FileMaker.

    Certaines d’entre elles sont parfaitement gérées par les transactions de fenêtres, d’autres non.

    Eliminons d’abord celles qui ne sont pas gérées, mais gardons-les en tête si nous voulons vraiment parler d’audit log :

    • requêtes externes directement sur la couche données (Data API, OData, PHP/XML, ODBC). Dans le cas d’exécution de script (et donc de l’existence d’une fenêtre), les transactions de fenêtre auront lieu.
    • action de script Tronquer la table.
    • modification du schéma de données (on peut supprimer une table, créer une rubrique calculée ou modifier une formule de calcul, valider la modification, puis changer le type de rubrique pour en faire une rubrique standard, et les données ont été modifiées sans qu’il y ait de transaction de fenêtre.
    • ajoutons une variante de cette dernière : la création de fichier par conversion. Si par exemple vous glissez un fichier Excel sur l’icône de FileMaker, vous obtiendrez un fichier avec déjà une table et des données, avant même d’avoir pu configurer le moindre déclencheur ou le moindre script.

    Les méthodes gérées sont donc :

    Les méthodes non transactionnelles :

    Les méthodes transactionnelles :

    • Les transactions par lien, telles qu’elles existent depuis que FileMaker est relationnel (FileMaker 3, sorti en 1996) : on peut modifier l’enregistrement principal (celui affiché) ainsi que créer, modifier, supprimer des enregistrements liés -la suppression nécessitant une table externe.
    • Les transactions de FileMaker 19.6, qui sont la même chose si ce n’est que :
      • elles peuvent être faites en changeant de contexte (on n’a donc plus besoin de lien)
      • elles peuvent inclure les autres types de transactions massive (importation, suppression de l’ensemble trouvé, remplacer)

    Importance de l’utilisation des transactions de script “de la 19.6” pour les transactions massives

    Pour les méthodes transactionnelles, c’est assez évident : une transaction occasionnera une et une seule transaction de fenêtre (tous les enregistrements créés, modifiés et supprimés se retrouveront  donc dans le paramètre du script)

    Quant aux trois autres méthodes (import, supprimer tous, remplacer), il est très avantageux de les inclure également dans une transaction.

    En effet, contrairement à notre FM AuditLog Pro (qui sera bien évidemment mis à jour très prochainement pour tirer parti de cette nouvelle fonctionnalité) qui parvenait à réunir les différentes transactions réelles en une seule transaction logique, les transactions de fenêtres reflètent exactement le fonctionnement interne de FileMaker.

    Par exemple, quand on supprime tous les enregistrements, FileMaker les supprime 100 par 100. Quand on importe, cela dépend du format du fichier (par tranches de 25 pour le format csv, mais par tranches alternées de 25 et de 1000 pour le format mer (un csv avec les titres de colonnes), par tranches de 500 pour Remplacer contenu rubrique…
    Bref, c’est tout ce que j’avais découvert en développant FM AuditLog Pro, mais cette “popote interne” n’intéresse sûrement pas l’utilisateur et on aurait préféré qu’un import ou une suppression soit résumé en une transaction. Or ça n’est pas le cas, le script SurOperationFenetre sera déclenché autant de fois qu’il y a de transactions internes. Il est donc très important d’encapsuler ces opérations dans une transaction de script.

    Conseil : si l’utilisateur peut lui-même procéder à un import, à une suppression de l’ensemble trouvé, ou à un remplacement de rubrique, nous recommandons d’utiliser les menus personnalisés pour remplacer ces commandes, avec des scripts associés tels que :

    Ouvrir une opération
       Importer enregistrements
    Valider l'opération

    Reste le cas marginal où l’utilisateur est déjà dans le cas d’une transaction (opération) avec un script en pause. Si on veut éviter l’erreur 3 pour des transactions imbriquées (erreur qui ne pose pas de problème mais c’est moins joli et on aime bien que ce soit joli), alors on peut écrire :

    Si [ Obtenir ( EtatOperationOuvert )]
       Importer enregistrements
    Sinon
       Ouvrir une opération
          Importer enregistrements
       Valider l'opération
    Fin de si
    
    

    Data API, OData, XML

    Pour ce qui est de ces modes d’interaction avec FileMaker, il existe la possibilité de privilégier les scripts. Afin de garantir la validité d’un audit log (au sens strict), on pourra, dans les réglages de sécurité, s’assurer que ces modes d’interaction ne peuvent modifier des enregistrements que si un script est en cours d’exécution.

    not EstVide ( Obtenir ( NomScript ))

    Mais cela se fait malheureusement au prix d’une baisse des performances.

    On peut vraiment regretter que le pas de script Exécuter FileMaker Data API soit limité à la lecture. Il serait tellement plus simple de convertir les appels à l’API en scripts…[/vc_column_text][ish_headline tag_size=”h2″]Drag and drop (glisser/déposer) et Remplacer[/ish_headline][vc_column_text]Depuis toujours, deux événements se distinguent dans la manière de modifier des données : le drag and drop et Remplacer contenu de rubrique.

    En effet, ces deux événements ont la particularité de pouvoir opérer sur des enregistrements non ouverts préalablement, de modifier les enregistrements, et de les garder “fermés”, sans déclencher d’événement SurValidationEnregistrement donc.

    Dans le cas du glisser/déposer, cela va même encore plus loin puisque l’on peut carrément modifier un enregistrement alors qu’il est ouvert par un autre utilisateur !

    Et bien c’est une excellente nouvelle : les transactions de fenêtre permettent désormais de capter ces événements. Si l’enregistrement actif n’est pas ouvert quand on entame une action de remplacement ou que l’on glisse un contenu sur une rubrique, alors une transaction de fenêtre sera déclenchée après l’événement.

    En terme d’intégrité des données, c’est un gros progrès ![/vc_column_text][ish_headline tag_size=”h2″]Difficultés[/ish_headline][vc_column_text]Une des difficultés que l’on rencontrera en mettant en place un script pour logguer ses transactions, c’est d’inhiber le script après avoir enregistré la transaction.

    Souvenons-nous, toutes les transactions ayant lieu dans une fenêtre du fichier déclenchent le script.

    Parade : écrire en début de script une condition de sortie comme

    Si [ Obtenir ( NomModèle ) = <leModèleSurLequelJeLogueLesTransactions>
       Fin de Script
    Fin de Si
    Suite du script

    Un bug ennuyeux

    La version qui sort aujourd’hui comporte un bug très ennuyeux. Gageons qu’il sera vite réglé lors d’une prochaine mise à jour.

    Lors de l’exécution du script SurOperationFenetre, l’action de script Fermer Fenêtre est tout simplement ignorée. Elle ne retourne pas d’erreur mais est sans effet.

    C’est très embêtant car comme souvent, quand on ne veut pas perdre le contexte de l’utilisateur (onglets sélectionnés, position de défilement de la fenêtre et des tables externes…) un script classique serait de la forme :

    Nouvelle fenêtre
    Activer modèle [ <modèleOùJeLogueLesTransactions> ]
    Nouvel enregistrement
    Définir rubrique [ rubrique ; Obtenir ( ParamètreScript )]
    Fermer Fenêtre

    Or la dernière action ne sera pas prise en compte ! C’est embêtant.

    En attendant la correction, deux parades à cela :

    • dès le départ, transmettre le paramètre à un script exécuté sur serveur, mais cela présente deux inconvénients majeurs :
      • si l’on n’est pas sur serveur (c’est encore le cas dans de nombreuses situations, notamment pour des applications asynchrones sur iPhone ou iPad)
      • sur des grosses transactions, la taille limite du paramètre pourrait être atteinte (un million de caractères)
    • utiliser un déclencheur SurTemporisation. Le script prend donc la forme :
    Nouvelle fenêtre
    Activer modèle [ <modèleOùJeLogueLesTransactions> ]
    Nouvel enregistrement
    Définir rubrique [ rubrique ; Obtenir ( ParamètreScript )]
    Installer un script sur temporisation [ script: Fermer fenêtre; Intervalle : 0,00001 ]
    Fin de script

    Et bien sûr le script Fermer fenêtre… ferme la fenêtre ! (Bravo si vous aviez deviné ! 😉 )[/vc_column_text][ish_headline tag_size=”h2″]Un audit log… pour quoi faire ?[/ish_headline][vc_column_text]Si vous avez lu jusqu’ici, vous allez être récompensé(e), car au-delà des aspects techniques, la grande question est : “que faire de cette nouvelle fonctionnalité ?”

    Or vous allez le voir, le potentiel est énorme -“juste énorme !”, comme disent ceux qui sont nés après la sortie de FileMaker 7.

    Exemples d’utilisation :

    • Bien sûr, garder la trace des modifications. Cela tombe sous le sens mais il ne faut pas l’oublier
    • Mettre à jour des enregistrements liés, voir des “vues”. C’est un éternel challenge avec FileMaker -dépourvu de déclencheurs de tables (OnUpdate)- de mettre à jour des enregistrements liés. Par exemple si je mets à jour le montant d’un paiement je veux que la facture correspondante soit mise à jour, ainsi que la fiche client (pour connaître son solde). Dorénavant, je peux capter à coup sûr qu’un enregistrement de la table PAIEMENTS a été créé/modifié/supprimé et mettre à jour les enregistrements correspondants.
      On peut facilement envisager des tables de vues qui remplacent les vues liste et qui synthétisent l’information que l’utilisateur doit voir, sans calcul et sans lien, afin d’optimiser la vitesse de défilement ou de tri).
      Par exemple un enregistrement de la table CLIENTS, qui est liée à n factures, n commandes, n paiements… peut avoir son pendant dans la table CLIENTS_VUE, avec des rubriques standard (non calculées) qui permettent d’afficher des listes très rapides. Il est en effet relativement facile de développer une logique qui provoque le rafraichissement d’un tel enregistrement dès qu’un paiement, une commande ou une facture est modifié dans une transaction.
    • “Réplication”. avec un outil comme FM AuditLog Pro 3.0 en préparation, il sera possible non seulement de faire du Roll-back comme avec FM AuditLog Pro 2.0, mais on pourra ré-exécuter les transactions sur un autre serveur, par exemple dans un scénario ou des utilisateurs travaillent sur plusieurs continents, chacun sur son serveur, mais où les modifications doivent être reportées sur un serveur central.

    Voilà, j’espère que ces quelques pistes vous auront permis d’envisager le potentiel de cette nouvelle fonctionnalité et que vous avez apprécié cet article au point de le partager sur les réseaux.[/vc_column_text][/vc_column][/vc_row]

  • FileMaker 2023

    FileMaker 2023

    [vc_row bg_color=””][vc_column][vc_column_text]

    FileMaker 2023 est sorti ! Présentation et exploration !

    Claris vient d’annoncer la disponibilité immédiate de la nouvelle version de FileMaker: FileMaker 2023.

    Voilà bien longtemps que nous n’avions pas publié un long article sur une nouvelle version de FileMaker. Il faut dire que le changement de système de numérotation survenu en version 19 n’incitait pas à l’excitation. Même si certaines versions mineures comportaient des nouveautés importantes, il était difficile d’attirer l’attention dessus.

    Or avec FileMaker 2023, on peut dire que “Claris sonne le clairon”. Non seulement le nom commercial du produit change : FileMaker 2023 et non FileMaker 20 (qui est pourtant bien son numéro de version), mais on a le droit à une toute nouvelle icône.

    FileMaker 2023 icon

    On peut toujours discuter de l’esthétique ou plaisanter en disant que c’est le Pac-man du logo de Claris qui a avalé un dossier de FileMaker, ça change quand même agréablement.
    Et tant qu’à parler des logos, notons au passage que Claris Connect reçoit aussi le sien.

    Icone Claris Connect

    Revoilà Pac-man, mais avec un nœud papillon.

    Ça donne envie de jouer au Trivial Pursuit, n’est-ce pas ? Et bien cela tombe très bien puisque cet article répondra, je l’espère, à beaucoup de questions.[/vc_column_text][/vc_column][/vc_row][vc_row tag_size=”h2″ align=”” icon=”” icon_align=”left” tag=”h” bottom_margin=”” bg_color=””][vc_column width=”1/1″][ish_headline tag_size=”h2″]Une version pour les geeks[/ish_headline][vc_column_text]Autant le dire tout de suite, les aspects les plus spectaculaires de cette version ont déjà été traités ci-dessus (le nom et l’icône), car FileMaker 2023 ne fera pas sauter en l’air les utilisateurs finaux avec des fonctionnalités “tape-à-l’œil”.
    En revanche, elle va les ravir parce que leurs développeurs ou utilisateurs avancés vont  pouvoir répondre de manière beaucoup plus efficace à certains problèmes qu’ils devaient jusqu’ici contourner difficilement.

    En réalité, j’ai moi-même longtemps cherché ce qui faisait la cohérence de cette version. À première vue, un patchwork d’évolutions disparates, mais en y regardant mieux, il y a vraiment un objectif de cohérence, de stabilité et d’extensibilité (on utilise souvent le terme anglais de “scalability”)

    Si je devais tirer deux “messages” pour synthétiser les nouveautés de cette version, ce serait :

    1. La plateforme FileMaker est vivante. Certains craignaient que Claris Studio ne mobilise trop de ressources chez Claris aux dépends de FileMaker et des composantes correspondantes de la plateforme Claris. Cette version est une réponse nette à ces inquiétudes, nous verrons pourquoi.
    2. Claris n’a pas renoncé à faire de FileMaker une plateforme de son temps, capable de servir de plus grands nombres d’utilisateurs traitant plus de données, et plus intégrée. Pour cela elle s’appuie sur la communauté de développeurs en leur fournissant des outils, certes un peu “geek”, mais diablement intéressants.

    [/vc_column_text][/vc_column][/vc_row][vc_row tag_size=”h2″ align=”” icon=”” icon_align=”left” tag=”h” bottom_margin=”” bg_color=””][vc_column width=”1/1″][ish_headline tag_size=”h2″]Note sur la compatibilité[/ish_headline][vc_column_text]FileMaker Pro 2023 est compatible avec

    • masOS Monterey et supérieur (donc Ventura, pour lequel plusieurs problèmes sont corrigés)
    • Windows 10 et supérieur

    D’autre part, après quatre ans de maintien de la compatibilité du serveur avec FileMaker Pro 18, ce dernier ne pourra plus se connecter à FileMaker Server 2023. Attention donc, il faut FileMaker Pro 19.4.2 minimum.

     

    Bien entendu, FileMaker Pro 2023 peut se connecter à FileMaker Server 19.4

    Attention (bis) : si vous utilisez des plug-ins, tant côté client que côté serveur, nous vous invitons à vérifier la compatibilité auprès de l’éditeur, et à faire les mises à jour de ces plug-ins le cas échéant.[/vc_column_text][/vc_column][/vc_row][vc_row bg_color=””][vc_column width=”1/1″][ish_headline tag_size=”h2″]Du nouveau pour les utilisateurs (quand même)[/ish_headline][vc_column_text]Vous le savez, les utilisateurs sont impatients. Commençons donc par les nouveautés qui les concernent directement (il y en a !)

    • On peut maintenant lire un QR code à partir d’un document stocké dans une rubrique conteneur, et ce aussi bien sur serveur que sur le client (FileMaker Pro/FileMaker Go). De nouveaux flux automatisés de documents sont donc possibles. Pensons par exemple à la possibilité de lier un document à un enregistrement automatiquement.
    • La fonction ObtenirLiveText ) (macOS/iOS) est désormais compatible serveur (mac OS)
    • Import du certificat de licence ! Enfin ! Le fait de double-cliquer sur un certificat de licence Claris va désormais lancer le processus d’enregistrement de la licence. Voilà qui va simplifier la vie des utilisateurs et des administrateurs.
    • Envoi d’e-mail avec authentification OAuth2. Oui, je suis d’accord, vu le titre ça pourrait plutôt passer dans la section “pour les geeks”, mais en fait ça concerne très directement les utilisateurs qui étaient confrontés à l’évolution des messageries Gmail et Office 365. On peut à nouveau les utiliser directement depuis FileMaker.
    • Support de sFTP pour le pas de script Insérer depuis URL.
    • Une autre mise à jour technique mais qui fera plaisir à certains utilisateurs et administrateurs : le nombre maximal de fichiers hébergés sur FileMaker Server passe de 125 à 256. Je fais le pari que ce sera une question du prochain examen de certification, vous l’aurez lu ici en premier 🙂

    Encore deux points sur Claris Connect pour faire plaisir aux utilisateurs, et ensuite on attaque le dur.

    • C’est un des points les plus importants : Claris Connect, le service d’automatisation et d’orchestration de Claris (vidéo) a désormais une licence gratuite.
    • FileMaker Pro se trouve pourvu d’un nouveau pas de script –Déclencher un flux Claris Connect (Trigger Claris Connect Flow)– qui rend extrêmement facile l’intégration des deux outils. À vrai dire, il m’est impossible de trouver une explication au fait que cela n’ait pas été le cas avant. Toujours est-il qu’on peut maintenant sans connaissance particulière de cURL déclencher un flux Claris Connect et en récupérer le résultat dans une variable. Il y a vraiment de quoi, même pour des développeurs avancés, rendre Claris Connect beaucoup plus attractif.

    Cette fois-ci, c’est la fin des fonctions “utilisateurs”, le reste -le plus important et de loin- sera…[/vc_column_text][/vc_column][/vc_row][vc_row bg_color=””][vc_column width=”1/1″][ish_headline tag_size=”h2″]…réservé aux geeks, aux développeurs, et aux administrateurs exigeants…[/ish_headline][vc_column_text]C’est bon ? nous sommes entre nous maintenant ? Je vais pouvoir utiliser plein d’acronymes et de jargon ?

    Non, rassurez-vous, je dois absolument en placer quelques-uns, mais il y a des grandes nouveautés fonctionnelles. Accrochez-vous, je garde le meilleur pour la fin.[/vc_column_text][ish_headline tag_size=”h3″]FileMaker 2023, une énorme mise à jour logicielle[/ish_headline][vc_column_text]Voilà qui est très rassurant pour la plateforme. Une grande partie des librairies et frameworks qui sous-tendent la plateforme ont été mis à jour, notamment sur le serveur. Java, Vaadin, Tomcat… C’est un excellent signe que Claris travaille vraiment sur la plateforme et ne se contente pas d’avancées de surface pour satisfaire le marketing.

    Un petit étonnement tout de même : Java est mis à jour en 17 alors que la version la plus récente est 19, mais je ne connais pas les raisons ni les implications.

    Un petit regret aussi : le WebKit embarqué dans le web viewer est toujours le même, et c’est un peu dommage car nombre de librairies javascript tirent partie des évolutions récentes. Par exemple notre add-on au succès inespéré 1MT PDF Viewer ne peut pas intégrer certaines fonctionnalités.[/vc_column_text][ish_headline tag_size=”h3″]Une version ARM et un load balancer pour une stratégie assumée[/ish_headline][vc_column_text]Nous l’avons déjà évoqué, la stratégie de Claris est de réduire le nombre de versions de FileMaker Server, et donc de ne plus supporter que Linux.

    C’est un excellent choix que nous appelions depuis longtemps de nos vœux, car il permettra à Claris d’aller beaucoup plus vite dans le développement.

    Reste que… les clients ne sont pas tous sous Linux. C’est pourquoi on s’oriente vraisemblablement sur un serveur Linux qui pourra être virtualisé sur macOS ou Windows, l’utilisateur n’y voyant alors aucune différence.

    Or nombre de PC, à commencer par les Mac récents (oui, les Mac sont aussi des PC, n’en déplaise à certains que je ne nommerais pas, mais qui vivent à Strasbourg, ont une grande moustache, et font partie de notre équipe depuis 10 ans cette année !), tournent désormais sur une architecture ARM et non plus x86.

    Et justement, avec FileMaker 2023, Claris sort une version de FileMaker Server pour processeur ARM. D’après nos tests, ce n’est pas encore la panacée en termes de performances, mais il est très important pour la communauté de développeurs de savoir que cette version existe déjà et qu’elle va progresser et être optimisée.

    Au passage, Ubuntu 22 est supporté. Ce qui veut dire que Claris supporte désormais Ubuntu 20/x86, Ubuntu 22/x86, Ubuntu 22/ARM, et bien sûr les versions macOS et Windows de FileMaker Server. Ça commence à faire, mais en plus les versions Linux sont aussi déclinées en Claris Server (l’équivalent de FileMaker Server pour la nouvelle plateforme Claris)[/vc_column_text][ish_headline tag_size=”h3″]Load balancing, gestion du cache et garbage collector[/ish_headline][vc_column_text]Les versions Linux de FileMaker Server, qui utilisent le serveur web NginX, permettent désormais d’installer très facilement des serveurs secondaires pour gérer un vrai load balancing pour les utilisateurs Web Direct.

    Entre nous, les performances que nous atteignons déjà sur fmcloud.fm, en raison de son architecture moderne, font que nous n’avons jamais, même dans des cas extrêmes, été confrontés à une limitation des capacités du serveur web, mais nous sommes curieux de voir l’impact sur les applications les plus exigeantes.

    Gestion du cache

    La version 19.6 avait déjà permis de supprimer le cache du client (FileMaker Pro) depuis les préférences de l’application. La version 20 (FileMaker 2023) ajoute des fonctions d’obtention Obtenir ( CheminFichierCache ) (Get ( CacheFileName )) et Obtenir ( NomFichierCache ) (Get ( CacheFilePath )), qui permettent de supprimer le fichier de cache par script, afin de procéder à des tests de performance sans relancer l’application. Oui c’est méchamment geek, mais c’est vraiment une bonne nouvelle pour les optimisations dont nous sommes friands.

    Côté serveur, une nouveauté permet d’allouer plus ou moins de mémoire cache aux vues en liste sur Web Direct. Concrètement, il est possible de configurer le nombre d’enregistrements que Web Direct devra pré-charger afin de fluidifier le défilement (scroll). Attention, cette fonctionnalité ne se retrouve pas dans la console d’administration, ne perdez pas de temps à l’y chercher.

    Java garbage collector sur le serveur.

    Deux fonctionnalités : un bouton qui permet de déclencher le garbage collector, et la possibilité de programmer ce processus, comme on exécute un script ou, comme depuis la version 19, comme on nettoie le cache.

    Je ne vais pas m’étendre sur ce qu’est le garbage collection (ramassage des poubelles, littéralement), mais c’est un processus qui permet de libérer les adresses mémoire qui n’ont pas été libérées par le processus qui les a allouées. En d’autres termes, ça fait le ménage là où les développeurs du serveur ou d’une de ses nombreuses composantes ont oublié de le faire. Nous sommes curieux de voir ce que cela peut améliorer dans les scénarios où le serveur utilisait de plus en plus de mémoire au fur et à mesure des connexions Web Direct.[/vc_column_text][ish_headline tag_size=”h3″]D’autres fonctionnalités de FileMaker Server 2023[/ish_headline][vc_column_text]Je le sens bien, vous aimeriez qu’on arrive au grandes nouveautés, mais bien que plus discrètes, celles qui viennent en sont, des grandes nouveautés, classées par ordre d’importance croissant (selon un point de vue universel et objectif : le mien)

    • Je passe sur la gestion des sauvegardes annulées. Cela complète la possibilité d’annuler les sauvegardes apparue avec FileMaker Server 19.5
    • L’accès à la console d’administration de la version Linux du serveur peut désormais être contrôlé par Active Directory.
    • Le nom des programmes de script peuvent atteindre 100 caractères, ce qui est nettement plus confortable que les 31 précédemment.
    • Les nouvelles connexions sont refusées quand un fichier est en cours de fermeture. Jusqu’ici, quand on fermait un fichier on provoquait la fin de session des utilisateurs, mais si une nouvelle connexion intervenait on ne pouvait pas l’empêcher. C’est un grand progrès pour les administrateurs d’applications avec un grand nombre d’utilisateurs.
    • Data API supporte désormais la fonction d’enregistrement de PDF.
    • Log des scripts serveur. Deux nouveautés :
      • l’action de script “Activer la journalisation des erreurs” est désormais compatible serveur.
      • les événements de scripts sont désormais enregistrés dans un log différent des événements serveur. ScriptEvent.log. Excellente nouvelle, mais qui peut potentiellement vous obliger à revoir vos procédures, si vous aviez automatisé des traitement sur les fichier de log.
    • OData devient vraiment très, très puissant puisqu’il peut maintenant travailler sur les données liées. OData est sans doute la moins connue des méthodes de publication de données FileMaker, mais elle est pourtant extraordinairement simple et puissante.

    [/vc_column_text][ish_headline tag_size=”h2″]Les grandes nouveautés[/ish_headline][vc_column_text]Enfin ! les deux nouveautés phare de FileMaker 2023.

    [/vc_column_text][ish_headline tag_size=”h3″]Exécution de script sur serveur avec call-back[/ish_headline][vc_column_text]Depuis FileMaker 13 il est possible d’exécuter aisément un script sur le serveur depuis le client (en réalité depuis avant cela si vous suivez nos aventures).

    Cela a ouvert bien des possibilités, avec des traitements bien plus rapides et sécurisés.

    De plus, cela autorisait l’exécution de processus parallèles, le client n’étant pas obligé d’attendre la fin de l’exécution du script sur le serveur. Le poste client pouvait donc vaquer à ses occupations, voire déclencher d’autres scripts sur le serveur, pendant que le serveur travaillait.

    Le problème qui se posait, c’était que le client n’avait pas moyen d’être averti que le serveur avait fini son travail. On était obligé de développer des systèmes de messagerie compliquées, et le poste client devait s’assurer régulièrement qu’aucun message n’était arrivé.

    C’est désormais de l’histoire ancienne puisqu’un nouveau pas de script Exécuter script sur serveur avec rappel (Perform Scrip on Server With Callback, ou PSoSWC) permet désormais non seulement d’exécuter un script sur le serveur, mais de faire en sorte qu’un autre script soit déclenché sur le poste client quand celui-ci a terminé.

    On peut donc par exemple signaler à l’utilisateur que son rapport est prêt ou qu’une opération lourde est terminée.

    Bon à savoir : le résultat du script (défini dans l’instruction Fin de script) du script serveur est repris comme paramètre de script du script Call-back.

    Regret : contrairement aux deux autres principaux pas de script permettant d’exécuter un script (Exécuter script et Exécuter script sur serveur), il n’est pas possible d’appeler un script par son nom ! (ni le script call-back, ni même le script serveur). Quel dommage ![/vc_column_text][ish_image image=”80278″ size=”full” align=”center”][ish_headline tag_size=”h3″]Les transactions de fenêtres (ou “audit log”)[/ish_headline][vc_column_text]Vous le savez ou non, l’audit log est pratiquement devenue une passion personnelle. La principale raison de cette “passion” pour la conservation des modifications de données vient probablement du fait qu’il n’est pas possible en FileMaker d’avoir un log 100% fiable. Une sorte de quête du Graal. Vaine mais belle.

    Néanmoins, en développant FM AuditLog Pro, je crois avoir percé bien des mystères du fonctionnement de FileMaker, compris certaines finesses du moteur de calcul, de la sécurité, et bien sûr du modèle de données et de l’arbre de dépendances.

    Inutile de dire, donc, que la lecture dans les nouveautés de la mention “Audit log” avait de quoi éveiller mon attention. Cette fonctionnalité est une petite merveille, mais de “bas niveau”, et conçue pour que l’on puisse fabriquer son système de log. Ça n’est pas en soi un audit log.

    Voici le principe en quelques mots. Nous publions simultanément un article entièrement dédié à cette fonctionnalité qui demande d’être explicitée.

    • Un nouveau déclencheur figure au niveau du fichier (Options de fichier) : SurOperationFenetre (pourquoi “Opération” ?, je ne sais pas, c’est une traduction littérale de Transaction en anglais (OnWindowTransaction), mais il aurait fallu prendre un autre dictionnaire que celui de Wall Street :). Il s’agit bien de transactions de fenêtres.
    • Si ce déclencheur est activé, toute validation d’enregistrement ou suppression d’enregistrement va déclencher ce script.
    • Le script recevra en paramètre du JSON indiquant les fichiers, les tables, les enregistrements (ID) concernés, ainsi que le type de modification (New, Modified, Deleted)
    • Au sein de ce paramètre en JSON, on pourra pour chaque enregistrement ajouter un paramètre personnalisé qui sera le contenu d’une rubrique nommée OnWindowTransaction. Il est possible de choisir un autre nom dans les options de fichier, mais ce nom devra être cohérent dans toutes les tables du fichier. Cette rubrique peut bien entendu être calculée, afin de contenir le nom des champs et les valeurs modifiées, ou autre information.
      Si le contenu de cette rubrique est du JSON, ce JSON ne sera pas converti en string.
    • Bien sûr, le script permet d’enregistrer les transactions.

    Vous n’avez rien compris ? c’est normal. On se retrouve sur l’article dédié à l’audit log.[/vc_column_text][ish_headline tag_size=”h3″]Bonus : les Tables de base (BaseTables)[/ish_headline][vc_column_text]En lien avec l’audit log, Claris nous gratifie de quelques fonctions permettant de travailler sur les tables, par opposition aux occurrences de tables.

    Partout dans FileMaker à quelques exceptions près (onglet Tables de la définition de bases de données, sécurité, action de script Tronquer la table), le mot “Table” fait référence non pas aux tables mais aux occurrences de table.

    Les vraies tables n’apparaissaient que dans une table système, interrogeable avec la fonction ExecuterSQL, FileMaker_Tables, qui représente les occurrences de table, mais qui comporte une colonne BaseTableName.

    En version 19, Claris avait ajouté une autre table : FileMaker_BaseTableFields, qui était une vue dédoublonnée de FileMaker_Fields.

    Cela change enfin, avec une série de nouvelles fonctions et tables SQL.

    • NomsTableBase ( NomFichier ) (BaseTableNames ( file )) permet de lister toutes les tables (noms) d’un fichier
    • IDsTableBase ( NomFichier ) (BaseTableIDs ( file )) permet de lister les IDs de ces tables. Notons au passage que pour ces deux fonctions, nous avons un mélange singulier pluriel (on devrait écrire TablesBase). Au passage, les fonctions de conceptions équivalentes pour les IDs sont traduites en français au singulier (IDTable, IDModele…) ce qui est une erreur.
    • ObtenirNomTableBase ( rubrique ) (GetBaseTableName ( field )) permet d’obtenir le nom de la table de base d’une rubrique.
    • Une nouvelle table interne, FileMaker_BaseTables, comporte les colonnes suivantes : BaseTableName, BaseTableID, Source (<Internal>, MYSQL…), ModCount.

    Malheureusement cet arsenal est très incomplet. La table système FileMaker_BaseTables, de même que FileMaker_BaseTableFields apparue en 19 ne prend pas en compte les tables de fichiers externes référencées dans le graphique des liens du fichier courant. Il est donc possible mais complexe de récupérer l’ID d’une table d’un fichier lié.
    L’absence de fonction ObtenirNomFichier ( rubrique ) (GetFileName ( field )) et de ObtenirIDTableBase ( rubrique ) (GetBaseTableID ( field )), voire d’une colonne BaseTableID dans la table système FileMaker_Fields ne facilite en rien ces requêtes.[/vc_column_text][ish_headline tag_size=”h2″]En conclusion…[/ish_headline][vc_column_text]Comme nous l’avons vu, cette version fourmille de nouveautés (et je n’ai pas tout abordé !), qui à première vue sont très disparates et forment un patchwork.

    En réalité, il y a des implications très fortes. Je vais tenter de les résumer afin d’en dégager une idée générale.

    • Vers un serveur Linux unique, sur ARM comme sur x86. Pas de panique, j’ai bien écrit “vers”.
    • Un serveur capable de gérer plus d’applications (256), plus d’utilisateurs (load balancing) et mieux outillé pour gérer la mémoire, voire la configurer finement.
    • OData et Data API de plus en plus puissants.
    • Des outils pour débugger les scripts serveur.
    • Une intégration facilitée avec Claris Connect, et une version gratuite pour ce dernier
    • Exécution de scripts serveur avec call-back. Une grande incitation à déléguer encore plus au serveur.
    • Un “audit log” qui permet d’envisager de mémoriser des transactions et donc de pouvoir les ré-exécuter sur un autre serveur…

    Comme on le voit, et conformément à la vision que nous avions annoncée il y a déjà plusieurs années, la composante centrale de la plateforme est de plus en plus le serveur. Il est de plus en plus aisé et efficace de concevoir des solutions dans lesquelles FileMaker Pro/Go n’est qu’un front end de luxe et délègue les tâches lourdes à FileMaker Server, à la manière de Web Direct. Le choix d’un hébergement n’a donc jamais été aussi crucial. (comparatif selon fmcloud.fm).

    Voilà, j’espère que ce long article vous aura permis d’aller plus vite et plus loin dans votre découverte de FileMaker 2023. N’hésitez pas à partager sur les réseaux.[/vc_column_text][/vc_column][/vc_row]

  • Droits de diffusion : résolution du calcul des droits disponibles

    Droits de diffusion : résolution du calcul des droits disponibles

    Dans le cadre du développement d’une application de gestion de cession de droits pour un grand groupe d’édition, notre client nous a demandé d’ajouter un module de calcul de droits disponibles. Son objectif était de savoir rapidement quels droits de diffusion étaient disponibles à la vente et dans quelles conditions.

    À première vue, cela ne paraissait pas très compliqué : les droits acquis (qu’un ou plusieurs producteurs ont cédés à notre client) et donc disponibles à la vente, sont enregistrés dans les mandats, et les droits cédés aux diffuseurs sont enregistrés dans les contrats.
    Autrement dit les mandats représentent les entrées de stock et les contrats les sorties.

    Droits des mandats – droits des contrats = droits disponibles ! Voilà, il n’y a plus qu’à écrire un script et on pourra aller boire une bière 🍺. Oui, mais… ce n’est pas aussi simple qu’il y paraît…

    Le challenge

    Les droits enregistrés dans les mandats peuvent inclure plusieurs modes de diffusion. Chaque mode peut être acquis en exclusivité (c’est-à-dire que notre client est le seul à disposer de ce droit de vente), en non-exclusivité (auquel cas notre client ne pourra pas le vendre en exclusivité), ou en « Holdback » (qui correspond à une interdiction de vente soit totale, soit partielle, par exemple une interdiction de vendre le droit de diffusion du programme à un diffuseur donné). Chaque mode de diffusion acquis l’est pendant une période donnée, sur un ou plusieurs territoire(s) donné(s), les territoires pouvant eux-mêmes être une combinaison de régions ou de pays, et dans une ou plusieurs langues.

    Par exemple, les droits acquis de mandats peuvent être de la forme :

    Programmes : La soupe aux choux et L’aile ou la cuisse
    Modes : Pay TV (Option : Exclusivité) et VOD (Option : Non-exclusivité)
    Territoires : Pays de l’UE, Pays du Commonwealth (sans l’Inde ni le Bangladesh) et avec le Canada
    Langues : français, anglais, allemand, espagnol, italien
    Dates : du 01/01/2020 au 31/12/2023

    Le script devrait donc commencer par linéariser (créer des lignes ou enregistrements pour représenter toutes les combinaisons possibles) l’ensemble des droits acquis pour avoir une liste de disponibilités. Dans notre exemple la liste est la suivante :

    • La soupe aux choux en Pay TV en exclusivité, en France et en Français du 01/01/2020 au 31/12/2023
    • La soupe aux choux en Pay TV en exclusivité, en France et en Anglais du 01/01/2020 au 31/12/2023
    • etc

    On ne vous liste pas les 1660 lignes de cet exemple simple (2 programmes x 2 modes x 83 pays x 5 langues)

    À ce stade, cela pourrait rester raisonnable, même si nous doutions déjà de la capacité de FileMaker à gérer efficacement ce calcul pour des dizaines de mandats pouvant contenir des dizaines de programmes acquis avec chacun différentes d’options de territoires et langues sur des périodes différentes. De plus, notre client nous indique alors qu’il est possible de forcer des options sur les pays ou les langues : il est donc possible d’acquérir la diffusion d’un programme en Pay TV en exclusivité dans les Pays de l’UE et en allemand, mais pas en Allemagne (si cela est déjà détenu par un concurrent en non-exclusivité), donc on va forcer la non-exclusivité sur l’Allemagne uniquement. Vous suivez toujours ?

    Si on reprend l’exemple précédent :

    Programmes : La soupe aux choux et L’aile ou la cuisse
    Modes : Pay TV (Option : Exclusivité) et VOD (Option : Non-exclusivité)
    Territoires : Pays de l’UE (Forcer la non-exclusivité sur l’Allemagne), Pays du Commonwealth (sans l’Inde ni le Bangladesh) et avec le Canada
    Langues : français, anglais, allemand, espagnol, italien
    Lorsqu’on linéarise les droits acquis pour l’Allemagne, dans tous les cas, il faut forcer la Non-exclusivité. Cela n’aura pas d’impact sur le mode VOD mais changera l’option pour le mode Pay TV et ceci dans toutes les langues.

    Ce n’est pas terminé 🤯.

    Les options forcées peuvent l’être sur les régions (Pays de l’UE par exemple), un pays ou une langue, il a donc fallu définir des règles de priorité d’application des options pour chaque cas possible et notamment lorsque des options contradictoires sont définies dans une combinaison.

    Dans un catalogue d’environ 1000 programmes avec en moyenne 100 acquisitions et 500 cessions par an sur des périodes différentes couvrant plusieurs années, le nombre de lignes de droits acquis et cédés linéarisées possible dans une recherche est astronomique et notre perspective de boire une bière après la rédaction de ce script s’éloignait de plus en plus. 😕

    De plus, une fois l’ensemble des règles de linéarisation des droits acquis et cédés, nous avons dû déterminer les règles de soustraction (ce qui fut finalement la partie la plus simple). Les droits cédés sont soustraits de la liste des droits acquis pour obtenir les droits disponibles, avec quelques subtilités tout de même : un droit cédé en exclusivité n’est plus disponible à la vente, un droit cédé en non-exclusivité reste disponible à la vente en non-exclusivité, un droit en holdback total n’est pas disponible à la vente et un droit en holdback partiel est indiqué à l’utilisateur.

    La solution technique

    Finalement, après des heures de réflexions collectives avec notre client pour comprendre le fonctionnement des droits acquis et cédés, et la manière dont il souhaitait que les droits soient linéarisés et la disponibilité calculée, il devenait évident que FileMaker, avec sa mémoire sur disque, ne pourrait pas gérer ce calcul dans un temps raisonnable pour les utilisateurs. Il nous fallait trouver un outil travaillant en mémoire vive. Nous avons décidé de tirer parti de l’intégration de FileMaker avec Javascript, ce dernier étant bien plus efficace pour ce type de traitements 💡.

    Dans l’application de gestion des cessions de droits, FileMaker dispose des droits acquis et cédés, regroupés dans une table qui contient toutes les informations sur les options (type d’option, date de début de de fin d’application, lien vers les blocs de droits cédés ou acquis, lien vers le ou les programmes, pays, langues, modes…).

    Lorsque que l’utilisateur saisit une recherche, il doit au minimum rechercher les disponibilités à une date donnée et peut ajouter des critères de recherche sur un programme, un pays, une langue… FileMaker va chercher les droits acquis et cédés répondant aux critères de recherche. La liste des droits acquis et cédés trouvée est extraite par FileMaker Data API, le résultat est injecté dans le code d’un web viewer sous forme de json. Le scripts JS réalise tout le travail de linéarisation en appliquant les règles de priorité de chaque option ainsi que la soustraction. Il renvoie à FileMaker via FileMaker.PerformScriptWithOption le résultat  contenant la liste des droits disponibles. FileMaker transforme ensuite ce résultat en enregistrements dans la base de données et n’a plus qu’à présenter les disponibilités à l’utilisateur dans une table de droits disponibles.

    Les cas courants demandent seulement quelques secondes d’exécution. Les cas les plus complexes quelques dizaines de secondes. 💪

    Une fois les scripts FileMaker et JS rédigés, tous les nœuds au cerveau dénoués, une validation du fonctionnement de ce moteur de recherche de droits disponibles et la rédaction d’une documentation utilisateur, nous avons finalement bien mérité une bière 🍻 !

    Leslie Audigane & Karl Vossen

  • Claris Update 2023

    Claris Update 2023

    Tout consultant FileMaker, et les bien des utilisateurs ont besoin d’une certaine visibilité pour maintenir leur confiance dans la plateforme FileMaker et celle appelée à lui succéder, la plateforme Claris.

    Il y a quelques mois, Claris avait annoncé cette nouvelle plateforme, dont le très médiatisé Claris Studio est la facette la plus visible, mais ces annonces laissaient presque autant de questions ouvertes.

    Il était temps de remettre un peu de clarté dans la stratégie, et c’est ce que Brad Freitag, Robet Holsey, Gianine Campbell et Peter Nelson ont fait fin janvier dans cette présentation en direct.

    Nous rappelons à cette occasion que notre plateforme fmcloud.fm est la seule à ce jour à prendre en charge l’hébergement de Claris Server.

    Bon visionnage !

     

  • Coup d’envoi de l’édition 2022 de la Woulfy Cup de l’UCLouvain

    Coup d’envoi de l’édition 2022 de la Woulfy Cup de l’UCLouvain

    [vc_row bg_color=””][vc_column][vc_column_text]

    Ca y est ! Le coup d’envoi de l’édition 2022 de la Woulfy Cup a été donné ce lundi 4 octobre.

    [/vc_column_text][/vc_column][/vc_row][vc_row bg_color=””][vc_column width=”1/1″][vc_column_text align=”left”]La Woulfy Cup, c’est le tournoi de mini-foot organisé par le Service des Sports de l’UCLouvain. Un rendez-vous incontournable pour les amateurs de ballon rond. (Le plus anciens le connaissent sous le nom de Mondialito).

    Au total ce ne sont pas moins de 72 équipes d’étudiants qui vont se rencontrer durant ce premier quadrimestre dans une ambiance animée et conviviale (48 pour la coupe Pro et 24 en catégorie Fun mixte).[/vc_column_text][/vc_column][/vc_row][vc_row bg_color=””][vc_column width=”1/1″][ish_divider][/vc_column][/vc_row][vc_row bg_color=””][vc_column width=”1/1″][ish_headline]1-more-thing, partenaire technique…[/ish_headline][/vc_column][/vc_row][vc_row bg_color=””][vc_column width=”1/1″][vc_column_text]Pour 1-more-thing, partenaire technique de l’UCLouvain depuis de nombreuses années, la Woulfy Cup a été l’occasion de développer et d’implémenter un système complet de gestion de tournoi sportif, greffé sur l’application FileMaker du Service des Sports. Le portail Web (développé au moyen de notre template efficace  combinant Nuxt et Yii2) permet aux équipes de s’inscrire, de connaître l’agenda des rencontres et de suivre en temps réel les différents classements (équipes, meilleure défense, meilleure attaque, meilleur buteur, fairplay,…)

    L’expérience de Tanguy Colles dans cette discipline sportive (il a été président du club d’Ottignies durant plusieurs années) fut précieuse pour implémenter les mécanismes subtils de classements, de suspensions de joueurs en fonction des cartons reçus, de transfert de joueurs, et autres joyeusetés footbalistiques.[/vc_column_text][/vc_column][/vc_row][vc_row bg_color=””][vc_column width=”1/2″][ish_image image=”70622″ size=”theme-half” align=”center”][/vc_column][vc_column width=”1/2″][ish_image image=”70624″ size=”medium” align=”center”][/vc_column][/vc_row][vc_row bg_color=””][vc_column width=”1/1″][vc_column_text]Un portail web responsive dédié aux arbitres permet la gestion des feuilles de matches et l’enregistrement des scores au terme des rencontres depuis leur tablette ou smartphone. Comme chez les pros.

    Rendez-vous mi décembre au terme des 248 matches pour célébrer les champions ![/vc_column_text][/vc_column][/vc_row]

  • FileMaker 19.5 est là !

    FileMaker 19.5 est là !

    Depuis quelque temps, le cycle des versions de FileMaker a changé, et les versions passent un peu inaperçues, notamment en raison de la numérotation figée à 19 et d’un rythme plus soutenu des sorties. FileMaker 19.5 n’échappe pas à la règle.

    La liste des nouvelles fonctionnalités est ici pour FileMaker Pro et ici pour FileMaker Server, mais nous sommes là pour décortiquer et insister sur celles qui nous paraissent les plus importantes.

    Côté FileMaker Pro/FileMaker Go, les nouveautés qui nous semblent particulièrement intéressantes pour le plus grand nombre sont :

    • lecture de QR Code dans les images dans les conteneurs (macOS et iOS uniquement, pas pour Windows donc). Il est donc possible de prendre en photo un QR Code, de stocker la photo dans un conteneur, et de le lire plus tard.
    • la fonction LiveText, toujours sur matériel Apple uniquement, permet d’extraire le texte d’une image, comme le fait désormais Safari par exemple. Malheureusement il n’est toujours pas possible nativement d’extraire le texte d’un PDF, ce qui serait pourtant simple à faire et autrement plus important.
    • Pro : quand on copie un objet exclus de l’ordre de tabulation, il reste exclus quand on le colle, ce qui revient à dire qu’on peut espérer que les ordres de tabulations seront plus maintenables désormais.
    • Important. C’est une correction qui va améliorer les performances mais qui pourrait aussi avoir des conséquences néfastes : les objets sur la droite du modèle (dans la partie invisible) ne sont plus évalués. (fichier démo à télécharger : 1MT_evaluationADroite_195.fmp12)
    • Petit changement bien pratique : on peut désormais changer le certificat de licence de FileMaker Pro sans devoir désinstaller/réinstaller. Pour la plupart des utilisateurs, ils ne sauront même pas de quoi on parle (et tant mieux pour eux), mais pour ceux qui étaient confrontés au problème, c’est un grand pas.
    • Au rayon des bugs corrigés, le problématique échec de la validation lors de l’import a été corrigé : “Lors de l’import, les importations avec validation des champs ne parvenaient pas à filtrer les importations d’enregistrements et ignoraient l’option de validation “valeur existante” et importaient tous les enregistrements.”. Une bonne nouvelle pour l’intégrité des données.
    • Enfin, ça n’est pas repris dans les notes de sortie, mais un changement très appréciable pour ceux qui travaillent avec de nombreux enregistrements est que le séparateur de milliers défini dans les préférences système est repris dans le formatage du nombre d’enregistrements. Malheureusement, la chasse (espacement entre les caractères) ne rend pas le séparateur espace très visible (les Américains utilisent la virgule). Une astuce consiste à taper deux espaces dans les préférences système.

    Record Counter

    Du côté FileMaker Server 19.5 maintenant

    il y a de grosses améliorations. Si vous pensez que vous n’utilisez que le client Pro et que donc ça n’a pas d’importance, vous vous trompez :). Désormais tout se passe sur le serveur. C’est d’ailleurs pour cela qu’il est si important de choisir le meilleur hébergeur du monde, c’est-à-dire… nous !

    • Calcul des rubriques statistiques côté serveur. Ça, ça va changer la vie des utilisateurs parce que les performances vont être grandement améliorées. Le client est toutefois toujours bloqué en attendant la réponse du serveur, mais cela va beaucoup plus vite. Cela va aussi changer la vie des hébergeurs car le serveur risque d’être beaucoup plus sollicité ! D’ailleurs… votre serveur actuel tiendra-t-il la charge ?
    • Backups en parallèle : les fichiers peuvent être sauvegardés simultanément, ce qui va réduire le temps de la sauvegarde, et aussi permettre d’avoir une cohérence entre des fichiers liés (sauvegardés en même temps).
    • Annulation de la sauvegarde. Quand on travaille sur des très gros fichiers, il était parfois problématique de ne pouvoir interrompre une sauvegarde. Une nouvelle commande est disponible dans l’interface en ligne de commande et via l’admin API
    • Web Direct améliore le cache des layouts (modèles), qui est maintenant côté serveur. On peut attendre une belle progression des performances quand de nombreux utilisateurs sont connectés
    • L’interface OData (Atom/Json) est désormais disponible sur macOS et Windows (elle n’était jusqu’ici disponible que sur serveur Linux).
    • Sur Linux, Ubuntu 20 est supporté ainsi qu’Ubuntu 18. Sur Ubuntu 20, c’est le serveur web Nginx qui remplace Apache. Bien sûr notre service d’hébergement fmcloud.fm supporte déjà les deux versions. Par défaut cependant, c’est Ubuntu 18 qui sera installé pendant encore plusieurs mois, le temps de voir ce que donne Nginx avec un peu d’expérience.
    • Correction d’un problème important qui faisait que le serveur ralentissait quand une solution utilisait beaucoup de conteneurs externes.
    • Un autre problème a été résolu qui provoquait des ralentissements progressifs quand on utilisait des fenêtre cartes (card windows) en Web Direct.
    • Et une liste très longue de bugs corrigés, notamment sur Web Direct.

    Comme toutes les versions “techniques”, il n’y a donc pas vraiment de “wow effect”, mais il n’en reste pas moins que l’amélioration des performances et la correction de quelques fuites de mémoires qui pénalisaient lourdement les grosses applications sont les bienvenues.

    Si vous êtes à jour de vos licences, vous pouvez dores et déjà mettre à jour en téléchargeant la nouvelle version.

    Notre service fmcloud.fm mettra comme d’habitude à jour les serveurs dans environ un mois, après que nous avons suffisamment de retour d’expérience en conditions réelles. Si vous souhaitez allez plus vite, n’hésitez pas à nous contacter.

     

  • Le prix Claris Excellence Award de l’Innovation est attribué à fmcloud.fm !

    Le prix Claris Excellence Award de l’Innovation est attribué à fmcloud.fm !

    [vc_row bg_color=””][vc_column][vc_column_text]C’est un grand honneur et un grand plaisir pour nous d’annoncer que 1-more-thing s’est vu décerner aujourd’hui le prix le plus disputé par les membres de la communauté mondiale d’experts FileMaker : le Claris Excellence Award for Innovation.

    En effet, notre service d’hébergement FileMaker révolutionnaire, fmcloud.fm et ses années lumière d’avance sur les services classiques ont été distingués par le jury.

    Depuis deux ans, fmcloud.fm révolutionne les usages en permettant aux entreprises de toutes tailles de bénéficier d’un véritable cloud pour déployer la plateforme low code FileMaker, et de gagner en performance, en sérénité et en coût[/vc_column_text][/vc_column][/vc_row][vc_row bg_color=””][vc_column width=”1/1″][ish_headline tag_size=”h2″]A real cloud running on Linux/Docker[/ish_headline][vc_column_text]Nous avons investi massivement pour permettre à FileMaker Server de tourner sur une architecture Linux/Docker, avec une “architecture as code” offrant une souplesse extraordinaire.
    Nous sommes capables de déployer ou mettre à jour, des milliers de serveurs à travers le monde en quelques secondes, et nos clients ont à disposition des monstres de puissance pour un prix souvent inférieur au simple coût de possession d’un serveur local.

    Mais nos efforts ne s’arrêtent pas là. C’est un bonheur de voir les optimisations apportées par Claris à chaque version, et elles nous permettent aussi d’optimiser à notre tour pour proposer des solutions toujours plus performantes et rentables.[/vc_column_text][ish_image image=”15088″ size=”full” align=”center”][vc_column_text]Nous tenons à remercier chaleureusement Claris pour cette récompense, mais aussi, bien sûr, les dizaines de consultants du monde entier qui font confiance à notre service d’hébergement FileMaker pour les applications de leurs clients et leur propre environnement de développement, et qui contribuent à la réputation de ce service de premier ordre.

    Un grand merci également à Nick Lightbody et Christian Schmitz (MonkeyBread Software, MBS) pour leurs excellentes critiques ici et ici.

    Pour en savoir plus sur l’offre d’hébergement et de licences et pour déployer votre serveur d’essai totalement gratuit en quelques instants, rendez-vous sur le site fmcloud.fm.[/vc_column_text][ish_image image=”33412″ size=”full” stretch_image=”yes” link_type=”custom” link_url=”url:https%3A%2F%2Fwww.fmcloud.fm||target:%20_blank|” align=”center”][ish_headline tag_size=”h2″]And the winners of the 2021 Claris Excellence Awards are…[/ish_headline][ish_table header_bg_color=”color7″ header_text_color=”color4″ border_color=”color7″]

    Category Recipient
    Lifetime Achievement Award Cristoffer Ippolite, iSolutions
    Rising Star Award Amy Davidson, We Know Data
    Humanitarian Award LuminFire
    Innovation Excellence Award 1-more-thing for fmcloud.fm
    Claris FileMaker Excellence Award ClickWorks
    Claris Connect Excellence Award Square Moon AB
    Design Excellence Award Solis Digital
    Advocacy Excellence Award Beezwax Datatools, Inc.
    Education Excellence Award Richard Carlton Consulting Inc.
    Growth Partner of the Year — Americas DB Services
    Growth Partner of the Year — Europe Lesterius
    Growth Partner of the Year — North Asia Supportas Inc.
    Growth Partner of the Year — Asia Pacific Kamar Limited
    Community Leader of the year Jeremy Brown
    Community Development Excellence Award The Luke Commission

    [/ish_table][/vc_column][/vc_row]

  • Sortie de FileMaker 19.3

    Sortie de FileMaker 19.3

    Claris l’avait annoncé : finies les traditionnelles grandes sorties du mois de mai. Le cycle “Agile” consiste en des mises à jour plus fréquentes, avec une répartition des nouveautés tout au long de l’année.

    Cette semaine, c’est la version 19.3 qui a été annoncée, et c’est une version importante même si surtout “technique”. Petit résumé des nouveautés les plus importantes :

    Du côté du serveur (FileMaker Server) :

    • FileMaker Server pour macOS tourne maintenant nativement sur processeurs M1. D’après les premiers tests, on observe un vrai gain de performances, ce qui tendrait à réabiliter le mac comme serveur FileMaker… s’il existait des mac serveurs. Malheureusement, il n’en existe plus, et donc à moins de vouloir vraiment héberger ses bases de données sur des mac mini, c’est une nouveauté louable mais qui ne va pas forcément changer le monde.
    • La version Linux change elle complètement de distribution : les versions 19.1 et 19.2 tournaient sur CentOS, mais malheureusement pour Claris RedHat a annoncé l’arrêt de CentOS seulement quelques jours après la sortie. Qu’à cela ne tienne, une distro Linux n’est pas si différente d’une autre, et Claris a pu relativement facilement changer son fusil d’épaule. La version 19.3 tourne donc désormais sur Ubuntu uniquement, ce qui oblige à mettre à jour l’OS si on veut mettre à jour FileMaker Server. Pour ceux qui se posent la question : cette opération sera transparente si vous utilisez notre service fmcloud.fm, car l’architecture docker nous permet de mettre à jour des centaines de serveurs en un clin d’œil, mais nous préférons attendre quelques jours après la sortie de la version finale pour nous assurer que tout fonctionne bien, ainsi qu’un éclaircissement sur les conditions d’utilisation (voir à la fin de ce billet).
    • Le retour du log viewer : on peut enfin à nouveau consulter les logs depuis la console d’administration du serveur sans avoir à les télécharger. La recherche est efficace, mais malheureusement on relèvera qu’il est impossible de copier du contenu en le sélectionnant à la souris ! Parfois on se demande quand même ce qui passe par la tête des développeurs pour faire une telle chose, mais enfin c’est une très bonne nouvelle. Peut-être un jour retrouvera-t-on également les graphiques qui permettaient de visualiser les appels distants et autres indicateurs depuis la console d’administration de FileMaker Server 16 ?
    • Les plug-ins sont désormais disponibles pour la Data API.
    • Il est désormais possible de créer un certificat SSL (CSR) depuis la console d’administration
    • L’admin API se voit ajouter des fonctionnalités qui n’étaient accessibles que par la ligne de commande.

    Attention : une modification pourrait engendrer quelques surprises : l’accès à une donnée de conteneur via Data API requiert désormais un token. Il n’est donc plus possible de fournir directement un API qui donnerait l’URL d’un fichier afin que le web service puisse utiliser cette URL pour aller chercher le fichier.

    Liste complète des nouveautés pour FileMaker Server

    Data migration tool

    L’outil de migration en ligne de commande est désormais compatible Linux (Ubuntu), ce qui signifie qu’il est possible de prévoir des automatisations côté serveur comme on pouvait le faire sous Windows et macOS. Ceci est une excellente nouvelle pour les éditeurs de logiciels sous FileMaker (SBA, Software Bundle Agreement). Bien entendu notre service fmcloud.fm proposera ce type de services dès que nous aurons validé la migration vers Ubuntu.

    Du côté du client (FileMaker Pro)

    Ici encore, il s’agit plutôt d’une mise à jour technique, mais pas des moindres !

    • sur macOS : FileMaker Pro est désormais une application universelle, qui tourne donc nativement (sans Rosetta) sur les processeurs M1. Gains de performances en perspective (voir le comparatif réalisé par notre confrère Vincenzo Menanno sur le blog de Beezwax)
    • Microsoft Edgesur Windows : c’est LA grosse nouveauté : le moteur de rendu des web viewers a été remplacé ! Enfin Internet Explorer 11 est abandonné au profit de Edge (Chromium). En termes de performances c’est le jour et la nuit, et surtout en termes de codage : on peut enfin utiliser un code propre pour afficher des contenus complexes ou simplement “modernes”.
      Attention toutefois : il n’est pas possible de choisir le moteur de rendu utilisé, et dans certains cas ce changement ne sera pas parfait. Un exemple tout simple auquel je me suis retrouvé confronté : Internet Explorer interprétait tout seul du HTML comme étant en UTF-8, ce n’est pas le cas de Edge. Il m’a donc fallu ajouter une balise meta au code HTML existant (<meta charset=”UTF-8″>). Pas une grosse affaire, mais le changement de moteur de rendu n’est pas un détail. Si vous utilisez beaucoup de web viewers, faites bien attention à tester votre application avant de faire la mise à jour en production.
    • les fonction d’écriture et de lecture de JSON (JSONSetElement et JSONGetElement) permettent désormais de travailler avec des clefs qui comportent des points (ce qui était la moindre des choses, certains appels à l’API Data de FileMaker même en exigeant !). Il faut pour cela utiliser des guillemets simples (du jamais vu en FileMaker). Par exemple pour extraire du JSON suivant :
      {"a":{"b.c":1234}}
      

      le contenu de “b.c”, il faut écrire :

      JSONGetElement ( $json ; "a['b.c']" )

      on dirait de l’écriture inclusive !

    Par ailleurs, de nombreux problèmes ont été réglés, comme des problèmes de formatage conditionnel de cases à cocher (mac) ou de survol de bouton (Windows).

    La liste complète des nouveautés et corrections est ici

    Malheureusement, trois loupés à signaler pour FileMaker Pro :

    • les mises à jour “in App” sur mac semblent de moins en moins fiables. Je vous recommande de télécharger l’application complète depuis votre lien de téléchargement (si vous ne l’avez plus et que vous avez acheté votre licence via 1-more-thing ou fmcloud.fm, il vous suffit d’écrire à malicence@1-more-thing.com). Il est vraiment dommage que ces problèmes de mises à jour interviennent si systématiquement. Maintenant que l’installation sur mac se fait par un simple glisser/déposer, j’en arrive à penser que Claris devrait plutôt renoncer aux mises à jour “in-App”, du moins s’ils ne trouvent pas le moyen de les rendre plus fiables
    • pour la millième fois (peut-être deux-millième, je suis lassé de compter), une mise à jour casse l’affichage des PDF stockés dans les conteneurs (quand ça n’est pas une mise à jour de Claris, c’est une mise à jour d’Acrobat ou du système d’exploitation : déjà ce mois-ci une mise à jour de Windows avait provoqué un problème similaire). Nous avons opté pour le développement d’un add-on, 1MT PDF Viewer, disponible depuis notre plateforme add-on-olam. D’ailleurs, je ne vous en ai pas encore parlé, il faut vraiment que je le fasse bientôt. Sachez déjà que c’est là que nous distribuons nos add-ons ainsi que ceux d’éditeurs tiers comme IU-Data. Pour revenir à ce bug, Claris assure être en train de travailler à une solution, il faut donc espérer que ce problème sera réglé dans les jours qui viennent.
    • Attention à un bug en particulier de cette version 19.3 : sous Windows, glisser un fichier vers un conteneur interactif (drag and drop) n’insère que la référence et n’ajoute pas réellement le fichier à la base de données. Gageons que ceci sera vite corrigé. En attendant, faites bien attention à insérer explicitement depuis le menu contextuel (clic droit)

    Vous constaterez l’absence d’une nouvelle version de FileMaker Go. Rien pour lui cette fois-ci.

    Pour finir (ou plutôt pour ne pas finir), un changement des conditions d’utilisation agite la communauté depuis la sortie. On y lit qu’il n’est désormais plus possible d’utiliser la Data API comme alternative à une licence utilisateur. Il faudrait donc en théorie payer une licence pour toute personne se connectant à l’API (alors que le trafic est déjà payant au-delà d’un certain seuil). Ce changement paraît pour le moins étonnant, mais nous attendons confirmation de la part de Claris. Nous mettrons cet article à jour dès que la chose aura été confirmée ou infirmée. Modifié le 8/7/2021 : Claris a précisé le sens de ce changement des conditions d’utilisation : il n’est pas permis de développer une application autonome alternative à FileMaker Pro et d’utiliser la Data API dans le but d’éviter l’achat de licence, mais vous avez toujours le droit de partager les données via la Data API avec les visiteurs de votre site web ou de votre boutique en ligne…

    Voilà, j’espère que cette lecture vous aura permis d’appréhender rapidement les nouveautés.

  • Certification FileMaker 2020

    Certification FileMaker 2020

    [vc_row bg_color=””][vc_column width=”1/1″][vc_column_text]Juste une petite brève pour vous annoncer la sortie de la Certification FileMaker 2020 (oui, comme l’Euro de foot, la version 2020 se joue en 2021).
    Désormais, la certification n’est plus liée à une version de FileMaker mais devrait être renouvelée tous les 2 ans.
    Comme toujours, il est possible de passer l’examen dans un centre d’examen, mais Covid oblige, la procédure pour passer l’examen depuis chez soi est grandement simplifiée.

    C’est ainsi que célébrant sa liberté de mouvement retrouvée (merci Pfizer !), Fabrice Nordmann a pu passer sa certification depuis son lieu de vacances. Ce qui est assez drôle est que quand on passe l’examen à distance, on doit envoyer des photos de son environnement pour prouver qu’on ne peut pas tricher.
    Depuis, la photo envoyée par Fabrice à l’examinateur a fait le tour de la communauté de développeur, et un nouveau challenge est né : passer sa certification depuis l’endroit le plus exotique possible ![/vc_column_text][/vc_column][/vc_row][vc_row bg_color=””][vc_column width=”1/1″][vc_raw_html]JTNDYmxvY2txdW90ZSUyMGNsYXNzJTNEJTIydHdpdHRlci10d2VldCUyMiUyMGRhdGEtcGFydG5lciUzRCUyMnR3ZWV0ZGVjayUyMiUzRSUzQ3AlMjBsYW5nJTNEJTIyZW4lMjIlMjBkaXIlM0QlMjJsdHIlMjIlM0VUaGlzJTIwaXMlMjB0aGUlMjBhY3R1YWwlMjBwaWN0dXJlJTIwb2YlMjBteSUyMGRlc2slMjBJJTIwc2VudCUyMHRvJTIwUGVhcnNvblZ1ZSUyMGJlZm9yZSUyMHRha2luZyUyMHRoZSUyMCUzQ2ElMjBocmVmJTNEJTIyaHR0cHMlM0ElMkYlMkZ0d2l0dGVyLmNvbSUyRmhhc2h0YWclMkZGaWxlTWFrZXIlM0ZzcmMlM0RoYXNoJTI2YW1wJTNCcmVmX3NyYyUzRHR3c3JjJTI1NUV0ZnclMjIlM0UlMjNGaWxlTWFrZXIlM0MlMkZhJTNFJTIwQ2VydGlmaWNhdGlvbiUyMEV4YW0uJTNDYnIlM0VObyUyMG9uZSUyMGNhbiUyMGJlYXQlMjB0aGlzJTIwb25lLiUzQ2JyJTNFJTI4TmF4b3MlMkMlMjBHcmVlY2UlMjklM0NiciUzRSUzQ2JyJTNFQnklMjB0aGUlMjB3YXklMkMlMjBJJTI2JTIzMzklM0JtJTIwbm93JTIwYSUyMEZpbGVNYWtlciUyMENlcnRpZmllZCUyMERldmVsb3BlciUyMCUzQ2ElMjBocmVmJTNEJTIyaHR0cHMlM0ElMkYlMkZ0LmNvJTJGT1R4QzZVVFBQeCUyMiUzRXBpYy50d2l0dGVyLmNvbSUyRk9UeEM2VVRQUHglM0MlMkZhJTNFJTNDJTJGcCUzRSUyNm1kYXNoJTNCJTIwRmFicmljZSUyME5vcmRtYW5uJTIwJTI4JTQwRmFicmljZU4lMjklMjAlM0NhJTIwaHJlZiUzRCUyMmh0dHBzJTNBJTJGJTJGdHdpdHRlci5jb20lMkZGYWJyaWNlTiUyRnN0YXR1cyUyRjEzOTY4MzU5NjkyMjgyNzk4MTMlM0ZyZWZfc3JjJTNEdHdzcmMlMjU1RXRmdyUyMiUzRU1heSUyMDI0JTJDJTIwMjAyMSUzQyUyRmElM0UlM0MlMkZibG9ja3F1b3RlJTNFJTBBJTNDc2NyaXB0JTIwYXN5bmMlMjBzcmMlM0QlMjJodHRwcyUzQSUyRiUyRnBsYXRmb3JtLnR3aXR0ZXIuY29tJTJGd2lkZ2V0cy5qcyUyMiUyMGNoYXJzZXQlM0QlMjJ1dGYtOCUyMiUzRSUzQyUyRnNjcmlwdCUzRQ==[/vc_raw_html][/vc_column][/vc_row][vc_row bg_color=””][vc_column width=”1/1″][vc_column_text]Ah ! oui ! on a failli oublier : le cadre idyllique n’a pas nui à la réussite : nous sommes bien sûr “Développeur Certifié FileMaker 2020″ (FileMaker Certified Developer 2020)[/vc_column_text][/vc_column][/vc_row][vc_row bg_color=””][vc_column width=”1/1″][ish_image image=”32829″ size=”medium” align=”center”][/vc_column][/vc_row]

  • FileMaker Server sur Linux : la révolution fmcloud.fm 2.0

    FileMaker Server sur Linux : la révolution fmcloud.fm 2.0

    [vc_row bg_color=””][vc_column][vc_column_text]Il faut s’y habituer, avec les nouveaux cycles courts des sorties de FileMaker, les nouveautés importantes ne sont plus forcément à date fixe avec un nouveau numéro de version. Il ne suffit donc plus, pour qui s’intéresse à la plateforme FileMaker, de réserver un peu de temps au mois de mai pour s’enquérir des nouveautés de la version annuelle : il faut aussi faire très attention aux versions intermédiaires.

    C’est en effet dans une relative discrétion que Claris a annoncé mercredi 28 octobre une nouvelle version de FileMaker Server, la 19.1.2, qui est en soi une évolution majeure, mais qui permet aussi à des services d’hébergement de proposer des services et des performances totalement révolutionnaires.

    Linux !

    C’est bien entendu la grande nouvelle. Cette version, qui était disponible en beta depuis plusieurs mois, est désormais officielle. Elle est non seulement plus performante que ses cousines pour mac OS et Windows, mais surtout elle peut être déployée en docker.

    logo fmcloud.fmCela permet à des hébergeurs tels que nous —enfin, encore faut-il investir pour passer à ce genre d’architectures, et il semble qu’à ce jour nous soyons les seuls à l’avoir fait (🥇 – MISE À JOUR 16/12/2021 : notre service fmcloud.fm vient de se voir décerner le prix de la meilleure innovation par Claris ! le fameux Innovation Claris Excellence Award)— de proposer un service ultra-performant, ultra-portable (on peut déployer dans pratiquement tous les datacenters du monde) et… très peu cher. Par exemple, cela nous permet proposer un hébergement à 49€HT pour 5 utilisateurs, là où nos serveurs Windows (pour lesquels le nombre d’utilisateurs n’influence pas le prix, certes), commencent à 95€HT.

    Mais ici n’est pas le lieu pour vanter nos mérites, c’était juste pour vous donner un exemple. Si vous voulez voir nos tarifs et nos offres, c’est par ici :

     

    [su_button url=”https://www.1-more-thing.com/1-more-quote” target=”blank” background=”#c751587″ color=”#b60966″ size=”6″ center=”yes” radius=”0″ icon=”icon: database” id=”config”]Configurer mon serveur[/su_button]

    La version Linux apporte aussi une nouveauté très intéressante : OData, une norme moderne de traitement des requêtes vers une base de données. C’est finalement assez similaire à ce que propose l’interface ODBC/JDBC, mais permet de retourner les données en JSON ou en XML.
    Sans rentrer dans le détail, voici la documentation.

    Également, l’authentification AD FS est disponible pour la version Linux.

    En revanche, une fonctionnalité importante des versions pour macOS et Windows n’est pas reproduite en version Linux (ou plus exactement est désactivée) : la publication web personnalisée (PHP/XML). Pour passer à Linux, il vous faudra passer par Data API ou à OData. Si vous n’êtes pas à l’aise là-dessus, nous pouvons vous aider. Après avoir fait migrer plusieurs dizaines d’applications, nous sommes rompus à l’exercice, et c’est finalement étonnamment rapide.

    Autres points importants (je garde le meilleur pour la fin, vous êtes obligés de tout lire 🙂 )

    Quelques mises à jour techniques tout d’abord :

    • Support d’OpenSSL 1.1.1g
    • Compatibilité avec Tomcat 8.5.55
    • Il est désormais possible de gérer sa licence depuis la console d’administration du serveur.

    Mais surtout…

    • Les mises à jour de FileMaker Server sont maintenant en fait de vraies réinstallations… qui préservent les paramètres ! Comme nos clients d’hébergement le savent peut-être, nous étions les seuls à maîtriser la mise à jour avec conservation des paramètres, ce qui nous permettait de proposer à nos clients des mises à jour facilitées (beaucoup d’astuce et d’espièglerie nous avaient permis de percer les secrets de FileMaker Server ;)), mais désormais tout un chacun peut mettre à jour en confiance.
    • Un nouveau système de sharing lock permet de bien meilleures performances sur certaines actions, notamment les recherches et l’indexation
    • Script serveur de vérification de toutes les bases de données
    • Script serveur de vidage du cache ! (ça c’est très intéressant pour les serveurs très sollicités qui donnaient des signes de ralentissement après quelques jours/semaines sans redémarrage)
    • Enfin, cette nouvelle intéressera particulièrement les développeurs : les tris s’effectuent maintenant sur le serveur quand c’est possible (quand FileMaker décide tout seul que c’est plus intéressant de trier sur le serveur, en fonction de la quantité de données, de l’occupation du serveur… vous ne pouvez pas contrôler quand le tri sera effectué sur le serveur ou sur le client). C’est très efficace pour un tri sur une table locale, mais d’après nos tests cela ne fonctionne pas sur les enregistrements liés.

     

    Comme vous le voyez, cette 19.1.2 est la plus importante évolution de FileMaker Server depuis très longtemps.

    Je vous invite à lire les notes de version et à suivre les liens, c’est très instructif, ainsi que ce précieux document sur les améliorations de performances.

    [/vc_column_text][/vc_column][/vc_row]

  • WebDirect et bouton retour…

    WebDirect et bouton retour…

    Modif (Juillet 2025) : cette technique est désormais obsolète car intégrée à FileMaker 2025)

    WebDirect a été introduit par Claris à partir de la version 13 de FileMaker et à su évoluer avec le temps en apportant son lot d’améliorations et d’optimisations jusqu’à aujourd’hui.

    Cette technologie permet d’utiliser vos applications FileMaker depuis un navigateur web via le réseau internet. Claris prenant soin d’apporter une expérience utilisateur très proche de celle de FileMaker Pro.

    Cela représente un avantage certain pour les entreprises qui ne souhaitent pas installer FileMaker Pro sur leurs postes. WebDirect et la solution idéale pour accéder à son application depuis le web. Elle convient aux utilisateurs externes, mais elle permet aussi de créer des portails clients par exemple.

    WebDirect nécessite l’installation de FileMaker Server

    Le problème du bouton “back”

    Un retour utilisateur largement répandu est la déconnexion immédiate quand on clique sur le bouton back (ou retour) du navigateur web. Ce bouton est assez perturbant surtout lorsque l’on est utilisateur de FileMaker Pro, la navigation entre enregistrements s’y trouvant au même endroit, et avec le même aspect.

    La solution

    Et bien sachez, chers amis développeurs que nous avons trouvé une petite parade pour pallier ce comportement. Et je vous rassure, cela ne tient que dans un seul et même fichier !

    Ce fichier HTML va permettre à la connexion d’une solution en WebDirect de désactiver la fonction retour de l’historique du navigateur web. Le fait de désactiver ce bouton d’historique, va faire que le bouton retour de la navigation web ne renverra plus qu’un message indiquant à l’utilisateur qu’il ne peut pas utiliser ce bouton de navigation, vous me suivez ? plus de déconnexion !

    Pour utiliser ce fichier, il vous faut FileMaker Server (WebDirect oblige), et simplement héberger ce fichier sur le même serveur.

    • Sur un système Windows, le fichier est à installer dans le répertoire : FileMaker Server\HTTPServer\conf\
    • Sur un système Mac, le fichier est à installer dans le répertoire : FileMaker Server/HTTPServer/htdocs/

    Repertoire de destination du fichier html

    Ensuite au moyen d’un éditeur de texte, ouvrez le fichier HTML. Au niveau de la variable solution, modifiez le nom de la solution que vous souhaitez ouvrir.

    Fichier html destiné à l'ouverture de la solution en Webdirect

     

    Habituellement, un utilisateur utilise un lien WebDirect du type :

    • https://<Nom de votre serveur>/fmi/webd/Nom_de_votre_solution.fmp12

    Avec cette nouvelle solution, l’utilisateur utilisera un lien du type suivant :

    • https://<Nom de votre serveur>/Nom_de_votre_fichier.html

    Dans notre exemple cela donnerait : https://1mt_server/1mt_Tasks.html

    Ainsi, l’utilisateur ne passe plus par l’interface d’accueil de WebDirect mais se connecte directement à sa solution via l’url. Le lien lui, devient plus simple en s’affranchissant du /fmi/webd/

    NB : Si vous testez cette solution avec une connexion non sécurisée, veillez à modifier dans le fichier HTML la variable uri, le https en http.

    Téléchargez le fichier de démo ici : Zip-file-iconWebDirect_Wrapper.zip

    Si vous avez aimé cet article, partagez le !

     

  • FIleMaker 19 : Obtenir une liste d’identifiants avec Exécuter FileMaker Data API

    FIleMaker 19 : Obtenir une liste d’identifiants avec Exécuter FileMaker Data API

    [ATTENTION: cette video en Anglais est réservée aux geeks :). Elle n’explique pas les détails de la technique. Elle n’est là que pour partager une idée, pas du code prêt à l’emploi]

     

    Une de mes fonctionnalités favorites de FileMaker 19 est la nouvelle instruction de script, non documentée, Exécuter FileMaker Data API.

    Comme je l’ai déjà écrit, elle pourrait être améliorer et j’espère qu’elle le sera dans les prochaines versions, mais c’est déjà en l’état une petite révolution.

    Aujourd’hui je partage une technique qui repose sur elle. J’espère avoir réussi à la rendre compréhensible.

     

    Si la longue introduction où j’explique POURQUOI j’aboutis à cette technique vous ennuie, vous pouvez vous rendre directement au time code 5:40.

  • Extension de la classe Javascript FileMaker.PerformScript

    Extension de la classe Javascript FileMaker.PerformScript

    [vc_row bg_color=””][vc_column][vc_column_text]Avec la sortie de FileMaker 19, il devient plus aisé que jamais (c’était déjà très largement possible avant – j’ai eu l’occasion de montrer le “#hash trick” dans quelques conférences 😉 ) de faire communiquer FileMaker et Javascript. Notamment en exécutant du code Javascript dans un Web Viewer grâce au pas de script Exécuter Javascript dans un Web Viewer (FileMaker demande au Web Viewer d’exécuter un Javascript), et à la classe Javascript FileMaker.PerformScript( “Nom du script FileMaker”, “Paramètre facultatif” );

    Toutefois, il manque à nos yeux quelques possibilités à cette dernière. Nous avons évoqué ici l’impossibilité de reprendre un éventuel script FileMaker qui serait en pause, mais il y a aussi l’absence de possibilité de différencier le script appelé (callback) en fonction du succès ou de l’échec. Cet article développe ce dernier point et apporte une solution.

    La programmation asynchrone

    Aucune bibliothèque (library) n’est nécessaire, mais j’ai dû écrire ma propre classe qui étend un peu FileMaker.PerformScript à FileMaker.PerformScript ( scriptName, parameter, successCallback, errorCallback ).

    Un petit exemple pour faire une interaction bidirectionnelle entre FileMaker et Web Viewer. Il s’agit d’un système de callback et/ou de promesse, une façon dont le Javascript appelle souvent quelque chose de l’extérieur et selon que tout s’est bien passé (succès) ou mal (erreur), vous laissez quelque chose se produire dans votre application Javascript.

    En fait, tout se résume donc à cela : “FileMaker, appelle ce script. Si tout s’est bien passé fais ceci, si tout s’est mal passé fais cela”.

    Un exemple concret avec une intégration de calendrier : si l’utilisateur change le lieu d’un événement, il doit appeler FileMaker et l’enregistrer dans la base de données. Si cela n’a PAS réussi (par exemple, erreur d’écriture dans l’enregistrement), il faut annuler la transaction et remettre l’événement à son emplacement d’origine pour que l’utilisateur voie qu’il n’a pas été enregistré. C’est ce qu’on appelle la programmation asynchrone, et c’est quelque chose qu’il faut absolument comprendre si vous voulez continuer avec Javascript.

    Donc, en dans le calendrier, voici ce qui se passe réellement :

    1. L’action en Javascript est appelée, avec immédiatement les actions : que faire si ça va bien, que faire si ça va mal.
    2. En interne, ces actions sont enregistrées, et Javascript appelle FileMaker.
    3. Le code Javascript ne “tourne” plus, il n’y a plus de pause, nous avons effectivement atteint la fin du code.
    4. FileMaker fait son travail et décide s’il veut dire au Web Viewer si cela s’est bien ou mal passé.
    5. Le Web Viewer exécute les morceaux de code (enregistrés à l’étape 1).

    En code :[/vc_column_text][vc_column_text]

    #BUSINESS LOGIC
    #add as much logic as you want, for instance try to write to a folder
    
    #DEMO: a custom dialog
    Show Custom Dialog [ Title: "Choice"; Message: "Was the record saved?"; Default Button: “Yes”, Commit: “No”; Button 2: “No”, Commit: “No” ]
    
    If [ Get ( LastMessageChoice ) = 1 ]
        #we pass success to the callback
        Set Variable [ $result; Value:JSONSetElement ( "" ;
    [ "id" ; JSONGetElement ( Get ( ScriptParameter ) ; "id" ) ; JSONString ]; [ "success" ; Get ( LastMessageChoice ) = 1 ; JSONString ]
    )]
    Else If [ Get ( LastMessageChoice ) = 2 ]
        #we pass error to the callback
        Set Variable [ $result; Value:JSONSetElement ( "" ;
    [ "id" ; JSONGetElement ( Get ( ScriptParameter ) ; "id" ) ; JSONString ]; [ "error" ; Get ( LastMessageChoice ) = 2 ; JSONString ]
    )]
    End If
    
    #RETURN TO WEB VIEWER
    Perform JavaScript in Web Viewer [ Object Name: "wv"; Function Name: "fmcallback"; Parameter 1: $result ]

    [/vc_column_text][vc_column_text]Comme vous le verrez dans l’exemple, j’y ai mis une bibliothèque. Il m’a fallu beaucoup de sueur et de larmes pour que tout cela fonctionne. J’aimerais vous expliquer comment tout cela fonctionne, mais cela se résume à cela :

    J’ai un peu élargi le FileMaker.performScript de sorte que vous pouvez maintenant inclure un callback de réussite et un callback d’erreur. Je l’enregistre, puis j’appelle le script FileMaker. J’ajuste un peu le paramètre, parce que j’ajoute un autre “id” et ensuite le paramètre tel que passé.
    Voyez cela comme une sorte de “ligne téléphonique sur laquelle le FileMaker peut se rappeler”. Lorsque FileMaker appelle à nouveau le Web Viewer avec cette identification, le Web Viewer sait de quelle action il s’agit.

    En fait, le Web Viewer dit à FileMaker : “Bonjour, je suis l’action 23 et je voudrais que tu conserve cet enregistrement”. Après, FileMaker dit au Web Viewer que l’action 23 s’est très bien passée !

    Et voici un exemple, jouez avec et s’il y a des questions, n’hésitez pas à les poser ci-dessous ! C’est un concept assez difficile, mais une fois que vous avez maîtrisé la programmation asynchrone, vous désirerez en faire de même dans FileMaker 🙂

    Promesses (promise)

    Oh oui, pour les irréductibles : cela fonctionne aussi avec les promesses (sur Mac en tout cas, sur Windows pas sûr), donc vous pouvez faire ça aussi :[/vc_column_text][vc_column_text]

    fm.performScript ( "getData", "" )
        .then ( (data) => {
           //data is script result of getData
           data.sort();
           fm.performScript ( "storeData", data);
         })
        .then ( ( data ) => {
           //data is script result of storeData
           //do things here
        })
        .catch ( ( error ) => {
            //this is the error of getData or storeData, cool isn't it? :)
            alert(error);
     
        })
    

    [/vc_column_text][/vc_column][/vc_row][vc_row bg_color=””][vc_column width=”1/1″][ish_button el_text=”Télécharger l’exemple” url=”url:https%3A%2F%2Fwww.1-more-thing.com%2Fwp-content%2Fuploads%2F2020%2F06%2F1MT_javascriptCallBack.zip|title:T%C3%A9l%C3%A9charger%20l’exemple||” size=”big” align=”center” color=”color7″ text_color=”color4″][/vc_column][/vc_row]

  • FileMaker 19 : entrée dans un nouveau monde

    FileMaker 19 : entrée dans un nouveau monde

    [vc_row bg_color=””][vc_column][vc_column_text]FileMaker 19 vient de sortir, et il y a beaucoup à dire, tant sur les nouvelles fonctionnalités que sur l’évolution de la plateforme en général.
    Plutôt que de publier comme nous le faisons d’habitude une longue vidéo, nous avons pensé qu’un article de fond avait cette fois-ci plus de sens.

    Quelques éléments de contexte tout d’abord. Tout a changé cette année chez Claris, à commencer par le nom de la société, encore FileMaker Inc. il y a moins d’un an. FileMaker 19 est donc la première sortie majeure depuis le changement de nom, mais aussi et surtout depuis l’arrivée d’une nouvelle équipe dirigeante, dont Brad Freitag (CEO), et Srini Gurrapu (Vice President of Products & Design) sont les membres plus visibles (mais il y a aussi du changement aux niveaux marketing et commercial)… bref, beaucoup a changé, et la baseline —a priori un peu naïve— de Claris “Anything is possible” prend en fait son sens.

    En quelques mois, tout ce qui était impossible est devenu incontournable, donc possible.

    Les effets sont tellement nombreux et tellement enthousiasmants qu’on ne pourrait les lister tous, mais disons quelques mots sur les cycles de développement de la plateforme.

    Cycles de développement

    Srini Gurrapu, ClarisTout d’abord, il a fallu environ 28 secondes à Srini Gurrapu pour comprendre l’anachronisme que constituait la maintenance des versions Windows et mac OS de FileMaker Server. Les dépendances à Java et à ses implémentations rendent cela très coûteux, et une des premières choses annoncées à la DevCon était qu’on irait vers un serveur unique, ce que Romain Dunand et moi-même avions bien compris comme signifiant une version Linux. Ce point avait été confirmé par le même Srini lors de la FM Conf, en France en 2019.

    Donc sur le serveur, nous disposons maintenant —pour les tests uniquement à ce stade— d’une version Linux en plus des versions mac OS et Windows, et il est probable que ces deux dernières soient de l’histoire ancienne dans quelque temps [EDIT: la version Linux est désormais officielle. Nous avons annoncé le jour de la sortie notre service d’hébergement FileMaker révolutionnaire : fmcloud.fm. Non seulement nous utilisons la version Linux, mais sur architecture Docker, ce qui change tout (nous y reviendrons)]. Cela ne signifie pas que vous ne pourrez plus installer un FileMaker Server sur un Mac ou un PC sous Windows, mais vraisemblablement l’installation inclura une machine virtuelle ou dockers Linux (Cent OS est mentionné, mais d’autres distributions peuvent être utilisées).

    Sur les cycles de développement a proprement parler, FileMaker 19 est annoncée comme la dernière version numérotée. À partir de maintenant, on devrait avoir une sortie trimestrielle et non plus annuelle. La prochaine version devrait donc être la 2020.1, puis on aura 2020.2… Cela permet à Claris de diffuser des fonctionnalités beaucoup plus rapidement, et y compris dans un état “preview” afin de recueillir des feed-back d’utilisateurs plus tôt dans le cycle. C’est par exemple déjà le cas avec la fonctionnalité de création d’Add-ons, présente dans la version 19 mais susceptible de changer (et pleine de bugs d’ailleurs).

    On passe donc d’un cycle “à l’ancienne”, avec des fonctionnalités figées très tôt, un grand raout au mois de mai avec le besoin que les fonctionnalités soient suffisamment “bling-bling” pour que le marketing puisse en faire quelque chose, à des livraisons beaucoup plus agiles et des fonctionnalités plus adaptables et encore plus proches des besoins réels.[/vc_column_text][vc_column_text]

    Ecosystème

    La première chose qu’on remarque, c’est peut-être le changement d’icône. Voilà près de 30 ans que FileMaker est identifiable par un dossier en carton (ici l’icône de FileMaker 2.0, en 1992) [NB : les puristes —pour ne pas dire David Julot ;)— me feront remarquer que FileMaker 3 avait commis une infidélité], et d’un coup d’un seul cette image est abandonnée au profit d’une variante du logo de la société éditrice, Claris.

    FileMaker 2.0

    Il faut bien prendre en compte ici l’aspect stratégique de la chose : Claris n’est plus uniquement l’éditeur de FileMaker, elle a désormais d’autres cordes à son arc : Claris Connect, dont je reparlerai plus bas, et FileMaker Cloud. Ces deux derniers faisant de Claris une société de services en plus d’être un éditeur.

    Personnellement, j’aurais aimé que l’on pousse la logique jusqu’à changer le nom du produit. FileMaker, le “faiseur de fichier” (ou — littéralement— le faiseur d’embouteillage en néerlandais, ce qui est très vendeur…), n’évoque rien aux générations n’ayant pas connu un index papier. Tiens, d’ailleurs, vous souvenez-vous de l’infidélité commise par FileMaker 3.0 sus-mentionnée ?

    FileMaker Pro 3.0

    Donc quitte à changer, j’avoue que j’aurais été content qu’on se débarrasse aussi de cette association avec un monde révolu, qui vaut d’ailleurs souvent des remarques du genre “tiens, FileMaker ! ça existe encore ?” par des personnes ayant connu le logiciel au millénaire précédent. Mais ce n’est pas ce qui a été décidé. Passons donc à la suite.

    À propos de changement de nom, l’avez-vous remarqué ? FileMaker Pro Advanced a disparu, on parle maintenant de FileMaker Pro (le logiciel avait été unifié lors de la sortie de FileMaker 17, mais on avait opté -étrangement je trouve- pour le nom “Advanced”). Peut-être était-ce dans un premier temps pour que personne ne croit avoir perdu au change, mais quitte à garder ce nom antédiluvien, autant garder celui que tout le monde connaît : FileMaker Pro. C’est chose faite en 19.

    Autre point très important à noter : la fin de la compatibilité de FileMaker Pro avec les versions 32 bit de Windows. La plateforme FileMaker achève donc sa transition : c’est 64bits ou rien, côté serveur comme côté client. Là encore, ce sont des versions de moins à maintenir, et plus de ressources pour le développement et l’innovation.

    Probablement pour la même raison, la fenêtre de compatibilité a été réduite. Jusqu’à présent, le serveur supportait les clients jusqu’à 2 version antérieures ou postérieures (les clients 14 à 18 pouvaient par exemple se connecter à un serveur 16. Or FileMaker Server 19 n’est pas compatible avec les clients FileMaker Pro Advanced 17, et inversement.

    Le Runtime a disparu, comme annoncé il y a déjà 5 ans. Il n’est donc plus possible de distribuer des applications autonomes mono-utilisateur sur Mac et Windows. Mais les runtime existants ainsi que les copies de FileMaker 18 n’ont pas disparu dans la nuit, donc il reste encore un peu de temps aux éditeurs d’applications “runtime” pour se retourner. Notamment, rappelons que le iOS SDK permet de compiler des applications pour iOS.[/vc_column_text][vc_column_text]

    Premières impressions

    Les changements les plus immédiatement visibles sont réservés à la version mac. Fini l’installateur à l’ancienne : on glisse simplement l’application dans le dossier Applications, et c’est parti. Petit détail induit : pour ceux qui comme moi travaillent en Anglais sur un mac OS en français, il faut passer l’étape de la validation. Autrement dit : avant de farfouiller dans le contenu du paquet pour déplacer le dossier fr.lproj, il faut d’abord lancer une fois l’application en français, sans quoi la validation échouera.

    Autre point : le Dark mode. Pour les adeptes du mode sombre de mac OS, l’ensemble des interfaces de FileMaker -à l’exception du graphique des liens- a été adapté pour se conformer. Une fonction de calcul permet de savoir si l’application tourne en Dark mode ou non : Obtenir ( ApparenceSystème ). Personnellement, au-delà des considérations esthétiques, j’ai adopté le mode sombre pendant quelques mois pour pouvoir rapporter des problèmes à Claris, mais j’avoue avoir eu l’impression de recouvrer la vue en réactivant le mode clair. Malgré tout, nous avons plusieurs clients qui travaillent dans des environnements sombres (salles de projections, studios d’enregistrement…), et qui seront ravis de cette évolution.
    Autre bonne nouvelle associée : pour faire cela, Claris a été obligé de moderniser certaines interfaces, et plusieurs générations de boutons aux styles divers ont (enfin !) été uniformisées (par exemple la fenêtre de gestion des modèles).

    Nouveautés

    Les nouveautés sont très nombreuses et ont pour certaines d’entre elles des implications très importantes. Si vous êtes en train de lire ce long post de blog sur le site de 1-more-thing, c’est parce que vous savez que bien que passionnés par FileMaker, nous conservons une liberté de ton et un regard critique. Aussi vous trouverez dans les explications ci-dessous, comme dans nos habituelles vidéos, des regrets ou des critiques, mais sachez que dans l’ensemble nous sommes extrêmement enthousiastes à propos de cette version.
    J’aborderai ces nouveautés dans l’ordre d’importance, ce qui est bien sûr très subjectif. Toutefois, je regrouperai les fonctionnalités plus orientées FileMaker Go à la fin.

    Add-ons

    Cette fonctionnalité est en “preview”, entendez par là qu’elle n’est pas exempte de bugs, et qu’elle n’a pas encore livré tout son potentiel. Mais cette fonction va révolutionner complètement la manière des concevoir des applications FileMaker.

    Présents à titre d’exemple depuis FileMaker 17, les add-ons peuvent maintenant être conçus par des développeurs tiers ou par vous-mêmes. En mode modèle, on peut simplement glisser un module sur l’interface depuis le troisième onglet du volet gauche du mode modèle. Concrètement, on peut intégrer en quelques secondes un module de paiement, un calendrier, un éditeur de texte…
    Dès maintenant, je vous encourage à “bookmarker” notre page dédiée.

    Un nouveau pas de script, Save a copy as Add-on package, non documenté car en “preview”, est là pour créer un Add-on à partir d’une fenêtre ouverte.

    Au niveau des regrets —qu’il est encore une fois un peu tôt pour avoir, la fonctionnalité n’étant qu’en “preview”— on notera :

    • impossibilité de partager certaines ressources entre add-ons (si deux add-ons utilisent la même fonction, il faudra l’importer deux fois)
    • pas de mécanisme de mise à jour (si l’éditeur d’un add-on sort une nouvelle version)

    Intégration Javascript

    Deux nouvelles fonctionnalités concernent javascript : le pas de script Exécuter JavaScript dans Web Viewer et la possibilité depuis Javascript d’exécuter un script FileMaker : FileMaker.PerformScript

    Intrinsèquement liée à la fonctionnalité des add-ons car permettant d’utiliser Javascript comme interface de composants, on peut toutefois regretter que dans cette implémentation :

    • Javascript ne puisse être exécuté que dans un web viewer. Il serait tellement pratique et puissant de pouvoir utiliser Javascript dans un calcul ou un script indépendant de l’interface. Ainsi limité, on ne peut pas tirer profit de cette nouvelle possibilité dans les scripts serveur. Heureusement, il existe des plugins tiers pour ça (dont l’excellent MBS)
    • La commande FileMaker.PerformScript ne permet pas de contrôler la reprise d’un script en pause en FileMaker. C’est extrêmement dommage pour une programmation synchrone, dans laquelle un script appelant, en pause, attend le résultat d’une action faite par l’utilisateur dans un web viewer. [EDIT : la version 19.2 ajoute une fonction qui comble ce manque. FileMaker.PerformScriptWithOptions]
    • Enfin, toujours pas de nouvelles de LA demande de tous les développeurs depuis l’introduction des web viewer en version 8.5 (2006) : la possibilité d’obtenir le contenu d’un web viewer après exécution du javascript avec la fonction ObtenirAttributObjetModele.

    Ouverture d’un fichier par défaut

    Default fileÇa c’est le genre de petites choses qui changent tout. Déjà présente en version 18, mais réservée aux installations automatisées, une nouvelle préférence fait son apparition dans l’interface.

    Elle permet de configurer FileMaker Pro pour ouvrir systématiquement le même fichier dès le lancement. Une très grande majorité des utilisateurs de FileMaker utilisent toujours la même application personnalisée. Voici quelque chose qui leur simplifiera la vie.

    Petits regrets :

    • on ne peut toujours pas définir ce réglage par script, il faudra donc passer sur chaque machine (sauf en cas d’installation automatisée)
    • comme dans la fenêtre d’ouverture à distance, le chemin d’un fichier distant s’exprime en fmnet:/serveur/fichier et ne convertit pas une éventuelle URL en fmp://serveur/fichier. On n’est donc pas encore entièrement débarrassé de ces explications compliquées pour un utilisateur final. Un petit mémo ici, sur notre portail de support.

     

    Sélection de modèle

    Layout Quick OpenAutre point qui va cette fois-ci changer la vie des développeurs : la sélection d’un modèle par moteur de recherche.

    En mode modèle, utilisez la combinaison de touches cmd-alt-K (mac OS) ou ctrl-alt-K (Windows) pour activer un moteur de recherche permettant de sélectionner un modèle et de vous y rendre rapidement. La qualité de vie des développeurs sous Windows en sera grandement améliorée.

     

    Execute FileMaker Data API

    Ce pas de script, qui fait son entrée de manière très discrète puisque non mentionné dans la documentation (!) est en soi une petite révolution.

    Il permet d’exposer l’API Data au moteur de calcul de FileMaker. Autrement dit, si vous savez créer une requête en JSON pour l’API Data, vous savez aussi le faire au sein de FileMaker Pro (c’était préalablement réservé à FileMaker Server). Dans bien des cas, cela peut remplacer (avantageusement) la fonction ExecuteSQL.

    Plutôt que de décrire dans le détail ce pas de script, je vous mets en lien un poste de blog de Todd Geist qui a remarquablement synthétisé.

    https://www.geistinteractive.com/2020/05/20/filemaker-19-execute-filemaker-data-api-script-step/

     

    Malheureusement, et bien que je sois convaincu qu’il s’agisse d’un immense pas en avant (je serais prêt à parier que ce pas de script sera utilisé de manière intensive dans nos applications), il y a là encore matière à regrets.

    • Tout d’abord, il a été décidé d’implémenter cette fonctionnalité en tant que pas de script uniquement et pas en tant que fonction de calcul. Quel dommage ! Nous nous retrouvons donc avec ExecuterSQL qui est une fonction de calcul dont l’objet de la requête est la table et sans notion de contexte, et Execute FileMaker Data API qui est un pas de script qui requête un layout (modèle), et donc avec une notion de contexte. Faites votre choix ! Il aurait été tellement merveilleux de pouvoir requêter un contexte au sein d’un calcul !
    • D’un autre côté, la grosse limite de la fonction ExecuterSQL, c’est qu’elle ne prend en charge que la lecture (SELECT), et ce au prétexte que c’est une fonction, et donc qu’elle ne doit pas avoir d’effet de bord (passons sur le fait que l’API plugin permet depuis très longtemps à un plugin de contourner cela…). Et donc, l’avantage d’être un pas de script aurait pu être de permettre l’écriture ou l’exécution de scripts, ce que permet l’API Data. Et bien non ! Là encore, ce nouveau pas de script est limité à la lecture. On pourrait se dire que, si l’on a activé l’API Data sur le serveur et que les données entrantes ne sont pas comptabilisées dans la consommation de l’API (limitée en fonction de votre licence), il suffit pour cela d’utiliser Insérer depuis une URL pour poster des modifications de données. Ce serait oublier que la réponse faite par la Data API est elle une donnée sortante et est donc comptabilisée. Cela ne peut donc malheureusement pas être un mode viable de remplacement des écritures dans la base de données, sauf trafic très limité. Bref, on est passé à un cheveu d’une révolution, mais…

    Mais on peut aussi utiliser cette nouveauté pour récupérer une liste d’identifiants.

    Nombre de pages et notation scientifique

    Je ne vais pas faire long sur ces deux points. Ils arrivent avec une bonne vingtaine d’années de retard, ce qui nous a laissé tout le temps de trouver des contournements à ces manques, mais enfin… on peut enfin afficher le nombre total de pages d’un document imprimé ou d’un PDF sans recourir à des “trucs” et astuces. Également, on peut, au niveau du modèle formater un nombre au format notation scientifique (en puissances de 10 donc)

    Les fenêtre carte dans Web Direct

    Le titre dit tout. Les fenêtres cartes étaient déjà gérées mais occupaient toute la fenêtre du navigateur. Désormais on a le même comportement en Web Direct que FileMaker Pro. J’avoue que ça n’était pas un sujet qui me préoccupait beaucoup. Tant qu’on n’aura pas des interfaces vraiment responsive (avec “reflow”) ou des déclencheurs onObjectMouseOver, il me semble que Web Direct ne pourra pas faire illusion en termes d’interface. C’est toujours très adapté pour un intranet, mais si on est exigeant sur l’UX, un développement personnalisé comme nous les réalisons maintenant avec un vrai front end en Vue.js, et l’API Data en backend donne des résultats incomparables, et pour des budgets somme toute très raisonnables. J’avoue donc ne pas parvenir à l’extase avec cette nouveauté, mais c’est tout de même clairement un progrès.

    Et du côté FileMaker Go…

    Les fonctionnalités ci-dessous ne sont pas toutes strictement réservées à FileMaker Go, toutefois c’est dans ce cadre là qu’elles sont plus pertinentes, c’est pourquoi je les ai mises en fin de liste. Mais ça ne signifie pas que ce ne soit pas important.

    Core ML

    Core ML est le framework d’Apple permettant assez facilement aux application iOS et macOS d’intégrer des modèles extrêmement complexes d’intelligence artificielle (IA).

    Ce qui est implémenté ici, ce sont les modèles dont le résultat est une chaîne de caractères (plus précisément : des données scalaires). Les modèles retournant, par exemple, une image ou un array multidimensionnel ne sont pas implémentés.

    Concrètement, les modèles les plus utiles seront à n’en pas douter ceux de reconnaissance d’objet ou de régression… de quoi tout de même proposer des choses très intéressantes, par exemple dans des applications d’inventaire ou de gestion d’entrepôts.

    La “fonctionnalité” tient en deux éléments : un pas de script : Configurer le modèle de Machine Learning, et une fonction de calcul : ComputeModel.

    La compatibilité indiquée dans la documentation est : Oui pour FileMaker Go, et Partielle pour FileMaker Pro et pour FileMaker Server. Cela nous rappelle que CoreML est une composante de macOS. Les versions Windows, Linux, ou peut-être un jour Android ne sont pas concernées.

    Lecture NFC (Near Field Communication)

    Voilà une fonctionnalité qui tombe à pic ! À l’heure où tout contact est appréhendé comme un risque majeur pour la santé, FileMaker Go se dote de la capacité d’interagir avec des objets à proximité. Ainsi, avec notamment la facilité d’implémenter un paiement par carte au moyen d’add-on (voir ci-dessus), on peut en plus très facilement lire une carte sans contact. Ce n’est qu’une des nombreuses applications possible avec NFC, et c’est vraiment très simple à faire grâce au pas de script Configurer lecture du protocole NFC. Attention, il faut rappeler que l’iPhone est arrivé très tard au NFC (l’iPhone 6 le proposait déjà mais le réservait aux paiement avec Apple Pay, et il a fallu attendre l’iPhone 11 pour pouvoir en faire autre chose, il faut donc s’assurer que le parc hardware est compatible).

    Raccourcis Siri

    En ces temps de confinement, il est rassurant de savoir qu’on peut toujours, en cas de solitude extrême, parler à Siri.
    Il est désormais possible de configurer un script pour qu’il soit accessible par l’application Raccourcis (Shortcuts).
    Bon, je vous avoue qu’à titre personnel je ne suis pas trop fan des interfaces vocales mais j’ai testé et ça marche bien.
    En cas de sortie dans l’espace, n’oubliez pas de configurer un raccourci Siri pour le script d’ouverture de la porte, on ne sait jamais.

    Hal 9000

    L’Univers et le reste

    Bien sûr il y a beaucoup de choses à dire sur les fonctionnalités listées ci-dessus. Nous reviendrons notamment longuement sur les Add-ons, mais encore une fois, c’est la direction prise qui est passionnante.
    Les Add-ons couplés à l’intégration de Javascript vont véritablement révolutionner la manière de créer des “custom apps” avec FileMaker. Jusqu’ici, on avait de belles longueurs d’avance sur d’autres plateformes comparables, mais il faut reconnaître que certaines avaient aussi leurs avantages, et notamment une architecture modulaire qui faisait défaut. Non seulement le retard sur ce point est en passe d’être comblé, mais on vient de reprendre sur d’autres points encore de l’avance. FileMaker devient difficilement contestable comme leader des plateformes low code.

    Claris Connect

    Je voudrais conclure sur un point passé presque inaperçu il y a quelques semaines : les nouveaux tarifs de Claris Connect. Lors de la sortie de Claris Connect en mars, nous qui l’avions testé pendant de longs mois et qui étions hyper enthousiastes sur le produit lui-même, étions, pour le dire gentiment, un peu gênés par les tarifs et les plans annoncés. Pour le dire moins gentiment et de manière concise : ces tarifs ne pouvaient absolument pas permettre à cette nouvelle plateforme d’automatisation et d’orchestration d’éclore et de devenir un standard du marché.
    Or il semble que nous n’ayons pas été les seuls à penser ainsi. Et c’est intelligemment que l’équipe de Claris a décidé de réagir rapidement. Des nouveaux tarifs ont été publiés, et rendent non seulement la plateforme très intéressante, mais en font également un outil complémentaire de FileMaker. En effet si vous êtes client de FileMaker, le tarif pour Claris Connect (FM Plus) est devenu vraiment très abordable. Ceci signifie que nous entrons vraiment dans un monde beaucoup plus modulaire, où des applications complexes peuvent s’assembler plus facilement, dont les composantes peuvent être plus simples, plus robustes, et dont la maintenance est encore mieux assurée…

    Après une version 18 un peu décevante, cette version 19 est un pas de géant !

    Si cet article vous a plu, n’hésitez pas à laisser un commentaire ci-dessous.

    Je vous rappelle que vous pouvez également sélectionner la licence FileMaker qui vous correspond le mieux grâce à notre petit module (développé en Web Direct !). Merci de passer par nous pour commander et gérer vos licences FileMaker ![/vc_column_text][/vc_column][/vc_row][vc_row bg_color=””][vc_column width=”1/1″][ish_button el_text=”Sélectionnez la meilleure licence” url=”url:https%3A%2F%2Fwww.1-more-thing.com%2F1-more-quote%2F||target:%20_blank|rel:nofollow” size=”big” align=”center” color=”color7″ text_color=”color4″][/vc_column][/vc_row]

  • Un nouvel outil pour choisir sa licence FileMaker et/ou son hébergement

    Un nouvel outil pour choisir sa licence FileMaker et/ou son hébergement

    [vc_row bg_color=””][vc_column][vc_column_text]Depuis longtemps, nombreux sont ceux qui savent qu’en s’adressant à 1-more-thing pour leurs questions relatives aux licences FileMaker, ils bénéficient d’une qualité de conseil et d’un service qu’ils ne trouvent nulle par ailleurs.

    Bien souvent nous avons permis à nos clients d’économiser des sommes considérables, ou de les réconcilier avec la politique de licences, parfois difficile à suivre (même si largement simplifiée depuis FileMaker 17)

    complex decision treeCela n’a l’air de rien, mais pour une gamme de produit apparemment simple comme FileMaker, il existe —tenez-vous bien— plus de 1800 références !

    Oh ! certes, il serait exagéré de dire que nous utilisons toutes ces références, mais tout de même, il faut bien connaître les différentes possibilités. Non seulement ce qui est intéressant au niveau du prix, mais aussi ce qui est permis par les termes de licence !

    Et bien croyez-le ou non (nous-mêmes étions sceptiques avant de nous lancer), nous avons réussi à intégrer pratiquement toutes nos connaissances en la matière dans un algorithme qui vous permettra en quelques instants de sélectionner la bonne licence !

    En répondant à quelques questions très simples, vous aurez le choix entre deux ou trois possibilités seulement. Il ne vous restera plus qu’à choisir parmi cette pré-sélection.

    Et pour couronner le tout, vous pouvez dans le même assistant opter pour un hébergement fmcloud.fm, un hébergement FileMaker dont la qualité est telle qu’il est le seul sans engagement de durée.

    Dès que votre commande est validée, nous passons la commande auprès de FileMaker et, si vous avez opté pour un hébergement, nous déployons votre serveur. En quelques minutes, votre cloud est déployé et vous pouvez travailler.

    Et s’il vous reste des questions… nous sommes toujours là ![/vc_column_text][/vc_column][/vc_row][vc_row bg_color=””][vc_column width=”1/1″][ish_button el_text=”Choisir ma licence” url=”url:https%3A%2F%2Fwww.1-more-thing.com%2F1-more-quote%2F||target:%20_blank|” size=”big” align=”center” color=”color7″ text_color=”color4″][/vc_column][/vc_row]