Importation d'extensions
Une extension est une archive zippée comprenant les fichiers de l'extension, ainsi qu'un fichier de métadonnées. Pour installer le contenu d'une extension dans ThingWorx, vous devez importer son fichier ZIP. Vous pouvez importer plusieurs extensions en même temps en rassemblant dans un même un dossier zip tous les fichiers zip d'extension.
Activation de l'importation d'extensions
L'importation d'extensions est désactivée par défaut pour tous les utilisateurs. Elle peut cependant être activée en configurant le fichier platform-settings.json :
1. Ouvrez le fichier platform-settings.json. Par défaut, le fichier se trouve dans le dossier ThingworxPlatform.
2. Ajoutez ou mettez à jour les paramètres ExtensionPackageImportPolicy suivants en les définissant sur true pour autoriser l'importation d'extensions. Consultez la section ci-dessous pour découvrir les bonnes pratiques en matière de configuration.
* 
Par défaut, tous les paramètres sont définis sur "false". Consultez le fichier platform-settings.json pour en savoir plus sur chaque paramètre.
"ExtensionPackageImportPolicy": {
"importEnabled": false,
"allowJarResources": false,
"allowJavascriptResources": false,
"allowCSSResources": false,
"allowJSONResources": false,
"allowWebAppResources": false,
"allowEntities": false,
"allowExtensibleEntities": false
},
3. Enregistrez et fermez le fichier platform-settings.json.
Bonnes pratiques en matière de contrôle de l'importation d'extensions
Optez pour une approche itérative lors de la configuration des paramètres de l'élément ExtensionPackageImportPolicy afin d'activer un nombre minimal de paramètres et garder ainsi le contrôle sur les importations d'extensions. Par défaut, tous les paramètres sont définis sur "false".
1. Définissez le paramètre importEnabled sur true, puis importez votre extension.
2. Si l'importation échoue, définissez le paramètre allowEntities sur true, puis importez votre extension.
3. Si l'importation échoue, définissez le paramètre allowExtensibleEntites sur true, puis importez votre extension.
4. Si l'importation échoue, définissez les paramètres allow<Content>Resources applicables (par exemple, allowJarResources). Les ressources sont spécifiées dans le fichier metadata.xml de l'extension.
5. Une fois l'importation réussie, redéfinissez tous les paramètres sur "false".
6. Redémarrez la plateforme pour empêcher toute importation d'extensions.
Importation d'une extension
Pour importer une extension, procédez comme suit :
1. Dans Composer, cliquez sur Importer/Exporter > Importer.
2. Dans la liste déroulante Option d'importation, sélectionnez Extension.
3. Sélectionnez un fichier zip d'extension dans votre répertoire local, puis cliquez sur Ouvrir.
4. Cliquez sur Valider, puis sur Importer.
5. Cliquez sur Fermer pour fermer la boîte de dialogue Importer.
Les fichiers d'extension importés sont affichés dans le tableau de bord.
Versionnage d'extensions
En utilisant l'attribut dependsOn de l'élément ExtensionPackage, vous pouvez spécifier des paires nom-version séparées par une virgule pour vos extensions. Le format à utiliser est le suivant : nom:numéro de version majeure.numéro de version mineure.numéro de correctif (par exemple, extensionA:1.0.0) ; ce format est important pour la vérification des dépendances.
Mise à niveau d'extensions adossées à Java
Lorsque vous tentez de mettre à niveau une extension adossée à Java en important une nouvelle version, un message d'information s'affiche indiquant que vous devez redémarrer la plateforme. Lorsque cela se produit, le fichier zip d'extension est placé dans une file d'attente : /ThingworxStorage/extensions/upgradequeue. Une fois le serveur Apache Tomcat redémarré, ThingWorx tente d'importer les fichiers zip d'extension dans la file d'attente. Si une importation d'extension en file d'attente échoue, vous devez redémarrer le serveur pour rétablir la version précédente de l'extension. A l'issue de la tentative d'import par ThingWorx des extensions en file d'attente, la file est purgée, même en cas d'échec de l'importation.
Vous n'avez pas à redémarrer après chaque importation d'une extension adossées à Java. Plusieurs extensions peuvent être mises en file d'attente pour importation, qui seront ensuite importées dans l'ordre approprié en fonction de leurs dépendances après un unique redémarrage. Consultez le manuel anglais Extension Development Guide (Guide de développement d'extensions) pour en savoir plus sur la configuration des dépendances.
* 
Les extensions autres que Java sont généralement importées sans nécessiter de redémarrage. Toutefois, des exceptions se produisent dans les cas suivants :
Si une extension autre que Java fait partie d'un zip de fichiers zip contenant une extension Java en cours de mise à niveau, l'intégralité du zip de fichiers zip est mise en file d'attente et importé après le redémarrage.
Si une extension autre que Java est importée (pour une installation ou une mise à niveau initiale) et qu'elle dépend d'une extension en file d'attente pour la mise à niveau, l'extension autre que Java est également mise en file d'attente.
Messages courants lors des importations d'extension
Les messages d'information et les avertissements suivants sont courants lors des importations d'extension :
Info: Extension <extension-name> is queued for installation on the next server restart because it contains JAR files, and an older version of this extension is already installed.
Chaque fois que vous importez une extension contenant un fichier JAR, vous obtenez ce message indiquant que vous devez redémarrer le serveur pour terminer l'importation.
Warning: Extension <extension-name> skipped because it is already installed.
Warning: Extension Package <extension-name> may be trying to change the template of the following Entities: <entity: entity-name>
ThingWorx ne prend pas en charge la modification du modèle d'objet de base d'une entité. Cet avertissement se produit lors de l'importation d'une extension lorsque le modèle d'objet indiqué ne peut pas être inspecté pour déterminer si son modèle d'objet de base a été modifié ou non.
Après le redémarrage de la plateforme
Après le redémarrage, consultez les journaux de l'application pour vous assurer de la bonne importation des extensions en file d'attente. Vous devez voir ce qui suit dans le journal de l'application pour chaque extension en file d'attente importée :
Starting entity import of /ThingworxStorage/extensions/XSS_Test/metadata.xml
Le message suivant sera affiché si les importations en file d'attente ont abouti :
*** Import completed successfully
Les erreurs suivantes seront affichées s'il y a eu des problèmes :
Error occurred while installing Extensions from upgrade queue
* 
Si des problèmes ont causé l'échec d'une importation en file d'attente, redémarrez à nouveau le système pour revenir à la version précédente de l'extension.
Analyse des messages d'échec d'importation d'extensions
Si l'importation de votre extension échoue, des messages indiquant que l'opération a échoué seront consignés dans le journal de l'application et vous inviteront à consulter le journal des erreurs pour en savoir plus. Le motif de l'échec d'importation du package d'extension est indiqué dans le fichier ErrorLog.log, à la fin du message d'erreur généré au moment de l'échec d'importation. Le fait que l'importation soit désactivée ou que l'importation de fichiers JAR ne soit pas autorisée constituent des motifs d'échec. Utilisez ces informations pour vous aider à ajuster les paramètres de configuration appropriés et installer ainsi votre extension.
Message du journal
Paramètre de configuration à vérifier dans ExtensionPackageImportPolicy
ExtensionPackage upload attempted while import disabled
"importEnabled": true
ExtensionPackage<XYZ> upload attempted while allow jars is disabled
"allowJarResources": true
ExtensionPackage<XYZ> upload attempted while allow Javascript is disabled
"allowJavascriptResources": true
ExtensionPackage<XYZ> upload attempted while allow CSS is disabled
"allowCSSResources": true
ExtensionPackage<XYZ> upload attempted while allow JSON is disabled
"allowJSONResources": true
ExtensionPackage<XYZ> upload attempted while allow WebApp is disabled
"allowWebAppResources": true
ExtensionPackage<XYZ> upload attempted while allow entities is disabled
"allowEntities": true
ExtensionPackage<XYZ> upload attempted while allow extensible entities is disabled
"allowExtensibleEntities": true
Est-ce que cela a été utile ?