يمكن للعالم أن يتعلم الكثير من المبرمجين. إنه يتعلم بالفعل ، لكن ليس بالطريقة الخاطئة. على سبيل المثال ، أخذت العمليات والخوارزميات ، لكنني لم ألاحظ مثل هذا النهج مثل عدم التزامن.
أي مبرمج يفهم ماهية التزامن والتزامن. هذا هو مدى فهم هذا المبرمج من قبل المبرمج ، لذلك فمن غير المفهوم لمطوري العمليات العاديين.
الإجراءات المتزامنة لأي عملية هي تلك التي يتم تنفيذها في سلسلة العمليات الرئيسية ، ضمن نسخة عملية واحدة. الفرق الرئيسي بين الوضع المتزامن: يبدأ الإجراء التالي فقط عند اكتمال الإجراء السابق. وفقا لذلك ، حتى يتم الانتهاء من عمل واحد ، فإن العملية هي المحك.
الإجراءات غير المتزامنة هي تلك التي تعمل بالتوازي مع مؤشر الترابط الرئيسي ، إما في نفس مثيل العملية أو في عملية أخرى تمامًا. الفرق الرئيسي بين الوضع غير المتزامن: التنفيذ المتوازي لفرعين أو أكثر من العملية.
العمليات المتزامنة ، مثل البرامج ، أسهل بكثير في الكتابة والتصحيح ، لذلك هذا النهج لتصميم العملية شائع جدًا. هناك الكثير لتفعله مع عدم التزامن ، خاصةً مع تحديد نقاط الانتقال إلى التنفيذ الموازي والعودة إلى الاتجاه السائد. لا توجد وعود في الحياة.
على سبيل المثال ، نفس عملية الشراء عند الطلب. يتم رسمه كسلسلة متسلسلة من الإجراءات: لقد ظهر طلب ، والمورد يختار المورد ، ويطلب الوقت والتكلفة ، ويوافق على البائع أو إدارة الرقابة الداخلية ، أو ينشئ طلبًا للمورد ، أو يطلب تقييم الطرف المقابل في القسم القانوني أو في قسم المحاسبة ، أو ينشئ طلبًا للدفع ، أو ينتظر الدفع ، يراقب الطلب ، ثم ينظم أو يتعقب النشر في المستودع ، بحيث يغلق التطبيق في النهاية. تتم مزامنة العملية بالكامل.
تخيل الآن - في نظام المعلومات الخاص بنا ، خدمة تقييم الموردين غير متصلة. لذلك ، يحتاج القسم القانوني إلى جمع المعلومات من المصادر المفتوحة. هذا يعني أن التقييم يستغرق وقتًا. بالنظر إلى قائمة انتظار الطلبات للمحامين ، سوف تمر ثلاثة أيام.
ماذا سيحدث للعملية في هذا الوقت؟ وفقا لمنطق متزامن ، فإنه سيكون على المحك. المورِّد ، كونه عنصرًا حقيقيًا في النظام ، لن يتحرك بإصبعه حتى يتلقى تقييم المورد - خاصةً إذا تم فرض عقوبات على العمل مع الأطراف المقابلة التي لم يتم التحقق منها.
هل يمكننا إضافة تزامن هنا؟ بالطبع في تلك اللحظة ، عندما يختار المورد المورد ، يمكنه إرسال طلب لتقييم الطرف المقابل إلى القسم القانوني ، وبينما سيتفاوض ، يوافق على الأسعار والشروط. بحلول الوقت الذي يكون فيه جاهزًا لتقديم طلب ، سيصل التقييم في الوقت المناسب. ستنتهي العملية في وقت سابق ثلاثة أيام.
بالطبع ، يمكن غضب المحامين - ما الذي سنقيمه للمورد ، إذا لم تكن قد قررت ذلك بوضوح بعد ، فهل ستطلبه منه؟ ماذا يجب أن يجيبوا؟
الحل يقترح نفسه ، لقد أشرنا بالفعل أعلاه - لتوصيل خدمة تقييم المورد. الآن نحن نفهم بشكل أفضل سبب الحاجة - لإعطاء تزامن وتسريع العملية. على الرغم من أن الخدمة ربما تكون متزامنة فقط. ما رايك
إذا لم تكن الخدمة متصلة ، فيمكن تبرير هذا التقييم بعمل "الاستخدام المستقبلي". إذا كان لدى نظام المعلومات الخاص بك مكان لتسجيل بيانات التقييم ، فعندما تحتاج إلى العمل مع هذا المورد في المرة القادمة ، لم يعد عليك الاتصال بالقسم القانوني. بالطبع ، يكون للتاريخ تاريخ انتهاء صلاحية ، ولكن يمكن استخدامه ضمن حدود معقولة معينة.
في حالة عدم التزامن ، يكون عدم وجود ضمانات أمرًا مخيفًا في العادة ، أي خطر حدوث نتيجة سلبية في أحد الفروع المتوازية للعملية. ماذا لو فشلت المصالحة؟
هنا تحتاج الإحصاءات. إذا كنت تعمل مع عملية موجودة ، فعندئذٍ تقريبًا ، أو بدقة ، تخيل عدد المرات التي تنتهي فيها بعض الإجراءات بشكل سلبي - على سبيل المثال ، التنسيق. من هذا الاحتمال ، ينبغي المضي قدمًا من خلال بدء التنفيذ المتوازي.
يطرح التزامن مباشرة جميع عمليات التنسيق. إذا كنت تعمل هناك فقط في وضع متزامن ، وحتى تتبع زمام المبادرة من المنسقين ، يتم بناء سلاسل طويلة مترابطة ، وتولد البيروقراطية والمسؤولية المتبادلة.
مثال نموذجي: "لن أوافق إلا بعد موافقته". أو "لن أنظر إلى هذا العقد إلا بعد الممولين". على الرغم من أنه وفقًا للإحصاءات والحس السليم ، فإن هذه التصريحات غير مبررة ، وهي مجرد وسيلة لتحويل المسؤولية.
الشيء الرئيسي هنا هو عدم القلق ، وعدم معالجة كل شيء دفعة واحدة. محاولة لتحديد وضع غير متزامن أول فرع واحد من التنسيق. قد يكون من الضروري مراجعة المهمة ، ومعلمات التنسيق - من أجل القضاء على الترابط.
على سبيل المثال ، دع الإدارة المالية ، التي تقف في سلسلة الموافقة على العقود ، تنظر فقط في شروط الدفع. دعه يمتلك معايير التقييم الواضحة الخاصة به. من الأفضل أن يتم إضفاء الطابع الرسمي عليها في شكل عقد نموذجي - على سبيل المثال ، الدفع المؤجل 100٪ للموردين ، الدفع المسبق 100٪ للمشترين. في هذه الحالة ، فإن العقود التي تفي بالمعايير ستنخفض في وقت واحد. ولن يكون للممولين أي سبب لانتظار التقييم من نفس المحامين.
الشيء الوحيد المهم: من الصعب للغاية تنفيذ العمليات غير المتزامنة دون التشغيل الآلي. إذا تم تنفيذ العمليات والتنفيذ والتتبع على الورق فقط ، فإن إضافة فروع متوازية ستحولها إلى فوضى. تحتاج الأتمتة.
هو الأنسب لمبدأ "مهمة السيارات" لمثل هذه الأتمتة. على الرغم من أنه يمكنك الاستفادة من الوسائل القياسية لعمليات الرسم الموجودة في الأنظمة الأساسية الحديثة ، ما عليك سوى العبث.
سيتطلب منك "الرسم" القياسي للعمليات تحديد العملية بالكامل وجميع الفروع والعلاقات. إذا كانت العملية معقدة وطويلة ، فستواجه مشكلة - ستتوقف ببساطة عن الملاءمة على الشاشة ، في العرض. إذا درست في المعهد كمبرمج ، فتذكر هذه القاعدة لتصميم الخوارزميات: لا يوجد أكثر من ثلاثة فروع رأسية متوازية. لم يتم اختراع القاعدة فقط - إذا كان هناك المزيد من الفروع ، فسيكون من الصعب فهم مخطط الخوارزمية.
المهام التلقائية تزيل هذه المشكلة - لا توجد صورة للعملية على الإطلاق ، لأن لا يوجد مثل هذا الكيان - عملية. هناك مهام. إذا كنت تريد حقًا ، فيمكنك تجميع عملية منها. ولكن ليس العكس. وهناك نوع من طريقة استنباط عمليات الرسم.
بالإضافة إلى عدم التزامن ، هناك طريقة تحسين أكثر فعالية - عملية التخزين المؤقت. عنه - مرة أخرى.