.load

.load [-o] [-e] [-v] [-j] [<vía_acceso_relativa>/]<nombre_archivo>
.load -r|-p <nombre de registro>
.load -s `<nombre de mandato>`

El mandato .load carga un proyecto desde un archivo XML y añade los pasos del proyecto cargado al proyecto actual, después del paso que ejecutó el mandato .load, permitiendo que un proyecto cree y cargue pasos de forma dinámica en tiempo de ejecución. Si utiliza opciones, puede hacer que el mandato .load extraiga sus datos a partir de un registro o partir de la salida de un mandato.

Para escribir un archivo XML que ejecute un mandato .load, empiece con un archivo de exportación procedente de un proyecto existente para que le proporcione la estructura básica apropiada. Puede crear también un proyecto dentro del sistema y, a continuación, expórtelo para utilizarlo en un mandato .load. Este tema incluye código XML de muestra.

Los pasos cargados por un mandato .load pueden contener referencias a un proyecto integrado o encadenado. De forma predeterminada, el sistema busca las definiciones de los proyectos en línea dentro del archivo XML y carga sus pasos; consulte la opción -e posteriormente en este apartado para encontrar una manera de hacer que el sistema obtenga la definición de proyecto en línea de la base de datos. Para proyectos encadenados con éxito o anómalos, el sistema siempre busca la definición del proyecto en la base de datos.

Nota: Con pasos JPO ejecutados desde un .load, el proyecto o biblioteca identificado como else-inline debe ser un proyecto o biblioteca ya existente dentro del sistema o, de lo contrario, no será ejecutado.

Varios proyectos en archivos XML

Puesto que el sistema exporta proyectos integrados junto con sus proyectos de llamada, un archivo XML puede contener varios proyectos. El mandato .load ejecuta el proyecto que está etiquetado como primario en el archivo. Este proyecto tiene el atributo primary="1" en su elemento <project>.

Opciones de mandatos y parámetros

La forma más simple de mandato es .load <nombre de archivo>. Puede incluir un nombre de vía de acceso opcional (relacionado con el directorio de trabajo) delante del nombre de archivo. Por ejemplo, el mandato
.load ../../project.xml

carga el archivo project.xml del directorio del servidor (el directorio que contiene el proyecto y los directorios de trabajo), presuponiendo que la propiedad de vía de acceso del paso es "/" (valor predeterminado).

Nota: Cuando un paso normal lanza un proyecto integrado, el sistema se dirige a la base de datos para obtener la definición actual para ese proyecto; cuando un paso que ha sido importado por el mandato .load lanza un proyecto integrado, el sistema busca dentro del archivo XML la definición del proyecto integrado. Consulte la descripción de la opción -e más abajo para conocer el modo de evitar esta situación.
Nota: No se da soporte al código XML de paso generado por versiones anteriores a la versión 7.1 de Build Forge, siendo lo más probable que falle, puesto que se hace referencia a estos elementos por nombre en lugar de hacerlo por ID.
Nota: .load utiliza el programa de utilidad de importación, y como tal, aplica la pertenencia a grupos de acuerdo a los valores del programa de utilidad de importación. Para obtener más información, consulte el apartado Cómo se asignan grupos de acceso a objetos importados.
El mandato dispone de las siguientes opciones:
-r o -p
Estas opciones hacen que el sistema cargue pasos de un registro. Utilice la línea de mandatos con estas opciones.
.load -r|-p <nombre de registro>
La opción -r carga pasos de un registro ordinario, mientras que la opción -p carga pasos de un registro de proyecto. Puede recopilar datos en un registro en pasos anteriores de su proyecto y, a continuación, cargar los pasos desde el registro con este mandato.
-s
Esta opción hace que el sistema ejecute un mandato y utiliza la salida de ese mandato como los datos que cargar. Utilice la línea de mandatos
.load -s `<nombre de mandato>`
-e
Si se establece la opción -e, el sistema obtiene proyectos integrados desde la base de datos en lugar de desde el archivo XML cargado. En este caso el valor de chainID se considera una referencia a un ID de proyecto dentro de la base de datos. Esto permite que el archivo XML se refiera a la última versión del proyecto integrado en lugar de al contenido en el archivo XML, o que se refiera a un proyecto que no está incluido en el archivo XML.
-o
Utilice la opción -o para inhabilitar proyectos integrados dentro del archivo XML. Cuando se utiliza esta opción, el sistema ignora cualquier proyecto integrado dentro del proyecto principal. Un paso que contiene una referencia a un proyecto integrado ejecuta su mandato, pero ignora la línea que lo integra.
-j
Utilice la opción -j si se ha enhebrado el último conjunto de pasos del archivo XML, y también se han enhebrado los pasos que siguen al mandato .load. La opción -j convierte el último paso enhebrado en un paso Unir. En caso contrario, los pasos enhebrados se convierten en parte del bloque enhebrado de pasos que sigue al mandato .load.
-v
Envía el contenido del archivo XML cargado al terminal de visualización (stdout) para su visualización.

XML de muestra

El siguiente ejemplo muestra un archivo XML para usar con el mandato .load. El XML se creó exportando un proyecto llamado HelloWorldPlusInline.

Observe los siguientes detalles del ejemplo XML:
  • El XML contiene dos elementos <project>.
  • El primer proyecto en el XML es el proyecto primario; éste contiene los atributos name="HelloWorldPlusInline" y primary="1".
  • El segundo proyecto en el XML se llama Sleepytime y tiene el atributo primary="0" para indicar que no es primario.
  • El primer paso del HelloWorldPlusInline es un paso llamado EchoHelloWorld que contiene un mandato echo y un atributo chainID. El atributo chainID tiene un valor de 2, indicando que el sistema debería integrar el proyecto con el ID 2, que es el proyecto Sleepytime.
    Nota: Ignore el atributo de paso inline; se trata de un atributo en desuso. Todos los pasos contienen este atributo con el valor de N. Para determinar si un paso tiene un proyecto integrado, busque el atributo chainID. El valor de chainID se refiere al ID de un proyecto. De forma predeterminada, el sistema busca el proyecto integrado dentro del archivo XML, pero si utiliza la opción -e en su mandato .load, el sistema considera el valor como un ID de proyecto dentro de la base de datos. Esto le permite crear sus propios archivos .load sin tener que incluir proyectos integrados dentro de ellos.
    Nota: No se da soporte a la utilización de .load con archivos XML generados por versiones 7.0.x, o anteriores, ni funcionará correctamente, puesto que la sintaxis antigua hace referencia a los objetos por nombre en lugar de hacerlo por UUID.
  • Cada proyecto tiene un atributo id. Este valor ID es el mismo que el ID del proyecto de la base de datos. Puede obtener una lista de ID de proyectos ejecutando el mandato siguiente desde un directorio de instalación:
    bfexport -l 
  • El atributo commandStore contiene una copia del contenido del elemento <command>, con algunos caracteres de escape XML. Por ejemplo, en <command> podría tener ", ', &, <, > o una nueva línea. Los caracteres se representarían en commandStore respectivamente como &quot;, &apos;, &amp;, &lt;, &gt; y &#10;.

<?xml version="1.0" encoding="UTF-8"?>

<buildforge schema="7.115014" comment="">
  <project access="6" active="Y" name="HelloWorldPlusInline" primary="1" 
   selectorId="Choose_local" maxthread="0" increment="Y" tagsync="0" 
   buildclass="Production" sticky="N" envId="0" tag="BUILD_$B" id="19" exclusive="0">
    <tagvar autoincrement="Y" name="B" id="1">2</tagvar>
    <step absolute="N" failwait="N" selectorId="" dir="/" broadcast="N" 
     timeout="300" id="1" passwait="N" inline="N" threadable="N" chainId="2" 
     access="6" active="Y" passnotify="0" description="EchoHelloWorld" onfail=" " 
     failnotify="0" envId="0" commandStore="echo Hello World">
      <command>echo Hello World</command>
    </step>
    <step absolute="N" failwait="N" selectorId="" dir="/" broadcast="N" 
     timeout="300" id="2" passwait="N" inline="N" threadable="N" access="6" 
     active="Y" passnotify="0" description="export proj to build and server folders" 
     onfail=" " failnotify="0" envId="0" 
     commandStore=".export $BF_PROJECTNAME_PHYS.xml&#10;copy /Y $BF_PROJECTNAME_PHYS.xml ..\..">
      <command>.export $BF_PROJECTNAME_PHYS.xml
copy /Y $BF_PROJECTNAME_PHYS.xml ..\..</command>
    </step>
  </project>
  <project access="6" active="Y" name="Sleepytime" primary="0" 
   selectorId="Choose_local" maxthread="0" increment="Y" tagsync="0" 
   buildclass="Production" sticky="N" envId="0" tag="SLEEP_$B" id="2" exclusive="0">
    <tagvar autoincrement="Y" name="B" id="1">21</tagvar>
    <step absolute="N" failwait="N" selectorId="" dir="/" broadcast="N" 
     timeout="300" id="1" passwait="N" inline="N" threadable="N" access="6" 
     active="Y" passnotify="0" description="Sleep, perchance to dream" onfail=" " 
     failnotify="0" envId="0" commandStore=".sleep 0">
      <command>.sleep 0</command>
    </step>
  </project>
  <class maxdays="0" access="1" entranceprojectId="1" name="Production" keepfiles="B" 
   deletechangedata="N" purgeprojectId="2" exitProjectId="5" candidates="AnyBuild " 
   maxbuilds="0"></class>
  <selector operator="" required="" access="6" value="" name="Choose_local" 
   selectorId="" property=""></selector>
</buildforge>


Comentarios