مدخل إلى Service Oriented Architecture … SOA الجزء الأول
كتب بواسطة Talal | التصنيف BPM, SOA

إذا كنت أخي قارئ هذا الموضوع ممن يعمل في فريق تطوير كبير نوعاً ما، فلعلك تعاني من مشاكل كثيرة و التي توجد حتى في أفضل بيئات العمل و أكثرها احترافية. من أهم هذه المشاكل و التي تهم موضوعنا هذا هي تكرار العمل وعدم الاستفادة من الموارد.
فمن الوارد بشكل كبير جداً أن تقوم ببرمجة جزيئة معينة في برنامج (خدمة)، يكون زميلك الذي لا يفصل بين مكتبيكما أكثر من30 سم قد برمج نفس الجزء (الخدمة) و لكن في برنامج أخر. مثلاً لو أخذنا القطاع البنكي على سيبل المثال: أنت تبرمج عملية تحويل الأموال من حساب إلى آخر، و زميلك الذي بجانبك يقوم ببرمجة برنامج يعمل على الجوال يقوم بنفس المهمة. هناك عدة سيناريوهات للمشكلة و هي:
1. أن تقوم ببرمجة البرنامج من الصفر، و زميلك يقوم ببرمجة البرنامج من الصفر أيضاً.
2. أن تقوم أنت بمشاركة الكود مع زميلك لكي يستفيد منه. (و لكن ماذا لو كنت انت تبرمج باستخدام NET. و هو يستخدم Java)
3. أن تقوم بتحويل الكلاس الخاص بالتحويل إلى DLL مثلاً و مشاركته معه.
طبعاَ في كل الطرق الثلاثة توجد مشاكل، الطريقة الأولى مشكلتها الوقت الضائع و عدم الاستفادة من الخبرات و التجارب السابقة. أما الثانية و الثالثة، فرضاً انك قمت بمشاركة DLL معه و بعد سنه من عمل البرنامج تم اكتشاف خطأ أو Bug في الكلاس و تريد تعديله، فالحل هو تغيير الكود و حل المشكلة، و من ثم تحويل الكود إلى DLL و من ثم مشاركته مع زميلك (إذا كان موجود أصلاً) و توزيع النسخة الجديدة. (و لكن ماذا عن المستخدمين الذين يستخدمون نسخة الجوال القديمة؟)
الآن لنبدأ من جديد و ندخل في موضوعنا، و لكن قبل ذلك لنعرف ماهو Software Architecture.
Software Architecture أو SA:
في كل برنامج حاسب آلي، هناك قطع أو مكونات تجتمع لتكون ما هو معروف بالبرنامج أو النظام. الـ SA يقوم بوصف هذه المكونات و كيف تتخاطب و تتواصل هذه المكونات مع بعضها البعض. نقاط التواصل بين المكونات تسمى Connectors أو موصلات. المكونات و الموصلات، تكون مجتمعة شكل و سلوك البرنامج.
Service Oriented Architecture أو SOA
في أحيان كثيرة، تحتاج أن ترتبط بنظام آخر لكي تأخذ بعض البيانات و تستفيد منها انت و تمرر بيانات أخرى إلى نظام آخر. ففي قطاع الاتصالات مثلاً: لكي تقوم بتسديد فاتورتك من خلال موقع البنك، تقوم بالدخول إلى نظام البنك و من ثم البنك يدخل إلى نظام سداد و سداد يتواصل مع شركة الاتصالات و شركة الاتصالات تقوم بتغيير في نظام الفواتير لديها و هكذا. كل هذا يتم من خلال عملية واحدة. طبعاً لا نتوقع أن جميع هذه الانظمة تستخدم نفس التقنية، فبعضها يعمل على الدوت نت و البعض الآخر على الجافا و من الممكن بعضها يعمل على سي++ أو COBLE، هل سألت نفسك كيف تتواصل كل هذه الانظمة مع اختلاف تقنياتها؟
و كل نظام من هذه الانظمة يقدم بعض الخدمات service provider و يستفيد من أخرى service consumer. فنظام سداد مثلاً يقدم خدمة الربط إلى شركة الاتصالات و يقدمها إلى البنوك، و يستفيد من خدمة تسديد الفواتير الموجودة في شركة الاتصالات.
فمن هذا المنطلق، هناك مكونات في البرنامج تقدم خدمات كما أن هناك مكونات أخرى تستفيد من هذه الخدمات، و معرفة هذه الجزئية رغم بساطتها هي لب الـ SOA. فبدل بناء البرنامج ككتله واحدة، و كلما احتجت إلى التغيير تقوم بتعديلات كبيرة على البرنامج لأن كل تغيير يؤثر على جزئية أخرى من البرنامج، في SOA نقوم ببناء البرنامج كمكونات (إجزاء) صغيرة و كل كل جزء يقوم بمهمة محددة هي Service. فلو أخذنا مثال شركات الاتصالات أعلاه، يمكن ان تكون هناك العديد من الخدمات مثل خدمة الاستعلام عن قاتورة عميل Get Bill Information و خدمة الاستعلام عن بيانات العمل Get Customer Information و خدمة تسديد الفاتورة مثلاً و خدمة تعديل بيانات عميل و خدمة طلب خط جوال و هكذا. كل هذه مكونات مستقلة بذاتها، أي انها تكون خدمة. و أهم شيء يجب تذكرة هو أن كل خدمة تقوم بمهمة واحد فقط. و هناك شروط أخرى يجب توفرها مثل:
- أن تقوم كل خدمة بعمل مهمة واحد فقط.
- أن تكون الخدمات Loosely coupled أي غير معتمدة على بعضها البعض، و تغيير في الخدمة الأولى لا يؤثر أطلاقاً على الخدمات الأخرى.
- Abstraction أي ان الخدمة تقوم بإخفاء طريقة العمل Logic الموجود بداخلها و لكن تأخذ مدخلات Input و تعطي نتيجة أو خدمة و هي Output
- Re-usability، أي ان الخدمة يمكن اعادة استخدامها في أكثر من مكان في البرنامج (أي لا تكون مصممة لخدمة برنامج واحد فقط).
و يوجد غير ذلك أيضاً و لكن لظروف التسهيل سوف نختصر.
أتمنى أن أكون شرحت شرح موجز غير مخل إن شاء الله تعالى …
الوسوم: SOA
Business Process Modeling 101
كتب بواسطة Talal | التصنيف BPM
السلام عليكم ورحمة الله وبركاته …
كنت قد تكلمت في موضوع سابق عن مدخل إلى BPM في هذا الموضوع.
Business Process Management 101 (نظرة عامة)
و في هذا المدخل تكلمت عن دروة BPM التي تبدأ من Desgin & Model ثم Execution ثم Monitoring و أخيراً Optimization. اليوم سوف أتكلم بشيء من التفصيل عن Desgin & Model .هذه المرحلة تعتبر من أهم مراحل بناء و أتممة اجراءات العمل و لابد أن تختار هذه العملية بعناية لعدة عوامل قد تختلف من جهة لأخرى.
نحن البشر جبلنا الله على ان تكون بصريين أكثر (Visual) فنحن نفهم بشكل أكبر عندما نرى الأشياء بدلاً من شرحها بالكلام العادي. و قد أثبت انه عند رسم الإجراء Process يستطيع الناس فهمها بشكل اكبر من كتابتها بكلامنا المعتاد. و هذا شيء مهم جداً حيث اننا نحاول التقليص قدر الامكان من الغموض في الاجراء (ambiguity).
في مرحلة الـ Modeling & Desgin نبداً بتحديد الإجراء في البداية ثم نقوم برسم هذا الإجراء (هناك الكثير من الطرق لرسم الإجراء -Process- سأتطرق لها في هذا الموضوع). بعد رسم الإجراء يمكننا تخيل Process و تصور خطواتها و من المسؤول عن خل خطوة Activity. و خلال رسم هذه Process لابد من أن توضح النقاط التالية داخل الرسم:
- تعريف مسار process flow.
- الاشخاص و الانظمة التي تتعامل مع هذا الإجراء.
- التنبيهات و الاشعارات Alerts & Notifications.
- التصعيد Escalations.
- اتفاقية مستوى الخدمة Service Level Agreements.
- الوقت المتوقع لتنفيذ كل نشاط Activity.
بعد ذلك يمكن عمل محاكاة (Simulation) للالإجراء لكي توضح اي مشكلة من الممكن ان نواجهها عند التطبيق . و سوف اتكلم عن المحاكاة في وقت لاحق إن شاء الله تعالى.
بعد تنفيذ عملية المحاكاة و What-if-Analysis من الممكن ان تظهر فرص لتعديل و تطوير إجراء العمل و هنا نقوم برسم الإجراء الجديد أو To-Be-Process.
طبعاً الـ Process Model من الممكن ان يكون صغير جداً و من الممكن أن يكون كبير جداً لدرجة تصعب قرائته. Figure 1 يمثل نموذج بسيط لإجراء عمل.
و هناك مفهوم في Modeling يسمى swimlane أو مسارات السباحة (شبيهة بالمسارات التي تستخدم في المسابح الاولمبيه) … ما يميز هذا المفهوم في الرسم هو القدرة على توضيح الرسم و ربط كل Activity بالشخص أو النظام الذي سوف ينفذها مثل
كما تلاحظ في Figure 2 ربما أن الـنموذج معقد اكثر من Figure 1 و لكنه مريح في التتبع و أوضح في معرفة كل شخص أو نظام و مسؤولياته. فملاً المسؤوليات أو الإجرائات التي سيقوم المحاسب بعملها موضحة بشكل أكبر من المنوذج السابق، و كذلك الحال مع المشتري مثلاً.
Business Process Modeling Notation أو BPMN:
في رسم نماذج اجراءات الأعمال، يوجد العديد من الطرق للرسم (Notations) مثل BPMN و Flow Charts و غيرها… أما الأكثر أعتماداً و استخداماً فهو الـ BPMN . فالـ BPMN هي طريقة لرسم اجراءات العمل ليكون وسيط بين مختصين تقنية المعلومات و غير المختصين. ويوجد له هدفين أساسيين هما: سهلة الاستخدام و الفهم، كما انها توفر طريقة مرنه لرسم اجراءات عمل معقدة جداً.
من الممكن استخدام الـ BPMN في برامج كثيرة مثل MS Visio, ARIS أو Eclips. و تستطيع تحميل BPMN modeler for Eclipse من هنا. فهو مجاني و سهل الاستخدام.
عند رسم الـ BPMN يوجد اربعة انواع من العناصر هي:
- Events أو الأحداث و هي Start و End أو حدث وسيط (سوف نتكلم عنه لاحقاً)
- Activity وهي الاجراءات نفسها مثلاً Task أو Approve كما انها من الممكن ان تكون اجراء منفصل Sub-Process.
- Gateways و هي التفرعات و الشروط في اي اجراء عمل.
- Connections و هي التي تربط الثلاثة أنواع السابقة ببعض و هي اما ان تحدد الخطوة السابقة و اللاحقة او رسالة من خطوة إلى أخرى مثلاً.
و لجعل النمذجة بالـ BPMN غنية بشكل أكبر، فهي تدعم Swimlanes التي تحدثنا عنها سابقاً و الـ Artifacts مثل Data objects، Groups و Annotations. مثلاً الـ Data Object توضح لقارء الرسم معرفة البيانات الواجب توفرها لتنفيذ عملية معينة Activity.
الرسم التالي يوضح كامل العناصر التي تدعمها BPMN:
و الصورة التالية توضح نموذج رسم بسيط باستخدام BPMN:
أما الصورة التالية توضح عملية التصويت في اتخاذ القرار باستخدام BPMN أيضاً:
في الختام اود التنويه إلى أن موضوع النمذجة أو Modeling موضوع كبير جداً و يدرس كمادة منفصلة في كثير من الجامعات و لكن هنا احببت ان اعطي نبذه بسيطة عنها و عن الـ BPMN. أو أود أن اشدد في الختام أن المستخدم أو Business هو الشخص اللذي له الكلمه في تحديد مسار الاجراء و التحكم الكامل به، و نحن وظيفتنا هنا تكمن في المساعدة و توثيق اجراءات العمل لدية.
أتمنى ان يكون الموضوع مفيد، و أن لا يكون اختصار مخل بالمادة العلمية و لمزيد من المعلومات لا تترد أخي الكريم في السؤال او قراءة كتب مختصة في المجال.
تحياتي … طلال.
تثبيت و تنصيب Oracle SOA Suite 11g R1 (الجزء الثاني)
كتب بواسطة Talal | التصنيف BPM
السلام عليكم ورحمة الله وبركاته …
تكلمت في الموضوع السابق عن (تثبيت و تنصيب Oracle SOA Suite 11g R1 (الجزء الأول)) و اليوم سوف أقوم باستكمال الموضوع ببعض التعريفات و التغييرات البسيطة لكي يعمل الموضوع كما يجب.
بعد إكمال الجزء الأول، من المفترض ان يعمل لديك البرنامج كما يجب. و لكن قبل تشغيل البرنامج سوف نقوم بعمل بعض التعريفات و الخصائص لكي يعمل البرنامج بشكل أفضل.
حدود الذاكرة:
كما قد ذكرت سابقاً، برنامج Weblogic و SOA Suite و Oracle DB ليست برامج خفيفة على الجهاز، و قد تؤثر بشكل كبير جداً على أداء جهازك خصوصاً إذا كانت الذاكرة RAM تحوي 2 أو 3 GB. لذلك من الأفضل تحديد حدود للذاكرة.
اذهب إلى المسار التالي: D:\Oracle\Middleware\user_projects\domains\domain1\bin و قم بتغيير المسار حسب مسار التثبيت لديك في جهازك.
و بعد ذلك اكتب الأمر: SOADomainEnv.cmd ثم اكتب الامر التالي بعد ذلك: set DEFAULT_MEM_ARGS=-Xms512m -Xmx512m
و هذا الأمر يحدد الذاكرة بمقدار 512 MB فقط، و يمكنك تعديل ذلك ليكون القيمة المناسبة لك مثلاً 1024 أو أكبر حسب مواصفات جهازك أو السيرفر.
تشغيل و اطفاء الـ Weblogic:
لتجنب ادخال اسم المستخدم و كلمة المرور في كل مرة تقوم بتشغيل و اطفاء weblogic قم بالذهاب إلى المسار التالي:
D:\Oracle\Middleware\user_projects\domains\domain1\servers\AdminServer\security
ستجد ملف اسمه boot.properties قم بفتحه بالـ notepad و قم بكتابة اسم المستخدم و كلمة المرور weblogic و welcome1 (او كلمة المرور التي اخترتها اذا لم تختر welcome1).
لتشغيل WebLogic اذهب START ثم اتبع كما هو موجود في الصورة:
او اذهب إلى المسار التالي: cd C:\Oracle\Middleware\user_projects\domains\domain1 ثم اكتب الامر startWebLogic.cmd.
انتظر فتشغيل weblogic من الممكن أن يأخذ حوالي 3 دقائق (قد يختلف حسب مواصفات جهازك). عندما ترى في الشاشة السوداء كلمة RUNNING حينها يكون قد اشتغل Weblogic.
إذا طلب منك اسم مستخدم و كلمة مرور، ادخل weblogic و welcome1.
في هذه المرحلة من المفترض ان يكون adminserver الخاص بالـ Weblogic يعمل و لكن لابد من تشغيل SOA و BAM (Manage Server) و ذلك عن طريق الذهاب إلى المسار التالي في cmd.
CD D:\Oracle\Middleware\user_projects\domains\domain1\bin
ثم اكتب الامرين
startManagedWebLogic.cmd bam_server1
startManagedWebLogic.cmd soa_server1
و إذا طلب منك اسم مستخدم و كلمة مرور استخدم weblogic و welcome1.
روابط الإدارة:
الروابط التالي هي الروابط التي سوف تحتاجها للدخول و ادارة weblogic باسم المستخدم weblogic و كلمة المرور welcome1.
- Weblogic console: http://localhost:7001/console
- Enterprise Manager console: http://localhost:7001/em
- SOA worklist: http://localhost:8001/integration/worklistapp
- B2B console: http://localhost:8001/b2b
- BAM (must use IE browser): http://localhost:9001/OracleBAM
و لكي تغلق أو تطفئ السيرفر، قم باطفاء عمل soa و bam في الأول عن طريق الذهاب إلى نافذة cmd الخاصة بهما و الضغط على Ctrl و الحرف C. و بعد ذلك اذهب إلى نافذة AdminServer و افعل نفس الشيء.
و الصورة التالية توضح شكل Enterprise Manager console و كيف ان الدومين و admin server و manage server جميعها تعمل.
تعديل بعض الخضائص الخاصة بالـ WebLogic Server console.
- اذهب الى الرابط التالي: http://localhost:7001/console
- اذغط على Deployments في القائمة اليسرى.
- اضغط على Customize this table.
- في Number of rows displayed per page اختر 100 مثلاً.
- اختر Exclude libraries when displaying deployments و اضغط على Apply.
تحديد أن SOA مستخدم في التطوير Development
- اذهب الى الرابط التالي http://localhost:7001/em
- اضغط بزر الفأرة اليمين على soa-infra (soa_server1) في القائمة اليسرى.
- اختر من القائمة المنسدلة SOA Administration | Common Properties.
- اختر Audit Level ليكون Development. و اختر ايضاً الخيار Capture Composite Instance State.
- اضغط على Apply ثم في النافذة اختر OK.
الآن من المفترض ان البيئة ككل تعمل بشكل سليم. و في الدروس القادمة سوف نأخذ مثال تطبيقي عملي عن استخدام SOA Suite و BPEL.
أتمنى ان يكون الدرس مفيد.
الوسوم: BPM, Oracle, Oracle SOA, WebLogic









