أتمتة العمليات باستخدام n8n

أتمتة العمليات باستخدام n8n

في هذا المنشور، سنعرض سير عمل n8n بسيطًا يتضمن الحصول على البيانات من قاعدة بيانات MySQL ، وإجراء تحويل للبيانات، ثم إرسال طلب POST إلى واجهة برمجة تطبيقات REST باستخدام البيانات المحولة. سنستخدم ملف Docker Compose لتشغيل جميع الخدمات اللازمة لسير العمل هذا.

لهذه المقالة مطلوبة  معرفة أساسية بـ Docker وDocker Compose وMySQL وJSON وAPIs.

ما هو n8n؟

N8n هي أداة أتمتة العمليات منخفضة التكلفة والتي تسمح للمستخدمين بإنشاء عمليات مخصصة وأتمتة المهام عبر مجموعة متنوعة من التطبيقات والخدمات.

يمكن استضافته ذاتيًا دون أي تكلفة. ولكن تقدم n8n أيضًا دعمًا للمؤسسات للتثبيتات المستضافة ذاتيًا وخدمة سحابية إذا كنت لا ترغب في الاحتفاظ بتثبيت n8n في البنية الأساسية الخاصة بك.

إعداد n8n باستخدام docker compose

يمكن أن يكون استخدام Docker Compose طريقة ملائمة لتشغيل خادم n8n وجميع الخدمات الخلفية الضرورية، مثل قاعدة البيانات أو واجهة برمجة التطبيقات REST، في بيئة محلية واحدة سهلة الإدارة.

لاستخدام Docker Compose مع n8n، ستحتاج أولاً إلى تعريف جميع الخدمات الضرورية في ملف docker-compose.yml . يحدد هذا الملف صور كل خدمة، وأي متغيرات أو تكوينات بيئية ضرورية، وكيفية توصيل الخدمات. سنقوم بتعريف الخدمات التالية:

  1. خدمة MySQL: تستخدم هذه الخدمة لتسجيل المنتجات والحصول عليها في قاعدة البيانات.
  2. خدمة API: توفر هذه الخدمة نقطة نهاية ” http://api:3000/products/mysql ” التي تقوم بإرجاع استجابة JSON {“status”: “success”} عند إنشاء منتج جديد.
  3. خدمة n8n: تقوم هذه الخدمة بتشغيل العملية التي تدمج الخدمات المختلفة وتنفذ الإجراءات اللازمة عند تنفيذها.

سير عمل n8n

يتضمن سير العمل النموذجي سلسلة من العقد المتصلة لجمع معلومات دورية عن المنتجات التي تم إنشاؤها من قاعدة بيانات MySQL ، وتحويل البيانات لتوليد طلب JSON ثم إرسالها إلى نقطة نهاية محددة عبر طلب HTTP POST . يتم تشغيل سير العمل بواسطة مشغل جدول لتنفيذ سير العمل مرة واحدة يوميًا.

سير عمل N8N

الشكل 1. N8N workflow

قبل البدء في شرح سير العمل بالتفصيل، يتعين عليك أولاً استيراده في مثيل n8n الخاص بك.

1. أدخل http://localhost:5678/ على المتصفح وتخطى عملية الإعداد

2. انقر فوق بدء سير عمل جديد من البداية

3. في الإعدادات، انقر فوق استيراد من عنوان URL… وأدخل عنوان URL لتكوين JSON لسير العمل المخزن في Github: https://raw.githubusercontent.com/ChakrayES/docker-compose-n8n-wf-example-1/main/Workflow.json

سير العمل بالتفصيل

الشكل 2. سير العمل بالتفصيل

4. أخيرًا، احفظ سير العمل

جدولة المشغل

يتيح لك تشغيل الجدول الزمني في n8n تكوين التردد وتوقيت تنفيذ سير العمل. يحدد التكوين التالي تنفيذ سير العمل في الساعة 8 صباحًا يوميًا:

جدولة المشغل

عقدة التاريخ والوقت

توفر عقدة التاريخ والوقت أداة قوية ومرنة للعمل مع قيم التاريخ والوقت، مما يجعل من الأسهل أتمتة المهام التي تتطلب حسابات تعتمد على الوقت.

نستخدمها للحصول على الطابع الزمني عند بدء سير العمل وتحويل هذا الطابع الزمني إلى المنطقة الزمنية UTC.

باستخدام {{ }} يمكننا استخدام JavaScript في المعلمات المختلفة للعقد. باستخدام المشغل $json ، يمكننا الوصول إلى قيم العنصر السابق. في هذه الحالة، نحتاج إلى الوصول إلى قيمة الطابع الزمني للعنصر المدخل.

في حقل اسم الخاصية ، قمنا بتعيين اسم الخاصية الخاصة بعنصر الإخراج حيث سيتم تخزين نتيجة التحويل. لقد قمنا باستدعاء fromDatetime إلى تلك الخاصية.

لقد قمنا بتفعيل خيار التنسيق المخصص لتحديد تنسيق الإخراج إلى “YYYY-MM-DDTHH:mm:ss.SSSZ” .

في الخيارات يمكننا أن نرى:

  • إلى اسم المنطقة الزمنية أو المعرف مع المنطقة الزمنية إلى “UTC”، لذلك سيكون التاريخ الناتج في المنطقة الزمنية UTC
  • من التنسيق مع تنسيق قيمة إدخال الطابع الزمني “YYYY-MM-DDTHH:mm:ss.SSSZ”.
تنسيق التاريخ

الشكل 3. تنسيق التاريخ

مرة أخرى، إذا قمت بالنقر فوق العقدة وفي زر تنفيذ العقدة، فسوف تجبر التنفيذ، وستشاهد كيف تظهر الخاصية fromDatetime في عنصر الإخراج:

تنسيق التاريخ الثاني

الشكل 4. تنسيق التاريخ الثاني

عقدة MySQL 

تسمح لك هذه العقدة بتنفيذ استعلام MySQL .

لقد قمنا بتكوين هذه العقدة لتنفيذ استعلام يحدد جميع الصفوف من جدول المنتجات التي تم إنشاؤها بين الطابع الزمني الحالي واليوم السابق. سنستخدم تاريخ ووقت UTC الذي أنشأناه في العقدة السابقة كمعلمة للاستعلام:

ماي إس كيو إل

الشكل 5. MySQL

يمكنك ملاحظة أن عقدة MySQL كانت باللون الأحمر ولدينا تحذير فيها. وذلك لأن عقدة MySQL تحتاج إلى بيانات اعتماد للاتصال بقاعدة البيانات.

1. انقر فوق ” إنشاء بيانات اعتماد جديدة” لإنشاء بيانات الاعتماد:

بيانات اعتماد MySQL

الشكل 6. بيانات اعتماد MySQL

حساب MYSQL

الشكل 7. حساب MySQL

2. بمجرد الحفظ، ارجع إلى عقدة MySQL وأجبر تنفيذ العقدة:

عقدة التنفيذ

الشكل 8. عقدة التنفيذ

تعيين العقدة

يتيح لك تعيين أو تعديل قيم البيانات الواردة، مثل تحديث قيمة، أو دمج السلاسل، أو تنسيق التواريخ، والمزيد. سنستخدم هذه العقدة لتعيين قيم جديدة لإنشاء منتج جديد في واجهة برمجة التطبيقات الخاصة بنا .

سنستخدم هذه العقدة لإنشاء طلب استدعاء واجهة برمجة التطبيقات REST.

قم بتنشيط خيار “الحفاظ على الضبط فقط” لتوليد إخراج يحتوي فقط على القيم التي نقوم بتعيينها في العقدة. السلوك الافتراضي هو نسخ جميع خصائص الإدخال إلى الإخراج.

أضف أيضًا خيار “تدوين النقاط” الذي يعدل طريقة إنشاء الخصائص المولدة. إذا تم تمكين “تدوين النقاط” فإن نتيجة تعيين خاصية xxx.yyy بقيمة zzz هي: { “xxx”: { “yyy”: “zzz” } }، وإذا لم يتم تمكينه، فستكون النتيجة هي { “xxx.yyy”: “zzz” }

نظرًا لأن الطلب الذي نحتاج إلى إرساله إلى واجهة برمجة التطبيقات لإنشاء منتج يشبه هذا { “item”: { “nameProduct”: “Some Product”, “priceItem”: “10” } } سنقوم بتعيين قيمتين في العقدة:

إعداد الطلب

الشكل 9. إعداد الطلب

إذا فرضنا التنفيذ، فيمكننا أن نرى كيف تنفذ العقدة منطقها لكل عنصر من عناصر الإدخال:

عناصر الإدخال

الشكل 10. عناصر الإدخال

عقدة طلب HTTP

يتم استخدامه لإرسال طلب HTTP إلى عنوان URL محدد. يمكن استخدام هذه العقدة لاسترداد البيانات من واجهات برمجة التطبيقات الخارجية أو للتواصل مع خدمات الويب.

لقد استخدمنا هذه العقدة لتقديم طلب POST إلى واجهة برمجة التطبيقات الخاصة بنا لإنشاء المنتجات التي تم الحصول عليها في قاعدة البيانات.

تكوين العقدة هو التالي:

طلب HTTP

الشكل 11. طلب ​​HTTP

يمكننا رؤية طريقة HTTP وعنوان URL. والتكوين لإرسال نص JSON، باستخدام كود JavaScript التالي لتعيين معلمة JSON {{ JSON.stringify($json[“item”]) }}.

إذا فرضت التنفيذ، فسترى كيف تنتهي المكالمات العشر المقابلة لعناصر الإدخال العشرة بحالة النجاح:

طلب HTTP الثاني

الشكل 12. طلب ​​HTTP II

تفعيل سير العمل

حتى الآن، كنت تقوم بتنفيذ سير العمل عقدة تلو الأخرى يدويًا.

لقد قمنا بتكوين Schedule Trigger لتنفيذه كل يوم عند منتصف الليل لأننا أردنا أن يتم تشغيل سير العمل تلقائيًا. ولكن لن يتم تشغيله في الساعة المحددة بعد.

يرجع ذلك إلى أن سير العمل يحتاج إلى تنشيط سير العمل لتنشيط المشغل. للقيام بذلك، ما عليك سوى النقر فوق المفتاح الموجود أعلى الشاشة وسيتم تشغيل سير العمل تلقائيًا كل يوم عند منتصف الليل.

سير العمل الخاص بي

الشكل 13. سير العمل الخاص بي

خاتمة

في الختام ، يعد n8n حلاً قويًا لتوحيد التطبيقات والخدمات المختلفة. إن قدرته على الاتصال بسلاسة بمصادر متعددة، مثل قواعد بيانات MySQL وواجهات برمجة تطبيقات REST، وتنفيذ وظائف تحويل البيانات، تُظهر قدرته على التكيف وتعدد استخداماته. بالإضافة إلى ذلك، فإن استخدام Docker Compose لتشغيل جميع الخدمات المطلوبة، يشهد على توافقه مع تقنيات ومنهجيات التطوير الحالية. بشكل عام، تجعل ميزات سير العمل القوية والبديهية لـ n8n منه الخيار الأمثل للتعامل مع البيانات ومشاريع التكامل.

إذا كنت بحاجة إلى مساعدة بهذا الشأن، فلا تتردد في الاتصال بنا !