Logique lifecycle
AQE expose un trait par phase :
pub trait OnStartLogic { fn version(&self) -> &str; fn run(&mut self, ctx: &mut dyn StrategyContext) -> LifecycleResult;}
pub trait OnInitLogic { fn version(&self) -> &str; fn run(&mut self, ctx: &mut dyn StrategyContext, asset: &Asset) -> LifecycleResult;}
pub trait OnTeardownLogic { fn version(&self) -> &str; fn run(&mut self, ctx: &mut dyn StrategyContext) -> LifecycleResult;}Chaque méthode run retourne LifecycleResult, qui enregistre le succès, un message optionnel et les métadonnées du composant. Un composant en échec avec can_fail(false) arrête le run; avec can_fail(true), AQE journalise l’échec et continue.
Politique par défaut :
OnStartLogic: strict par défautOnInitLogic: strict par défautOnTeardownLogic: tolérant par défaut, pour laisser le nettoyage continuer si possible
Les wrappers lifecycle utilisent LifecycleTiming pour choisir où ils s’exécutent autour du corps de la méthode :
LifecycleTiming::BeforeGeneratedLifecycleTiming::AfterGeneratedDans les projets AQS générés, “generated” désigne le corps de méthode généré depuis le graphe. Dans les projets AQE écrits à la main, c’est le corps inline de votre implémentation Strategy.
Utilisez BeforeGenerated pour la validation, la configuration d’environnement, l’initialisation d’état et les dépendances attendues par le corps de stratégie. Utilisez AfterGenerated pour le suivi, les contrôles d’enregistrement et les métadonnées qui dépendent du corps de stratégie.
Enregistrement
Section intitulée « Enregistrement »Les projets AQE directs enregistrent la logique lifecycle sur StrategyState avant de démarrer le run. Le moteur appelle les composants automatiquement; le code utilisateur ne doit pas appeler manuellement les helpers d’exécution lifecycle.
state.add_on_start_logic( OnStartLogicBuilder::new(Box::new(SeedRuntimeState::new())) .timing(LifecycleTiming::BeforeGenerated) .can_fail(false) .build(),);
state.add_on_init_logic( OnInitLogicBuilder::new(Box::new(InitAssetState::new())) .timing(LifecycleTiming::AfterGenerated) .can_fail(false) .build(),);
state.add_on_teardown_logic( OnTeardownLogicBuilder::new(Box::new(FlushRuntimeLogs::new())) .timing(LifecycleTiming::AfterGenerated) .can_fail(true) .build(),);Nous utilisons des cookies et du stockage essentiels pour la connexion, la sécurité du compte, les préférences de thème, cet avis et les métriques internes PostHog nécessaires sur l’utilisation, la qualité de session et la fiabilité. Nous n’utilisons pas de cookies publicitaires.
