技能 workflow-orchestration-patterns
⚙️

workflow-orchestration-patterns

安全

Concevoir des workflows distribués fiables avec les modèles Temporal

也可从以下获取: wshobson

Construire des systèmes distribués fiables est complexe en raison des pannes, des timeouts et de la gestion d'état. Cette compétence fournit des modèles d'orchestration de workflow éprouvés de Temporal qui gèrent automatiquement les pannes, préservent l'état après des crashes et s'adaptent horizontalement.

支持: Claude Codex Code(CC)
🥉 75 青铜
1

下载技能 ZIP

2

在 Claude 中上传

前往 设置 → 功能 → 技能 → 上传技能

3

开启并开始使用

测试它

正在使用“workflow-orchestration-patterns”。 Concevoir un workflow de paiement avec réservation d'inventaire, paiement et étapes de fulfillment

预期结果:

Voici une conception de modèle saga : 1) ReserveInventoryActivity (compensation : ReleaseInventoryActivity), 2) ChargePaymentActivity (compensation : RefundPaymentActivity), 3) FulfillOrderActivity (compensation : CancelFulfillmentActivity). Enregistrez chaque compensation avant exécution. En cas d'échec, exécutez les compensations dans l'ordre LIFO. Toutes les activities doivent être idempotentes.

正在使用“workflow-orchestration-patterns”。 Pourquoi ne puis-je pas utiliser datetime.now() dans mon workflow ?

预期结果:

Les workflows doivent être déterministes pour le replay. datetime.now() retourne des valeurs différentes à chaque fois, cassant le déterminisme. Utilisez workflow.now() à la place, qui fournit l'heure déterministe basée sur l'horloge du workflow. Le même principe s'applique à random() - utilisez workflow.random() pour des nombres aléatoires déterministes.

正在使用“workflow-orchestration-patterns”。 Comment gérer un appel API tiers qui pourrait prendre des heures ?

预期结果:

Utilisez le Async Callback Pattern : 1) L'Activity envoie la requête au système externe, 2) Le workflow attend un signal avec workflow.wait_for_condition(), 3) Le système externe appelle le webhook quand terminé, 4) Le gestionnaire de signal reprend le workflow avec la réponse. Incluez un timeout au cas où le système externe ne répondrait jamais.

安全审计

安全
v1 • 2/25/2026

Static analysis detected 24 potential security issues (external commands, weak cryptography, system reconnaissance), but all are FALSE POSITIVES. The skill contains only markdown documentation with code examples in backticks for illustration purposes. No executable code is present - this is a purely educational skill about Temporal workflow patterns with pseudo-code diagrams and best practices. The 'backtick' patterns are markdown formatting, not shell execution. The 'weak cryptography' flags are false positives from words like 'temporal' matching crypto patterns. The skill is safe to publish.

1
已扫描文件
336
分析行数
1
发现项
1
审计总数
低风险问题 (1)
Static Analysis False Positives
Static scanner detected 24 patterns (external_commands, blocker, cryptography) but all are markdown documentation formatting, not executable code. Lines 27, 92-222 contain backtick-enclosed text for code examples (e.g., `workflow.now()`, `datetime.now()`) and pseudo-code diagrams. These are documentation illustrations, not actual shell commands or cryptographic operations. The skill is pure educational content with no execution capabilities.
审计者: claude

质量评分

38
架构
100
可维护性
87
内容
50
社区
100
安全
100
规范符合性

你能构建什么

Coordination de transactions e-commerce

Implémenter des transactions distribuées pour le traitement de commandes qui réservent l'inventaire, chargent le paiement et exécutent les commandes avec rollback automatique en cas d'échec

Automatisation de processus métier de longue durée

Créer des workflows d'approbation multi-étapes qui s'étendent sur des jours ou des semaines avec persistance automatique d'état, gestion des timeouts et logique d'escalade humaine

Architecture d'orchestration de microservices

Concevoir des modèles de communication de services résilients utilisant des workflows d'entité et une compensation saga au lieu de transactions distribuées fragiles

试试这些提示

Concevoir un workflow de transaction distribuée
Concevez un workflow Temporal pour une transaction [domain] qui implique [steps]. Incluez la logique de compensation pour chaque étape et expliquez comment gérer les pannes partielles.
Convertir une machine d'état en workflow
J'ai une machine d'état avec [states] et des transitions. Aidez-moi à concevoir cela comme un workflow Temporal avec un déterminisme et une séparation d'activity appropriés.
Dépanner les violations de déterminisme de workflow
Mon workflow a échoué avec une erreur de déterminisme. Le code utilise [code snippet]. Expliquez pourquoi cela viole le déterminisme et comment le corriger en utilisant des alternatives workflow-safe.
Conception d'architecture de workflow évolutive
Je dois traiter [number] éléments par jour via des workflows. Concevez une architecture évolutive utilisant fan-out/fan-in, child workflows et partitionnement de file d'attente de tâches.

最佳实践

  • Gardez les workflows concentrés sur la logique d'orchestration - placez tous les appels externes dans des activities
  • Rendez toutes les activities idempotentes pour que les retries soient sûrs - utilisez des clés d'idempotence ou des upserts
  • Configurez toujours des timeouts et des politiques de retry - distinguez les erreurs retryable et non-retryable

避免

  • Appeler des APIs externes ou des bases de données directement depuis le code de workflow - utilisez toujours des activities
  • Utiliser datetime.now(), random() ou threading dans les workflows - cela casse le déterminisme et le replay
  • Rendre les activities non-idempotentes - les retries causeront des effets de bord dupliqués

常见问题

Quelle est la différence entre un workflow et une activity ?
Les workflows contiennent la logique d'orchestration et la prise de décision. Ils doivent être déterministes et ne peuvent pas faire d'appels externes. Les activities gèrent toutes les interactions externes comme les appels API et les écritures en base de données. Les activities peuvent être non-déterministes et incluent une logique de retry intégrée.
Pourquoi les workflows doivent-ils être déterministes ?
Temporal rejoue les workflows depuis l'historique pendant la récupération. Si les mêmes entrées produisent des sorties différentes, le replay échoue et l'état devient incohérent. Le déterminisme garantit que les workflows récupèrent exactement des pannes et se comportent de manière prévisible à travers les exécutions.
Comment gérer la compensation dans les transactions saga ?
Enregistrez chaque compensation d'activity avant d'exécuter son étape correspondante. Stockez les compensations dans une liste. En cas d'échec, exécutez toutes les compensations dans l'ordre inverse (last-in-first-out). Assurez-vous que chaque compensation est idempotente pour que les retries soient sûrs.
Les workflows peuvent-ils s'exécuter indéfiniment ?
Oui, les workflows peuvent s'exécuter pendant des années. Temporal persiste l'état automatiquement et survit aux pannes d'infrastructure. Les workflows d'entité représentant des objets de longue durée comme des paniers ou des comptes peuvent persister pendant la durée de vie de cette entité, recevant des signaux et répondant aux requêtes.
Comment mettre à l'échelle les workflows pour traiter des millions de tâches ?
Ne mettez pas à l'échelle les workflows individuels. Utilisez fan-out/fan-in : spawn de nombreux child workflows ou activities parallèles, attendez la fin, puis agrégez les résultats. Pour un million de tâches, spawn de mille child workflows traitant chacun mille tâches. Gardez chaque workflow borné.
Que se passe-t-il si une activity échoue ?
Temporal retry les activities automatiquement par défaut. Configurez les politiques de retry avec l'intervalle initial, le coefficient de backoff, l'intervalle maximum et le nombre maximum de tentatives. Pour les erreurs non-retryable comme une entrée invalide, lancez un type d'erreur spécifique pour arrêter immédiatement les retries.

开发者详情

文件结构

📄 SKILL.md