إنتقل إلى المحتوى الرئيسي

تصميم عملية

الهدف​

ارسم عملية: المسارات التي تعبرها، والخطوات في كلّ مسار، والوصلات بينها.

فتح المصمّم​

من العمليات حدّد عملية واختر تصميم — أو انقر الصفّ. تُفتح لوحة الرسم داخل التطبيق، ويبقى مسار التنقّل وشريط العنوان فوقها.

العملية التي لم ترسمها قط تُفتح على مخطّط مبدئي لا على لوحة فارغة: مسار واحد، وبداية، ونهاية. هذا شكل كل عملية، فهو الشكل الذي تبدأ منه.

المناطق الأربع​

  • اللوحة الجانبية عند الحافة اليسرى — ما يمكنك إضافته: مسار، وأنواع العُقد.
  • المخطّط الشجري بجوارها — العملية كشجرة: الجذر، مساراته، وعُقد كلّ مسار. التحديد في الشجرة يحدّد على اللوحة والعكس. اسحب حافّته اليمنى لتوسيعه.
  • لوحة الرسم في الوسط — المخطّط نفسه.
  • لوحة الخصائص في اليمين — كلّ شيء عمّا هو محدَّد.

المسارات: من ينفّذ العمل​

أضِف مسارًا من اللوحة الجانبية، أو اسحب واحدًا إلى لوحة الرسم. سَمِّه باسم الدور لا الشخص — «مدير» لا اسم أحدهم — لأن العملية تعمّر أطول ممّن يؤدّي العمل هذا الشهر.

  • أعِد التسمية بنقر مزدوج على ترويسة المسار.
  • غيّر الحجم بسحب الحدّ أسفله. تنزل المسارات التي تحته معه، وعُقدها كذلك.
  • العقدة تنتمي إلى المسار الذي تجلس فيه. اسحبها إلى مسار آخر فتتغيّر يد صاحبها.

حدّد «الدور» للمسار، وإلّا لم تصل خطواته إلى أحد​

تسمية المسار «مدير» تخبر القارئ بمن ينفّذ العمل، ولا تخبر المحرّك. حدّد المسار واختر الدور في لوحة الخصائص — وهو بحث في أدوار الأمان الموجودة في هذه البيئة، مع مربّع بحث: ابدأ الكتابة فتضيق القائمة، باسم الدور أو باسمه المنطقي.

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

عندها تذهب كلّ مهمّة مستخدم في ذلك المسار إلى من يحمل ذلك الدور — وهذا هو كلّ سبب رسم المسار أصلًا، ويُضبط مرّة واحدة للمسار بدل ضبطه في كلّ خطوة. والخطوة التي لها تعبير مُسندة إلى خاص بها تتقدّم عليه.

حذر

مسار بلا دور وخطوات بلا مُسندة إلى يعني عملية تعمل ثم تتوقّف عند «… تعذّر إسنادها إلى أحد». المهمّة تُنشأ رغم ذلك ليراها المسؤول — لكنها ليست في قائمة أحد.

ويلزم أمران آخران قبل أن يصل دور إلى شخص: أن يكون الدور موجودًا (الأدوار، في مركز التحكّم الإداري) وأن يكون أحدهم يحمله في وحدة (أدوار العمليات، في تطبيق المنظمة). انظر أعِدّ منظمتك.

العُقد: الخطوات​

النوعما تعنيه
بدايةحيث تبدأ العملية. ارسم واحدة بالضبط.
نهايةحيث تنتهي. قد تكون عدّة — «مقبول» و«مرفوض» كلاهما نهاية.
مهمّةخطوة. الأكثر استعمالًا.
تفرّعقرار: مدخل واحد ومخارج عدّة.
انقسامالتفرّع إلى مسارات تعمل كلّها.
التقاءالانتظار حتى تعود تلك المسارات معًا.
مؤقّتالانتظار مدّةً، أو حتى لحظة بعينها. لا يُطلب من أحد شيء.

للـمهمّة أيضًا نوع مهمّة يُختار من لوحة الخصائص — مستخدم، خدمة، برنامج نصّي، يدوي، إرسال، استقبال، قاعدة عمل. يرسم شارة صغيرة على العقدة، وبه يميّز القارئ بنظرة بين «أحدهم يملأ هذا» و«المنصّة تفعل هذا بنفسها».

أيّ الخطوات تنتظر​

مهمّة المستخدم وحدها تجعل التشغيل ينتظر شخصًا. كل نوع آخر من المهامّ ينفّذ عند الدخول وعند الخروج ثم يمضي مباشرةً؛ نوعه موجود لمن يقرأ الرسم.

حين يكون للتشغيل عدّة مسارات​

بعد تفرّع متوازٍ يكون التشغيل على عدّة مسارات في آن واحد. اختياران يقرّران ما يحدث حين تنتهي.

  • يمضي حين في الدمج: وصلت المسارات كلّها (الافتراضي)، أو يصل أول مسار، أو وصل عدد من المسارات ومعه كم مسارًا. يَعُدّ المسارات التي بدأها تفرّعه المتوازي، لا الوصلات المرسومة إليه. المسار الذي ما زال جاريًا حين يمضي الدمج يُوقَف، وتُسحَب مهمّته المفتوحة.
  • حين يصل إليها مسار في النهاية: أنهِ هذا المسار (الافتراضي: ينتهي التشغيل حين لا يبقى مسار آخر جارٍ)، أو أنهِ التشغيل كلّه الذي يوقف كل مسار آخر. والثاني هو نهاية «رُفض، أوقف كل شيء».

«العنوان» و«الاسم» لخطوة​

لكلّ خطوة كلاهما، ولكلٍّ عمله — وهو الزوج نفسه الذي للجدول: الاسم المعروض والاسم المنطقي.

  • العنوان هو ما يُقرأ على لوحة الرسم. اكتبه للقارئ، بأيّ لغة تعمل بها، وأعِد صياغته متى شئت.
  • الاسم هو ما يعرف به الكود وسجلّ التشغيل والعمليات الأخرى الخطوةَ. حروف لاتينية صغيرة وأرقام وشرطات سفلية، وهو مطلوب.

لا تكتب الاسم عادةً. يُملأ من العنوان أثناء الكتابة — «Approve Leave» تصير approveleave — ويتوقّف عن المتابعة لحظة تحريره بنفسك، فلا يُكتب فوق اسم اخترته. امسح المربّع ليعود الاقتراح.

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

تلميح

العنوان بالعربية أو الفارسية لا يشتقّ اسمًا، فتُسمّى الخطوة باسم نوعها — task، task_2. غيّره إلى ما تعرفه في سجلّ التشغيل.

العمليات المرسومة قبل أن يصير الاسم مطلوبًا

كان الاسم اختياريًا من قبل، فقد تحمل عملية رسمتها سابقًا خطواتٍ بلا اسم — أو بأسماء بالأسلوب الحرّ القديم. تلك المستندات لم تعد مقبولة.

افتح كلّ واحدة في المصمّم واحفظها. تُملأ الأسماء من العناوين عند الفتح، والحفظ هو كلّ الإصلاح. لا شيء يحوّلها نيابةً عنك، والعملية التي لم تُعِد فتحها سترفض الحفظ في المرّة التالية التي تحرّرها فيها.

الوصلات​

اختر وصل من اللوحة الجانبية ثم اسحب من عقدة إلى أخرى. تُوجَّه الوصلات تلقائيًا — لست من يرسم الزوايا.

  • أعطِ الوصلة تسمية حيث تحتاج إليها. على مخارج التفرّع هي ما يقرؤه القارئ بوصفه القرار: مقبول، فوق الحدّ، مرفوض.
  • نمط الوصلة — منحنٍ أو قائم الزوايا — على جذر العملية ويسري على المخطّط كلّه، لأن مخطّطًا يخلط بينهما يُقرأ كخطأ لا كاختيار.

المتغيّرات: ما تحمله العملية معها​

حدّد جذر العملية في المخطّط الشجري وأضف المتغيّرات — القيم التي تحملها هذه العملية من خطوة إلى التي تليها. لكلٍّ منها اسم ونوع (نص، رقم، نعم/لا، تاريخ).

الاسم هو ما يكتبه النصّ البرمجي: getVariable("total"). تغييرُ اسم متغيّر لا يعيد كتابة النصوص التي سمّته، فتعامل مع الاسم على أنّه الشيء الذي تسمّيه لا لافتة تُبدَّل متى شئت. والمتغيّر الذي لم تسمّه بعدُ لا يُعرض في أي مكان.

نماذج القرار: ما يملؤه الشخص لإنهاء خطوة​

نموذج القرار هو النموذج القصير الذي يملؤه شخص ما لإنهاء مهمّة مستخدم، ومعه النتائج — الأزرار التي تُنهيها. وهو ليس نموذجًا مبنيًّا على النموذج فوق جدول: فهو يخصّ العملية، ويسافر داخل مستند العملية، ولا يسأل إلا ما يحتاجه القرار.

اختر جذر العملية في المخطّط الشجري — وهو ما يفتح عليه المصمّم — لتجد نماذج القرار أسفل المتغيّرات، لأن نموذج القرار يخصّ العملية لا خطوةً بعينها: وقد تعرضه عدّة خطوات.

لكلّ نموذج قرار:

  • اسم نموذج القرار، وبه تشير إليه المهمّة، وعنوان يراه من يقرؤه.
  • حقول — اسم الحقل وتسميته ونوع بياناته. وهي أنواع حقول المنصّة نفسها، فينال نموذج القرار منتقيات التاريخ والتقويمات وقوائم الخيارات ذاتها التي لنموذج السجل.
  • نتائج — صفّ لكلّ زر. نصّ الزر ما يظهر عليه، والنمط شكله (عادي، أساسي، تدميري)، ويتطلّب تعليقًا يجعل ذلك الزرّ وحده يصرّ على إجابة في أوّل حقل متعدّد الأسطر في النموذج. ضعه على الرفض ودعه عن الموافقة: هذا هو الفرق الذي وُجد الإعداد من أجله.

ثمّ اختر مهمّة مستخدم وحدّد لها نموذج القرار من القائمة.

المهمّة التي بلا نموذج قرار تنتهي أيضًا، لكن لا يجد الشخص سبيلًا ليقول شيئًا عنها. والعملية التي لا تسأل خطواتُها البشرية شيئًا هي غالبًا عملية لم يكتمل تصميمها.

ما ينظرون إليه أثناء اتّخاذ القرار​

تحت نموذج القرار، يحدّد ما ينظرون إليه ما الذي يملأ المنطقة الرئيسية أثناء اتّخاذ القرار: لا شيء، أو نموذج سجل، أو قائمة، أو تقرير، أو شاشة. اختر واحدًا يظهر لك بقيّة القسم.

الحقللماذا
التطبيقداخل أي تطبيق يُفتح. اتركه فارغًا ليُفتح في تطبيق يحتوي ما تتناوله الخطوة: التطبيق الذي يعمل فيه الشخص إن كان يحتويه، وإلا تطبيق يشارك في عمليات الأعمال. وهذا ما يجعل العملية تعمل بعد استيرادها إلى مكان آخر.
الجدول / التقرير / الشاشةما تدور حوله الخطوة. أيّها يظهر يعتمد على اختيارك أعلاه.
أي نموذج / أي قائمةنموذج أو قائمة باسم محدّد بدل الافتراضي للجدول. الفراغ يعني الافتراضي.
طريقة الفتحللقراءة فقط أو للتحرير. «للقراءة فقط» هو الجواب المعتاد — فالشخص يقرأ ليقرّر — والتحرير يجري بصلاحيات السجل نفسه: المهمّة لا تمنح صلاحية من عندها.

كلّ واحد من هذه قائمةٌ بما تملكه هذه البيئة فعلًا. كانت حقولًا تكتب فيها الاسم المنطقي بيدك، والاسم المكتوب باليد لا يمكن إلّا أن يُخطأ فيه — وهو ما يظهر بصيغة «الخطوة لا تفتح شيئًا»، بعد أسابيع، أمام من بُنيت العملية من أجله.

أمّا أي سجل يُفتح فليس في هذه القائمة: هو تعبير، فمكانه تحت الشيفرة مع بقيّة التعابير. وغالبًا يكون getRecordRef("request") — السجل الذي يدور حوله هذا التشغيل.

المعاملات: بماذا تُخبَر الخطوة أيضًا​

السجل يجيب عن «أيّها»، وعلى نموذج يكون ذلك عادةً كلّ السؤال. وليس كذلك في أي مكان آخر: التقرير يريد المدّة التي يغطّيها، والشاشة تريد المبلغ الجاري اعتماده ومن رفعه. وهذه القيم في هذا التشغيل لا في الشيء المعروض.

اختر إضافة معامل، وسمّه بالاسم الذي يتوقّعه التقرير أو الشاشة، فتظهر قيمته صفًّا تحت الشيفرة — لأنّ القيمة تعبير على متغيّرات العملية وحالة هذا التشغيل: getVariable("month")، instanceStartedBy().

الاسم هو ما يجد به ذلك الشيءُ القيمةَ، فلا يمكن أن يتشارك معاملان اسمًا واحدًا، والمعامل بلا اسم يُسقَط عند حفظ العملية.

النتائج: أي قرار يسلك أي وصلة​

تنتهي مهمّة المستخدم حين يضغط أحدهم إحدى نتائج نموذج قرارها، وكلّ نتيجة ترسل العملية في طريق. اختر وصلة خارجة من مهمّة مستخدم واضبط يُسلَك عند — قائمة بنتائج نموذج قرار تلك المهمّة.

بهذا تصبح الموافقة أو الرفض خطوة واحدة، لا مهمّةً يتبعها تفرّع يسأل من جديد عمّا قرّره الشخص بالفعل.

  • لا يُعرض إلا حيث تعرض المهمّة نموذج قرار له نتائج؛ وفي غير ذلك لا شيء للاختيار منه.
  • نموذج القرار ذو النتيجة الواحدة لا يحتاج شيئًا من هذا: زرّ واحد وطريق واحد للخروج.
  • ومع عدّة نتائج، تريد كلٌّ منها وصلتها. تقول لك لوحة المشكلات ذلك — نتيجة لا تسلكها أي وصلة، ووصلتان تدّعيان النتيجة نفسها، ووصلة تسمّي نتيجة لم يعد نموذج القرار يقدّمها، وهذا ما يحدث حين تحرّر نموذج قرار تعرضه مهمّة أخرى أيضًا.

استدعاء عملية أخرى​

اجعل نوع المهمّة استدعاء عملية واختر العملية التي تُنفَّذ. المقصود أن تنتظر هذه الخطوة انتهاءها ثم تمضي — لكنّ المحرّك لا ينفّذها بعد. يُحفَظ الاختيار وتتحقّق لوحة المشكلات من اختيار عملية؛ وعند التشغيل تنفّذ الخطوة عند الدخول وعند الخروج ثم تمضي مباشرةً دون أن تبدأ العملية الأخرى، كأيّ خطوة ليست مهمّة مستخدم.

استخدمها حين تحتاج عدّة عمليات إلى العمل نفسه — موافقة، أو فحص ائتمان. عمليةٌ واحدة تُستدعى ثلاث مرات تبقى شيئًا واحدًا تغيّره؛ أمّا ثلاث نسخ منها فتختلف فيما بينها خلال سنة.

تعرض القائمة عمليات هذه البيئة الأخرى. ولا تستطيع عملية أن تستدعي نفسها.

الشروط: من أي طريق يمضي التفرّع​

حدّد وصلة خارجة من تفرّع وافتح الشرط من قسم الشيفرة — تعبيرًا واحدًا يقرّر ما إذا كان التدفّق يسلك تلك الوصلة. getVariable("approved") في جهة و!getVariable("approved") في الأخرى.

يُعرض على وصلات التفرّع دون سواها. للمهمّة مخرج واحد، فالشرط عليها سؤال بجواب واحد.

والشرط يقرأ فقط. هو يقرّر الوجهة، وقد يسأله المحرّك أكثر من مرّة، فشرطٌ يغيّر شيئًا يجعل سلوك العملية رهنًا بعدد المرّات التي سُئل فيها — ولهذا لا يعرض عليك المحرّر أصلًا كلمات فعل ذلك.

إلى من تذهب المهمّة​

لكلّ مهمّة مستخدم صفّ مُسندة إلى تحت الشيفرة: تعبير واحد يجيب عمّن ينبغي أن يؤدّيها.

إن أردتفاكتب
كلّ من يحمل دورًاrole("Manager")
شخصًا بعينهuser("a.khan")
فريقًاteam("Finance")
من بدأ العمليةinstanceStartedBy()

وهو تعبير لا قائمة اختيار عن قصد: الإسنادات التي تستحقّ الكتابة هي تلك التي لا تستطيع قائمةٌ التعبير عنها — المعتمِد المناسب للمبلغ الموجود في متغيّر، أو مديرُ من رفع الطلب.

ولا يملكه إلّا مهمّة المستخدم. أمّا مهمّة الخدمة فتؤدّيها المنصّة بنفسها، فلا أحد تُسند إليه.

والخطوة التي لا تعبير لها ترجع إلى «دور» مسارها، وهذه هي الحالة المعتادة: اكتب التعبير حيث تختلف خطوة واحدة عن بقية المسار فحسب.

الانتظار، والتأخّر​

المؤقّت: انتظار الساعة​

ارسم مؤقّتًا حيث ينبغي للعملية أن تنتظر فحسب. لا يُطلب من أحد شيء: تتوقّف التشغيلة هناك ثم تتابع من تلقاء نفسها.

اضبط ينطلق على بعد مدّة واملأ الانتظار لمدّة: عدد ووحدة تختارها بجانبه — ٣ أيام، ٤ ساعات، ٩٠ دقيقة.

المؤقّت الذي لا يذكر مدّة لا ينتظر — بل يوقف التشغيلة. وهو الإعداد الوحيد في العملية بلا سلوك افتراضي معقول خلفه: الانطلاق فورًا كان سيحوّل الانتظار بهدوء إلى لا انتظار، فبدلًا من ذلك يتوقّف المسار ويقول سجلّ التشغيلة «… لا يذكر متى ينطلق». فإن كان مؤقّت رسمته لا ينطلق أبدًا، فهذا أوّل ما تتحقّق منه.

الشهور والسنوات غير مطروحة، وذلك عن قصد. الشهر ثمانية وعشرون يومًا في فبراير وواحد وثلاثون في مارس، فالانتظار المكتوب هكذا يعني عدد ساعات مختلفًا بحسب وقت بدئه. اطلب ٣٠ يومًا.

لمن يقرأ المستند

تُخزَّن المدّة بصيغة ISO-8601 — P3D وPT4H وPT90M — وهي ما يقرأه المحرّك وما يجب أن تقوله عملية مكتوبة باليد أو مولَّدة بالذكاء الاصطناعي. أنت لا تكتبها أبدًا؛ العدد والوحدة هما كلّ الحقل. والمدّة المكتوبة يدويًا بوحدتين (PT4H30M) تُفتح بوصفها المدّة نفسها بوحدة واحدة (٢٧٠ دقيقة).

اختر في لحظة تُجيب بها الشيفرة حين تتوقّف اللحظة على البيانات — تاريخ على السجل، أو متغيّر ملأه أحدهم. عندئذٍ اكتب التعبير تحت النصوص البرمجية؛ ويمكنه أن يُجيب بلحظة أو بمدّة.

الموعد النهائي: متى ينبغي إنجاز الخطوة​

حدّد مهمّة مستخدم واملأ المهلة — بالعدد والوحدة نفسيهما اللذين يأخذهما المؤقّت. تبدأ الساعة لحظة ظهور المهمّة في قائمة أحدهم — لا حين يفتحها — فالمهمّة التي تُنشأ عصر الخميس لا تكسب عطلة نهاية الأسبوع بهدوء.

يرى الشخص تحت اسم المهمّة الاستحقاق …، وبعد فوات اللحظة يصير النصّ أحمر ويقرأ كان الاستحقاق …. وبجانبه تقول مدة الانتظار منذ متى والمهمّة هناك.

ويقول عند التأخّر ما الذي تفعله العملية حيال ذلك:

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

يستخدم الحسم التلقائي نتائج الخطوة نفسها، فالمخطّط يُظهر سلفًا إلى أين تمضي العملية بعدها — لا مخرج ثانٍ خفيّ من الخطوة. و«إن لم يوافق أحد خلال ثلاثة أيام فاعتبرها مرفوضة» تُكتب باختيار احسمها تلقائيًا ثم رفض.

اترك المهلة فارغة لخطوة بلا موعد نهائي، وهي حال معظم الخطوات.

النصوص البرمجية: ماذا يُنفَّذ ومتى​

حدّد مهمّة تظهر لك قائمة النصوص البرمجية الخاصّة بها — اللحظات التي يمكنها التفاعل معها. واختيار إحداها يفتح صفحة الشيفرة.

الموضعمتى يُنفَّذ
عند الدخولتبلغ العملية هذه الخطوة.
عند الإسنادتصير للمهمّة صاحب — لمهامّ المستخدم فقط.
عند الإنجازيضع ذلك الشخص علامة الإنجاز — لمهامّ المستخدم فقط.
عند الخروجتغادر العملية هذه الخطوة، أيًّا كان الطريق.

ولـجذر العملية ثلاثٌ من لحظاته هو، بالشكل نفسه: عند البدء وعند الإنجاز وعند الإلغاء. و«عند البدء» هو موضع إعطاء المتغيّر قيمته الأولى.

تقول القائمة أيّ المواضع كُتب فيها شيء، فترى في لمحة أين العمل.

ولـالتفرّع موضعان: عند الدخول وعند الخروج، ولا موضع يختار الطريق.

  • عند الدخول يُنفَّذ لحظة وصول العملية، قبل أن يُسأل أيّ شرط. وهو موضع حساب التفرّع: احسب الجواب مرّة، وضعه في متغيّر، ودع كلّ شرط يقرأه. فتصير ستّ شرائح لمبلغ ستّةَ شروط قصيرة بدل ستّ نسخ من الحساب نفسه.
  • عند الخروج يُنفَّذ بعد اختيار الطريق. ولا يُنفَّذ إن لم يصدق أيّ شرط — لم يخرج شيء، فلا خروج.
  • يبقى القرار على الوصلات. لا شيفرة تختار المخرج، عن قصد: مخطّطٌ يُتَّخذ قرار تفرّعه في موضع لا تراه هو مخطّط يكذب عليك بشأن ما تفعله العملية.

صفحة الشيفرة​

تملأ المحرّر وتضع قائمة المواضع إلى جانبها، فالتنقّل بين لحظات المهمّة نقرة واحدة. والعين في رأسها تسرد كلّ ما يمكنك استدعاؤه من ذلك الموضع — وهو ليس واحدًا في كلّ مكان: الشرط ومُسندة إلى يقرآن فقط، والمعالج يمكنه أن يغيّر، وuser() وrole() وteam() لا تُعرض إلّا في مُسندة إلى.

ولا حفظ في صفحة الشيفرة. حفظ في شريط العنوان هو الحفظ الوحيد، وهو يحفظ العملية كلّها.

ملاحظة

حفظ برنامج نصّي لا يشغّله. تُحفظ المتغيّرات والشروط والإسنادات والبرامج النصّية مع التصميم وتُفحص أثناء كتابتها؛ وتعمل حين تُنشر العملية ويبدأ تشغيل.

المشكلات: ما الذي ما يزال ناقصًا​

في زاوية اللوحة شريط يقول كم مشكلة في العملية. افتحه لترى القائمة؛ واختر سطرًا فيأخذك المصمّم إلى ما يتحدّث عنه — العقدة أو الوصلة أو جذر العملية.

يفحص ما سيطلبه المحرّك:

  • «بداية» واحدة بالضبط، و«نهاية» واحدة على الأقل؛
  • ألّا تدخل وصلة إلى بداية أو تخرج من نهاية؛ فالتشغيل يبدأ من الأولى وينتهي في الثانية، فلا تُسلَك هذه الوصلة أبدًا؛
  • ألّا تكون هناك خطوة لا يبلغها التدفّق أبدًا ولا خطوة لا يغادرها أبدًا؛
  • شرط على كل وصلة تخرج من تفرّع، ومخرجان اثنان منه على الأقل؛
  • مخرجان على الأقل للتشعيب ومدخلان للالتقاء، وعدد متساوٍ من كلٍّ منهما؛
  • أن يكون كل متغيّر يسمّيه نصّ برمجي مُصرَّحًا به، وأن يكون لكل صفّ متغيّر اسم؛
  • أن يُحلَّل كل نصّ برمجي.

لا شيء من هذا يوقفك. العملية نصف المرسومة تُبلِغ عن صفحة مشكلات وتُحفظ بلا عناء — وهذا هو المقصود من رسمها. القائمة هي كيف تعرف ما بقي، وهي القائمة نفسها التي تطبّقها المنصّة حين تُنشَر العملية للتنفيذ.

ملاحظة على اثنتين منها: تقول اللوحة أيُحلَّل النصّ أم لا؛ أمّا جواز استدعائه اسمًا بعينه فشأن محرّر الشيفرة، وهو يضع تحته خطًّا وأنت تكتب بحسب ما يراه ذلك الموضع. والتشعيبات والالتقاءات تُعدّ ولا تُطابَق واحدًا بواحد — فالعملية التي تنقسم أكثر ممّا تلتقي فيها مسار ما يزال يعمل بينما ينبغي أن تكون قد انتهت، وهذا هو الخطأ في الغالب.

الترتيب التلقائي​

عرض ← ترتيب تلقائي يرتّب المخطّط من اليسار إلى اليمين بترتيب التدفّق، ويُبقي كلّ عقدة في مسارها. ينقل العُقد أفقيًا ويعيد توجيه الوصلات؛ ولا ينقل عملًا من شخص إلى آخر أبدًا.

التوليد بالذكاء الاصطناعي​

التوليد بالذكاء الاصطناعي يصف العملية بالكلمات ويرسمها. وأيًّا كان ما يعود، يُتحقَّق منه قبل أن يصل إلى اللوحة تمامًا كملفّ مستورد — فالمخطّط الذي لا يتماسك يُرفَض ولا يُرسم.

يصحّح نفسه قبل أن يستسلم. إذا لم يتماسك ما عاد، تعيده المنصّة إلى النموذج مع تسمية الخلل، ولا تطلب منك إصلاح خطأ في المخطّط لم تكتبه أنت. يحاول حتّى ثلاث مرّات، ويقول الزرّ «جارٍ التصحيح… المحاولة ٢ من ٣» أثناء ذلك. ولا يُعرض عليك إخفاق إلّا بعد أن تكون محاولة التصحيح قد جُرّبت، وما يُعرض حينها هو آخر خلل.

يستبدل ما على اللوحة ولا يحفظ. انظر إليه قبل أن تضغط «حفظ».

أنت تصف العملية فقط، لا أكثر. أيُّ نموذج ذكاء اصطناعي يجيب أمرٌ يهيّئه المسؤول مرّة واحدة للمنصّة كلّها — لا مفتاح تلصقه ولا مزوّد تختاره، وما تكتبه هنا لا يذهب إلى جهة سوى ذلك النموذج.

إن لم يكن هناك ذكاء اصطناعي متّصل، فإنّ «توليد» يقول ذلك. يصله مسؤول المستأجر مرّة واحدة، في الإعدادات ← الذكاء الاصطناعي، للمؤسسة كلّها. ليس شيئًا يشغّله الصانع.

الحفظ​

حفظ في شريط العنوان يكتب العملية. وهو الحفظ الوحيد: التصميم جزء من المكوّن، فلا ملفّ يجب إبقاؤه متوافقًا معه ولا تصدير يجب تذكّره.

المغادرة بتغييرات غير محفوظة تسأل أولًا — من إغلاق، ومن شريط التنقّل، ومن زرّ الرجوع في المتصفّح.

النشر: الحفظ ليس تشغيلًا​

الحفظ يحفظ عملك. والنشر يغيّر ما يُشغَّل. هما زرّان لأنّهما قراران، ولهذا الفصل سبب واحد: العملية الجارية فعلًا يجب ألّا تتغيّر تحت من يُشغّلونها. فبدونه، تصحيح خطأ مطبعي عند الرابعة عصرًا كان سيعيد كتابة العملية التي تتبعها كلّ النسخ الجارية — بما في ذلك خطوات قطعوها من قبل.

لذا لا يقرأ المحرّك إلّا ما نشرته، وكلّ نشر نسخة مرقّمة ومجمّدة من الرسم كما كان في تلك اللحظة.

السطر تحت العنوان يقول في أيّ الحالات الثلاث أنت:

يقوليعني
لم تُنشر بعدلا شيء يُشغّل هذه العملية.
النسخة ٣ قيد التشغيل وتطابق ما تراهما تراه هو ما يعمل.
النسخة ٣ قيد التشغيل. لديك تغييرات غير منشورةتعديلاتك المحفوظة ليست فعّالة بعد.

اختر نشر فتصبح المسوّدة النسخة التالية. وإن كانت لديك تعديلات غير محفوظة حُفظت أولًا، لأنّ نشر ما على الشاشة هو ما تعنيه الكلمة.

أمور تستحقّ المعرفة:

  • نشر عملية لم تتغيّر مرفوض. إن لم يتغيّر شيء منذ آخر نشر فلا شيء لنشره، وتاريخٌ مليء بنسخ متطابقة تاريخٌ لا يقرؤه أحد.
  • لا يوجد إلغاء نشر. نسخة قد يكون أحدهم يُشغّلها ليست شيئًا يُحذف. وإن أردت الرجوع، ضع الرسم السابق على اللوحة وانشره — يبقى التاريخ سليمًا، وهذا ما يجعله ذا قيمة.
  • كلّ نسخة جارية تُكمل بالإصدار الذي بدأت به. ما بدأ بالنسخة ٢ ينتهي بالنسخة ٢، مهما نشرت أثناء تشغيله.
ملاحظة

النشر لا يبدأ شيئًا. إنّه يحدّد ما يعمل في المرّة التالية التي تبدأ فيها العملية، والتشغيلات الجارية تحتفظ بالإصدار الذي بدأت به.

ينتظر النشر حتى تخلو قائمة المشكلات. ما دامت زاوية اللوحة تذكر شيئًا، يبقى الزرّ غير متاح، وإذا أبقيت المؤشّر فوقه يقول السبب. العملية التي فيها مشكلات لن تعمل، وكان نشرها من قبل يحفظ الرسم أولًا ثم يُرفض.

الاستيراد والتصدير​

تصدير JSON ينزّل التصميم كملفّ .bpms.json — ما هو على اللوحة الآن، بما في ذلك التعديلات غير المحفوظة، لأن الملفّ لنقل تصميم إلى مكان آخر، وتصدير نسخة الأسبوع الماضي بينما تنظر إلى نسخة هذا الأسبوع مفاجأةٌ لا تُكتشف إلا في الطرف الآخر.

استيراد JSON يعيد واحدًا. يستبدل ما هو مرسوم ولا يحفظ، فالاستيراد الذي يتبيّن أنه الملفّ الخطأ يُلغى بمغادرة الشاشة دون حفظ.

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

وحين تسافر العملية في حلّها، يصبح الاستيراد والتصدير لنقل تصميم بين البيئات يدويًا — تيسيرًا لا طريقةً لترقية العمل. تلك الطريقة هي الحلّ.

تصدير صورة​

تصدير ← صورة (PNG) وصورة (SVG) ترسمان المخطّط كما يبدو — لمستند أو شريحة أو جدار. وليست أيٌّ منهما العملية: لا يمكن استيرادهما مرّة أخرى.

استكشاف الأخطاء​

  • متغيّري لا يظهر في اقتراحات المحرّر. — المتغيّر بلا اسم لا يُعرض في أي مكان. سمِّ الصفّ ثم غادر الحقل ليُثبَّت الاسم.

  • لا أجد setVariable داخل شرط. — الشرط يقرأ فقط؛ انظر أعلاه. ضع التغيير في نصّ مهمّة.

  • اختفى نصّ كتبته على مهمّة. — تغيير نوع المهمّة يغيّر لحظاتها. حوّل مهمّة مستخدم إلى مهمّة خدمة ولن تُعرض عند الإسناد وعند الإنجاز بعدها، والتصميم المستورَد بهما تُحذفان منه.

  • «ذلك الملف ليس JSON صالحًا، فتعذّر استيراده.» — الملفّ مبتور أو ليس تصميمًا أصلًا.

  • «ذلك الملف ليس تصميم عملية صالحًا: …» — تسمّي التفاصيل المعرّف الخاطئ: عقدة في مسار ليس في الملفّ، أو وصلة إلى عقدة غير موجودة.

  • الحفظ يقول إن التصميم غير صالح. — الفحص نفسه يجري قبل الحفظ. صحّح العقدة أو الوصلة التي يسمّيها؛ والمخطّط على الشاشة لا يضيع.

  • قفزت عقدة عند فتح العملية. — العقدة التي كانت خارج مسارها تُعاد إليه عند الفتح. مسار العقدة يعني من ينفّذ العمل، فلا يُسمح لهما بالاختلاف.

  • الترتيب التلقائي لم يفعل شيئًا. — يرتّب بحسب التدفّق، فيحتاج إلى وصلات. مخطّط من عُقد بلا وصلات لا ترتيب فيه ليُرتَّب عليه.

  • «لم يُعدّ أيّ موفّر للذكاء الاصطناعي. افتح الإعدادات ← الذكاء الاصطناعي لتوصيل واحد.» — المؤسسة ليست متّصلة بذكاء اصطناعي بعد. يصله مسؤول المستأجر مرّة واحدة، في الإعدادات ← الذكاء الاصطناعي، للجميع.

  • «ردّ الذكاء الاصطناعي بلا تصميم.» — أجاب النموذج بنثر بدل عملية. صِف المسارات والخطوات بصورة أبسط وأعد التوليد؛ ولا يضيع شيء ممّا على اللوحة.

سيناريوهات ذات صلة​