Saltar a contenido

Archivos de Resultado

Los Archivos de Resultado o Artefactos son archivos que pueden ser creados o consumidos durante el procesamiento de una tarea.

En esta sección encontrarás cómo manipular estos archivos a través del SDK.

Orquestador BotCity

Puedes visualizar la funcionalidad de Archivos de Resultado directamente en la plataforma del Orquestador BotCity.

Consulta más en:

Enviar un artefacto

Al ejecutar una tarea, archivos de cualquier tipo pueden producirse como resultado del procesamiento.

Puedes enviar archivos de cualquier tipo al Orquestador BotCity utilizando el SDK. Necesitas la siguiente información:

  • ID de la tarea: Referencia de la tarea que recibirá el archivo.
  • Nombre del Artefacto: Asigna un nombre y extensión al archivo que estará disponible en el Orquestador.
  • Ruta: Define la ruta en el entorno de ejecución donde está ubicado el archivo.

Tamaño del Archivo

Se recomienda que un archivo sea menor de 100MB para que la transferencia se realice sin problemas.

Ejemplo de envío de archivo:

maestro.post_artifact(
    task_id=<TASK_ID>,
    artifact_name="Mi artefacto.txt",
    filepath="resources/artefacto.txt"
)
File artefacto = new File("artefacto.txt");
maestro.postArtifact(<TASK_ID>, "Mi artefacto", artefacto);
// Ruta del archivo
const ruta_del_archivo = "artefacto.txt"
const artefacto = await maestro.createArtifact(<TASK_ID>, "Mi artefacto", ruta_del_archivo)
// Ruta del archivo
const ruta_del_archivo: string = "artefacto.txt"
const artefacto: Artifact = await maestro.createArtifact(<TASK_ID>, "Mi artefacto", ruta_del_archivo)
using Dev.BotCity.MaestroSdk.Model.Artifact;

await maestro.PostArtifactAsync(
    <TASK_ID>,
    "Mi artefacto",
    "artefacto.txt"
);

Listar todos los artefactos

Puedes listar los archivos de resultado disponibles en el Orquestador BotCity utilizando el SDK. Necesitas la siguiente información:

  • Días: Filtro de número de días a partir de la fecha actual.

Parámetro predeterminado

Cuando no se indica el número de días, por defecto se devuelven los archivos de los últimos 7 días.

Ejemplo de cómo listar archivos:

artefacto = maestro.list_artifacts()
List<ArtifactVO> artifacts = maestro.listArtifact();
const artefacto = await maestro.getArtifacts("10", "5")
const artefacto: Artifacts = await maestro.getArtifacts("10", "5")
List<Artifact> artifacts = await maestro.listArtifactAsync();
Ejemplo de retorno

La lista de artefactos es una lista de objetos Artefacto.

[
    Artifact(
        id=<ARTIFACT_ID>,, 
        type='RESULT', 
        task_id=<TASK_ID>,, 
        task_name=None, 
        name=<FILE_NAME>, 
        filename=<FILE_NAME>, 
        storage_filename=<FILE_NAME>, 
        storage_filepath=<FILE_PATH>, 
        organization=None, 
        user=None, 
        date_creation=<DATE>
        ),
]

Descargar un artefacto

Puedes descargar los archivos de resultado disponibles en el Orquestador BotCity utilizando el SDK. Necesitas la siguiente información:

  • ID del artefacto: Número de identificación del archivo para descargarlo.

Retorno

El formato de retorno es el nombre del archivo y un array de bytes con el contenido binario del artefacto que puede guardarse localmente.

Ejemplo de cómo descargar archivos:

# Define el ID del artefacto
artefacto_id = "<ARTIFACT_ID>"

# Obtiene el nombre y contenido del artefacto
nombre, contenido = maestro.get_artifact(artifact_id=artefacto_id)

# Escribe en disco
with open(nombre, "wb") as file:
    file.write(contenido)
File artefacto = new File("<ruta del archivo>/artifact.txt");

// Define el ID del artefacto
String artefactoId = "<ARTIFACT_ID>";

// Obtiene el contenido del artefacto
byte[] datos = maestro.getArtifactFile(artefactoId);

// Escribe en disco
FileUtils.writeByteArrayToFile(artefacto, datos);
// Define el ID del artefacto
const artefactoId = "<ARTIFACT_ID>"

// Ruta del archivo
const ruta_del_archivo = "artifact.txt"

const datos = await maestro.downloadArtifact(artefactoId, ruta_del_archivo)
// Define el ID del artefacto
const artefactoId: string = "<ARTIFACT_ID>"

// Ruta del archivo
const ruta_del_archivo: string = "artifact.txt"

const datos: Buffer = await maestro.downloadArtifact(artefactoId, ruta_del_archivo)
using System;
using System.IO;

// Define el ID del artefacto
string artifactId = "<ARTIFACT_ID>";

// Obtiene el contenido del artefacto
var (fileName, fileContent) = await maestro.GetArtifactAsync(artifactId);

string filePath = Path.Combine(Environment.CurrentDirectory, fileName);

// Escribe en disco
await File.WriteAllBytesAsync(filePath, fileContent);