القمع والمحفّزات
القمع رسم بياني. التشغيلة سطر. الانتظار وقت.
هذا هو النموذج كامل، وكل خاصية صعيبة في هاد المنتج خرجت من هاد الجمل الثلاثة. تعديل قمع حي آمن بسببهم. إعادة المحاولة ما تبعثش جوج بسببهم. اللي ألغى اشتراكو نهار الثلاثاء ما يسمع والو نهار الخميس بسببهم.
شنو يوقع بالضبط ملي تخدم
نشر القمع يكتب نسخة غير قابلة للتغيير. شي حد يدخل، ويبان سطر: تشغيلة وحدة، لهاد المُراسل، مثبتة على تلك النسخة، فيها العقدة الحالية، وقت استيقاظ وسياقها الخاص.
عامل يأخذ التشغيلات اللي فات وقت استيقاظها، ويحجزها بـ SKIP LOCKED باش جوج عمال ما ياخدوش نفس الوحدة. يخدم العقد حتى يوصل لانتظار أو نهاية، من بعد يكتب وقت الاستيقاظ الجاي ويخلي.
العقدة دالة نقية للتشغيلة والمُراسل والعقدة — وآثارها تُسجَّل في نفس المعاملة مع تقدم التشغيلة نفسها. هاد الخاصية الوحدة هي اللي تخلّي إعادة المحاولة آمنة. عامل مقتول في نص الثانية بين «الإرسال» و«التقدم» يخلي الاثنين ولا حتى واحد، عمره يخلي واحد.
ولأن التطبيق هو من يوفّر الوقت وليس قاعدة البيانات، السطر الذي يُكتب الآن يستحق التنفيذ الآن. عمود الجدولة الذي يعتمد افتراضياً على ساعة قاعدة البيانات لا يكون مستحقاً في لحظة كتابته، ويفوّت النبضة نفسها التي أنشأته — خطأ لا يبدو شيئاً إطلاقاً حتى تتأخر رسالة ساعة كاملة.
- 1الإيجار
wake_at <= now()،FOR UPDATE SKIP LOCKED. قائمة الانتظار بدون إيجارات ترسل مرتين افتراضياً. - 2التنفيذالعقد بالترتيب حتى انتظار أو نهاية. كل عقدة تكتب خطوة: ما قررته، وما أصدرته.
- 3اعتمادالتأثيرات والتقدّم في معاملة واحدة. هذا هو الحيلة كلها.
- 4النوميُكتب
wake_atالتالي. لا توجد صفوف لاحقة بعد، ولا حاجة لأي منها.
تشغيل واحد لكل جهة اتصال لكل نسخة
أربعة عشر مُطلِقاً
ما يمكن أن يبدأ تشغيلاً
بعض هذه أشياء تقوم أنت بها. أغلبها أشياء يفعلها عميلك أو لا يفعلها — وغياب الفعل مُطلِق بقدر الفعل نفسه.
يصلون
form_submit، list_join، contact_created، tag_added وsegment_enter. الشريحة مسند حيّ، فـ«يدخل الشريحة» تغطي كل «صار» يمكنك التعبير عنه — ثلاث طلبات، تسعون يوماً صمت، إنفاق فوق حدّ معين.
يفعلون شيئاً
page_visit من مقتطف الموقع، message_opened، link_clicked، booking_made وpayment_made. فتح الرسالة نفسه حدث على جهة الاتصال، فيمكن لقمع واحد أن ينتظر ردّ فعل على آخر ما أرسله.
الوقت، أو أنت
date_field مع إزاحة — عيد ميلاد، تجديد، «مرّ سنة»، سبعة أيام قبل أو ثلاثة أيام بعد. schedule للمتكرر. manual للإعلان الذي ترسله لأنك قررت ذلك.
تطبيقك أنت
api_event حدث مخصص تنشره من كودك الخاص برمزك الخاص. أي شيء يعرفه منتجك يصبح مُطلِقاً: تفعيل، دعوة زميل، بلوغ الحد، إلغاء، تصدير. هذا هو الذي يحوّل أداة بريد إلى جزء من منتجك.
إعادة الدخول، قرار يُتخذ مرة واحدة
القمع إما قابل لإعادة الدخول أو لا، وقاعدة البيانات تفرض ذلك: تشغيل واحد لكل جهة اتصال لكل قمع إلا إذا قلت غير ذلك. إطلاق المُطلِق نفسه مرتين في الثانية نفسها لا يمكن أن ينتج تشغيلين بالخطأ.
شروط الدخول
يُطلق المُطلِق ومواصفة الدخول تقرر هل هذه الجهة مؤهلة — مسند شريحة أمام الباب. أرخص من عقدة شرط في الخطوة الأولى، ويُبقي الرسم عن ما يحدث لا عن من يُسمح له بالدخول.

أربعة عشر شيئاً يمكن أن تبدأه. ستة عشر شيئاً يمكن أن يحدث بعده.
ستة عشر إجراءً وسبع عقد تدفق
ما يمكن للقمع فعله، وكيف يقرر
أرسل شيئاً
send_email، send_sms، send_push، send_letter — أربع قنوات، رسم واحد — إضافة إلى notify_team حين يكون الشخص الذي يجب إخباره يعمل عندك.
غيّر جهة الاتصال
add_tag، remove_tag، add_to_list، remove_from_list، set_field. وسم الشخص أثناء السير هو ما يجعل شريحة القمع التالي بسيطة.
الوصول إلى الخارج
http_request إلى أي شيء تريد، create_payment على حسابك المتصل، وbook_slot على مورد حجز. الدافع يبقى لك؛ لا أحد يصبح عميلنا.
التنقل بين القمعات
enter_funnel وexit_funnel. ابنِ تسلسل ترحيب واحد واستدعه من أربعة أماكن، بدل صيانة أربع نسخ تتباعد بحلول مارس.
التوليد وقت الإرسال
ai_generate يملأ متغيرات الدمج لكل جهة اتصال، محسوباً على حصتك ومخزّناً حسب التجزئة الإبداعية وتجزئة سمات جهة الاتصال — وإلا لدفععت لكل مستلم في كل إرسال.
انتظر، تفرّع، قسّم، اجمع
wait يأخذ مدة، أو تاريخاً ووقتاً، أو يوماً ووقتاً، أو حقل تاريخ مع إزاحة. condition مسند شريحة بنعم ولا. split هو A/B/n بأوزان. join يعيد الفروع معاً.
goal — الوحيد المهم
الهدف يوقف التسلسل لأي واحد يوصله. حجز، شري، جاوب: باقي التسلسل يلغى له وحده. حتى ما يوصي حد رسالة "نشتاقلك" غادي يوم رجع، وهذي هي العقدة اللي تمنعها.
throttle و quiet_hours
الـ throttle يبطئ الدفعة باش صندوق بريد محدود السرعة ما ينضغطش لحد الإيقاف. ساعات الهدوء تحبس الرسالة لوقت مناسب — تُطبق على مستوى الرسالة، ما تنسخش في كل فرع من الرسم.
يُفحص قبل ما يقدر يشتغل
المُتحقق يرفض نفس الحاجات ليك وللذكاء الاصطناعي
الرسم يُفحص قبل ما ينشر، والفحص ما هوش مجرد نصيحة. نفس الكود يشتغل سواء رسم القمع إنسان أو ولّده نموذج، وهذا هو السبب الوحيد اللي يخلي القمع المولّد يوثق فيه أصلاً.
مدخل واحد بالضبط
عقدتا دخول زايد يعني غموض حتى ما يشوفه حد لين نص القائمة يوصله التسلسل الغلط.
كل عقدة قابلة للوصول
الفرع اليتيم إما غلطة أو رسالة تظنها خرجت وهي ما خرجتش. الاثنين يستاهلوا يعرفوك بيهم.
كل دورة لازم فيها انتظار
الحلقة بلا انتظار هي حلقة لا نهائية وفي وسطها إرسال. هذي القاعدة هي الفرق بين قمع وحادثة.
كل إرسال معاه محتواه الإبداعي
عقدة send_email بلا محتوى إبداعي وبلا موضوع ما تنشرش. الرسالة بموضوع صحيح وجسم فارغ غلطة حقيقية معروفة؛ تُرفض هنا.
كل متغير معروف
متغيرات الدمج تُفحص عند النشر. {{frist_name}} غلطة كتابية تشوفها وأنت تعدل، ما هيش "مرحبا ،" توصل في أربعين ألف صندوق بريد.
بعدين جربها
شغل تجريبي لجهة اتصال حقيقية عبر الرسم كامل، واقرأ المسار اللي مشى فيه وكل رسالة كانت غادي تُرسل، ويومها. حتى ما يخرج شي برا.
الحالات الصعبة
سبع حاجات تكسر محرك ساذج
كل واحدة من هذي اختبار وراه ساعة ثابتة، لأن كل واحدة تكسر تنفيذاً يبان صحيح تماماً لين يلاقي الواقع.
- 1قمع يدور في نفسهمشروع، شائع، وسليم — بشرط الدورة فيها انتظار، والمُتحقق يُصر عليها.
- 2واحد يلغي اشتراكه والعملية شغالةالاستبعاد يُفحص عند الإرسال، ما عند التسجيل في الطابور. الفحص عند التسجيل يرسل للناس اللي خرجوا خلال الانتظار.
- 3القمع يُعدل وعشرة آلاف شخص داخلههم يكملوا على النسخة اللي دخلوا فيها، لآخرها. الجدد الجداد يمشوا على الجديدة.
- 4نفس المُطلق يشتغل مرتين في ثانية واحدةتشغيل واحد، لأن التفرد فهرس ما هوش فحص وبعده إدخال.
- 5جهة اتصال تُحذف والعملية شغالةالعملية توقف. حذف يخلي تسلسل لسه موجهاً لشخص ما هوش حذف.
- 6انتظار يغطي تغيير التوقيت الصيفي"ثلاثة أيام الساعة تسعة الصبح" يعني تسعة الصبح في الجهتين من تغيير الساعة.
- 7عامل يُقتل بين الإرسال والتقدمالتأثيرات والتقدم معاملة واحدة. إما الاثنين حصلوا أو حتى واحد ما حصل.
ساعة ثابتةكل اختبار يكسر تنفيذاً منطقياً
الحملات هي النص الثاني
القمع كيستجيب. الحملة هي البث لمرة واحدة: جمهور، وجدول زمني، وتحديد للسرعة، وإرسال. هي شكل مختلف من الأشياء ومحفوظة منفصلة عمداً، ما نعملها قمع بعقدة وحدة.
قاعدتين كيخليوها آمنة. الجمهور كيتجسد مرة وحدة وما كيقبلش يخدم جوج مرات — لو عاود نحلوه كيزيد بهدوء كل اللي دخلوا من بعد ما بدا الإرسال، وفهرس إزالة التكرار كيخبي هاد الشي بمنعه التكرارات اللي هو خلاها. والعدادات كيتحسبو من جديد من أحداث التسليم، ما كيتزادوش في بلاصتهم، حتى الويب هوك المعاود ما يقدرش يكبر التقرير.
أشمن وحدة تستعمل: إذا وقع بسبب حاجة دارها الشخص، هو قمع. إذا وقع بسبب قرار درتو نهار ثلاثاء، هي حملة. عدد كبير من أتمتة التسويق كيخرب حيت كيجبرو الثانية في شكل الأولى.