Importación de extensiones
Una extensión es un archivo comprimido compuesto de ficheros de extensión y un fichero de metadatos. Para instalar el contenido de una extensión en ThingWorx, es necesario importar el fichero comprimido. Se pueden importar varias extensiones a la vez al empaquetar todos los ficheros comprimidos de extensión en una carpeta comprimida.
Activación de la importación de extensión
La importación de extensión está desactivada por defecto para todos los usuarios, pero se puede activar mediante la configuración del fichero platform-settings.json:
1. Abra el fichero platform-settings.json. Por defecto, el fichero se encuentra en la carpeta ThingworxPlatform.
2. Añada o actualice los siguientes parámetros de ExtensionPackageImportPolicy en true para permitir la importación de las extensiones. Consulte la sección de abajo sobre las prácticas recomendadas para la configuración.
* 
Todos los parámetros son false por defecto. Consulte platform-settings.json para obtener más información sobre cada parámetro.
"ExtensionPackageImportPolicy": {
"importEnabled": false,
"allowJarResources": false,
"allowJavascriptResources": false,
"allowCSSResources": false,
"allowJSONResources": false,
"allowWebAppResources": false,
"allowEntities": false,
"allowExtensibleEntities": false
},
3. Guarde y cierre el fichero platform-settings.json.
Prácticas recomendadas para controlar la importación de extensión
Aplique un método iterativo al configurar los parámetros en ExtensionPackageImportPolicy para activar el número mínimo de parámetros y controlar las importaciones de extensión. Todos los parámetros son false por defecto.
1. Defina el parámetro importEnabled en true e importe la extensión.
2. Si falla la importación, defina el parámetro allowEntities en true e importe la extensión.
3. Si falla la importación, defina el parámetro allowExtensibleEntites en true e importe la extensión.
4. Si falla la importación, defina los parámetros allow<Content>Resources aplicables (por ejemplo, allowJarResources). Los recursos se especifican en el fichero metadata.xml de extensión.
5. Después de la importación correcta, cambie todos los parámetros de nuevo a false.
6. Reinicie la plataforma para desactivar la importación de cualquier extensión.
Importación de una extensión
Para importar una extensión, siga los siguientes pasos:
1. En Composer, pulse en Importar/Exportar > Importar.
2. En la lista desplegable Opciones de importación, seleccione Extensión.
3. Vaya al directorio local para seleccionar un fichero comprimido de extensión y pulse en Abrir.
4. Pulse en Validar y, a continuación, pulse en Importar.
5. Pulse en Cerrar para cerrar el cuadro de diálogo Importar.
Los ficheros de extensión importados se muestran en el tablero.
Extensiones de versiones
Con el uso del atributo dependsOn del elemento ExtensionPackage, se pueden especificar pares de nombre-versión para extensiones separados por comas. El formato es nombre:número de versión principal.número de versión secundaria.número de parche (por ejemplo, ExtensiónA:1.0.0), que se utiliza en la verificación de la dependencia.
Actualización de extensiones basadas en Java
Cuando se intenta actualizar una extensión basada en Java mediante la importación de una nueva versión, se muestra un mensaje de información en el que se indica que es necesario reiniciar la plataforma. Cuando sucede esto, el fichero comprimido de extensión se coloca en una cola: /ThingworxStorage/extensions/upgradequeue. Después de reiniciar el servidor Apache Tomcat, ThingWorx intentará importar los ficheros comprimidos de extensión en la cola. Si falla una importación de extensión en cola, es necesario volver a reiniciar el servidor para volver a la versión anterior de la extensión. Después de que ThingWorx intente importar extensiones en cola, la cola se despeja, incluso si falla la importación de extensión en cola.
No es necesario reiniciar después de cada importación de una extensión basada en Java. Es posible poner varias extensiones en cola para la importación y estas se importarán en el orden adecuado en función de sus dependencias después de un único reinicio. Consulte el manual Extension Development Guide para obtener más información sobre la configuración de las dependencias.
* 
Normalmente, las extensiones que no son de Java se importarán sin necesidad de reinicios. Sin embargo, hay excepciones en los siguientes escenarios:
Si una extensión no de Java forma parte de un fichero comprimido de ficheros comprimidos que contiene una extensión Java que se está actualizando, todo el fichero comprimido de ficheros comprimidos se pondrá en cola y se importará después de reiniciar.
Si se importa una extensión no de Java (para una instalación inicial o actualización) y depende de una extensión que se encuentra en cola para actualización, también se pondrá en cola la extensión que no es de Java.
Mensajes del resultado de la importación de extensiones comunes
Los siguientes mensajes de información y avisos son comunes durante las importaciones de extensiones:
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.
Cada vez que se importa una extensión con un fichero JAR en ella, se recibirá este mensaje en el que se indica que es necesario reiniciar el servidor para completar la importación.
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 no soporta el cambio de la plantilla de cosa base de una entidad. Este aviso aparece durante las importaciones de extensiones cuando no se puede inspeccionar la plantilla de cosa notificada para determinar si se ha cambiado su plantilla de cosa base o no.
Después de reiniciar la plataforma
Después de reiniciar, compruebe los registros de aplicación para asegurarse de que las extensiones en cola se importan correctamente. Se debería ver lo siguiente en el registro de aplicación para cada extensión en cola que se está importando:
Starting entity import of /ThingworxStorage/extensions/XSS_Test/metadata.xml
Si las importaciones en cola se han completado correctamente, se mostrará el siguiente mensaje:
*** Import completed successfully
Si se han producido incidencias, se mostrarán los siguientes errores:
Error occurred while installing Extensions from upgrade queue
* 
Si las incidencias han provocado que fallara la importación en cola, reinicie el sistema de nuevo para revertir a las versiones anteriores de las extensiones.
Análisis de los mensajes de fallo de la importación de extensión
Si falla la importación de extensión, se recibirán mensajes en el registro de aplicación que indican genéricamente que la "importación de extensión ha fallado" y que hacen referencia al registro de errores para obtener más detalles. En el fichero ErrorLog.log, al final del mensaje de error que se genera debido al fallo de importación, se indica el motivo por el que ha fallado la importación del paquete de extensión. Algunos ejemplos de fallo son la desactivación de la importación, la importación de jar no permitida, etc. Utilice este error como ayuda para ajustar los valores de configuración adecuados y poder instalar la extensión correctamente.
Mensaje de registro
Verificar la configuración de los parámetros en 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
¿Fue esto útil?