الانتقال إلى المحتوى
View in the app

A better way to browse. Learn more.

مجموعة مستخدمي أوراكل العربية

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

هل استخدم Task Flow أم لا؟

Featured Replies

بتاريخ:

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

أولاً: ما هو Task Flow:
هو عبارة عن ميزة جديدة أضافتها أوراكل في الإصدار 11g وتهدف إلى تسهيل عملية الانتقال بين الصفحات وتنفيذ بعض الأكواد المطلوب تنفيذها عندما يتم الانتقال بين الصفحات ، ويعتبر من مميزاته أنه وفر رسماً واضحاً لعملية الانتقال والدوال التي يتم تنفيذها عند الانتقال حيث لم يكن هذا متاحاً في الملف faces-config الذي كان يستخدم في JSF.

السؤال: هل استخدم Task Flow دائماً؟
مع الأسف الكثيرون يعتقدون أن Task Flow هو الطريقة الوحيدة لعملية التنقل بين الصفحات أو أنها الطريقة المثلى لذلك والاثنان خطأ تماماً حيث يمكن التنقل باستخدام global forwards واستخدام page definition لتنفيذ الكود كما أن Task Flow ليس الطريقة المثلى للتنقل بصورة مطلقة حيث أنه مثله مثل أي تقنية يستخدم لهدف معين ، فإذا كان لديك نفس الهدف فيصبح هو الطريقة الأفضل ، أما إذا كان هدفك شئ أخر فهذا معناه أنه ليس الطريقة المثلى.

ولكي نفهم هذه النقطة بشكل جيد فيجب علينا أن نعرف ما الهدف من Task Flow أو متى يستخدم.
إن Task flow معناه أنه لدينا مهمة واحدة يتم تنفيذها بمستخدم واحد ويتم التنفيذ على أكثر من شاشة مرتبطة ببعضهم البعض.
إذا كان عندك نفس هذا المتطلب فاستخدم Task Flow ولا بأس حيث يتيح لك استخدام أداة Train التي تعطي مظهراً جذاباً للشاشات المرتبطة ، أما عدا ذلك فإن استخدام Task Flow غير مناسب ولن يعطينا أي ميزة بل بالعكس سيزيد وقت التطوير ووقت الصيانة والتعديل فيما بعد ، فمثلاً توجد العديد من الأنظمة (وأبرزها الاتصالات الإدارية) التي تعتمد على مبدأ Work Flow كما توجد العديد من الأنظمة التي يحدث فيها تدفق للبيانات Data Flow ، ويخطئ الكثيرون عندما يعتقدون أن هذا معناه استخدام Task Flow بسبب وجود كلمة Flow المشتركة وهذا خطأ كبير لأنه في أنظمة Work Flow فإن الشاشة التي نريد الانتقال إليها لا تكون شاشة ثابتة ولا تعتمد على شرط معين بل يتم تحديد الصفحة المراد الانتقال إليها في الـ run time وبالتالي لا نستطيع رسم أو تحديد Task Flow معين للبرنامج حيث أنه يتم تحديده في أنظمة Work Flow ، كما أنه في أنظمة Data Flow فإنه لا يوجد انتقال للشاشات بل يحدث انتقال للبيانات مثل تقديم طلب أجازة ثم الضغط على الزر إرسال ، فهنا تنتقل البيانات إلى المدير للموافقة ولا يتم انتقال الشاشة حيث توقفت عند هذا الحد وهذا ما يعرف باسم Business Process وهذه لا توجد فائدة من استخدام الـ Task Flow.

أيضاً يوجد خطأ كبير في مفهوم استخدام Fragments حيث أنها أيضاً ليست الحل الأمثل ، فإنك تحتاج إلى استخدامها فقط عندما يكون لديك جزء معين من الصفحة تريد مشاركته بين أكثر من صفحة أخرى بحيث أن التعديل في هذا الجزء ينعكس مباشرة على الصفحات الأخرى ولكن الحقيقة أنه عادة (خاصة في أنظمة Work Flow) فإنه صحيح توجد أجزاء مشتركة ولكن توجد بعض القواعد المختلفة بناء على نوعية المستخدم وبناء على بعض المتطلبات الخاصة المطلوب تنفيذها ولذلك نفضل أن نقوم بالسحب مرتين ، فإذا أردنا تنفيذ شئ مشترك فيمكننا فعل ذلك في الـ View Object أو عن طريق استخدام Extended View Object كما أن الدوال المشتركة يمكن تنفيذها بشكل موحد عن طريق استخدام الـ Design Pattern المعروف باسم Layer Super Type (وهو مفهوم كبير لا يتسع المجال لشرحه بالتفصيل) ، أما إذا أردنا تنفيذ وظيفة مخصصة لجزء معين فتستطيع تنفيذه في الجزء الذي تريده بدون التأثير على أجزاء أخرى.

الخلاصة:
يجب على كل من يحاول التطوير باستخدام ADF أن يتعلم كافة الخيارات المتاحة حتى يكون قراره سليم ويجب عليه استخدام الميزة المتاحة في ADF في مكانها الصحيح وليس بصورة مطلقة. بالنسبة لميزة Task Flow فنقول أنه إذا كان لديك مهمة واحدة يتم تنفيذها بمستخدم واحد ويتم التنفيذ على أكثر من شاشة مرتبطة ببعضهم البعض فاستخدم Task Flow أما عدا ذلك فاستخدم global forwards مع الحل البرمجي لتنفيذ ما تريد.

سيكون لدينا لقاءات أخرى إن شاء الله لتصحيح مفاهيم خاطئة أخرى.

تم تعديل بواسطة sd4it

بتاريخ:
  • كاتب الموضوع

يمكن الاطلاع على النسخة الإنجليزية لهذه المقالة من هذا الرابط
http://www.facebook....164909600203991

تم تعديل بواسطة sd4it

  • بعد 5 سنة...
بتاريخ:

جزاك الله خير ياباشمهندس

بتاريخ:
  • كاتب الموضوع

وإياكم إن شاء الله

بتاريخ:

 

ما شاء الله مجهود رائع وشرح مبسط 

تسلم يا بش مهندس .

بتاريخ:
  • كاتب الموضوع

الله يسلمك

انضم إلى المناقشة

يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.

زائر
أضف رد على هذا الموضوع...

برجاء الإنتباه

بإستخدامك للموقع فأنت تتعهد بالموافقة على هذه البنود: سياسة الخصوصية

Account

Navigation

البحث

إعداد إشعارات المتصفح الفورية

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.