في المشهد سريع التطور لدمج التطبيقات، يبحث المطورون بشكل متزايد عن حلول تجمع بين مرونة الكود وسهولة أدوات البناء المرئية. بينما تهيمن أدوات مثل Zapier وMake على سوق المستهلك، إلا أنها تعاني غالباً من نماذج تسعير صارمة وقلة الشفافية. هنا يأتي دور Activepieces، وهو منصة قوية مفتوحة المصدر لأتمتة سير العمل تسد الفجوة بين بساطة "بدون كود" وقابلية التوسع على مستوى المطورين. يستكشف هذا المنشور كيفية الاستفادة من Activepieces في مهام الأتمتة المعقدة، مع التركيز على بنيتها، وتنفيذها العملي، وقابليتها للتوسع.
لماذا يبرز Activepieces
تم تصميم Activepieces بتراخيص "الكود العادل" (fair-code)، مما يسمح للمنظمات باستضافة المنصة ذاتياً دون القلق بشأن حبس البائع (vendor lock-in). تعتمد بنيتها الأساسية على محرك عالي التعديل، حيث يتم تغليف كل منطق، سواء كان مشغلاً (trigger) أو إجراءً (action)، في وحدة قابلة لإعادة الاستخدام تسمى "Piece". هذا التعديل أمر بالغ الأهمية للمطورين لأنه يعني أنك لا تقوم فقط بتكوين خدمة؛ بل تبني باستخدام كتل قابلة للتركيب يمكن فحصها أو تعديلها أو استبدالها.
على عكس أدوات ETL التقليدية، يوفر Activepieces محرراً مرئياً يولد تعريفات JSON قابلة للتنفيذ. هذا يعني أن سير عملك يُعامل ككود، ويمكن التحكم في إصداراته في مستودع Git الخاص بك، ونشره عبر خطوط أنابيب CI/CD. يتوافق هذا النهج تماماً مع مبادئ البنية كالكود (IaC)، مما يجعله مثالياً للفرق التي تقدر إمكانية إعادة الإنتاج والقدرة على التدقيق.
إعداد البيئة
بالنسبة للمطورين الذين يفضلون النهج العملي، فإن نشر Activepieces محلياً أو على خادم خاص أمر بسيط بفضل دعم Docker. الطريقة الموصى بها هي استخدام Docker Compose، الذي يدير التبعيات لمكونات الخادم، والعامل (worker)، وقاعدة البيانات.
إليك تكوين docker-compose.yml القياسي لتشغيل الخدمة الأساسية:
version: '3.8'
services:
activepieces:
image: ghcr.io/activepieces/activepieces:latest
environment:
- AP_ENGINE_EXECUTABLE_PATH=${AP_ENGINE_EXECUTABLE_PATH:-./dist/main.js}
- AP_ENCRYPTION_KEY=${AP_ENCRYPTION_KEY}
- AP_JWT_SECRET=${AP_JWT_SECRET}
- AP_DB_TYPE=${AP_DB_TYPE:-POSTGRES}
- AP_POSTGRES_DATABASE=${AP_POSTGRES_DATABASE:-activepieces}
- AP_POSTGRES_HOST=${AP_POSTGRES_HOST:-db}
- AP_POSTGRES_PORT=${AP_POSTGRES_PORT:-5432}
- AP_POSTGRES_USERNAME=${AP_POSTGRES_USERNAME:-postgres}
- AP_POSTGRES_PASSWORD=${AP_POSTGRES_PASSWORD:-password}
- AP_TRIGGER_ENABLED=${AP_TRIGGER_ENABLED:-false}
- AP_TELEMETRY_ENABLED=${AP_TELEMETRY_ENABLED:-false}
depends_on:
- db
db:
image: postgres:15-alpine
environment:
- POSTGRES_DB=${AP_POSTGRES_DATABASE:-activepieces}
- POSTGRES_USER=${AP_POSTGRES_USERNAME:-postgres}
- POSTGRES_PASSWORD=${AP_POSTGRES_PASSWORD:-password}
volumes:
- postgres_data:/var/lib/postgresql/data
volumes:
postgres_data:
بمجرد تشغيل الحاويات، يمكنك الوصول إلى واجهة المستخدم عبر http://localhost:80. سيقودك معالج الإعداد الأولي خلال تكوين اتصال قاعدة البيانات وإنشاء أول مستخدم مسؤول.
بناء سير عمل معقد باستخدام خطوات الكود
بينما يغطي البناء المرئي العديد من حالات الاستخدام الشائعة، فإن المطورين المتقدمين سيقدرون خطوة "Code". يتيح لك هذا حق منطق JavaScript أو TypeScript مخصص مباشرة في سير عملك، متجاوزاً قيود العقد القياسية. هذا مفيد بشكل خاص لتحويل البيانات، والمنطق الشرطي المعقد، أو التفاعل مع واجهات برمجة التطبيقات (APIs) التي لا تحتوي على قطع (Pieces) مبنية مسبقاً.
على سبيل المثال، إذا كنت بحاجة إلى جلب بيانات من واجهة برمجة تطبيقات تابعة لجهة خارجية، وتحويل استجابة JSON، ثم دفعها إلى قاعدة بيانات، يمكنك كتابة نص برمجي موجز:
// مثال على خطوة الكود
const axios = require('axios');
async function main({ step, $ }) {
const response = await axios.get('https://api.example.com/data');
// تحويل البيانات
const transformedData = response.data.map(item => ({
id: item.uuid,
name: item.title.toUpperCase(),
timestamp: new Date().toISOString()
}));
return transformedData;
}
يوضح هذا المقتطف كيف يدمج Activepieces مع مكتبات Node.js القياسية، مما يمنحك القوة الكاملة لنظام JavaScript البيئي في سياق سير عمل مرئي. يمكن بعد ذلك تمرير مخرجات خطوة الكود هذه مباشرة إلى العقد اللاحقة، مثل "إرسال بريد إلكتروني" أو "إدراج في قاعدة البيانات"، مع الحفاظ على سلامة الأنواع وسلامة البيانات.
الخاتمة
يمثل Activepieces تحولاً كبيراً في كيفية تعامل المطورين مع أتمتة سير العمل. من خلال الجمع بين سهولة التطوير المرئي وقوة البنية مفتوحة المصدر وتنفيذ الكود المخصص، فإنه يمكّن الفرق من بناء خطوط أنابيب تكامل قابلة للتوسع وقابلة للصيانة وفعالة من حيث التكلفة. سواء كنت تقوم بأتمتة عمليات DevOps الداخلية أو بناء تكاملات موجهة للعملاء، يوفر Activepieces الأدوات اللازمة للقيام بذلك بدقة وتحكم. ومع استمرار نمو نظام "القطع" (Pieces)، تزداد إمكانية استبدال بدائل SaaS المملوكة جاذبية.