مقدمة
باستخدام WWF، يمكنك إنشاء مهام سير عمل تعتمد على تدفق المعالج ونشرها في أي نوع من تطبيقات .NET. بالإضافة إلى ذلك، تتناول هذه المقالة بعض المشكلات الفريدة التي يواجهها مطورو ASP.NET - المشكلات التي يمكن حلها من خلال استخدام مهام سير العمل، مثل الحفاظ على الحالة والتنقل بين الصفحات.
في سبتمبر 2005، كشفت Microsoft النقاب عن Windows Workflow Foundation (WWF، Windows Workflow Foundation) في مؤتمرها نصف السنوي للمطورين المحترفين. باعتبارها واحدة من ركائز WinFX API، توفر WWF للمطورين إطارًا مشتركًا يمكنهم من خلاله تطوير التطبيقات التي تعتمد على العمليات والتي تركز على سير العمل.
حاليًا، تحاول بعض المؤسسات أتمتة العمليات التجارية بأكملها؛ وتتمثل إجابتها القياسية في تجميع فريق من المطورين لتطوير التعليمات البرمجية المقابلة. على الرغم من أن هذا النهج يعمل بشكل جيد لهذه المنظمات، إلا أن هناك بعض المشاكل المتأصلة. من أجل فهم هذه المشكلة بعمق، تحتاج إلى فهم الخصائص الأساسية لسير العمل.
يعد سير العمل في الأساس طريقة لأرشفة الأنشطة المتضمنة في إكمال وحدة العمل. عادةً، أثناء المعالجة، "يتدفق" العمل من خلال نشاط واحد أو أكثر. يمكن تنفيذ هذه الأنشطة بواسطة الآلات أو البشر، وقد تكون بسيطة مثل تحديد ترتيب الصفحات في أحد تطبيقات الإنترنت، أو معقدة مثل إدارة مستند أو منتج يجب رؤيته وتغييره والموافقة عليه من قبل أي عدد من الأشخاص. معقد.
نظرًا لأن الكثير من عمليات سير العمل يجب أن تسمح بالمشاركة البشرية، فقد يستغرق إكمالها وقتًا طويلاً، يتراوح من بضع ساعات إلى أشهر أو أكثر. على سبيل المثال، قد لا يكون الأشخاص المشاركون في العملية متاحين، أو ليسوا محليين، أو مشغولين بمهام أخرى؛ لذلك، يجب أن يكون سير العمل قادرًا على الاستمرار خلال كافة فترات عدم النشاط. علاوة على ذلك، قد يكون من الصعب على الأشخاص غير التقنيين فهم العمليات التي يتم تنفيذها بشكل مستقل من خلال البرمجة، ويصعب على المطورين تغييرها. هذه العوامل وغيرها هي بالضبط هدف أطر سير العمل العامة مثل Windows WF - والتي تهدف إلى تسهيل إنشاء مسارات العمل وتغييرها وإدارتها - إما عن طريق تزويدها بواجهة مرئية أو عن طريق تحديد مجموعة مشتركة من واجهات برمجة التطبيقات (APIs).
يمكنك وضع مسارات عمل WWF في أي نوع من تطبيقات .NET - بما في ذلك نماذج Windows وتطبيقات وحدة التحكم وخدمات Windows وتطبيقات ويب ASP.NET. كل نوع يتطلب اعتبارات متخصصة. على الرغم من أن بعض الأمثلة الموجودة كافية لتوضيح كيفية استضافة مهام سير العمل في نماذج Windows وتطبيقات وحدة التحكم، إلا أن هذه المقالة ستركز على المشكلات التي يواجهها مطورو ASP.NET الذين يرغبون في دمج مهام سير العمل في تطبيقاتهم الخاصة.
ملاحظة المؤلف: تم إنشاء التعليمات البرمجية المتوفرة في هذه المقالة باستخدام Windows WF Beta 1 وVisual Studio 2005 Beta 2. يمكنك العثور على معلومات حول تثبيت Windows WF على www.windowsworkflow.net . على الرغم من أن هذه المقالة تناقش بعض أساسيات Windows WF، إلا أن هناك موارد أخرى متوفرة في هذا المجال. أفترض أن القارئ يعرف على الأقل القليل عن Windows WF. الغرض من هذه المقالة هو تحليل Windows WF وASP.NET بعمق، بدلاً من مناقشة Windows WF من مستوى عالٍ.
1. أنماط Windows WF وMVC
عند تطوير تطبيق ASP.NET، إحدى الطرق الشائعة التي قد تستخدم بها WWF هي تنفيذ أسلوب التحكم في عرض النموذج (MVC). في الأساس، هدف MVC هو فصل طبقة العرض ومنطق التطبيق ومنطق تدفق التطبيق.
سيكون فهم ذلك مفيدًا جدًا عند تطوير تطبيق ASP.NET، يرجى التفكير في مكان سير عمل تذكرة مكتب المساعدة. افترض أن مستخدم الأعمال يبدأ سير العمل هذا عن طريق ملء نموذج ويب ASP.NET والنقر فوق زر إرسال. بعد ذلك، يقوم الخادم بإعلام الموظف باستخدام تطبيق Windows Forms ومكتب المساعدة بأن "تذكرة جديدة متاحة". سيقوم موظف مكتب المساعدة بعد ذلك بالعمل على حل المشكلة وإغلاق التذكرة في النهاية. إذا كنت تستخدم Windows WF لتطوير سيناريو سير العمل هذا، فيمكن تضمين كل منطق المعالجة والتدفق في سير العمل نفسه، ولن يحتاج تطبيق ASP.NET إلى فهم هذا المنطق على الإطلاق.
يوفر هذا النوع من الأماكن بعض الأدلة القوية - ففصل الوصف عن المنطق أمر جيد. نظرًا لأن عملية التعامل مع طلبات مكتب المساعدة هذه أمر عادي جدًا، إذا كنت تستخدم تعليمات برمجية C# أو VB.NET لتنفيذ هذا المنطق في العديد من تطبيقات .NET المختلفة، فسوف تتعرض لخطر تكرار التعليمات البرمجية أو ما هو أسوأ - باستخدام خيوط تعليمات برمجية مختلفة تمامًا لتطبيقات مختلفة لنفس العملية التجارية. ولكن إذا كنت تستخدم WWF لتنفيذ هذه العملية، فإن مطوري التطبيقات الذين يحتاجون إلى هذه العملية سيحتاجون فقط إلى تعديل الخطوات في مكان واحد - سير العمل نفسه - دون الحاجة إلى القلق بشأن تغيير منطق التطبيق. يمكن تسهيل تكرار التعليمات البرمجية ومكان تنفيذ هذه العملية من خلال استخدام Windows WF.
عند تنفيذ بنية MVC في ASP.NET باستخدام Windows WF، يجب على المطورين محاولة إنشاء مهام سير عمل مستقلة عن التطبيق - بينما لا يزال سير العمل مستضافًا داخل التطبيق. سيساعد هذا في الحفاظ على المنطق مستقلاً عن الوصف والحفاظ على درجة عالية من الاستقلال بين تسلسل خطوات العمل وتدفق الصفحة في تطبيق الويب.
قد يحاول مطور WWF الجديد تطوير سير عمل بعدد ثابت من الأنشطة بترتيب معين، ثم تطوير مجموعة من نماذج ويب ASP.NET التي تتدفق من نموذج إلى آخر بنفس الترتيب. لسوء الحظ، على الرغم من أن هذا يبدو منطقيًا، إلا أنه في الواقع غير منتج للغاية لأنك ستقوم بتنفيذ منطق سير العمل مرة أخرى. لا تحتاج صفحة الويب X إلى معرفة ما إذا كانت تحتاج إلى الانتقال إلى الصفحة Y أو الصفحة Z لتنفيذ خطوة سير العمل هذه بشكل صحيح. بدلاً من ذلك، يجب أن يخبر سير العمل (النموذج) ASP.NET (وحدة التحكم) بما يجب فعله بعد ذلك؛ ثم يجب أن يقرر ASP.NET الصفحة التي سيتم عرضها. بهذه الطريقة، بالكاد تحتاج كل صفحة إلى فهم العملية بأكملها؛ فهي تحتاج فقط إلى معرفة كيفية إكمال نشاط مختلف والسماح لسير العمل بالاهتمام بكيفية تدفق الصفحة من مكان إلى آخر. يمنح هذا الفصل المطورين قدرًا كبيرًا من المرونة عند التعامل مع تدفق الصفحة. على سبيل المثال، إذا قررت تغيير الترتيب الذي يتم عرض الصفحات به، فيمكنك القيام بذلك بسهولة من داخل سير العمل دون تغيير سطر واحد من التعليمات البرمجية في تطبيق ASP.NET.
2. مثال بسيط لسير العمل على MVC
لتوضيح هذه الفكرة، سأعرض لك تطبيق ASP.NET بسيطًا وسير العمل. يصف سير العمل المبسط هذا عملية تجمع بعض المعلومات الخاصة من تطبيق خارجي ثم تعرضها. الخطوات هي كما يلي:
1. استدعاء أسلوب - وهذا يعني طلب اسم الشخص؛ يستخدم سير العمل هذا نشاط InvocMethod (انظر الشكل 1).
2. انتظر حتى يتم تشغيل الحدث - وهذا يعني تلقي اسم؛ في هذه الخطوة، يستخدم سير العمل نشاط EventSink.
3. احصل على عنوان بريد إلكتروني من المضيف باستخدام مكالمة مماثلة.
4. انتظار حدث ما يعني تلقي عنوان.
5. بعد تلقي الاسم والبريد الإلكتروني، يبدأ سير العمل نشاط InvocMethod لإرسال المعلومات الشخصية إلى تطبيق الاتصال. في موقف العالم الحقيقي، هذه الخطوة الأخيرة ليست مهمة للغاية. على الأرجح، ستتصل بخدمة ويب لإرسال البيانات إلى نظام آخر، أو وضعها في قاعدة بيانات.