Aller au contenu principal
Version : 20

Gestion du code

The 4D code used across your application is written in methods and classes.

L'IDE de 4D vous offre diverses fonctionnalités pour créer, modifier, exporter ou supprimer votre code. You will usually use the 4D code editor to work with your code.

Créer des méthodes​

Une méthode dans 4D est stockée dans un fichier .4dm situé dans le dossier approprié du dossier /Project/Sources/.

Vous pouvez créer plusieurs types de méthodes :

  • Tous les types de méthodes peuvent être créés ou ouverts à partir de la fenêtre de l'Explorateur (à l'exception des méthodes objet qui sont gérées à partir de l'éditeur de formulaires).
  • Les méthodes projet peuvent également être créées ou ouvertes à partir du menu Fichier ou de la barre d'outils (Nouveau/Méthode... ou Ouvrir/Méthode...) ou à l'aide de raccourcis dans la fenêtre de l'éditeur de code.
  • Les triggers peuvent également être créés ou ouverts à partir de l'éditeur de Structure.
  • Les méthodes formulaire peuvent également être créées ou ouvertes à partir de l'éditeur de formulaires.

Créer des classes​

Une classe utilisateur dans 4D est définie par un fichier de méthode spécifique (.4dm), stocké dans le dossier /Project/Sources/Classes/. Le nom du fichier est le nom de la classe.

Vous pouvez créer un fichier de classe à partir du menu ou de la barre d'outils Fichier (Nouveau/Classe...) ou dans la page Méthodes de la fenêtre de l'Explorateur .

Pour plus d'informations, reportez-vous à la section Classes.

Supprimer des méthodes ou des classes​

Pour supprimer une méthode ou une classe existante, vous pouvez :

  • sur votre disque, supprimer le fichier .4dm du dossier "Sources",
  • dans l'explorateur de 4D, sélectionnez la méthode ou la classe et cliquez sur ou choisissez Déplacer vers la corbeille dans le menu contextuel.

Pour supprimer une méthode objet, choisissez Supprimer la méthode objet dans l'éditeur de formulaires (menu Objet ou menu contextuel).

Importer et exporter le code​

Vous pouvez importer et exporter une méthode ou le code d'une classe sous la forme d'un fichier. These commands are found in the Method menu of the Code editor.

  • Lorsque vous sélectionnez la commande Exporter la méthode... , une boîte de dialogue standard d'enregistrement de fichier apparaît, vous permettant de choisir le nom, l'emplacement et le format du fichier d'export (voir ci-dessous). Comme pour l'impression, l'export ne tient pas compte de l'état contracté des structures de code et le code entier est exporté.
  • Lorsque vous sélectionnez la commande Importer la méthode..., une boîte de dialogue standard d'ouverture de fichier standard apparaît, vous permettant de désigner le fichier à importer. L'importation remplace le texte sélectionné dans la méthode. Pour remplacer une méthode existante par une méthode importée, il suffit de sélectionner l’ensemble du contenu de la méthode avant d’effectuer l’importation.

La fonction d’import/export est multi-plate-forme : une méthode exportée sous macOS peut être importée sous Windows et inversement, 4D se charge de la conversion des caractères si nécessaire.

4D peut exporter et importer les méthodes dans deux formats :

  • Méthode 4D (extension .c4d) : Dans ce format, les méthodes sont exportées sous forme encodée. Les noms d’objets sont transformés en références (tokens). Ce format permet notamment d’échanger des méthodes entre des applications 4D et des plug-ins dans langues différentes. En revanche, il n’est pas possible de les visualiser dans un éditeur de texte.
  • Texte (extension .txt) : Dans ce format, les méthodes sont exportées sous forme de texte uniquement. Dans ce cas, les méthodes sont lisibles à l'aide d'un éditeur de texte standard ou d'un outil de contrôle de sources.

Propriétés des méthodes projet​

Après avoir créé une méthode projet, vous pouvez la renommer et modifier ses propriétés. Les propriétés des méthodes projet définissent principalement leurs conditions d’accès et de sécurité (accès par les utilisateurs, les serveurs intégrés ou les services) ainsi que leur mode d'exécution.

Les autres types de méthodes n'ont pas de propriétés spécifiques. Leurs propriétés sont liées à celles des objets auxquels elles sont attachées.

Pour afficher la boîte de dialogue Propriétés de la méthode pour une méthode projet, vous pouvez soit :

  • dans l'éditeur de code, sélectionnez la commande Propriétés de la méthode... dans le menu Méthode,
  • ou dans la page Méthodes de l'Explorateur, clic droit sur la méthode projet et sélectionner Modifier les propriétés dans le menu contextuel ou dans le menu d'options.

Une fonction de paramétrage global vous permet de modifier une propriété pour tout ou partie des méthodes projet en une seule opération (voir Modifier attributs globalement).

Nom​

Vous pouvez changer le nom d'une méthode projet dans la zone Nom de la fenêtre Propriétés de la méthode ou dans l'Explorateur.

Le nouveau nom doit respecter les règles de nommage 4D (voir Identifiants). Si une méthode portant le même nom existe déjà, 4D affiche un message indiquant que ce nom de méthode est déjà utilisé. Si nécessaire, 4D trie à nouveau la liste des méthodes.

caution

Changer le nom d'une méthode déjà utilisée dans la base de données peut invalider toutes les méthodes ou formules qui utilisent l'ancien nom de méthode et risque de perturber le fonctionnement de l'application. Changer le nom d'une méthode déjà utilisée dans la base de données peut invalider toutes les méthodes ou formules qui utilisent l'ancien nom de méthode et risque de perturber le fonctionnement de l'application. Avec cette fonction, vous pouvez mettre à jour automatiquement le nom où la méthode partout où elle est appelée dans l'environnement de développement.

Avec 4D Server, le nom de la méthode est changé sur le serveur lorsque vous avez fini de le modifier. Si plus d'un utilisateur modifie le nom de la méthode en même temps, le nom final de la méthode sera le nom spécifié par le dernier utilisateur ayant terminé de l'éditer. Vous pouvez désigner un propriétaire de la méthode pour que seuls certains utilisateurs puissent changer son nom.

info

Les méthodes base ne peuvent pas être renommées. Il en va de même pour les triggers, les méthodes formulaire et les méthodes objet, qui sont liés à des objets et tirent leur nom de l'objet concerné.

Attributs​

Vous pouvez contrôler comment les méthodes projet sont utilisées et/ou appelées dans différents contextes en utilisant des attributs. Notez que vous pouvez définir des attributs globalement pour une sélection de méthodes projet en utilisant l'Explorateur (voir la section suivante).

Invisible​

Si vous ne voulez pas que les utilisateurs puissent exécuter une méthode projet à l'aide de la commande Méthode... du menu Exécution, vous pouvez la rendre invisible en cochant cette option. Une méthode invisible n'apparaît pas dans la boîte de dialogue d'exécution de méthode.

Lorsque vous rendez une méthode projet invisible, elle est toujours disponible pour le développeur. Elle reste listée dans l'Explorateur et de l'éditeur de code.

Partagée entre composants et projet hôte​

Cet attribut est utilisé dans le cadre des composants. Quand il est coché, il indique que la méthode sera disponible pour les composants lorsque l'application sera utilisée comme projet hôte. A l'inverse, lorsque l'application sera utilisée en tant que composant, la méthode sera disponible pour les projets hôtes.

Pour plus d'informations sur les composants, reportez-vous au chapitre Développer et installer des composants 4D .

Exécuter sur serveur​

Cet attribut est pris en compte uniquement dans le cadre d’une application 4D en client/serveur. Lorsque cette option est cochée, la méthode du projet est toujours exécutée sur le serveur, quelle que soit la manière dont elle est appelée.

Pour plus d'informations sur cette option, reportez-vous à Attribut Exécuter sur serveur.

Mode d’exécution​

Cette option vous permet de déclarer la méthode éligible à l'exécution en mode préemptif. Par défaut, 4D exécute toutes les méthodes projet de vos applications en mode coopératif.

Si vous voulez bénéficier de la fonctionnalité du mode préemptif, vous devez déclarer explicitement toutes les méthodes que vous souhaitez démarrer en mode préemptif. Le compilateur vérifiera par la suite que ces méthodes sont effectivement thread-safe.

Note: Execution in preemptive mode is only available in compiled mode. For more information, refer to the Preemptive 4D processes section.

Les options suivantes sont prises en charge :

  • Can be run in preemptive processes: By checking this option, you declare that the method is capable of being run in a preemptive process and therefore should be run in preemptive mode whenever possible. La propriété "preemptive" de la méthode prend pour valeur "capable".

Lorsque cette option est sélectionnée, le compilateur de 4D vérifiera que la méthode est effectivement capable et retournera des erreurs si ce n'est pas le cas -- par exemple, si elle appelle directement ou indirectement des commandes ou d'autres méthodes qui, elles, ne peuvent pas être exécutées en mode préemptif (toute la chaîne d'appel est analysée mais les erreurs sont signalées uniquement au premier niveau). Dans ce cas, vous pourrez modifier la méthode afin de la rendre "thread-safe" ou sélectionner une autre option.

Si l'éligibilité de la méthode au mode préemptif est confirmée par le compilateur, elle est étiquetée "thread-safe" en interne et sera exécutée en mode préemptif à chaque fois que les conditions requises seront réunies. This property defines its eligibility for preemptive mode but does not guarantee that the method will actually be run in preemptive mode, since this execution mode requires a specific context (see When is a process started preemptively?).

  • Ne peut pas être exécutée dans un process préemptif : En sélectionnant cette option, vous déclarez que la méthode ne doit jamais être exécutée en mode préemptif, et doit par conséquent toujours être exécutée en mode coopératif. La propriété "preemptive" de la méthode prend pour valeur "incapable".

Lorsque cette option est sélectionnée, le compilateur de 4D ne vérifiera pas la compatibilité de la méthode avec le mode préemptif ; elle sera automatiquement étiquetée "thread-unsafe" en interne (même dans le cas où elle est théoriquement compatible). Lorsqu'elle sera appelée en exécution, cette méthode "contaminera" toutes les autres méthodes dans le même thread, les forçant à s'exécuter en mode coopératif, même si elles sont elles-mêmes "thread-safe".

  • Indifférent (défaut) : En sélectionnant cette option, vous déclarez que vous ne souhaitez pas gérer la propriété du mode préemptif pour la méthode. La propriété "preemptive" de la méthode prend pour valeur "indifferent".

Lorsque cette option est sélectionnée, le compilateur de 4D évaluera la compatibilité de la méthode avec le mode préemptif et lui apposera l'étiquette interne "thread-safe" ou "thread-unsafe". Aucune erreur liée à l'exécution en préemptif ne sera toutefois retournée. Si la méthode est évaluée "thread-safe", à l'exécution elle n'empêchera pas l'utilisation du mode préemptif si elle est appelée dans un contexte préemptif. A l'inverse, si la méthode est évaluée "thread-unsafe", à l'exécution elle empêchera toute utilisation du mode préemptif si elle est appelée.

Note that with this option, whatever the internal thread safety evaluation, the method will always be executed in cooperative mode when called directly by 4D as the first parent method (for example through the New process command). La propriété "thread-safe" interne n'est prise en compte que lorsque la méthode est appelée par d'autres méthodes à l'intérieur de la chaîne d'appel.

Particular case: If the method has also the Shared by components and host database property, setting the Indifferent option will automatically tag the method as thread-unsafe. Si la méthode a aussi la propriété Partagée entre composants et projet hôte, l'option Indifférent marquera automatiquement la méthode comme thread-unsafe.

Disponibilité​

Les attributs de disponibilité précisent les services externes autorisés à appeler explicitement la méthode.

Web Services​

Cet attribut vous permet de publier la méthode courante comme service Web accessible via des requêtes SOAP. Pour plus d’informations, reportez-vous au chapitre Publication et utilisation de Services Web. Lorsque cette option est cochée, l’option Publié dans WSDL est active.

In the Explorer, project methods that are offered as a Web Service are given a specific icon .

Note : Il n'est pas possible de publier en tant que Web service une méthode dont le nom comporte des caractères non conformes à la nomenclature XML (par exemple des espaces). Si le nom de la méthode n'est pas conforme, 4D refuse l'affectation de la propriété.

Publié dans WSDL​

Cet attribut est actif uniquement si l'attribut "Web service" est coché. Il permet d’inclure la méthode courante dans le fichier WSDL de l’application 4D. Pour plus d’informations sur ce point, reportez-vous au paragraphe Génération du WSDL.

In the Explorer, project methods that are offered as a Web Service and published in WSDL are given a specific icon .

Balises HTML et URLs 4D (4DACTION...)​

Cette option permet de renforcer la sécurité du serveur Web 4D : lorsqu'elle n'est pas cochée, la méthode projet ne peut pas être exécutée via une requête HTTP contenant l'URL spéciale 4DACTION utilisée pour appeler les méthodes 4D, ni les balises spéciales 4DSCRIPT, 4DTEXT et 4DHTML.

In the Explorer, project methods with this attribute are given a specific icon .

Pour des raisons de sécurité, cette option est désélectionnée par défaut. Vous devez désigner individuellement chaque méthode pouvant être exécutée via les URLs et les balises spéciales.

SQL​

Lorsqu’elle est cochée, cette option autorise l’exécution de la méthode projet par le moteur SQL de 4D. Elle est désélectionnée par défaut, ce qui signifie que, sauf autorisation explicite, les méthodes projet de 4D sont protégées et ne peuvent pas être appelées par le moteur SQL de 4D.

Cette propriété s'applique à toutes les requêtes SQL internes et externes --- exécutées via le driver ODBC, le code SQL inséré entre les balises Begin SQL/End SQL ou la commande QUERY BY SQL.

Notes :

  • Même si une méthode dispose de l’attribut “SQL”, les accès définis au niveau des propriétés de la base et des propriétés de la méthode sont pris en compte pour l’exécution de la méthode.
  • La fonction ODBC SQLProcedure retourne uniquement les méthodes projet disposant de l’attribut "SQL".

Pour plus d’informations, reportez-vous à la section Implémentations du moteur SQL de 4D in dans le manuel SQL de 4D.

Serveur REST​

_Cette option est obsolète. L'appel de code par le biais d'appels REST n'est possible qu'avec les fonctions de classe du modèle de données ORDA.*

Modifier attributs globalement​

La boîte de dialogue "Attributs des méthodes" permet de modifier un attribut (Invisible, Disponible via Web Services etc.) pour tout ou partie des méthodes projet de la base de données en une seule opération. Cette fonction est très utile pour modifier les attributs d’un grand nombre de méthodes projet. Elle peut également être utilisée en cours de développement pour appliquer rapidement des attributs communs à des groupes homogènes de méthodes.

Pour modifier globalement les attributs des méthodes :

  1. Dans la Page Méthodes de l'Explorateur de 4D, déployez le menu d'options puis choisissez la commande Modifier attributs globalement... La boîte de dialogue Attributs des méthodes apparaît. La boîte de dialogue Attributs des méthodes apparaît.

  2. Dans la zone “Méthodes à modifier”, saisissez une chaîne de caractères permettant de désigner les méthodes que vous souhaitez modifier globalement. La chaîne de caractères est utilisée comme critère de recherche des noms de méthodes.

Utilisez le caractère générique @ pour vous aider à définir des groupes de méthodes :

  • pour désigner les méthodes dont le nom débute par..., saisissez @ en fin de chaîne. Par exemple : web@
  • pour désigner les méthodes dont le nom contient..., saisissez @ en milieu de chaîne. Par exemple : web@write
  • pour désigner les méthodes dont le nom se termine par..., saisissez @ en début de chaîne. Par exemple : @write
  • Pour désigner toutes les méthodes, il suffit de taper @ dans la zone.

Notes :

  • La recherche ne tient pas compte des majuscules et des minuscules.
  • Vous pouvez saisir plusieurs caractères @ dans la chaîne, par exemple dtro_@web@pro.@
  1. Dans la zone "Attribut à modifier", choisissez un attribut dans la liste déroulante puis cliquez sur le bouton radio Vrai ou Faux correspondant à la valeur à appliquer.

Note : Si l'attribut "Publié dans WSDL" est défini à Vrai, il ne sera appliqué qu'aux méthodes projet qui contiennent déjà l'attribut "Web Service".

  1. Cliquez sur Appliquer. La modification est appliquée instantanément à toutes les méthodes projet désignées par la chaîne de caractères saisie.