التصميم - كيف يمكنني التعامل مع الأحداث على الكائنات المستمرة أثناء تغيير حالتها؟

StackOverflow https://stackoverflow.com/questions/823763

  •  05-07-2019
  •  | 
  •  

سؤال

ربما يكون هذا سؤالًا سخيفًا، لكني مطور مبتدئ.

لنفترض أنه في تطبيق إدارة علاقات العملاء (CRM) المبني على البيانات، لدي نوع عميل يمكنه المرور بعدد من المراحل - على سبيل المثال:المراحل 1 - 5.

مع تغير مرحلة العميل - يجب أن يتم تشغيل الأحداث.مثال - عندما يدخل العميل المرحلة 3 من المرحلة 2، يتم إرسال بريد إلكتروني، ويتم تحديث بعض القوائم وإجراء بعض الحسابات.

أتخيل أن حالة تغيير العميل يمكن أن تكون نتيجة قيام مستخدم التطبيق بتحديث العميل يدويًا من خلال واجهة رسومية.

لذلك أتساءل - هل يجب أن أتعامل مع هذا من خلال التأكيد على أن هناك طريقة واحدة فقط لتحديث حالة المرحلة للعميل، ثم التأكد من تنفيذ قائمة الإجراءات عند اكتمال هذا الإجراء؟

في رأيي (والسيناريو) قد يعني هذا استرداد عميل من قاعدة بيانات علائقية، وتحديث حقل مرحلة، وإصرار العميل على التراجع، ثم الرد دائمًا على هذا الإجراء عن طريق إطلاق أي إجراءات يتم تسجيلها على أنها تعتمد على تغيير المرحلة المحدد هذا .ومع ذلك، لست متأكدًا من أن هذا سيكون أمرًا ذكيًا إذا أردت إجراء تغيير مرحلي على دفعات لـ 10.000 عميل.

أي أفكار على الإطلاق لهذا؟أنا حقًا أبحث عن أي نوع من المدخلات - افترض أنني جاهل تمامًا.

هل كانت مفيدة؟

المحلول

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

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

نصائح أخرى

في كثير من الحالات، من الأفضل أن يكون لها وظيفة واضحة فيكم منطق الأعمال لتغيير المرحلة. ينبغي أن يكون هذا هو السبيل الوحيد لتغيير المرحلة، وانها صريحة. مثل "ChangeCustomerPhase (العملاء العملاء، المرحلة newPhase). وهذا يجعل من أبسط من ذلك بكثير للتعامل مع هذا لتعقب التغييرات إذا كان يمكن غيرت كل شيء بحرية.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top