Le lanceur, le démarrage et la barre d'outils

Ce que le composant installe dans votre projet, et comment activer ce qu'il laisse désactivé : le lanceur, les lignes ajoutées à vos méthodes base, et la barre d'outils 4D.

Le lanceur

La méthode _BSPK_LAUNCH ouvre le lanceur du composant (elle s'appelait BSPK_LAUNCH avant la version 21). Ses boutons :

BoutonOuvre
Ouvrir l'ATLL'explorateur de données ATL
Exécuter méthodeLe dialogue d'exécution d'une méthode, en local ou sur le serveur
Exécuter codeLe dialogue de saisie et d'exécution de code 4D
Ouvrir l'éditeur d'objet JSONL'éditeur d'objets JSON
BWEBLe panneau d'installation : licence, puis Démarrer l'installation
Tester BWEBLe navigateur sur https://<votre domaine>/bweb

Ce que fait l'installation

L'assistant refuse de s'exécuter si le projet est compilé ou s'il n'est pas ouvert en local. Il enchaîne ensuite :

  1. L'environnement : Node.js et npm (installés s'ils manquent), les bibliothèques, la compilation des feuilles de style, la configuration du serveur web et les certificats SSL.
  2. Les fichiers et méthodes copiés dans le projet, et les lignes ajoutées aux méthodes base (voir plus bas), puis les tables BSPK_*. 4D redémarre.
  3. Les relations et les index. 4D redémarre une seconde fois.
  4. La fin : l'enregistrement de version du composant, la tâche planifiée qui tient à jour l'instantané d'échange du contenu (sur un poste de développement), l'archivage de l'historique, l'utilisateur DEV, le premier domaine et le point de départ de la réconciliation du contenu.

Pour survivre à ses propres redémarrages, l'installation écrit un fichier Resources/INSTALL dans votre projet. Tant qu'il existe, 4D rouvre le lanceur au démarrage pour reprendre l'installation, et la barre d'outils ne s'ouvre pas. Il est supprimé à la dernière étape.

Ce qui est copié dans votre projet

Seulement ce qui manque : un fichier qui existe déjà sous le même nom n'est jamais écrasé.

  • Les fichiers de configuration, dans Resources/json : APP_PARAMETERS, DEV_PARAMETERS, PREPROD_PARAMETERS, WEB_PARAMETERS, Modul_menus (les menus de la barre d'outils) et MODULE_GENE.
  • Les méthodes BSPH_* : les points d'entrée par lesquels le composant appelle votre code (BSPH_WEB_ON_CONNECTION, BSPH_VERSION_UPDATES, BSPH_EXECUTE_METHOD…). Ne les supprimez pas.
  • La classe BSPKFormController.

Une installation neuve démarre en mode DEV : le modèle DEV_PARAMETERS fait partie des fichiers copiés. Sur un serveur de production, supprimez DEV_PARAMETERS et PREPROD_PARAMETERS. Voir Les fichiers de paramètres.

Chaque mise à jour du composant refait cette copie : une nouvelle version ajoute les méthodes et les modèles qu'elle introduit, sans toucher aux vôtres.

Les lignes ajoutées à vos méthodes base

Chaque ligne n'est ajoutée que si son texte n'est pas déjà présent dans la méthode.

Sur ouverture et Sur démarrage serveur (On Startup, On Server Startup)

//BSPK_CONFIRM_STARTUP_MODE                      // en commentaire
BSPK_STARTUP                                     // active
//BSPK_LOGIN_ON_STARTUP                          // en commentaire
//cs.bspkComponent.ToolBar_FC.new().start()      // en commentaire
Use (Storage)                                    // bloc actif
var $vo_storage : Object
$vo_storage:=BSPK_Storage
Storage.vo_Param:=OB Copy($vo_storage.vo_Param; ck shared)
Storage.vo_SharedStorage:=OB Copy($vo_storage.vo_SharedStorage; ck shared)
End use
LigneRôle
BSPK_CONFIRM_STARTUP_MODEAffiche au démarrage « 4D va démarrer en mode X, voulez-vous continuer ? », le mode étant déduit des fichiers de paramètres présents. Accepté automatiquement au bout de 60 secondes ; fermer la fenêtre quitte 4D. Utile sur un serveur qui héberge à la fois une copie de développement et une copie de production.
BSPK_STARTUPLe démarrage du composant : vérifie la présence d'APP_PARAMETERS, charge les paramètres, joue les mises à jour en attente, démarre le serveur web, le WebSocket et les tâches planifiées selon les paramètres.
BSPK_LOGIN_ON_STARTUPAffiche le formulaire de connexion 4D du composant. En mode DEV, la connexion se fait automatiquement avec l'utilisateur DEV (maintenez Maj pour forcer le formulaire). Sur 4D Server, aucun formulaire.
ToolBar_FC…start()La barre d'outils, ci-dessous.
Bloc Use (Storage)Votre projet a son propre Storage, distinct de celui du composant. Ce bloc y recopie vo_Param (les paramètres) et vo_SharedStorage. C'est une copie au démarrage : une valeur modifiée ensuite côté composant n'est pas répercutée.

Sur connexion Web (On Web Connection)

Si la méthode ne contient pas déjà l'appel au composant, son code existant est mis en commentaire (/* … */), puis l'appel à BSPK_WEB_ON_CONNECTION est ajouté. Votre code web passe ensuite par la méthode BSPH_WEB_ON_CONNECTION.

#DECLARE($vt_1 : Text; $vt_2 : Text; $vt_3 : Text; $vt_4 : Text; $vt_5 : Text; $vt_6 : Text)
BSPK_WEB_ON_CONNECTION($vt_1; {vo_Session: Session; vt_HTTP_Header: $vt_2; vt_Browser_IP: $vt_3; vt_Server_IP: $vt_4; vt_User_Name: $vt_5; vt_Password: $vt_6})

Sur fermeture et Sur arrêt serveur (On Exit, On Server Shutdown)

BSPK_QUIT : arrête Node.js et les tâches planifiées, puis quitte 4D.

La barre d'outils

L'activer

Retirez le // devant cs.bspkComponent.ToolBar_FC.new().start() dans Sur ouverture, après BSPK_STARTUP. C'est une fenêtre d'interface (type barre d'outils) : la ligne écrite dans Sur démarrage serveur n'a pas d'utilité sur un serveur sans écran. La connexion (BSPK_LOGIN_ON_STARTUP) n'est pas obligatoire, mais sans elle les droits et les préférences de l'utilisateur ne s'appliquent pas aux boutons.

La barre ne s'ouvre pas pendant une installation (fichier INSTALL présent), ni quand aucun bouton n'est à afficher : la barre d'outils standard de 4D reste alors en place.

D'où viennent les boutons

  • Les boutons principaux, à gauche : la clé ToolBar du fichier Modul_menus.
  • Les boutons développeur, à droite : le fichier ToolBarDev du composant, affiché en mode DEV, quand le composant est ouvert seul, ou pour l'utilisateur DEV. En mode DEV, un motif en fond de fenêtre signale le mode.

Ces fichiers sont lus dans le composant et dans votre projet : quand les deux existent, leur fusion s'affiche, votre projet l'emportant.

Une entrée

CléRôle
vt_ActionCe que lance le clic (voir plus bas). Une entrée sans vt_Action ni vo_SubMenu est ignorée.
vo_SubMenuUn menu local à la place : des éléments {vt_Xliff, vt_Action, vt_Right}, ou "-" pour un séparateur.
vt_Xliff, vt_HelpTipLibellé et infobulle : une clé de traduction, ou un texte brut.
vt_PictureNameIcône SVG, cherchée dans Resources/images/svg du projet, puis du composant.
vt_MenuGroupUn changement de groupe insère un séparateur.
vt_RightLe droit nécessaire pour voir le bouton.
vt_VisibleWhenUne condition d'affichage : notCompiled, compiled, dev, component, componentInterpreted, host, clientServer, standalone, ou une expression 4D. Une condition qui provoque une erreur affiche le bouton. Sans effet dans un sous-menu.
visible, enablevisible:false masque le bouton mais garde sa place.
vl_Width (45), vl_Height (50), vl_IconHeightDimensions.
vo_ShortCut{shortcutKey, shortcutAccel, shortcutControl, shortcutShift, shortcutAlt}

Ce que lance un clic

  1. Un sous-menu : le menu s'affiche, puis l'action choisie est lancée.
  2. Une classe du composant de ce nom : cs[vt_Action].new().start().
  3. Une méthode de ce nom, dans le composant ou dans votre projet : elle est exécutée.
  4. Sinon, vt_Action est exécuté comme une formule, dans le contexte de votre projet en dernier recours.

Pour un bouton de votre projet, vt_Action est donc le nom d'une de vos méthodes, ou une formule comme cs.MonFormulaire_FC.new().start(). Le nom seul d'une de vos classes ne fonctionne pas : l'étape 2 cherche dans les classes du composant.

Ajouter vos boutons

Ajoutez vos entrées sous ToolBar dans le fichier Modul_menus de votre projet, avec l'éditeur d'objets JSON (le fichier est chiffré). La fusion ne peut pas retirer une entrée du composant : masquez-la avec visible:false ou une condition vt_VisibleWhen fausse. Placez vos icônes dans Resources/images/svg.

Masquer des groupes par utilisateur

Le champ objet preferences de l'utilisateur (BSPK_USER) peut porter vc_ToolBarVisible : [{"GroupName": "<vt_MenuGroup>", "vb_Show": false}] masque tout un groupe pour cet utilisateur. Aucun écran ne le renseigne : modifiez l'enregistrement.

Bon à savoir

  • Une ligne de barre d'outils en commentaire peut réapparaître après une mise à jour du composant, à côté de celle que vous avez activée. Elle est sans effet : laissez-la en commentaire.
  • Si tous les boutons ne sont masqués que par des conditions vt_VisibleWhen, une fenêtre de barre d'outils vide peut s'ouvrir.
  • Désinstaller BWEB ne restaure pas Sur connexion Web : l'ancien code est toujours là, entre /* … */.

Voir aussi