ERP Cloud Systems - تدفق الأحداث
تدفق الأحداث
تم تقديمه في الإصدار 13
يتيح لك تدفق الأحداث التواصل بين المواقع المختلفة. يمكنك الاشتراك في أنواع المستندات و تسجيلها بين المواقع المختلفة.
على سبيل المثال: افترض أن لديك أكثر من شركة مستضافة على مواقع مختلفة، واحدة منها هي الموقع الرئيسي حيث تريد إجراء القيود المحاسبية، وعلى المواقع الأخرى يتم إصدار فواتير المبيعات. يمكنك استخدام تدفق الأحداث في هذه الحالة. يمكن لمواقع الشركات الفرعية الاشتراك في الموقع الرئيسي لأنواع المستندات مثل الاصناف والعملاء والموردين. يمكن للموقع الرئيسي بدوره الاشتراك في الشركات الفرعية للحصول على فواتير المبيعات.
للوصول إلى تدفق الأحداث، انتقل إلى:
الصفحة الرئيسية > الأتمتة > تدفق الأحداث
1. المتطلبات
قبل إنشاء اجراء ، يجب إنشاء مستخدم مشترك على كلا الموقعين الذي سيتم استخدامه للوصول إلى الموقع والذي سيعمل كـ "مشترك في الحدث". تأكد من أن المستخدم لديه الصلاحيات اللازمة لإنشاء وتحديث وحذف أنواع المستندات المشتركة.
2. كيفية إعداد تدفق الأحداث
لنأخذ مثالاً عن موقعين لشرح العملية. http://test_site:8000 (الموقع المستهلك) و http://test_site_producer:8000 (الموقع المنتج)
1.2 الحصول على اشتراك من الموقع المنتج
- على http://test_site_producer:8000 (الموقع المنتج)، انتقل إلى قائمة المستخدمين.
- افتح مستند المستخدم الذي ستستخدمه كـ "مشترك في الحدث". مرر لأسفل إلى القسم المسمى "الوصول عبر API". في هذا القسم، قم بإنشاء المفاتيح للمستخدم عن طريق النقر على زر "إنشاء المفاتيح". ستظهر نافذة تحتوي على سر المستخدم، قم بنسخه وحفظه. سيتم أيضًا إنشاء مفتاح API.
2.2 إنشاء اشتراك على الموقع المستهلك
على http://test_site:8000 (الموقع المستهلك)، انتقل إلى قائمة المستخدمين واتبع نفس العملية الموضحة في الخطوة السابقة.
3.2 إنشاء منتج حدث على الموقع المستهلك
- الموقع الذي ترغب في الاشتراك فيه يسمى "منتج الحدث". أنشئ مستند منتج حدث للموقع الذي ترغب في الحصول على التحديثات منه.
- على http://test_site:8000 (الموقع المستهلك)، انتقل إلى الصفحة الرئيسية > الأتمتة > تدفق الأحداث > منتج الحدث.
- أدخل URL الموقع الذي ترغب في الاشتراك فيه (في هذه الحالة http://test_site_producer:8000)، في حقل "URL المنتج".
- أضف جميع أنواع المستندات التي ترغب في الاشتراك فيها في جدول أنواع مستندات منتج الحدث.
- إذا كنت ترغب في أن تكون المستندات التي تم إنشاؤها بنفس الاسم كما هي على الموقع المنتج البعيد، حدد خانة "استخدم نفس الاسم" في الجدول بجانب نوع المستند المطلوب.
- حدد حقل "مشترك الحدث" إلى المستخدم الذي سيتم استخدامه لإنشاء المستندات المستردة من منتج الحدث. يجب عليك إنشاء نفس المستخدم في كلا الاتجاهين، أي على الموقع المستهلك والموقع المنتج قبل إنشاء منتج الحدث.
- الصق مفتاح API وسر API الذي أنشأته في الخطوة الأولى (1.2) في حقول مفتاح API وسر API على التوالي.
- احفظ.
- بعد الحفظ، يتم إنشاء "مستهلك الحدث" على الموقع المنتج (http://test_site_producer:8000). يتم نسخ مفاتيح المستخدم من الموقع المستهلك تلقائيًا إلى مستند "مستهلك الحدث" على الموقع المنتج في هذه العملية
ملاحظة: إذا تم تغيير السر الخاص بـ API للمستخدمين على أي من هذه المواقع، فسيكون عليك تحديث المفاتيح يدويًا في منتج الحدث وكذلك في مشترك الحدث على كلا الموقعين
4.2 الموافقة على مشترك الحدث على الموقع المنتج
- بعد إنشاء منتج الحدث، يتم إنشاء مشترك الحدث تلقائيًا على الموقع المنتج. بشكل افتراضي، جميع أنواع المستندات المشترك فيها لها الحالة "معلق". لتمكين مشترك الحدث من استهلاك المستندات لهذه الأنواع من المستندات ، يجب تحديث حالتها إلى "موافق".
- انتقل إلى: الصفحة الرئيسية > الأتمتة > تدفق الأحداث > مشترك الحدث.
- عند فتح مستند مشترك الحدث، سترى جميع أنواع المستندات التي اشترك فيها المستهلك. قم بتغيير الحالة من "معلق" إلى "موافق" لجميع أنواع المستندات التي تريد الموافقة عليها للاستهلاك. يمكنك تغيير الحالة إلى "مرفوض" إذا كنت لا ترغب في استهلاك المستندات نوع تلك المستند.
- احفظ.
ملاحظة: تحديثات المستندات لأنواع المستندات المشتركة لن تتم مزامنتها إلا إذا تم الموافقة عليها
5.2 الوصول في وضع عدم الاتصال مع موقع واحد
إذا كانت هناك بعض الأماكن حيث الاتصال بالإنترنت ضعيف، على سبيل المثال، متجر في منطقة نائية حيث يتم إنشاء فواتير المبيعات وتريد مزامنة هذه الفواتير من المتجر إلى الحساب المستضاف، يمكنك إعداد المزامنة في وضع عدم الاتصال باستخدام الخطوات التالية:
- قم بإعداد نسخة محلية من ERPNext. يمكنك الرجوع إلى هذا الدليل للإعداد المحلي.
- تحتاج إلى حساب مستضاف مع شركتك.
- الآن أنشئ منتج حدث على الحساب المستضاف وحدد URL المنتج إلى URL حسابك المحلي.
- أضف أي أنواع مستندات ترغب في مزامنتها في جدول أنواع المستندات منتج الحدث.
- وافق على أنواع المستندات.
3. المزايا
1.3 إلغاء الاشتراك في التحديثات
بصفتك مشتركًا في الحدث، إذا كنت ترغب في إلغاء الاشتراك في التحديثات لأي أنواع من المستندات التي اشتركت فيها سابقًا، حدد إلغاء الاشتراك ضد نوع المستند. لن تتلقى المزيد من التحديثات من الموقع المنتج لهذا النوع المحدد من المستندات بعد إلغاء الاشتراك.
2.3 سجل تحديثات الحدث
سجل تحديثات الحدث يسجل كل إجراء لإنشاء أو تحديث أو حذف للمستندات التي لها مستهلكون على موقع منتج الحدث. لعرض سجل تحديثات الحدث:
انتقل إلى: الصفحة الرئيسية > الأتمتة > تدفق الأحداث > سجل تحديثات الحدث.
بالنسبة لنوع "إنشاء"، يتم تسجيل نوع التحديث، نوع المستند ، اسم المستند و المستند بالكامل (بصيغة JSON). بالنسبة لنوع "تحديث"، يتم تسجيل نوع التحديث، نوع المستند ، اسم المستند والبيانات المحدثة (الفرق بين الحالة السابقة والحالة الحالية للمستند). بالنسبة لنوع "حذف"، يتم تسجيل نوع التحديث، نوع المستند واسم المستند فقط.
3.3 سجل مزامنة الحدث
مثل سجل التحديث، يسجل سجل مزامنة الحدث كل مستند تم مزامنته من منتج الحدث على الموقع المستهلك. لمشاهدة سجل مزامنة الحدث، انتقل إلى: الصفحة الرئيسية > الأتمتة > تدفق الأحداث > سجل مزامنة الحدث.
ينشئ الحدث الذي تم مزامنته بنجاح سجل يحتوي على:
- نوع التحديث: إنشاء، تحديث أو حذف
- الحالة: حالة المزامنة
- نوع المستند
- اجرءاءت الحدث: عنوان URL للموقع الذي تم إنشاء الوثيقة منه
- اسم المستند
- اسم المستند: إذا كانت خانة "استخدام نفس الاسم" غير محددة
- استخدام نفس الاسم
- البيانات: بيانات المستند بصيغة JSON
ينشئ الحدث الفاشل مستند سجل يحتوي على الحقول المذكورة أعلاه بالإضافة إلى:
- الخطأ: الخطأ الذي منع مزامنة المستند
زر إعادة المزامنة: يوفر أيضًا زر "إعادة المزامنة" لإعادة مزامنة الحدث الفاشل.
3.4 مزامنة التبعيات
بعض أنواع المستندات تعتمد على تبعيات. على سبيل المثال، قبل مزامنة فاتورة المبيعات، يجب أن يكون الصنف والعميل موجودين في الموقع الحالي. لذلك، يعتبر الصنف والعميل تبعيات لفاتورة المبيعات. يتعامل تدفق الأحداث مع هذه التبعيات عن طريق المزامنة عند الطلب. كلما كان من المفترض مزامنة أي مستند ، يقوم النظام أولاً بالتحقق مما إذا كا المستند يحتوي على أي تبعيات (مثل الحقول المرتبطة، الحقول المرتبطة الديناميكية، الحقول في جداول فرعية، إلخ). إذا لم يتم تلبية هذه التبعيات (على سبيل المثال: إذا لم يكن الصنف موجودًا في الموقع المستهلك)، فسيتم مزامنة المستند التابع أولاً، ثم يتم مزامنة فاتورة المبيعات.
على سبيل المثال: مزامنة فاتورة المبيعات مع تبعية الصنف
3.5 تكوين التسمية
حدد خانة "استخدام نفس الاسم" للسماح للمستندات بأن تحمل نفس الاسم على كل من مواقع اجراءات الحدث ومستهلك الحدث. إذا لم يتم تحديد هذه الخانة، فسيتم إنشاء المستند باستخدام أنماط التسمية الخاصة بالموقع الحالي
ملاحظة: بالنسبة لأنواع المستندات التي تحتوي على سلسلة تسمية، يُنصح بعدم تحديد خانة "استخدام نفس الاسم" لتجنب تعارضات التسمية. إذا لم يتم تحديد هذه الخانة، سيتم إنشاء المستندات وفقًا لأنماط التسمية الخاصة بالموقع الحالي، وسيتم تعيين الحقول المخصصة "اسم الموقع" و "اسم المستند البعيدة" في المستند المزامنة لتخزين عنوان URL لموقع اجراءات الحدث واسم المستند على الموقع على التوالي.
3.6 تكوين الربط
إذا كنت ترغب في تسجيل المستندات بين نسخة من ERPNext وتطبيق Frappe آخر لنوع مستند معين بنفس الهياكل أو هياكل مختلفة، أو إذا كانت أسماء الحقول مختلفة في كلا الموقعين، يمكنك استخدام تدفق الأحداث مع تكوين الربط.
لإعداد ذلك، يجب أولاً إعداد ربط لأنواع المستندات.
للوصول إلى ربط أنواع المستندات، انتقل إلى:
الصفحة الرئيسية > الأتمتة > تدفق الأحداث > ربط أنواع المستندات.
1.6.3 الربط لأنواع المستندات ذات الهيكل المتشابه
اسم الربط: اختر اسمًا فريدًا للربط
نوع المستند المحلي: نوع المستند في موقعك الحالي
نوع المستند البعيد: نوع المستند في موقع منتج الحدث الذي ترغب في مزامنته
في جدول الربط الخاص بالحقل:
اسم الحقل المحلي: اسم الحقل في نوع المستند المحلي لموقعك الحالي.
اسم الحقل البعيد: اسم الحقل في نوع المستند البعيد في موقع منتج الحدث الذي ترغب في ربطه مع اسم الحقل المحلي. أثناء المزامنة، سيتم نسخ قيمة الحقل البعيد إلى الحقل المحلي.
2.6.3 القيمة الافتراضية لبعض الحقول
إذا لم يكن الحقل الخاص بك مرتبطًا بأي حقل بعيد آخر وترغب دائمًا أن يحتوي الحقل على نفس القيمة، يمكنك تعيين القيمة في حقل "القيمة الافتراضية". حتى إذا كنت قد قمت بتحديد اسم الحقل البعيد، وفي حالة عدم العثور على قيمة الحقل البعيد أثناء المزامنة، وإذا تم تحديد "القيمة الافتراضية"، سيتم تعيينها.
3.6.3 التعيين لأنواع المستندات التي تحتوي على جداول فرعية
إذا كان الحقل الذي تحاول تعيينه هو حقل في جدول فرعي، يجب عليك إنشاء تعيين آخر لنوع المستند من أجل الحقول الموجودة في الجدول الفرعي
نوع التعيين: اختر نوع التعيين كجدول فرعي.
التعيين: اختر مستند تعيين نوع المستند الذي أنشأته للجدول الفرعي
4.6.3 التعيين لأنواع المستندات التي تحتوي على تبعيات (حقول الارتباط، الحقول الديناميكية)
إذا كانت أنواع المستندات التي تحاول تعيينها تحتوي على أي نوع من التبعيات مثل حقول الارتباط أو الحقول الديناميكية، يجب عليك إعداد تعيين نوع مستند آخر لمزامنة التبعيات.
على سبيل المثال، لنفترض أن نوع المستند المحلي هو "فرصة" ونوع المستند البعيد هو "فرصة ERPNext". الحقل party_name
(حقل ارتباط لنوع المستند"العميل المحتمل") في "فرصة" يتم تعيينه إلى full_name
(حقل بيانات) في "فرصة ERPNext". أثناء المزامنة، يجب إنشاء هذا العميل المحتمل لكي تتم مزامنة "الفرصة" الرئيسية. لذلك يجب عليك إعداد تعيين لهذا الحقل الارتباط أيضًا
نوع التعيين: في هذه الحالة، نوع التعيين هو "مستند".
التعيين: اختر التعيين الذي أنشأته للتو.
فلترة القيمة البعيدة: تحتاج إلى تحديد الفلاتر التي ستقوم بجلب المستند البعيد الدقيق الذي سيتم تعيينه. مثلًا، في هذه الحالة، نوع المستند البعيد هو "فرصة ERPNext" التي يمكن جلبها بشكل فريد باستخدام الاسم ورقم الهاتف والدولة. الصيغة هي:
الصيغة هي:
{ "remote fieldname": "field or expression from where we will get the value for that fieldname"}
إذا كنت ترغب في جلب القيمة من مكان ما، ابدأ التعبير بـ eval
:
مثلًا في هذه الحالة، يكون: eval:frappe.db.get_value('Global Defaults', None, 'country')
أخيرًا، قم بتمكين خيار "Has Mapping" في جدول تكوين الحدث الفرعي في منتج الحدث مقابل نوع المستند المطلوب واختر التعيين الذي أنشأته للتو.
3.6 تكوين الأحداث المشروطة
إذا كنت في سيناريو حيث لا ترغب في إرسال جميع المستندات في نوع المستند إلى المستهلك، يمكنك تحديد الشروط لها.
على سبيل المثال، إذا كنت ترغب في إرسال فقط المستندات التي تكون عامة، يمكنك تحديدها ضمن مستند المنتج/المستهلك.
إذا كان المستند يلبي شرطًا ما ، فسيتم مزامنة جميع سجلات تحديثات الحدث القديمة إلى المستهلك.
لنأخذ مثالًا آخر. إذا كنت ترغب في مزامنة فقط فواتير المبيعات التي تم تقديمها، يمكنك تحديد الشرط doc.docstatus == 1
. لن يتم مزامنة الفواتير حتى يتم تقديمها.
لكل سجل تحديث، يمكنك رؤية المستهلكين المرتبطين به ضمن مستند سجل التحديث.
إذا كنت بحاجة إلى مزيد من التحكم الدقيق في الشروط، يمكنك ربط وظيفة مخصصة. سيتم تنفيذ وظيفتك باستخدام المعاملات consumer
، doc
، و update_log
. على سبيل المثال، إذا كنت ترغب في مزامنة فقط تلك الملاحظات التي تحتوي على أرقام فردية.
def is_odd_note(consumer, doc, update_log):
return frappe.db.sql("""
SELECT
COUNT(*)
FROM `tabNote`
WHERE creation <= %(creation)s
""", { "creation": doc.creation })[0][0] % 2 != 0
ثم يمكنك تحديد الشرط على النحو التالي:
cmd: my_custom_app.note.is_odd_note