المسلة
محرك سير العمل الحتمي مبني على نموذج مكون WASM
حالة المشروع / إخلاء المسؤولية
هذا هو الإصدار المسبق .
يحتوي هذا الريبو على كود الواجهة الخلفية للتطوير والاختبار المحلي. لا يحتوي البرنامج على ضمانات التوافق مع الإصدارات السابقة لـ CLI أو gRPC أو مخطط قاعدة البيانات.
المنصات المدعومة
المبادئ الأساسية
- المخطط أولاً، باستخدام لغة WIT الخاصة بنموذج مكون WASM كواجهة بين سير العمل والأنشطة.
- فرحة المطور الخلفية
- عملية واحدة لتشغيل المنفذ وسير العمل والأنشطة، مع مخرج للأنشطة الخارجية (مخطط لها).
- إعادة المحاولة التلقائية عند حدوث الأخطاء، والمهلات، واستمرار عمليات تنفيذ سير العمل بعد تعطل الخادم.
- إمكانية الملاحظة (المخطط لها) - يجب الحفاظ على المعلمات والنتائج مع التسلسل الهرمي للوظيفة.
- قابلية التركيب - تداخل سير العمل، واستدعاء الأنشطة المكتوبة بأي لغة مدعومة
- إعادة تشغيل مسارات العمل الحالية وتفرعها (مخطط لها). إصلاح المشاكل والمتابعة.
المفاهيم والميزات
تثبيت
عامل ميناء
CONTAINER_ID= $( docker run -d getobelisk/obelisk )
docker logs --follow $CONTAINER_ID | grep " Serving gRPC requests "
docker exec $CONTAINER_ID obelisk client component list
# See Usage for more details
ثنائي مبني مسبقًا
قم بتنزيل أحدث إصدار من صفحة إصدار GitHub.
باستخدام أحدث إصدار من صناديق.io
قم بالتنزيل باستخدام Cargo-Binstall
cargo binstall --locked obelisk
أو البناء باستخدام البضائع
cargo install --locked obelisk
رقائق لا شىء
nix --extra-experimental-features nix-command --extra-experimental-features flakes run github:obeli-sk/obelisk
الاستخدام
إنشاء ملف تكوين عينة
obelisk server generate-config
بدء تشغيل الخادم
الحصول على قائمة الوظائف المحملة
obelisk client component list
إرسال وظيفة للتنفيذ (إما سير العمل أو النشاط)
# Call fibonacci(10) activity from the workflow 500 times in series.
obelisk client execution submit testing:fibo-workflow/workflow.fiboa ' [10, 500] ' --follow
المعالم
المعلم الرئيسي 1: حرر الثنائي - تم
المعلم الرئيسي 2: السماح بالتفاعل عن بعد عبر واجهة سطر الأوامر (CLI) - تم
المعلم الرئيسي 3: بدء خطافات الويب، والتحقق، والتزامن المنظم، وواجهة مستخدم الويب
الأفكار المستقبلية
- واجهة سطر الأوامر التفاعلية لإدارة التنفيذ
- الأنشطة الخارجية gRPC API
- مولد نشاط OpenAPI
- عمليات التكاثر من أنشطة WASM وقراءة مخرجاتها
- الضغط الخلفي: تؤدي القيود المفروضة على قوائم الانتظار المعلقة، أو استراتيجية الإخلاء، إلى إبطاء
LimitReached
- دعم المنفذين الخارجيين - بدء عمليات التنفيذ بناءً على صادرات WIT فقط. يجب على المنفذين الخارجيين مشاركة حق الوصول للكتابة إلى قاعدة بيانات sqlite.
- تسميات تقيد سير العمل/الأنشطة على المنفذين
- الجدولة الدورية
- نشر الموعد النهائي
- انتشار الإلغاء
- إعداد سعة قائمة الانتظار، مما يضيف الضغط الخلفي إلى تقديم التنفيذ
- القدرة على محاكاة سلوك النظام مع حالات الفشل المحقونة
- إخطار الأنشطة. عند الاتصال، يجب توفير قيمة الإرجاع الخاصة بهم عبر نقطة نهاية API.
- واجهة برمجة تطبيقات لإدراج عمليات التنفيذ مع أنشطة الإعلام المفتوحة الخاصة بها.
- قراءة وظيفة الاستعلام فقط التي يمكن استدعاؤها أثناء نقطة الانتظار أو بعد انتهاء التنفيذ.
- اختياري stdout، ثبات/إعادة توجيه stderr
- توجيه التبعية الذكي من المتصل عبر استيراد الواجهة إلى أحد المكونات العديدة التي تصدرها.
- إعادة المحاولة الذكية - إعادة المحاولة حسب الميزانية، وتعطيل إعادة المحاولة عندما يفشل النشاط في نسبة معينة من الطلبات
- تمت إضافة الارتعاش القابل للتكوين إلى عمليات إعادة المحاولة
- لقطات ذاكرة سير العمل لإعادة التشغيل بشكل أسرع
- مصحح أخطاء السفر عبر الزمن لسير العمل، والذي يعمل عبر عمليات نشر WASM
- القدرة على إصلاح مجموعة من مسارات العمل، مع نظام الموافقة عند اكتشاف عدم الحتمية
- تتبع السلاسل إلى أصلها عبر سير العمل والأنشطة
- تعيينات Webhook: تشغيل وظيفة واحدة، والترجمة بين المعلمات المحددة لـ HTTP وWIT وقيمة الإرجاع
- إعادة توجيه سياق التتبع الموزع لـ HTTP الصادر بالإضافة إلى خطافات الويب
- السماح بتحديد متغيرات الخطأ الدائم كتعليقات توضيحية في WIT
- دعم الملحمات (الموزعة) - تحديد التراجع عن الأنشطة، واستدعائها في سير العمل الفاشل
البناء من المصدر
قم بإعداد تبعيات التطوير باستخدام رقائق nix:
nix develop
# or `direnv allow`, after simlinking .envrc-example -> .envrc
أو قم بتنزيل جميع التبعيات يدويًا، راجع dev-deps.txt والتحقق المستند إلى Ubuntu Dockerfile قم بتشغيل البرنامج
تشغيل الاختبارات
الاختبارات الحتمية باستخدام جهاز محاكاة madsim
المساهمة
يحتوي هذا المشروع على خريطة طريق ويتم إضافة الميزات واختبارها بترتيب معين. إذا كنت ترغب في المساهمة بميزة ما، فيرجى مناقشة الميزة على GitHub. لكي نتمكن من قبول التصحيحات والمساهمات الأخرى، يتعين عليك اعتماد اتفاقية ترخيص المساهم ("CLA"). يمكن العثور على الإصدار الحالي من CLA هنا.