snapshot of https://github.com/twentyhq/twenty.git (main, 2026-09-17; blobs > 131072B omitted)
Some checks failed
App Prod-Parity E2E Dispatch / dispatch (push) Failing after 10s
CD Storybook UI / build (push) Failing after 3m25s
CD Storybook UI / dispatch (push) Has been skipped
CD deploy main / website-changed-files (push) Successful in 18m8s
CI Agent Skills / changed-files-check (push) Successful in 18m9s
CI Create App E2E minimal / changed-files-check (push) Successful in 24s
CI Create App / changed-files-check (push) Successful in 26s
CI Docs / changed-files-check (push) Successful in 26s
CI Emails / changed-files-check (push) Successful in 28s
CI Example App Hello World / changed-files-check (push) Successful in 23s
CI Front / changed-files-check (push) Has been skipped
CI Example App Postcard / changed-files-check (push) Successful in 27s
CI UI / changed-files-check (push) Has been skipped
CI Utils Test / changed-files-check (push) Successful in 45s
CI Twenty Apps / discover (push) Successful in 1m3s
CD deploy main / deploy-main (push) Failing after 3s
CI Agent Skills / agent-skills-validate (push) Has been skipped
CI Create App / create-app-test (lint) (push) Has been skipped
CI Emails / emails-test (push) Has been skipped
CI Front / front-task (lingui:compile) (push) Has been skipped
CI Front / front-task (lint) (push) Has been skipped
CI Example App Postcard / example-app-postcard (push) Has been skipped
CI UI / ui-task (lint) (push) Has been skipped
CI UI / ui-task (pack-size) (push) Has been skipped
CI UI / ui-task (size) (push) Has been skipped
CI UI / ui-task (test) (push) Has been skipped
CI UI / ui-task (typecheck) (push) Has been skipped
CI Utils Test / utils-test (push) Has been skipped
CI Twenty Apps / ${{ matrix.app.name }} (push) Has been skipped
CI Emails / ci-emails-status-check (push) Successful in 2s
CI Example App Hello World / ci-example-app-hello-world-status-check (push) Successful in 2s
CI Example App Postcard / ci-example-app-postcard-status-check (push) Successful in 3s
CI UI / ui-sb-test (push) Has been skipped
CI Utils Test / ci-utils-test-status-check (push) Successful in 2s
CI Twenty Apps / ci-twenty-apps-status-check (push) Successful in 2s
CI UI / ci-ui-status-check (push) Successful in 2s
CI Desktop / desktop (push) Failing after 1m8s
Push docs to Crowdin / Push documentation to Crowdin (push) Failing after 55s
Push translations to Crowdin / Extract and upload translations (push) Failing after 5s
Push website translations to Crowdin / Extract and upload website translations (push) Failing after 5s
CI Create App / create-app-test (test) (push) Has been skipped
CI Create App / create-app-test (typecheck) (push) Has been skipped
CI Docs / docs-lint (push) Has been skipped
CI Example App Hello World / example-app-hello-world (push) Has been skipped
CI Front / front-task (lingui:extract) (push) Has been skipped
CI Front / front-task (test) (push) Has been skipped
CI Front / front-task (typecheck) (push) Has been skipped
CI UI / ui-sb-build (push) Failing after 1m32s
CI Twenty Apps / ${{ matrix.app.name }} (${{ matrix.server-source }}) (push) Has been skipped
CI Agent Skills / agent-skills-publish (push) Has been skipped
CI Create App / ci-create-app-status-check (push) Successful in 2s
CI Agent Skills / agent-skills-remote-source (push) Has been skipped
CI Create App E2E minimal / create-app-e2e-minimal (push) Has been cancelled
CI E2E Main / e2e-test (push) Has been cancelled
CI Front / front-sb-build (push) Has been cancelled
CI Front / front-build (push) Has been cancelled
CI Create App E2E minimal / ci-create-app-e2e-minimal-status-check (push) Has been cancelled
CI E2E Main / ci-e2e-main-status-check (push) Has been cancelled
CI E2E Main / notify-main-ci-failure (push) Has been cancelled
CI E2E Main / qa-scout-comment (push) Has been cancelled
CI Front / front-sb-test (push) Has been cancelled
CI Front / front-sb-screenshots (push) Has been cancelled
CI Front / ci-front-status-check (push) Has been cancelled
DPA Sub-Processor Sync / sync-subprocessors (push) Failing after 3s
AI Catalog Sync / sync-catalog (push) Failing after 2s

This commit is contained in:
upstream-mirror
2026-09-17 23:28:13 +05:00
commit e7da97194a
32688 changed files with 4208681 additions and 0 deletions

View File

@@ -0,0 +1,167 @@
---
title: إرسال رسائل البريد الإلكتروني عبر سير العمل
description: أرسل رسائل بريد إلكتروني مُخصّصة تلقائياً باستخدام إجراءات سير العمل.
---
أرسل رسائل البريد الإلكتروني تلقائياً عند حدوث أحداث معيّنة في نظام إدارة علاقات العملاء (CRM) لديك—رحّب بجهات الاتصال الجديدة، وتابع الفرص، أو أخطر أعضاء الفريق.
## المتطلبات الأساسية
قبل أن تتمكن من إرسال رسائل البريد الإلكتروني من سير العمل:
1. وصّل حساب بريد إلكتروني ضمن **الإعدادات → الحسابات**
2. تأكد من أن الحساب لديه أذونات إرسال مفعّلة
## سير عمل أساسي للبريد الإلكتروني
### مثال: رسالة ترحيب لجهات الاتصال الجديدة
**الهدف**: إرسال رسالة ترحيب عند إضافة شخص جديد إلى نظام إدارة علاقات العملاء (CRM).
**الإعداد**:
1. **إنشاء سير عمل**: انتقل إلى **الإعدادات → سير العمل** ثم انقر **+ سير عمل جديد**
2. **إضافة مشغّل**: اختر **تم إنشاء سجل** → **الأشخاص**
3. **إضافة إجراء إرسال بريد إلكتروني**:
* انقر **+** لإضافة إجراء
* اختر **إرسال بريد إلكتروني**
* قم بتهيئة البريد الإلكتروني:
| الحقل | القيمة |
| ----------- | -------------------------------------- |
| **إلى** | `{{trigger.object.email}}` |
| **الموضوع** | `مرحبا بك في {{Your Company Name}}` |
| **المحتوى** | `Hi {{trigger.object.firstName}}, ...` |
4. **الاختبار والتفعيل**: اختبر باستخدام سجل عينة، ثم فعِّل
## استخدام المتغيرات في رسائل البريد الإلكتروني
استدعِ البيانات من الخطوات السابقة باستخدام صيغة `{{variable}}`:
```text
Hi {{trigger.object.firstName}},
Thank you for connecting with us!
Your company, {{trigger.object.company.name}}, is now in our system.
Best regards,
The Team
```
### المتغيرات المتاحة من المشغّلات
| نوع المُحفِز | المتغيرات الشائعة |
| ------------------------ | -------------------------------------- |
| **تم إنشاء/تحديث السجل** | `{{trigger.object.fieldName}}` |
| **يدوي** | `{{trigger.selectedRecord.fieldName}}` |
| **الويب هوك** | `{{trigger.body.fieldName}}` |
## متقدم: رسائل بريد إلكتروني مشروطة
### مثال: رسائل بريد إلكتروني مختلفة بناءً على مصدر العميل المحتمل
**الهدف**: إرسال رسائل ترحيب مختلفة بناءً على مصدر قدوم العميل المحتمل.
**الإعداد**:
1. **المشغّل**: تم إنشاء سجل (الأشخاص)
2. **إضافة إجراء تصفية**:
* الشرط: `{{trigger.object.source}}` يساوي `"Website"`
* إذا كان صحيحاً → المتابعة إلى رسالة الترحيب الخاصة بالموقع الإلكتروني
3. **فرع للمصادر الأخرى**:
* أنشئ فروعاً متوازية لمصادر مختلفة
* لكل فرع إجراء إرسال بريد إلكتروني خاص به
## إرسال رسائل البريد الإلكتروني إلى عدة مستلمين
### مثال: إشعار الفريق عند إغلاق الصفقة
**الهدف**: إرسال بريد إلكتروني إلى مندوب المبيعات ومديره عند ربح فرصة.
**الإعداد**:
1. **المشغّل**: تم تحديث السجل (الفرص، المرحلة = "Closed Won")
2. **البحث في السجلات**: اعثر على مدير مالك الفرصة
3. **إرسال بريد إلكتروني #1**: إلى مالك الفرصة
* إلى: `{{trigger.object.owner.email}}`
* الموضوع: `تهانينا على إغلاق {{trigger.object.name}}!`
4. **إرسال بريد إلكتروني #2**: إلى المدير
* إلى: `{{searchRecords.manager.email}}`
* الموضوع: `تم ربح الصفقة: {{trigger.object.name}}`
## رسائل متابعة مجدولة
### مثال: متابعة بعد 3 أيام من الاجتماع
**الهدف**: إرسال رسالة متابعة عبر البريد الإلكتروني بعد 3 أيام من تسجيل اجتماع.
**الإعداد**:
1. **المشغّل**: تم إنشاء سجل (الأنشطة، النوع = "اجتماع")
2. **إجراء تأخير**: الانتظار 3 أيام
3. **إرسال البريد الإلكتروني**:
* إلى: مشارك الاجتماع
* الموضوع: متابعة لمحادثتنا
* المحتوى: الإشارة إلى تفاصيل الاجتماع من المشغّل
## مرفقات البريد الإلكتروني
يمكنك إرفاق ملفات برسائل البريد الإلكتروني المرسلة من سير العمل. المرفق ملف ثابت تقوم برفعه عند تهيئة سير العمل.
### كيفية إضافة مرفق
1. في إجراء **إرسال بريد إلكتروني**، انقر على زر **المرفقات**
2. انقر لرفع ملف من جهازك
3. سيتم إرفاق الملف بجميع رسائل البريد الإلكتروني التي يرسلها هذا الإجراء
### الاستخدامات الشائعة
| حالة الاستخدام | ملف نموذجي |
| --------------------------------------- | -------------------------------- |
| **رسائل الترحيب عبر البريد الإلكتروني** | كتيب الشركة (PDF) |
| **تسلسلات الانضمام** | دليل البدء |
| **متابعات المبيعات** | كتالوج المنتجات أو قائمة الأسعار |
| **تأكيدات الفعاليات** | تفاصيل الفعالية أو جدول الأعمال |
<Note>
المرفقات ثابتة—يتم إرسال الملف نفسه إلى جميع المستلمين. بالنسبة للمستندات الديناميكية (مثل عروض الأسعار المخصصة)، أنشئ الملفات وأرفقها باستخدام [وظيفة منطقية](/l/ar/user-guide/workflows/how-tos/connect-to-other-tools/generate-pdf-from-twenty).
</Note>
## أفضل الممارسات
### محتوى البريد الإلكتروني
* اجعل سطور الموضوع موجزة وذات صلة
* خصص الرسالة باسم المستلم
* ضمّن دعوة واضحة للإجراء
* اختبر رسائل البريد الإلكتروني قبل التفعيل
### قابلية التسليم
* لا ترسل عدداً كبيراً من الرسائل بسرعة كبيرة
* استخدم تواقيع بريد إلكتروني احترافية
* تجنب كلمات تُحفّز مرشحات البريد العشوائي
* احرص على توفير خيارات إلغاء الاشتراك لرسائل التسويق الإلكترونية
### استكشاف الأخطاء وإصلاحها
* تحقّق من أن حساب البريد الإلكتروني متصل وفعّال
* تحقّق من صحة عنوان البريد الإلكتروني للمستلم
* راجِع عمليات تشغيل سير العمل بحثاً عن رسائل الخطأ
* اختبر باستخدام عنوان بريدك الإلكتروني أولاً
## ذات صلة
* [مشغلات سير العمل](/l/ar/user-guide/workflows/capabilities/workflow-triggers)
* [إجراءات سير العمل](/l/ar/user-guide/workflows/capabilities/workflow-actions)

View File

@@ -0,0 +1,88 @@
---
title: استخدام الفروع في سير العمل
description: افهم كيف تعمل الفروع وكيف تتحكم في المسار الذي يتم تنفيذه.
---
## كيف تعمل الفروع
في محرر سير العمل، يمكنك إنشاء مسارات متعددة (فروع) تنطلق من عقدة واحدة. يُمكّنك هذا من إنشاء أتمتة معقدة بنتائج مختلفة.
**مهم**: عند تشغيل سير العمل، **تُنفَّذ جميع الفروع بالتوازي افتراضيًا**. لا توجد بنية منطقية مدمجة "if/else" لاختيار فرع على آخر — كل مسار سيعمل في الوقت نفسه.
## التحكم في الفرع الذي يعمل
لتنفيذ فرع واحد فقط بناءً على شروط محددة، **أضِف عقدة Filter في بداية كل فرع**.
### مثال على الإعداد
1. أنشئ سير العمل الخاص بك بفروع متعددة من عقدة واحدة
2. أضِف عقدة **Filter** كأول خطوة في كل فرع
3. عيِّن شروطًا على كل Filter لتحديد متى يجب أن يواصل ذلك الفرع
4. سيتابع فقط الفرع أو الفروع التي تستوفي شروط Filter
### كيف تعمل عُقد Filter
* إذا كان شرط Filter **متحققًا**: يتابع الفرع التنفيذ
* إذا كان شرط Filter **غير متحقق**: يتوقف الفرع عند عقدة Filter
يُنشئ هذا عمليًا منطقًا شرطيًا بحيث لا يعمل إلا الفرع المناسب بناءً على بياناتك.
## مثال: التوجيه حسب حجم الصفقة
**السيناريو**: عند إغلاق صفقة، أرسِل إشعارات مختلفة حسب حجم الصفقة.
1. **المشغّل**: تم تحديث الفرصة (المرحلة = Closed Won)
2. **الفرع 1**: شرط Filter للمبلغ > $10,000 → إرسال رسالة Slack إلى #big-deals
3. **الفرع 2**: شرط Filter للمبلغ ≤ $10,000 → إرسال بريد إلكتروني إلى مدير المبيعات
يبدأ الفرعان، لكن الفرع الذي يطابق مبلغ الصفقة فقط سيستمر بعد عقدة Filter.
## إنشاء الفروع
<Note>
لإنشاء فرع جديد من خطوة موجودة، انقر زر **+** على الخطوة وأضِف الإجراء الخاص بك. يمكنك إضافة عدة فروع بالنقر على **+** عدة مرات.
</Note>
1. في محرر سير العمل، حدِّد الخطوة التي تريد التفريع منها
2. انقر **+** لإضافة إجراء
3. سيؤدي هذا إلى إنشاء فرع واحد
4. انقر **+** مرة أخرى على نفس الخطوة لإنشاء فروع إضافية
5. يمكن لكل فرع أن يكون له تسلسل إجراءات خاص به
## دمج الفروع معًا مرة أخرى
بعد أن تُكمل الفروع المتوازية عملها، يمكنك دمجها مرة أخرى في مسار واحد:
1. أكمل إجراءات الفروع
2. أضِف خطوة جديدة ينبغي أن تعمل بعد جميع الفروع
3. اسحب اتصالًا من الخطوة الأخيرة لكل فرع إلى هذه الخطوة الجديدة
4. تنتظر الخطوة المدمجة اكتمال جميع الفروع المتصلة قبل التنفيذ
### مثال: المعالجة ثم الإشعار
```
Trigger
│
├── Branch A: Update Customer Record
│
└── Branch B: Create Support Ticket
↘ ↙
Merged Step: Send Confirmation Email
```
يتم إرسال رسالة تأكيد البريد الإلكتروني فقط بعد أن يتم تحديث العميل وإنشاء التذاكر.
## أفضل الممارسات
* استخدم دائمًا **عُقد Filter** في بداية الفروع عندما تريد تنفيذًا شرطيًا
* اجعل شروط الفروع **متبادلة الإقصاء** لتجنّب الإجراءات المكررة
* اختبر سير العمل لديك ببيانات مختلفة للتأكد من تشغيل الفروع الصحيحة
* **أعد تسمية خطوات الفروع** بطريقة وصفية ليكون واضحًا ما يفعله كل مسار
* **ادمج الفروع** عندما تحتاج إلى إجراء نهائي بعد المعالجة المتوازية
## ذات صلة
* [الأسئلة الشائعة حول سير العمل](/l/ar/user-guide/workflows/how-tos/need-more-help/workflows-faq) — إجابات حول التنفيذ المتوازي
* [إجراءات سير العمل](/l/ar/user-guide/workflows/capabilities/workflow-actions) — الإجراءات المتاحة للفروع

View File

@@ -0,0 +1,183 @@
---
title: استخدم المكرّر
description: قم بالتكرار عبر مصفوفات السجلات لتنفيذ إجراءات على كل عنصر.
---
يتيح لك المكرّر التكرار عبر مصفوفة من السجلات وتنفيذ إجراءات على كلٍ منها. وهو ضروري لتدفّقات العمل التي تحتاج إلى معالجة سجلات متعددة أُرجعت بواسطة Search Records أو استُلِمت عبر ربط الويب.
## متى تستخدم المكرّر
| السيناريو | مثال |
| -------------------------------- | --------------------------------------------- |
| **معالجة نتائج البحث** | إرسال بريد إلكتروني إلى كل شخص تم العثور عليه |
| **التعامل مع مصفوفات ربط الويب** | إنشاء سجلات لكل عنصر بالتسلسل |
| **التحديثات الدفعيّة** | تحديث عدة سجلات بقيم محسوبة |
| **إشعارات** | تنبيه عدة أشخاص بخصوص حدثٍ ما |
## فهم المكرّر
يتوقع المكرّر إدخالاً عبارة عن **مصفوفة**. ثم يقوم بما يلي:
1. يأخذ أول عنصر من المصفوفة
2. تشغيل جميع الإجراءات داخل المربع مع هذا العنصر
3. ينتقل إلى العنصر التالي
4. يكرّر حتى تتم معالجة جميع العناصر
### اختيار المصفوفة المطلوب التكرار عليها
يمكن اختيار معظم مصادر المصفوفات (بحث السجلات، حقل مصفوفة لويب هوك، مشغّل يدوي دفعي) مباشرةً من منتقي المتغيّرات.
عندما تُرجِع خطوة **Code** أو **Logic Function** *مصفوفة من المستوى الأعلى*، يظهر ناتجها في منتقي المتغيّرات كعناصر مفهرسة (`0`، `1`، `2`، …). للتكرار على المصفوفة بالكامل، اختر خيار **Whole list** لتلك الخطوة — عندها يستنتج عنصر Iterator شكل كل عنصر من القائمة تلقائيًا.
## الإعداد الأساسي
### مثال: إرسال بريد إلكتروني للجميع ضمن نتائج البحث
**الهدف**: العثور على جميع جهات الاتصال في شركة محددة وإرسال بريد إلكتروني مخصص لكلٍ منهم.
### الخطوة 1: البحث عن سجلات
1. أضف إجراء **Search Records**
2. الكائن: **People**
3. عامل التصفية: Company يساوي "Acme Inc"
4. يُرجِع هذا مصفوفة من الأشخاص
### الخطوة 2: التحقق من وجود نتائج
1. أضف إجراء **Filter**
2. الشرط: `{{searchRecords.length}}` أكبر من 0
3. يمنع هذا أخطاء المكرّر عند كون النتائج فارغة
### الخطوة 3: إضافة Iterator
1. أضف إجراء **Iterator**
2. مدخل المصفوفة: اختر `{{searchRecords}}`
3. هذا ينشئ حلقة تكرار
### الخطوة 4: إضافة إجراءات داخل المكرّر
الإجراءات الموضوعة بعد Iterator تُشغَّل لكل عنصر:
1. إضافة إجراء **إرسال البريد الإلكتروني** (داخل الترتيب)
2. إلى: `{{iterator.currentItem.email}}`
3. الموضوع: مرحباً `{{iterator.currentItem.firstName}}`!
4. المتن: رسالة مخصّصة باستخدام حقول العنصر الحالي
### النتيجة
إذا أعاد Search Records 5 أشخاص، فسيقوم المكرّر بما يلي:
* يرسل بريداً إلكترونياً إلى الشخص 1
* يرسل بريداً إلكترونياً إلى الشخص 2
* ... يستمر لكل الأشخاص الخمسة
## الوصول إلى بيانات العنصر الحالي
داخل المكرّر، استخدم `{{iterator.currentItem}}` للوصول إلى السجل الحالي:
| المتغيّر | الوصف |
| --------------------------------------- | -------------------------------------- |
| `{{iterator.currentItem}}` | كائن السجل الحالي بالكامل |
| `{{iterator.currentItem.id}}` | معرّف السجل |
| `{{iterator.currentItem.email}}` | حقل البريد الإلكتروني |
| `{{iterator.currentItem.company.name}}` | اسم الشركة المرتبطة |
| `{{iterator.index}}` | الموضع الحالي في المصفوفة (بدءاً من 0) |
في منتقي المتغيّرات، يمكنك إما التعمّق في حقل معيّن من العنصر الحالي، أو اختيار **Use the whole item** للإشارة إلى العنصر الحالي بالكامل (`{{iterator.currentItem}}`). يكون اختيار العنصر بالكامل مفيدًا عندما تريد تمرير سجل كامل مباشرةً إلى خطوة لاحقة في خط التدفق بدلًا من إعادة بنائه حقلًا بحقل.
## أنماط شائعة
### تحديث عدة سجلات
**الهدف**: وضع علامة "متأخر" على جميع المهام المتأخرة عن موعدها
```
1. Search Records (Tasks, Due Date < Today, Status ≠ Completed)
2. Filter (length > 0)
3. Iterator (searchRecords)
└── Update Record
- Object: Tasks
- Record: {{iterator.currentItem.id}}
- Status: Late
```
### إنشاء سجلات من مصفوفة
**الهدف**: يتلقى الويبهوك طلباً يتضمن عدة عناصر، وإنشاء سجل لكل عنصر
```
1. Webhook Trigger (receives items array)
2. Filter (items.length > 0)
3. Iterator (trigger.body.items)
└── Create Record
- Object: Order Items
- Name: {{iterator.currentItem.name}}
- Quantity: {{iterator.currentItem.qty}}
- Related Order: {{trigger.body.orderId}}
```
### معالجة مشروطة داخل الحلقة
**الهدف**: إرسال بريد إلكتروني فقط لجهات الاتصال ذات العناوين الصالحة
```
1. Search Records (People)
2. Iterator (searchRecords)
└── Filter (currentItem.email is not empty)
└── Send Email
- To: {{iterator.currentItem.email}}
```
## استكشاف الأخطاء وإصلاحها
### "المكرّر يتوقع مصفوفة"
**السبب**: مرّرت سجلاً مفرداً بدلاً من مصفوفة.
**الإصلاح**: تأكّد من أنك تمرّر ناتج Search Records أو حقلاً من نوع مصفوفة، وليس سجلاً مفرداً.
```
✅ Correct: {{searchRecords}}
❌ Wrong: {{searchRecords[0]}}
```
### المكرّر لا يعمل
**السبب**: المصفوفة فارغة.
**الإصلاح**: أضف عامل تصفية قبل Iterator للتحقق من طول المصفوفة:
```
Filter: {{searchRecords.length}} > 0
```
### الإجراءات تُشغَّل مرات كثيرة جداً
**السبب**: أعاد Search Records سجلات أكثر مما هو متوقّع.
**الإصلاح**:
* أضف عوامل تصفية أكثر تحديداً إلى Search Records
* عيّن حداً في Search Records (بحد أقصى 200)
* أضف عامل تصفية داخل المكرّر لشروط إضافية
## اعتبارات الأداء
* **استخدام الأرصدة**: كل دورة تستهلك أرصدة لإجراءاتها
* **الوقت**: تستغرق المصفوفات الكبيرة وقتاً أطول للمعالجة
* **القيود**: فكّر في تنفيذ العمليات الكبيرة جداً على دفعات
* **قيود المعدّل**: قد تصل استدعاءات واجهات برمجة التطبيقات الخارجية إلى حدود المعدّل مع كثرة التكرارات
## أفضل الممارسات
1. **تحقق دائماً من طول المصفوفة** قبل Iterator لتجنّب الأخطاء
2. **أضف عوامل تصفية داخل الحلقات** عندما لا تحتاج جميع العناصر إلى معالجة
3. **أعد تسمية خطوة Iterator** لوصف ما تقوم بالتكرار عليه
4. **اختبر باستخدام مصفوفات صغيرة** قبل معالجة مجموعات بيانات كبيرة
5. **راقب تشغيلات سير العمل** لضمان اكتمال التكرارات كما هو متوقّع
## ذات صلة
* [إجراءات سير العمل](/l/ar/user-guide/workflows/capabilities/workflow-actions)
* [كيفية استخدام التفرعات](/l/ar/user-guide/workflows/capabilities/use-branches-in-workflows)
* [الأسئلة الشائعة حول سير العمل](/l/ar/user-guide/workflows/how-tos/need-more-help/workflows-faq)

View File

@@ -0,0 +1,332 @@
---
title: إجراءات سير العمل
description: تعرّف على الإجراءات المتاحة في عمليات سير العمل في Twenty.
---
import { VimeoEmbed } from '/snippets/vimeo-embed.mdx';
## حول الإجراءات
تحدد الإجراءات ما يحدث بعد تنفيذ الزناد. يمكنك تسلسل عدة إجراءات معًا لبناء عمليات أتمتة معقدة.
<Tip>
* استخدم منتقي المتغيرات (انقر أيقونة `(x+)`) لاستعراض البيانات المتاحة من الخطوات السابقة
* مرّر المؤشر فوق أي حقل إدخال لمعرفة الخطوة التي يأتي منها المتغير — وهو أمر مفيد عندما يوجد الحقل نفسه (مثلًا، ID) في عدة خطوات سابقة
* امنح كل إجراء اسمًا وصفيًا لتسهيل الصيانة
</Tip>
## إجراءات السجل
<img src="/images/user-guide/workflows/workflow_actions.png" style={{width:'100%'}} />
### إنشاء سجل
يضيف سجل جديد إلى كائن محدد.
**الإعداد**:
* اختر الكائن المستهدف
* املأ الحقول الضرورية والاختيارية
* استخدم البيانات من الخطوات السابقة أو أدخِل القيم يدويًا لملء الحقول
**المخرجات**: بيانات السجل المنشأ حديثاً متاحة للاستخدام في الخطوات التالية.
### تحديث السجل
يقوم بتعديل سجل موجود في كائن محدد.
<img src="/images/user-guide/workflows/update_record.png" style={{width:'100%'}} />
**الإعداد**:
* اختر الكائن المستهدف
* اختر السجل المحدد لتحديثه.
* يمكنك إما اختيار سجل ثابت، باستخدام القائمة المنسدلة التي تعرض جميع السجلات المتاحة.
* أو يمكنك اختيار السجل ديناميكيًا بتحديد سجل تم العثور عليه في خطوة سابقة، باستخدام `(x+)`. لا يمكنك البحث عن السجل بناءً على معايير مختلفة في هذه المرحلة. إذا لم تكن قد حدّدت السجل بعد، فأضِف خطوة `Search Record` قبل خطوة `Update Record`.
* اختر الحقول لتعديل القيم وأدخل القيم الجديدة
**المخرجات**: بيانات السجل المحدثة متاحة للاستخدام في الخطوات التالية.
### حذف السجل
يزيل سجلاً من كائن محدد.
**التكوين**:
* اختر الكائن المستهدف
* اختر السجل المحدد لحذفه
**المخرجات**: تظل بيانات السجل المحذوف متاحة للاستخدام في الخطوات التالية.
### البحث في السجلات
يجد السجلات داخل كائن معين باستخدام شروط التصفية.
**التكوين**:
* اختر الكائن للبحث
* حدد معايير التصفية لتضييق النتائج
* قم بتكوين الفرز والقيود
**المخرجات**: تعيد السجلات المطابقة التي يمكن استخدامها في الخطوات اللاحقة.
<Note>
**الحد**: تعيد Search Records بحد أقصى **200 سجل**. إذا كنت بحاجة إلى معالجة المزيد، فأضِف عوامل تصفية محددة لتقليل النتائج أو استخدم عمليات سير عمل مجدولة للمعالجة على دفعات.
</Note>
**أفضل الممارسات**: استخدم [الفروع](/l/ar/user-guide/workflows/capabilities/workflow-branches) بعد Search Records للتعامل مع سيناريوهات "تم العثور" مقابل "لم يتم العثور".
### إدراج أو تحديث سجل
ينشئ سجلًا جديدًا أو يحدّث سجلًا موجودًا استنادًا إلى معايير المطابقة. يكون هذا مفيدًا عندما لا تكون متأكدًا مما إذا كان السجل موجودًا بالفعل.
<img src="/images/user-guide/workflows/upsert_double_identifier.png" style={{width:'100%'}} />
**التكوين**:
* اختر الكائن المستهدف
* لاحظ الحقول التي يمكن استخدامها للمطابقة: email لـ People، وdomain لـ Companies، وID لأي كائن، أو أي حقل مُعلَّم كـ Unique. ستحتاج إلى تعبئة واحد على الأقل من هذه الحقول أدناه.
* املأ قيم الحقول. لا تنسَ تعبئة معرّف فريد واحد على الأقل.
<Note>
**تعمل المطابقة عادةً بشكل أفضل عند إضافة معرّف فريد واحد فقط.** على سبيل المثال، ستطابق لقطة الشاشة أدناه الشركات استنادًا إلى domain الخاص بها. لا تكون قيمة ID مطلوبة بالضرورة.
</Note>
<img src="/images/user-guide/workflows/upsert_simple_identifier.png" style={{width:'100%'}} />
* استخدم البيانات من الخطوات السابقة لملء الحقول
**كيف يعمل**:
1. يبحث عن سجل يطابق معاييرك
2. إذا تم العثور عليه → يحدّث السجل الموجود
3. إذا لم يُعثر عليه → ينشئ سجلًا جديدًا
**المخرجات**: بيانات السجل التي تم إنشاؤها أو تحديثها متاحة للاستخدام في الخطوات التالية.
## إجراءات التدفق
### مكرر
**يتكرر عبر مصفوفة من السجلات** المُعادة من خطوة سابقة، مما يتيح لك تنفيذ إجراءات على كل سجل بشكل فردي.
**التكوين**:
* حدد مجموعة من السجلات من خطوة سابقة (على سبيل المثال، النتائج من سجلات البحث، من المشغل اليدوي مع توفر الكبريت، من عقدة البرمجة). عندما تُرجِع خطوة Code أو دالة منطقية مصفوفة من المستوى الأعلى، حدِّد خيار **Whole list** للتكرار عبر الإخراج بالكامل.
* حدد الإجراءات لتنفيذها على كل سجل في الحلقة.
<Note>
- يمكنك إضافة عدة إجراءات داخل ترتير.
- عند استخدام الفروع داخل ترتير، تأكد من أن الخطوة الأخيرة من كل فرع تتصل بعودة إلى ترتور لإغلاق الحلقة التكرارية.
</Note>
* الوصول إلى حقول `Current Item`: لاستخدام حقول السجل الجاري معالجته، انقر على خطوة **المُكرِّر**، ثم اختر **العنصر الحالي**. ستُعرَض قائمة الحقول المتاحة من ذلك السجل ويمكن اختيارها لاستخدامها في الإجراءات اللاحقة. يمكنك أيضًا تحديد **Use the whole item** لتمرير العنصر الحالي بالكامل إلى خطوة لاحقة.
<VimeoEmbed videoId="1146577247" title="عرض توضيحي بالفيديو" />
### تصفية
يقوم بتصفية السجلات بناءً على الشروط المحددة، مما يسمح فقط للسجلات التي تلبي المعايير بالمرور.
**التكوين**:
* اختر السجل لتصفيته
* حدد شروط ومعايير التصفية
* قم بتكوين السجلات التي يجب أن تمر إلى الخطوات اللاحقة
<Note>
1. **المخرجات**: عُقد التصفية لا تُرجِع بيانات — فهي تعمل كبوابات. إذا تم استيفاء الشروط، يتابع سير العمل. وإلا سيتوقف سير العمل عند ذلك الفرع.
2. يمكن استخدام العامل `IS` مع الحقول الرقمية. يعمل كأنه `EQUAL`.
</Note>
### التأخير
يُوقف تنفيذ سير العمل لمدة محددة أو حتى تاريخ/وقت معين.
**أنواع التأخير**:
| النوع | الوصف |
| ---------------- | ----------------------------------------------------- |
| **المدة** | الانتظار لمدة زمنية محددة (أيام، ساعات، دقائق، ثوانٍ) |
| **تاريخ مُجدول** | الانتظار حتى تاريخ ووقت محددين |
**إعدادات المدة**:
* تعيين الأيام والساعات والدقائق و/أو الثواني
* دمج وحدات متعددة (مثل يومين و4 ساعات)
**إعدادات التاريخ المُجدول**:
* اختر تاريخًا ووقتًا
* يمكن الإشارة إلى حقل تاريخ من خطوة سابقة (مثل المتابعة بعد 3 أيام من اجتماع)
**حالات الاستخدام**:
* انتظر 24 ساعة قبل إرسال بريد متابعة إلكتروني
* إيقاف مؤقت حتى تاريخ إغلاق الفرصة
* جدولة الإجراءات ضمن ساعات العمل
<Note>
لا يمكن أن يكون التاريخ المُجدول في الماضي. إذا استُخدم حقل تاريخ من خطوة سابقة وكان التاريخ قد مضى بالفعل، فسيفشل سير العمل.
</Note>
**الحدود والرصيد**:
* **لا يوجد حد أقصى للمدة** — يمكنك تعيين تأخيرات بالدقائق أو الأيام أو الأسابيع أو أكثر
* **يُستهلَك رصيد واحد** عند تنفيذ عقدة التأخير، بغض النظر عن المدة
* **لا يُستهلك أي رصيد** أثناء الانتظار — تأخير 5 دقائق يكلف مثل تأخير 5 أيام
## إجراءات الاتصال
### إرسال البريد الإلكتروني
يرسل بريدًا إلكترونيًا من سير العمل الخاص بك. هذا رائع لرسائل البريد الجماعية المعتمدة على قوالب. ستبدو رسائل البريد الإلكتروني مثل تلك التي ترسلها من صندوق بريدك.
وهو غير مناسب للنشرات الإخبارية (التي تتطلب تنسيقا أغنى) أو تسلسل البريد الإلكتروني الآلي.
**المتطلبات الأساسية**: أضف حساب بريد إلكتروني في الإعدادات → الحسابات
**التكوين**:
* اختر حساب البريد الإلكتروني المُرسل
<Note>
يمكنك إرسال رسائل البريد الإلكتروني فقط من صناديق بريد متزامنة مع حساب Twenty الخاص بك. إرسال الرسائل من صناديق بريد أعضاء الفريق الآخرين (مثل بريد مالك الحساب) ضمن الخطة المستقبلية.
</Note>
في جميع الخطوات التالية، يمكنك الرجوع إلى متغيرات من الخطوات السابقة لأغراض التخصيص.
* ادخل عنوان البريد الإلكتروني المستلم.
<Note>
حاليًا يمكن اختيار مستلم واحد فقط.
</Note>
* اضبط سطر الموضوع.
* قم بإنشاء نص الرسالة. يمكنك تنسيق الروابط، وإنشاء قوائم رقمية، وقوائم نقاط الرصاص، وإضافة مرفقات.
<Note>
إضافة توقيعات HTML غير ممكنة في الوقت الحالي.
</Note>
### نموذج
يعرض نموذجاً أثناء تنفيذ سير العمل لجمع مدخلات المستخدم. يمكن بعد ذلك استخدام الردود في الخطوات اللاحقة لإنشاء سجلات أو إرسال رسائل بريد إلكتروني أو تنفيذ أي إجراء آخر بناءً على المُدخل.
<Warning>
**تم تصميم النماذج للمشغلات اليدوية فقط**. بالنسبة لمهام سير العمل مع محركات أخرى (سجل تم إنشاؤه، تم تحديثه، إلخ)، يمكن الوصول إلى النماذج فقط من خلال واجهة تشغيل سير العمل، وهو ليس التجربة المتوقعة. وسيصدر مركز للإخطار في عام 2026 لتقديم الدعم المناسب لاستمارات تدفق العمل الآلي.
</Warning>
**التكوين**:
* قم بتهيئة الحقول التي سيُطلب من المستخدمين تعبئتها. لكل حقل، اختر
* نوعًا من بين: نص، رقم، تاريخ، سجل مُعطى، حقل اختيار. الحقول من جميع الكائنات متاحة للاختيار.
* تسمية
* قيمة افتراضية ضمن `Placeholder` (اختياري)
* حرّر عنوان النموذج
**المخرجات**: استجابات النموذج متاحة للاستخدام في الخطوات اللاحقة.
**مثال**: سير العمل "الرصاص السريع" متاح بشكل افتراضي في جميع مساحات العمل، متاح في أي مكان في قائمة الأوامر 'Cmd+K\`.
**كيفية تعبئة النموذج**:
* تفعيل سير العمل اليدوي الخاص بك من قائمة الأوامر `Cmd+K`
* املأ النموذج المعروض في اللوحة الجانبية ثم انقر `Submit`.
<Note>
لا يمكن جعل الحقول إلزامية.
</Note>
<VimeoEmbed videoId="1147277989" title="عرض توضيحي بالفيديو" />
## إجراءات التكامل
### كود
يشغل جافا سكريبت مخصص ضمن سير العمل الخاص بك.
في الخلفية، يستند كل إجراء Code إلى **دالة منطقية** خاصة به — وهي دالة TypeScript على جانب الخادم تعمل على منصة Twenty. عندما تضيف إجراء Code، يقوم Twenty بإنشاء دالة منطقية مخصَّصة لتلك الخطوة ويُظهِر محرِّرها مضمَّنًا، بحيث يكون الكود الذي تكتبه جزءًا من سير العمل.
**التكوين**:
* الوصول إلى المتغيرات من الخطوات السابقة. يمكنك تعديل أسماء المتغيرات بشكل ديناميكي.
<VimeoEmbed videoId="1147281795" title="عرض توضيحي بالفيديو" />
* اكتب شيفرة جافا سكريبت في المحرر
* إرجاع المتغيرات للاستخدام في الخطوات اللاحقة
* اختبر الكود مباشرة في الخطوة
<Note>
إذا كنت بحاجة إلى استخدام مفاتيح API خارجية في كودك، فيجب إدخالها مباشرةً في جسم الدالة. لا يمكنك تكوين مفاتيح API في مكان آخر والإشارة إليها في الدالة المنطقية.
</Note>
<Tip>
**هل تعمل مع المصفوفات؟** قد تأتي المصفوفات من أنظمة خارجية أو من خطوات سابقة على هيئة سلاسل نصية. راجع [كيفية التعامل مع المصفوفات في إجراءات Code](/l/ar/user-guide/workflows/how-tos/advanced-configurations/handle-arrays-in-code-actions) للحل.
</Tip>
<Tip>
انقر على أيقونة المربع في أعلى يمين محرر الكود لعرضه بملء الشاشة — فهذا مفيد لأن عرض المحرر الافتراضي محدود.
</Tip>
#### إعادة استخدام دالة منطقية عبر سير عمل متعددة
إجراء Code المضمَّن ممتاز للمنطق لمرة واحدة، لكن الكود الذي يحتويه يخص تلك الخطوة الواحدة فقط. عندما تريد مشاركة المنطق نفسه عبر عدة سير عمل — أو الاحتفاظ به كمصدر مُدار بالإصدارات ضمن تطبيق — عرِّف **دالة منطقية قابلة لإعادة الاستخدام** بدلًا من نسخ ولصق الكود في كل إجراء Code.
يتم تعريف دالة منطقية مرة واحدة في تطبيق (باستخدام `defineLogicFunction` في حزمة SDK) وتُتاح في مُنشئ سير العمل عن طريق إضافة `workflowActionTriggerSettings`. بمجرد تثبيت تطبيقك، تظهر تلك الدالة كإجراء مستقل في مُنشئ سير العمل، جنبًا إلى جنب مع الإجراءات المضمَّنة. يؤدي اختيارها إلى عرض حقول الإدخال التي صرَّحتَ عنها (مع منتقي المتغيّرات، تمامًا مثل الإجراءات الأخرى) وتشغيل الكود المشترك — دون الحاجة إلى JavaScript مضمَّن.
| | إجراء Code | دالة منطقية قابلة لإعادة الاستخدام |
| ------------------- | --------------------------------------------- | ----------------------------------------------------------------------- |
| **مكان وجود الكود** | محرِّر مضمَّن، مرتبط بخطوة واحدة في سير العمل | يُعرَّف في تطبيق، مع إدارة الإصدارات في نظام التحكم في الشيفرة المصدرية |
| **إعادة الاستخدام** | يتم نسخه ولصقه لكل خطوة | يُضاف كإجراء في أي سير عمل |
| **المدخلات** | متغيّرات موصولة في المحرِّر | حقول تُعرَض من مخطط الإدخال الذي صرَّحتَ عنه |
| **الأفضل لـ** | منطق سريع خاص بسير عمل معيّن | منطق مشترك يُستخدَم عبر عدة سير عمل |
كلاهما يعمل على بيئة تشغيل الدالة المنطقية نفسها، لذا يمكن ترقية إجراء Code الذي جرَّبته مضمَّنًا لاحقًا إلى دالة منطقية قابلة لإعادة الاستخدام مع تغييرات طفيفة.
<Tip>
للاطّلاع على مرجع موجَّه للمطوّرين حول تعريف الدوال المنطقية وإتاحتها في مُنشئ سير العمل، راجع صفحة [Logic Functions](/l/ar/developers/extend/apps/logic/logic-functions) — وخصوصًا قسم **Exposing a function as an AI tool or workflow action** و `workflowActionTriggerSettings`.
</Tip>
### طلب HTTP
يرسل طلبًا إلى واجهة برمجية خارجية كجزء من سير العمل الخاص بك.
<img src="/images/user-guide/workflows/http_action.png" style={{width:'100%'}} />
**التكوين**:
* ادخل عنوان رابط واجهة برمجية. يمكن استخدام معاملات من خطوات سابقة.
* اختر طريقة HTTP (GET, POST, PUT, PATCH, DELETE)
* أضف الرؤوس والقيم المطلوبة
* قدّم مثالًا للمخرجات لمعاينة البنية
## إجراءات الذكاء الاصطناعي
### وكيل ذكاء اصطناعي - قريبًا
يشغّل وكيل ذكاء اصطناعي داخل سير العمل لديك لتنفيذ مهام ذكية.
**التكوين**:
* **الوكيل**: اختر وكيلاً للذكاء الاصطناعي موجودًا أو استخدم الوكيل الافتراضي
* **المطالبة**: اكتب التعليمات لوكيل الذكاء الاصطناعي
* ارجع إلى متغيرات من خطوات سابقة داخل المطالبة
**ما الذي يمكن لوكلاء الذكاء الاصطناعي فعله**:
* تحليل البيانات وتلخيصها
* تصنيف السجلات أو توزيعها ضمن فئات
* إنشاء محتوى نصي
* اتخاذ قرارات بناءً على البيانات
* التفاعل مع بيانات نظام إدارة علاقات العملاء لديك باستخدام الأدوات
**المخرجات**: رد وكيل الذكاء الاصطناعي متاح للاستخدام في الخطوات التالية. إذا كان للوكيل مخطط مخرجات مُهيكل، فسيتبع الرد ذلك التنسيق.
<Note>
تستهلك إجراءات وكيل الذكاء الاصطناعي أرصدة سير العمل بناءً على نموذج الذكاء الاصطناعي المستخدم. راجع [أرصدة سير العمل](/l/ar/user-guide/workflows/capabilities/workflow-credits) للحصول على التفاصيل.
</Note>
<Note>
يحترم وكلاء الذكاء الاصطناعي الأذونات المستندة إلى الأدوار. يمكنك تعيين أدوار محددة للوكلاء ضمن **الإعدادات → الأعضاء → الأدوار** للتحكم في البيانات التي يمكنهم الوصول إليها. راجع [الأذونات](/l/ar/user-guide/permissions-access/capabilities/permissions) للحصول على التفاصيل.
</Note>

View File

@@ -0,0 +1,66 @@
---
title: تفرعات سير العمل
description: أنشئ مسارات متوازية ومنطقًا شرطيًا في سير العمل لديك.
---
تتيح لك التفرعات تقسيم سير العمل إلى مسارات متعددة يمكن أن تعمل بالتوازي أو بشكل شرطي استنادًا إلى بياناتك.
<img src="/images/user-guide/workflows/branches.png" style={{width:'100%'}} />
## كيفية عمل التفرعات
عند إنشاء عدة اتصالات من عقدة واحدة، يصبح كل مسار تفرعًا. افتراضيًا، **تُنفَّذ جميع التفرعات بالتوازي**—ولا تنتظر بعضها بعضًا.
## إنشاء التفرعات
### إضافة تفرع جديد
1. **انقر بزر الماوس الأيمن على اللوحة الرئيسية** لسير العمل (وليس على عقدة موجودة)
2. انقر على **إضافة عقدة**
3. اختر نوع العقدة لتفرعك الجديد
4. اسحب سهمًا من أسفل الخطوة السابقة إلى أعلى هذا الإجراء الجديد
5. كرّر لإضافة مزيد من التفرعات من العقدة نفسها
<Note>
كل تفرع مستقل. إن إضافة تفرع لا يؤثر في المسارات الأخرى الموجودة من تلك العقدة.
</Note>
### التخطيط المرئي
تظهر التفرعات كمسارات متوازية في محرر سير العمل. يمكنك سحب العقد لإعادة ترتيب التخطيط المرئي دون التأثير في التنفيذ.
## التفرعات الشرطية
نظرًا إلى أن جميع التفرعات تعمل افتراضيًا، استخدم عقد **عامل التصفية** للتحكم في المسارات التي تُنفَّذ فعليًا:
| التفرع | شرط عامل التصفية | الإجراء |
| ------ | ----------------------- | --------------------------- |
| A | المرحلة = "Won" | إرسال بريد إلكتروني للتهنئة |
| B | المرحلة = "Lost" | إنشاء مهمة متابعة |
| C | المرحلة = "Negotiation" | إخطار المدير |
1. أنشئ تفرعات من المشغّل لديك أو الإجراء
2. أضف عقدة **عامل التصفية** بوصفها الخطوة الأولى في كل تفرع
3. قم بإعداد كل عامل تصفية بشروط متبادلة الاستبعاد
4. أضف إجراءاتك بعد كل عامل تصفية
سيتابع التنفيذ فقط التفرع/التفرعات التي يتحقق فيها شرط عامل التصفية.
## دمج التفرعات
**لا تُدمَج التفرعات تلقائيًا.** يعمل كل تفرع بشكل مستقل حتى ينتهي. لديك مرونة كاملة في كيفية التعامل مع ذلك:
* **الخيار 1: إبقاء التفرعات منفصلة**
يتولى كل تفرع إجراءات المتابعة الخاصة به بشكل مستقل. هذه أبسط مقاربة عندما لا تحتاج التفرعات إلى الالتقاء.
* **الخيار 2: دمج التفرعات يدويًا**
عند إنشاء سير العمل، يمكنك توصيل عدة تفرعات يدويًا بالإجراء اللاحق نفسه. ما عليك سوى سحب الأسهم من نهاية كل تفرع إلى عقدة مشتركة.
<Note>
بينما يمكنك استخدام عقدة [Delay](/l/ar/user-guide/workflows/capabilities/workflow-actions#delay) لإيقاف التنفيذ مؤقتًا، إلا أنه لا يمكن ضبطها حاليًا للانتظار "حتى ينتهي تفرع آخر".
</Note>
## ذات صلة
* [كيفية استخدام التفرعات في سير العمل](/l/ar/user-guide/workflows/capabilities/use-branches-in-workflows) - دليل خطوة بخطوة
* [إجراءات سير العمل](/l/ar/user-guide/workflows/capabilities/workflow-actions) - الإجراءات المتاحة بما في ذلك عامل التصفية

View File

@@ -0,0 +1,75 @@
---
title: رصيد سير العمل
description: فهم استهلاك أرصدة سير العمل وإدارتها.
---
أرصدة سير العمل تدعم عمليات الأتمتة لديك في Twenty. فهم كيفية عملها يساعدك على تحسين التكاليف وإدارة ميزانية الأتمتة بفعالية.
## تخصيص الأرصدة
تخصص أرصدة سير العمل بناء على دورة الفوترة لديك، وليس على مستوى خطتك:
| دورة الفوترة | الأرصدة |
| --------------- | ---------------- |
| **اشتراك شهري** | 5 أرصدة في الشهر |
| **اشتراك سنوي** | 50 رصيد في السنة |
<Note>
تعد 5 أرصدة في الشهر سخية لعمليات الأتمتة القياسية. لن تتجاوز معظم الفرق هذا الحد مع استخدام سير العمل النموذجي. تكون الحاجة إلى أرصدة إضافية أساسًا لإجراءات Code المتقدمة ولعمليات سير العمل المدعومة بالذكاء الاصطناعي.
</Note>
## كيف يعمل استهلاك الرصيد
يتم استهلاك الأرصدة عند تنفيذ عمليات سير العمل، وليس عند إنشائها. يستهلك كل إجراء سير عمل الرصيد بناءً على تعقيده.
### استهلاك الرصيد حسب نوع الإجراء
* **العمليات الأساسية الداخلية**: استهلاك رصيد منخفض جدًا
* البحث في السجلات
* إنشاء سجل
* تحديث السجل
* حذف السجل
* إجراءات النماذج
* **عمليات معقدة**: استهلاك أعلى للأرصدة
* إجراءات الكود (تنفيذ JavaScript)
* طلبات HTTP إلى الخدمات الخارجية
* **ميزات الذكاء الاصطناعي**: استهلاك أعلى للأرصدة
* تستهلك إجراءات وكيل الذكاء الاصطناعي الأرصدة بناء على نموذج الذكاء الاصطناعي المستخدم
* تستخدم المطالبات الأكثر تعقيدا والمخرجات الأطول أرصدة أكثر
* **إجراءات التأخير**: استهلاك ضئيل للأرصدة
* تستهلك عقدة Delay **رصيد واحد** عند التنفيذ
* **لا تستهلك أي أرصدة** خلال فترة الانتظار
* التأخير لمدة 5 دقائق يكلف المقدار نفسه مثل التأخير لمدة 5 أيام
### الخصم في الوقت الحقيقي
يتم خصم الرصيد في الوقت الفعلي عند تنفيذ سير العمل. هذا يعني:
* لا تستهلك مسودات سير العمل أرصدة.
* لا تستخدم مخصص الأرصدة لديك إلا عمليات سير العمل النشطة والجارية.
* تظل عمليات سير العمل الفاشلة تستهلك أرصدة مقابل الخطوات المكتملة.
## إدارة الرصيد
### التحقق من استخدام الرصيد
1. اذهب إلى **الإعدادات → الفواتير**
2. اعرض استهلاكك الحالي من الأرصدة والرصيد المتبقي
3. راقب أنماط الاستخدام لتحسين عمليات سير العمل لديك
### شراء رصيد إضافي
إذا كنت بحاجة إلى المزيد من الأرصدة بما يتجاوز مخصص خطتك:
1. اذهب إلى **الإعدادات → الفواتير**
2. اضغط على الخيار لشراء رصيد إضافي. توفر باقات بأحجام مختلفة.
3. يتم إضافة الرصيد إلى الرصيد الحالي الخاص بك.
## أفضل الممارسات
* **تجهيز الدفعات**: استخدم العمليات الضخمة وإجراءات الترميز بكفاءة لتقليل المكالمات الفردية
* **تحسين المشغلات اليدوية**: بالنسبة للمشغلات اليدوية، اختر خيار التوفر `Bulk` لمعالجة سجلات متعددة في تشغيل واحد لسير عمل
* تحسين إجراءات الكود للكفاءة

View File

@@ -0,0 +1,93 @@
---
title: عمليات تشغيل سير العمل
description: راقِب وأدِر عمليات تنفيذ سير العمل.
---
## حول عمليات التشغيل
**تشغيل** هو سجل لتنفيذ سير العمل. في كل مرة يتم فيها تشغيل سير عمل—سواءً بواسطة حدث سجل، أو جدول زمني، أو إجراء يدوي، أو خطاف ويب—يتم إنشاء عملية تشغيل جديدة.
## عرض عمليات التشغيل
### من محرر سير العمل
1. افتح سير العمل الذي تريد مراقبته
2. انقر على لوحة **التشغيل** في الجانب الأيمن
3. اطلع على قائمة بأحدث عمليات التشغيل مع حالتها
### من عرض عمليات تشغيل سير العمل
1. انتقل إلى **عمليات تشغيل سير العمل** في الشريط الجانبي
2. اعرض عمليات التشغيل عبر جميع سير العمل
3. رشّح حسب الحالة أو سير العمل أو التاريخ
## حالات التشغيل
| الحالة | الوصف |
| ---------------- | ----------------------------------------------------------------- |
| **جارٍ التنفيذ** | سير العمل قيد التنفيذ حاليًا |
| **مكتمل** | انتهى سير العمل بنجاح |
| **فشل** | واجه سير العمل خطأً وتوقّف |
| **في انتظار** | سير العمل متوقف مؤقتًا (مثال: ينتظر إجراء التأخير أو إرسال نموذج) |
## تفاصيل عملية التشغيل
انقر على أي عملية تشغيل للاطلاع على:
* **الحالة**: الوضع الحالي لعملية التشغيل
* **وقت البدء**: وقت بدء عملية التشغيل
* **المدة**: الوقت الذي استغرقته عملية التشغيل
* **بيانات المُشغِّل**: المُدخل الذي بدأ سير العمل
* **مخرجات الخطوة**: البيانات التي ترجعها كل خطوة
* **رسائل الخطأ**: إذا فشلت عملية التشغيل، ما الخطأ الذي حدث
## تنفيذ خطوة بخطوة
تعرض كل عملية تشغيل التقدم خلال سير عملك:
1. اطلع على الخطوات التي اكتملت بنجاح
2. حدّد مواضع حدوث الفشل
3. اعرض البيانات الممررة بين الخطوات
4. استكشف المشكلات وأصلحها بفحص مدخلات الخطوات ومخرجاتها
## التعامل مع الأخطاء
عند فشل عملية تشغيل:
1. افتح عملية التشغيل الفاشلة
2. حدّد الخطوة التي تسببت في الفشل
3. تحقق من رسالة الخطأ للتفاصيل
المشكلات الشائعة:
* الحقول المطلوبة المفقودة
* تنسيق بيانات غير صالح
* أخطاء واجهة برمجة التطبيقات الخارجية
* مشكلات الصلاحيات
## إعادة تشغيل سير العمل
إذا فشلت عملية تشغيل، يمكنك:
* إصلاح المشكلة الأساسية وانتظار المحفّز التالي
* بالنسبة لسير العمل اليدوي، أعد تشغيله باستخدام البيانات نفسها أو بيانات محدّثة
* راجع منطق سير العمل لمنع الإخفاقات المستقبلية
## نصائح الأداء
### إدارة سجل التشغيل
* يتم الاحتفاظ بالأنابيب للمراجع التاريخية
* قد يتم أرشفة التطبيقات القديمة جداً تلقائيًا
* تصدير بيانات التشغيل إذا كنت بحاجة إلى الاحتفاظ بسجلات
### رصد أفضل الممارسات
* التحقق من التشغيل بانتظام بعد تفعيل سير العمل الجديد
* مراجعة عمليات التشغيل الفاشلة لتحديد الأنماط
## ذات صلة
* [محفّزات سير العمل](/l/ar/user-guide/workflows/capabilities/workflow-triggers)
* [إجراءات سير العمل](/l/ar/user-guide/workflows/capabilities/workflow-actions)
* [استكشاف الأخطاء في سير العمل](/l/ar/user-guide/workflows/how-tos/need-more-help/workflow-troubleshooting)

View File

@@ -0,0 +1,137 @@
---
title: محفزات سير العمل
description: تعرّف على المحفزات المختلفة التي تُشغِّل سير العمل لديك.
---
## حول المحفزات
تبدأ سير العمل دائمًا بمحفز واحد يحدد متى ينبغي تشغيل الأتمتة.
<img src="/images/user-guide/workflows/workflow_triggers.png" style={{width:'100%'}} />
<Tip>
**الكائنات المتقدمة مدعومة!** إلى جانب كائنات CRM القياسية (الأشخاص، الشركات، الفرص)، يمكنك أيضًا تشغيل سير العمل وتنفيذ إجراءات على:
* أعضاء مساحة العمل
* أحداث التقويم
* الرسائل (رسائل البريد الإلكتروني)
* المهام، والملاحظات، والعديد من كائنات النظام الأخرى
يفتح هذا المجال لأتمتة قوية مثل إشعار أعضاء الفريق عند إنشاء أحداث التقويم، أو معالجة رسائل البريد الإلكتروني الواردة تلقائيًا.
</Tip>
## إنشاء سجل
يبدأ سير العمل عندما يتم إنشاء سجل جديد في كائن محدد (أشخاص أو شركات أو فرص أو أي كائن مخصص).
**التكوين**: حدد نوع الكائن لمراقبة السجلات الجديدة.
<Note>
* هذا المشغل رائع للسجلات التي تم إنشاؤها بواسطة CSV، علبة البريد ومزامنة التقويم، أو API.
* **لا يُنصح به للسجلات التي تُنشأ يدويًا**: مع هذا المحفز، تبدأ عمليات سير العمل فور إنشاء السجل. نظرًا لأن واجهة المستخدم العشرين توفر الحفظ التلقائي على متن الطائرة (لا يوجد وضع تحرير ثم التحقق لحفظ السجلات)، سيتم تشغيل سير العمل قبل أن يقوم المستخدم بإدخال جميع الحقول.
لتشغيل سير العمل هذا على السجلات التي تم إنشاؤها يدويًا، يُوصى باستخدام المحفز `Record is created or updated` بدلًا من ذلك.
</Note>
## تحديث السجل
يبدأ سير العمل عندما يتم إجراء تغييرات على سجل موجود.
**التكوين**:
* اختر نوع الكائن
* اختر الحقول التي تريد مراقبتها للتغييرات بشكل اختياري
## تحديث أو إنشاء سجل
يبدأ سير العمل عندما يتم إنشاء أو تحديث سجل في كائن محدد.
**أهمية الموضوع**: هذا المحفز مهم بشكل خاص لأن السجلات التي تنشأ بطرق مختلفة تتصرف بشكل مختلف:
* **استيراد API/CSV**: يتم إنشاء السجلات مع ملء جميع الحقول فورًا
* **الإنشاء اليدوي**: يتم إنشاء السجلات أولاً، ثم يتم إضافة الحقول في التحديثات اللاحقة
**التكوين**:
* اختر نوع الكائن لمراقبته
* اختر الحقول التي تريد مراقبتها للتغييرات بشكل اختياري
* سيتم تشغيل سير العمل في كل من الإنشاء الأولي وأي تحديثات لاحقة
## حذف السجل
يبدأ سير العمل عندما يتم إزالة سجل من كائن.
**التكوين**: حدد نوع الكائن لمراقبة عمليات الحذف.
## المحفز اليدوي
يبدأ سير العمل عندما يتم تشغيله بواسطة إجراء المستخدم. يمكن الوصول إلى هذا المحفز من خلال قائمة `Cmd+K` أو عبر زر مخصص سيُعرض في شريط التنقل العلوي بعد تحديد سجل/سجلات.
<img src="/images/user-guide/workflows/add_to_newsletter_button.png" style={{width:'100%'}} />
**إعداد التوفر**:
اختر كيفية التعامل مع تحديد السجل في سير العمل:
* **العالمي**: لا يتطلب أي سجل لتشغيل سير العمل هذا. يتم تشغيل سير العمل من قائمة الأوامر 'Cmd+K' في أي مكان (من أي كائن)، ولا يستخدم السجل (السجلات) كمدخل.
لتوفر **واحد** و **السائب** ، سيتم تمرير السجلات المحددة إلى سير العمل الخاص بك. تم تكوين هذا لكائن معين، ويمكن تحديد عدة سجلات قبل تشغيل سير العمل.
* **واحد**: سير العمل سيتم تشغيله من البداية إلى النهاية أكبر عدد من المرات التي يتم فيها اختيار السجلات.
<Note>
**حد مرن: 100 عملية تشغيل/دقيقة**. بعد ذلك، تظل عمليات سير العمل في حالة "Not Started" ويتم معالجتها تدريجيًا—إما بواسطة مهمة خلفية أو عندما يدخل سير عمل آخر قائمة الانتظار. هذا يعني أنه يمكنك تحديد أكثر من 100 سجل باستخدام محفز واحد؛ ستكون عملية التنفيذ أبطأ فقط.
</Note>
* **سباب**: سير العمل سيتم تشغيله مرة واحدة، مع توفير قائمة السجلات بأكملها كمدخل. هذا يعني أن سير العمل يحتاج إلى احتواء [إجراء المُكرِّر](/l/ar/user-guide/workflows/capabilities/workflow-actions#iterator).
<Note>
هذا أكثر تقدمًا، وهو الأفضل لمن يرغبون في تحسين عدد مرات تشغيل سير العمل.
</Note>
<img src="/images/user-guide/workflows/manual_trigger.png" style={{width:'100%'}} />
**تكوين إضافي**:
* حدد الكائن المستهدف (للتوفر الفردي والشامل)
* اختر رمز الأمر لتفعيل سير العمل
* قم بتكوين موضع شريط التنقل (مثبت أو غير مثبت)
**طرق الوصول**:
* قائمة `Cmd+K` للعثور على وتشغيل عمليات سير العمل اليدوية
* زر مخصص في شريط التنقل العلوي (إذا تم تكوينه)
## محفز قائم على الوقت: وفق جدول زمني
يبدأ سير العمل على أساس دوري تحدده.
**التكوين**:
* اختر وحدة الوقت (الدقائق، الساعات، الأيام)
* أدخل قيمة أو استخدم تعبيرات كرون مخصصة للجدولة المتقدمة
<Note>
**المنطقة الزمنية**: تعمل عمليات سير العمل المجدولة وفق **UTC**. عند تعيين الساعات للجداول اليومية، حوّل وقتك المحلي إلى UTC.
</Note>
## محفز خارجي: ويب هوك
يبدأ سير العمل عندما يتم استقبال طلب GET أو POST من خدمة خارجية.
<img src="/images/user-guide/workflows/webhook_trigger.png" style={{width:'100%'}} />
**التكوين**:
* يوفر سير العمل عنوان URL فريدًا لويب هوك—انسخه وأضفه إلى نظامك الخارجي كنقطة نهاية للاستدعاء.
* بالنسبة لطلبات POST، حدِّد البنية المتوقعة لمحتوى الطلب حتى يعرف Twenty ما البيانات المتوقع تلقيها. أضف هنا الحقول التي ستستلمها والتي ستكون مطلوبة أدناه في سير العمل لديك.
* قم بتكوين المصادقة (قريبًا).
## اختيار المحفز المناسب
| حالة الاستخدام | المحفز الموصى به |
| ------------------------------------------ | ------------------------ |
| العملاء المحتملون الجدد يحتاجون إلى معالجة | إنشاء سجل |
| تغييرات البيانات تحتاج إلى مزامنة | تحديث السجل |
| استيراد/معالجة البيانات يدويًا | تحديث أو إنشاء سجل |
| التنظيف بعد الحذف | حذف السجل |
| إجراء يبدأه المستخدم | التشغيل يدويًا |
| تقارير متكررة | بجدول زمني |
| تكامل خارجي | ويب هوك أو وفق جدول زمني |

View File

@@ -0,0 +1,84 @@
---
title: إصدارات سير العمل
description: إدارة إصدارات ومسودات سير العمل.
---
## حول الإصدارات
في كل مرة تقوم فيها بتنشيط سير عمل، يتم إنشاء إصدار جديد. يتيح لك ذلك تتبُّع التغييرات بمرور الوقت والرجوع إلى التكوينات السابقة عند الحاجة.
## حالات الإصدارات
| الحالة | الوصف |
| --------- | ----------------------------------- |
| **مسودة** | قيد التحرير، ولم تُنشَر بعد |
| **نشط** | إصدار فعّال يستجيب للمحفِّزات |
| **معطل** | كان نشطًا مسبقًا ولكن أُوقِف يدويًا |
| **مؤرشف** | إصدارات سابقة محفوظة للسجلّ |
## العمل مع المسودات
عند تحرير سير عمل نشط، تُحفَظ تغييراتك كـ **مسودة**. يستمر الإصدار النشط في العمل أثناء عملك على التحديثات.
بعد الانتهاء من التحرير، يمكنك:
* **تنشيط**: نشر المسودة كالإصدار النشط الجديد (يُؤرشف الإصدار السابق)
* **تجاهل**: حذف المسودة والاحتفاظ بالإصدار النشط الحالي
## سجل الإصدارات
### عرض الإصدارات السابقة
1. افتح سير العمل
2. انقر فوق علامة التبويب **الإصدارات**
3. اعرض جميع الإصدارات السابقة مع الطوابع الزمنية
### استعادة إصدار
1. اعثر على الإصدار الذي تريد استعادته
2. انقر **استخدام كمسودة**
3. يُنسَخ الإصدار إلى مسودة جديدة
4. أجرِ أي تحديثات لازمة
5. قم بالتنشيط عند الاستعداد
## أفضل الممارسات
### إدارة الإصدارات
* قم بالتنشيط فقط عند الجاهزية للبيئة الإنتاجية
* حافظ على التغييرات ذات المغزى بين الإصدارات
* وثّق التغييرات الكبرى في أسماء أو أوصاف سير العمل
* اختبر في وضع المسودة قبل التنشيط
### التراجع عن التغييرات
* إذا تسبب إصدار جديد في مشاكل، فاستعد الإصدار السابق
* استخدم سجل الإصدارات لتتبُّع ما تغيّر
* اختبر دائمًا الإصدارات المُستعادة قبل التنشيط
## سير العمل الشائعة
### تحرير سريع
1. أجرِ تغييرات طفيفة على سير عمل نشط
2. اختبر في وضع المسودة
3. قم بتنشيط الإصدار الجديد
### مراجعة رئيسية
1. استخدم الإصدار السابق كنقطة انطلاق
2. أجرِ تغييرات كبيرة في المسودة
3. اختبر جميع السيناريوهات بشكل شامل
4. قم بالتنشيط عندما تكون واثقًا
### الرجوع إلى إصدار سابق
1. حدِّد المشكلة في الإصدار الحالي
2. اعثر على آخر إصدار يعمل في السجل
3. انقر **استخدام كمسودة**
4. قم بالتنشيط لاستعادة السلوك السابق
## ذات صلة
* [البدء مع سير العمل](/l/ar/user-guide/workflows/overview)
* [تشغيلات سير العمل](/l/ar/user-guide/workflows/capabilities/workflow-runs)