Uyumluluk: Pactmark 0.2.x. Bu senaryo çalışma-zamanı etki ve karar yüzeylerini kullanır. Genel yazım cephesi şu anda okuma araçlarını sunar — bkz. Sınırlar ve bu sınırı başarıyı taklit etmek yerine dürüstçe gösteren approval-purchase-boundary örneği.

Durum

Bir destek temsilcisi bir iade talebini ele alıyor. Asistan siparişi toplamalı, politikaya göre uygunluğu denetlemeli, tutarı hesaplamalı ve — bir insan onaylarsa — ödeme sağlayıcısı üzerinden iadeyi gerçekleştirmeli. Ajan mühendisliğindeki her zor problem bu tek akışta ortaya çıkar:

Etki geri alınamaz

Para çıkar. Geri alma yoktur; yalnızca kendisi de bir iş eylemi olan telafi edici bir işlem vardır.

Tutar model etkisiyle oluşur

Onu bir model hesapladı. Bir insan modelin anlatısını değil normalize edilmiş değeri görmeli.

API zaman aşımına uğrayabilir

Kaybolan bir yanıt, iadenin yapılıp yapılmadığı hakkında hiçbir şey söylemez.

Birileri bunu soracak

Üç ay sonra, bir itirazda, belirli bir işlem kimliğiyle.

WorkOrder

İşin çoğunu üç detay yapar:
refund_approver
İsteyen kişi otomatik olarak onaylayabilecek kişi değildir. Destek temsilcileri iade açar, onaylayanlar onaylar.
delegate_review
Koşunun işi yapmasına izin verilir ve çıktı “tamamlandı” sayılmadan önce incelenir.
500 EUR
Açık bir fiyat-sınırı sürümü ve son kullanma tarihi olan katı bir tavan. Üzerinde, kim ne onaylarsa onaylasın koşu ilerleyemez.

Politika

R3 ve R5 için kural yok, dolayısıyla reddediliyorlar. Bu bir eksiklik değil — varsayılanın doğru çalışmasıdır.

Araçlar

İade aracında maxCallsPerRun: 1. Model bir şekilde aynı koşuda ikinci bir iade önerirse, politika düşünmek zorunda kalmadan tavan reddeder.

Onay

Şekil 1. Onaylayan normalize edilmiş bir önizleme görür, kimliğini yeniden doğrular ve tek kullanımlık bir kanıtı tüketir. Kanıt asla tarayıcıdan, bir log satırından veya modelden geçmez. Onaylayanın gerçekte gördüğü:
Tutarın materialConsequence içinde, modelin yazdığı bir cümleden değil normalize edilmiş yükten türetilerek göründüğüne dikkat edin. Modelin anlatısıyla yük çelişirse insan yükü görür.

Ödeme API’sinin zaman aşımına uğradığı gün

Şekil 2. reconcilable, bunların hiçbiri olmadan önce araca kaydedilmişti. Kurtarma yolunu doğaçlama değil meşru kılan da bu önceden yapılmış beyandır. Sıra:
1

EffectPrepared

Siparişten ve idempotency anahtarından türetilmiş bir effectKey ve strategy: "reconcilable" ile.
2

EffectDispatched

  1. deneme. POST gider.
3

Bağlantı düşer

Yanıt yok. EffectUncertain, ardından effectMayHaveOccurred: true ile EffectNeedsReconciliation.
4

Koşu park eder

Yeniden denemez. “İade başarısız” diye de başarısız olmaz, çünkü bu yanlış bir ifade olurdu.
5

Mutabakat sorgular

Sağlayıcı idempotency anahtarıyla sorgulanır. İade varsa gerçek sonucu kaydedilir.
6

Ya da dürüstçe terk edilir

Sağlayıcı yanıtlayamıyorsa abandon_uncertain, etkinin gerçekleşmiş olabileceğini kaydeder. Ona bağımlı her şey KAF_EFFECT_ABANDONED_UNCERTAIN üretir. Bu sürtünme amacın kendisidir.
Yaygın alternatifle karşılaştırın: zaman aşımında yeniden dene. Kusursuz idempotency’si olmayan bir ödeme sağlayıcısında bu, çifte iadedir. Pactmark, kesinti öncesinde bu iki hata biçiminden hangisini kabul etmeye razı olduğunuza karar vermenizi ister.

Kanıt

doesNotProve listesini yeniden okuyun. “Müşterinin parayı aldığını” ile “sağlayıcı iadeyi onayladı” gerçekten farklı iddialardır ve bunları karıştırmak itirazların kötü gitme biçimidir.

Hâlâ sizde olanlar

Masa limiti

500 € sizin seçtiğiniz bir sayı. Pactmark doğru olsun olmasın onu sadakatle zorlar.

Onaylayanın anlayışı

Doğru bir önizleme yine yanlış okunabilir. TM-05 bu artık riski açıkça kaydeder.

Sağlayıcı idempotency'si

reconcilable, sağlayıcı hakkında sizin iddianızdır. Yanlışsa strateji de yanlıştır.

Park edilmiş etkileri çözecek biri

Park edilmiş koşular, kimsenin açmadığı bir panele değil nöbetteki bir insana ihtiyaç duyar.

Onay entegrasyonu

Operatör akışını doğru kurmak.

Araçlar ve etkiler

Stratejinin neden önceden kaydedilmesi gerektiği.