Inclusión de ficheros

Las aplicaciones de movilidad realizadas con XOne tienen dos archivos principales: appwizard.xml y mappings.xml, pero existen varias maneras en las que incluir ficheros con llamadas, de tal forma que podamos tener código externo, para controlar mejor su realización.

Las distintas formas de realizar una llamada a un fichero externo son:

Como ya hemos visto, se puede insertar código xonescript dentro de las acciones para realizar nuestro trabajo.
Pero no tenemos porque insertar directamente ese código dentro del XML, sino que en muchas ocasiones, es conveniente ponerlo en un fichero externo, de tal forma que solo cuando se llama a tal código, se parsea el mismo, con lo que se mejora el rendimiento de la aplicación.

Estos ficheros que tienen código xonescript, tienen que tener extensión VBS.

La realización de la inclusión de dichos ficheros es de la siguiente forma:

<coll name="Empresas" title="la empresa" 
      sql="SELECT e.* FROM ##PREF##Empresa e" objname="Empresa" updateobj="Empresa" progid="ASGestion.CASEmpresa" sort="CODIGO" fontsize="10">
      <group name="General" id="1">
      </group>
      <prop name="IDMONEDA" visible="0" type="N" mapcol="Monedas" mapfld="ID"/>
      ...
 
      <include file="funciones.vbs" language="VBScript" />
      <include file="time.vbs"/>
      <include file="\include\function.vbs"/>
      <include file="\include\calendario.vbs"/>
</coll>


Como ya se ha comentado, en lugar de cargarlo al inicio en la colección de empresas, se puede cargar en el momento que lo vayamos a necesitar, por ejemplo:

<action name="runscript">
	<include file="funciones_terminar.vbs"/>
		<script language="VBScript">
			  funcionIncluidaEnElFicheroVbs
			  This.save
			  appdata.failwithmessage -11888,"##EXIT##"
		</script>
</action>


Por último también se puede incluir los ficheros de script directamente en el fichero app.xml

	 ...
	 <style url="default.css" />
	 ...
	 <include file="funciones.js" language="javascript" encoding="utf-8"/>
	 ...

Por otro lado, la maquinaria permite tener código XML en otros ficheros, con lo que podriamos tener colecciones en ficheros externos.

Para poder realizar estos pasos, sería de la siguiente forma:

El fichero mappings.xml debe existir y es obligatorio, y es el fichero principal que se va a buscar, y este será el que posteriormente realizará las llamadas a los ficheros con colecciones externas.
Para ello, a nivel de coll se pone el atributo ext-file,donde dicho atributo permite incluir colecciones completas desde ficheros xml externos.
El valor del atributo define el nombre y la extensión para que se incluya desde un fichero externo una definición de una colección.

El atributo name del nodo coll donde esté definido, debe coincidir con el mismo atributo en la colección descrita en el archivo.

El archivo externo debe contener un único nodo de colección, es decir, únicamente tiene que existir el nodo coll.

En versiones recientes de la plataforma no es necesario especificar el ext-file, si la colección no existe en el mappings, se intenta buscar un fichero XML con el mismo nombre de la colección, en la misma carpeta donde se encuentra el mappings.

<coll name="prueba" ext-file="prueba.xml" />

La maquinaria permite tener declarado CSS la definición de ciertas características de los nodos. Para la realización de esto, será necesario tener fichero CSS externo, que tenga el código que posteriormente se va a utilizar.

La llamada a este fichero, se realiza dentro del nodo app, y con el nodo style. Aquí se muestra un ejemplo:

<app prefix="Gen" version="0.0.0.0" companycolor="#FF8000,#FF4000" forecolor="#FFFFFF>
       <logon showalways="true" finduser="true" replica="true"></logon>
       <style url="default.css" />
</app>



Este código está claramente definido en el siguiente lugar: CSS