Aller au contenu principal

Run.startAsync()

La méthode .startAsync() démarre une exécution de Workflow sans attendre sa fin. Elle renvoie immédiatement le runId, ce qui permet au Workflow de s’exécuter en arrière-plan. Elle est utile pour les Workflows longs ou les tâches planifiées et évite de bloquer en attendant la fin du Workflow.

Exemple d’utilisation
Lien direct vers Exemple d’utilisation

const run = await workflow.createRun()

// Fire-and-forget - returns immediately
const { runId } = await run.startAsync({
inputData: {
value: 'initial data',
},
})

// Optionally poll for completion later
const result = await workflow.getWorkflowRunExecutionResult(runId)

Paramètres
Lien direct vers Paramètres

inputData?:

z.infer<TInput>
Données d’entrée correspondant au schéma d’entrée du Workflow

requestContext?:

RequestContext
Données de Request Context à utiliser pendant l’exécution du Workflow

initialState?:

z.infer<TState>
État initial à utiliser pour l’exécution du Workflow

tracingOptions?:

TracingOptions
Options de configuration de Tracing.

metadata?:

Record<string, any>
Métadonnées à ajouter au span racine de la trace. Utile pour ajouter des attributs personnalisés, tels que des ID utilisateur, des ID de session ou des feature flags.

traceId?:

string
ID de trace à utiliser pour cette exécution (1 à 32 caractères hexadécimaux). S’il est fourni, cette trace fera partie de la trace spécifiée.

outputOptions?:

OutputOptions
Options de configuration de la sortie.

includeState?:

boolean
Indique si l’état de l’exécution du Workflow doit être inclus dans le résultat.

Valeur renvoyée
Lien direct vers Valeur renvoyée

runId:

string
Identifiant unique de cette exécution de Workflow. Utilisez-le pour vérifier l’état ou récupérer les résultats ultérieurement.

Quand utiliser startAsync()
Lien direct vers when-to-use-startasync

Utilisez startAsync() au lieu de start() lorsque :

  • Workflows longs : le Workflow peut nécessiter des minutes ou des heures pour se terminer
  • Déclencheurs planifiés ou cron : vous souhaitez déclencher un Workflow sans bloquer le planificateur
  • Éviter les échecs de polling : avec les Workflows Inngest, start() interroge la fin de l’exécution, ce qui peut échouer et provoquer des nouvelles tentatives. startAsync() évite ce problème
  • Traitement en arrière-plan : vous souhaitez mettre le travail en file d’attente et traiter les résultats de manière asynchrone

Vérifier l’état du Workflow
Lien direct vers Vérifier l’état du Workflow

Après avoir appelé startAsync(), vous pouvez vérifier l’état du Workflow avec :

// Get the execution result (including step outputs)
const result = await workflow.getWorkflowRunExecutionResult(runId)

if (result?.status === 'success') {
console.log('Workflow completed:', result.steps)
} else if (result?.status === 'failed') {
console.log('Workflow failed:', result.error)
} else if (result?.status === 'running') {
console.log('Workflow still running...')
}