

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

# Elementos de plantilla de trabajo para paquetes de trabajos
<a name="build-job-bundle-template"></a>

La plantilla de trabajo define el entorno de ejecución y los procesos que se ejecutan como parte de un trabajo de Deadline Cloud. Puede crear parámetros en una plantilla para utilizarla para crear trabajos que solo difieran en los valores de entrada, de forma similar a una función en un lenguaje de programación.

Cuando envías un trabajo a Deadline Cloud, se ejecuta en cualquier entorno de cola aplicado a la cola. Los entornos de cola se crean con la especificación de entornos externos de Open Job Description (OpenJD). Para obtener más información, consulte la plantilla de [ entorno ](https://github.com/OpenJobDescription/openjd-specifications/wiki/2023-09-Template-Schemas#12-environment-template) en el repositorio de OpenJD. GitHub 

Para ver una introducción a la creación de un trabajo con una plantilla de trabajo de OpenJD, consulte [ Introducción a la creación de un trabajo ](https://github.com/OpenJobDescription/openjd-specifications/wiki/Introduction-to-Creating-a-Job) en el repositorio de OpenJD. GitHub Puede encontrar información adicional en [ Cómo se ejecutan los trabajos. ](https://github.com/OpenJobDescription/openjd-specifications/wiki/How-Jobs-Are-Run) Hay ejemplos de plantillas de trabajo en el directorio del GitHub repositorio de OpenJD. `samples`

Puede definir la plantilla de trabajo en formato YAML (`template.yaml`) o JSON (). `template.json` Los ejemplos de esta sección se muestran en formato YAML.

Por ejemplo, la plantilla de trabajo del `blender_render` ejemplo define un parámetro de entrada `BlenderSceneFile` como una ruta de archivo:

```
- name: BlenderSceneFile
  type: PATH
  objectType: FILE
  dataFlow: IN
  userInterface:
    control: CHOOSE_INPUT_FILE
    label: Blender Scene File
    groupLabel: Render Parameters
    fileFilters:
    - label: Blender Scene Files
      patterns: ["*.blend"]
    - label: All Files
      patterns: ["*"]
  description: >
    Choose the Blender scene file to render. Use the 'Job Attachments' tab
    to add textures and other files that the job needs.
```

La `userInterface` propiedad define el comportamiento de las interfaces de usuario generadas automáticamente tanto para la línea de comandos que utiliza el `deadline bundle gui-submit` comando como para los complementos de envío de trabajos de aplicaciones como Autodesk Maya.

El `gui-submit` comando abre un cuadro de diálogo de envío con una ** pestaña de configuración de trabajos ** compartidos para el nombre, la prioridad y la cola de destino del trabajo, y una ** pestaña de ** Job-specific configuración generada a partir de las definiciones de parámetros de la plantilla de trabajo.

![El cuadro de diálogo de envío del trabajo muestra la pestaña de configuración del trabajo compartido con el nombre del trabajo, la prioridad y los campos de granja y cola.](https://docs.aws.amazon.com/es_es/deadline-cloud/latest/developerguide/images/bundle-gui-submit.png)


En este ejemplo, el widget de interfaz de usuario para introducir un valor para el `BlenderSceneFile` parámetro es un cuadro de diálogo de selección de archivos que muestra solo los archivos. `.blend`

![Un widget de interfaz de usuario para introducir el parámetro del archivo de escena de una plantilla de trabajo de OpenJD.](https://docs.aws.amazon.com/es_es/deadline-cloud/latest/developerguide/images/blender_submit_scene_file_widget.png)


Para ver más ejemplos del uso del `userInteface` elemento, consulte el ejemplo [ gui\_control\_showcase ](https://github.com/aws-deadline/deadline-cloud-samples/tree/mainline/job_bundles/gui_control_showcase) en el repositorio deadline-cloud-samples en. [https://github.com/aws-deadline/deadline-cloud-samples/tree/mainline](https://github.com/aws-deadline/deadline-cloud-samples/tree/mainline) GitHub

`dataFlow`Las propiedades `objectType` y controlan el comportamiento de los archivos adjuntos al enviar un trabajo desde un paquete de trabajos. En este caso, `objectType: FILE` y `dataFlow:IN` significan que el valor de `BlenderSceneFile` es un archivo de entrada para los archivos adjuntos de tareas.

Por el contrario, la definición del `OutputDir` parámetro tiene `objectType: DIRECTORY` y`dataFlow: OUT`:

```
- name: OutputDir
  type: PATH
  objectType: DIRECTORY
  dataFlow: OUT
  userInterface:
    control: CHOOSE_DIRECTORY
    label: Output Directory
    groupLabel: Render Parameters
  default: "./output"
  description: Choose the render output directory.
```

Los archivos adjuntos al trabajo utilizan el valor del `OutputDir` parámetro como el directorio en el que el trabajo escribe los archivos de salida.

Al enviar el paquete, la ** pestaña Adjuntos del ** trabajo del cuadro de diálogo de envío muestra los archivos de entrada y los directorios que detectó a partir de estas propiedades, junto con los directorios de salida en los que escribe el trabajo. Las rutas que aparecen en cursiva se detectaron automáticamente; puede añadir otras que el remitente no haya encontrado.

![La pestaña Adjuntos del trabajo de un cuadro de diálogo de envío, en la que se enumeran los archivos de entrada, los directorios de entrada y el directorio de salida detectados.](https://docs.aws.amazon.com/es_es/deadline-cloud/latest/developerguide/images/bundle-gui-submit-job-attachments.png)


Para obtener más información sobre las `dataFlow` propiedades `objectType` y, consulte [ JobPathParameterDefinition ](https://github.com/OpenJobDescription/openjd-specifications/wiki/2023-09-Template-Schemas#22-jobpathparameterdefinition) la especificación [ Open Job Description ](https://github.com/OpenJobDescription/openjd-specifications)

En el resto del ejemplo de plantilla de `blender_render` trabajo, se define el flujo de trabajo del trabajo como un solo paso, en el que cada fotograma de la animación se representa como una tarea independiente:

```
steps:
- name: RenderBlender
  parameterSpace:
    taskParameterDefinitions:
    - name: Frame
      type: INT
      range: "{{Param.Frames}}"
  script:
    actions:
      onRun:
        command: bash
        # Note: {{Task.File.Run}} is a variable that expands to the filename on the worker host's
        # disk where the contents of the 'Run' embedded file, below, is written.
        args: ['{{Task.File.Run}}']
    embeddedFiles:
      - name: Run
        type: TEXT
        data: |
          # Configure the task to fail if any individual command fails.
          set -xeuo pipefail

          mkdir -p '{{Param.OutputDir}}'

          blender --background '{{Param.BlenderSceneFile}}' \
                  --render-output '{{Param.OutputDir}}/{{Param.OutputPattern}}' \
                  --render-format {{Param.Format}} \
                  --use-extension 1 \
                  --render-frame {{Task.Param.Frame}}
```

Por ejemplo, si el valor del `Frames` parámetro es`1-10`, define 10 tareas. Cada tarea tiene un valor diferente para el `Frame` parámetro. Para ejecutar una tarea:

1. Todas las referencias a variables de la `data` propiedad del archivo incrustado se expanden, por ejemplo`--render-frame 1`.

1. El contenido de la `data` propiedad se escribe en un archivo del directorio de trabajo de la sesión en el disco.

1. El `onRun` comando de la tarea se resuelve en `bash {{location of embedded file}}` y, a continuación, se ejecuta.

Para obtener más información sobre los archivos incrustados, las sesiones y las ubicaciones mapeadas, consulte [ Cómo se ejecutan los trabajos ](https://github.com/OpenJobDescription/openjd-specifications/wiki/How-Jobs-Are-Run) en la especificación [ Open Job Description. ](https://github.com/OpenJobDescription/openjd-specifications/wiki/How-Jobs-Are-Run)

Hay más ejemplos de plantillas de trabajo en el samples/job\_bundles [ repositorio ](https://github.com/aws-deadline/deadline-cloud-samples/tree/mainline/job_bundles) Deadline-Cloud-, así como los ejemplos de plantillas que se [ proporcionan con la especificación ](https://github.com/OpenJobDescription/openjd-specifications/tree/mainline/samples) Open Job Descriptions.