HR Leave · Australia

Flow — موافقة الإجازة (Leave Approval) — دليل كامل خطوة بخطوة

ServiceNow Australia · Custom app · Arabic + English readable · scripts copy/paste ready

App typeCustom
Scopex_786686_hr_leave
sys_idc84db0e8839f0b509f02b0d6feaad3c9
Replace{BASE} = your instance
Instance URLs Application Leave requests Business Rules Studio

Flow — موافقة الإجازة (Leave Approval) — دليل كامل خطوة بخطوة

التطبيق:
HR Leave
Scope: x_786686_hr_leave
الجدول:
x_786686_hr_leave_req_v2

افتح Flow Designer:
URL: /$flow-designer.do
أو من Studio:
Create Application File → Flow


0) قبل أن تبدأ (Prerequisites)

يجب أن يكون جاهزًا قبل الـ Flow:

# العنصر السبب
1 جدول x_786686_hr_leave_req_v2 مع حقل u_state حالات draft / submitted / approved / rejected
2 حقل u_approver_user (Approver) من يوافق
3 Business Rule BR1 يملأ u_approver_user من مدير الموظف قبل الحفظ
4 مستخدم اختبار + مدير له دور موافق للتجربة

بدون u_approver_user مملوء، خطوة Ask For Approval لن تجد معتمدًا.

ملف BR1:
src/server/business_rules/BR1_calculate_days.js


1) الفكرة (ماذا يفعل الـ Flow)

text الموظف يغيّر الحالة إلى submitted ↓ Flow يبدأ (Trigger: Record Updated + شرط submitted) ↓ Ask For Approval → يرسل للمعتمد في u_approver_user ↓ إذا وافق → u_state = approved إذا رفض → u_state = rejected ↓
BR3 يسجّل التدقيق ويحدّث الرصيد (بعد تغيير الحالة)

مهم:
لا تستخدم Trigger Record Created فقط إذا الطلب يُنشأ أولًا كـ draft ثم يُرسل لاحقًا.
استخدم Record Updated عندما تصبح الحالة submitted.


2) إنشاء Flow جديد

الخطوات

  1. افتح Flow Designer.
    URL: /$flow-designer.do
  2. اضغط Create Flow (أو New).
  3. املأ:
    - Name: HRLX Leave Approval
    - Application: HR Leave (scope x_786686_hr_leave)
  4. احفظ.

3) الخطوة 1 — Trigger (مشغّل التدفق)

الإعدادات الصحيحة

الحقل القيمة
Trigger type Record Updated
Table Leave Request / x_786686_hr_leave_req_v2
Condition u_state is submitted
Run flow Once (عادة)

الخطوات في الواجهة

  1. في بداية الـ Flow اضغط Add a trigger.
  2. اختر Record Updated.
  3. Table: ابحث عن x_786686_hr_leave_req_v2 أو Leave Request.
  4. في Condition (أو Trigger conditions):
    - Field: State / u_state
    - Operator: is
    - Value: submitted
  5. Done أو احفظ الـ Trigger.

خطأ شائع

خطأ الصواب
Trigger = Record Created فقط Record Updated + u_state = submitted
بدون شرط على u_state Flow يعمل على كل تعديل

4) الخطوة 2 — Action: Ask For Approval

هذه الخطوة تظهر في صورتك كـ Action 1 — Ask For Approval.

الخطوات

  1. بعد الـ Trigger اضغط + → Ask for Approval.
  2. املأ Action inputs كالتالي:
الحقل ماذا تضع ملاحظة
Record Data pill: Trigger - Record Updated → Leave Request Record سجل الطلب الذي تغيّرت حالته
Table Leave Request [x_786686_hr_leave_req_v2] يُملأ تلقائيًا غالبًا
Approval field Approver / u_approver_user المعتمد
Approval reason نص ثابت أو حقل مثال: Leave approval required
Journal field Reason / u_reason أو اتركه فارغًا اختياري — للتعليق في السجل
Due date None أو تاريخ اختياري
  1. Rules (الأهم — يصلح الخطأ الأحمر):

الخطأ في الشاشة:
Rules on action number 1 are missing

الحل:

  1. في قسم Rules عند Approve:
  2. اضغط القائمة Choose approval rule (لا تتركها فارغة).
  3. اختر أحد الخيارات:
Rule متى تستخدمه
Anyone approves معتمد واحد في u_approver_user — الأنسب لنا
All users approve أكثر من معتمد يجب أن يوافقوا جميعًا
First response from all users حسب سياسة الشركة
  1. للتطبيق البسيط: اختر Anyone approves.
  2. (اختياري) أضف قاعدة Reject إن طلبت الواجهة ذلك — نفس المستوى.

  3. اضغط Done على الـ Action.

تحقق قبل المتابعة


5) الخطوة 3 — If: If approval was Approved

الخطوات

  1. بعد Ask For Approval اضغط + → Flow Logic → If.
  2. الشرط الجاهز غالبًا:
    - If approval was Approved
    - أو: 1 - Ask For Approval → Approval state is approved
  3. لا تغيّر الشرط إلا إذا تعرف ما تفعل.

6) الخطوة 4 — Update Record (موافقة)

داخل فرع If (Approved):

  1. اضغط + → Update Record.
  2. Record: pill من Trigger → Leave Request Record.
  3. Table: x_786686_hr_leave_req_v2.
  4. Set field values:
    - Field: State / u_state
    - Value: approved
  5. Done.

7) الخطوة 5 — Else (رفض)

الخطوات

  1. من فرع Else (بجانب If):
  2. + → Update Record.
  3. نفس السجل (Trigger record).
  4. Set:
    - u_state = rejected
  5. Done.

8) مخطط الـ Flow النهائي

[Trigger] Record Updated
 Table: x_786686_hr_leave_req_v2
 Condition: u_state is submitted
 │
 ▼
[1] Ask For Approval
 Record: Trigger → Leave Request Record
 Approval field: u_approver_user
 Rule (Approve): Anyone approves
 │
 ▼
[2] If ── approval was Approved?
 │
 ├─ Yes ─► [3] Update Record → u_state = approved
 │
 └─ Else ─► [5] Update Record → u_state = rejected

9) الحفظ والنشر (Publish)

الخطوة ماذا تفعل
1 اضغط Save (أعلى اليمين)
2 تأكد Status ليس Error
3 اضغط Publish (أو Activate حسب الإصدار)
4 اختر Publish a new version
5 انتظر Published

Modified بدون Publish = الـ Flow غير فعّال للمستخدمين.


10) اختبار عملي (Practice Lab)

تجهيز مستخدمين

المستخدم الدور الغرض
[email protected] x_786686_hr_leave.employee يقدّم الطلب
[email protected] manager + في u_manager للموظف يوافق

سيناريو الاختبار

  1. سجّل دخول كموظف.
  2. افتح x_786686_hr_leave_req_v2 → New.
  3. املأ التواريخ والنوع.
  4. تأكد BR1 ملأ u_approver_user = المدير.
  5. غيّر State إلى submitted → Save.
  6. سجّل خروج → سجّل دخول كـ manager.
  7. افتح:
    Navigate: All > My Approvals أو Inbox / Approvals في الـ Next Experience — Open direct
  8. افتح طلب الإجازة → Approve.
  9. ارجع للسجل: u_state يجب أن تصبح approved.
  10. تحقق من جدول التدقيق x_786686_hr_leave_audit_v2.

سيناريو الرفض

كرر الخطوات 1–6 ثم اختر Reject → تحقق u_state = rejected.


11) استكشاف الأخطاء (Troubleshooting)

المشكلة السبب الحل
Rules on action 1 are missing لم تختر approval rule Anyone approves في Rules
Flow لا يبدأ Trigger خاطئ Record Updated + u_state=submitted
لا يظهر موافقة للمدير u_approver_user فارغ BR1 + employee.u_manager
يعمل مرتين Trigger بدون Once فعّل Run once أو شرط أدق
Error بعد Publish حقول أو صلاحيات تحقق approver له user صالح
الحالة لا تتغير بعد الموافقة Update Record غير مربوط Record pill من Trigger

12) ربط مع باقي التطبيق

مكوّن الدور
BR1 أيام + معتمد قبل Flow
BR2 Event عند submitted (إشعار بريد)
BR4 Event عند approved/rejected (إشعار بريد)
BR3 تدقيق + رصيد بعد approved/rejected
Notifications src/server/notifications/notifications.md
Events src/server/events/events.md

ملف التطوير الكامل:
../../01_DEVELOPMENT.md §7


13) قائمة تحقق سريعة


14) ملاحظة للصورة التي أرسلتها

في الشاشة كان:
- Trigger يظهر كـ Record Created — غيّره إلى Record Updated + شرط submitted إن كان الطلب يمرّ بـ draft أولًا.
- Rules فارغة (Choose approval rule) — هذا سبب الخطأ الأحمر؛ اختر Anyone approves ثم Done ثم Publish.


15) Options & alternatives (Flow)

Hub: ../../00_TUTORIAL_OPTIONS_REFERENCE.md

Option When
Flow Designer (this guide) New approvals — recommended
Legacy Workflow Old instances only — migrate
Approval Policy Enterprise multi-step — optional
BR + manual approve Avoid — no audit trail
Catalog + Flow Record Producer triggers submitted state

Trigger alternatives:

Trigger Use when
Record Updated + submitted Draft then submit (our app)
Record Created Always submitted on insert
Service Catalog RITM fulfillment flow (ITSM pattern)

Ask For Approval — Rules options:

Rule Use when
Anyone approves Single approver in u_approver_user
All users approve Multiple approvers all must approve
First response First approver wins

Instance note: Flow UI labels vary by release; Publish required — Save alone is not enough.