الثلاثاء، 1 ديسمبر 2009

دروس حول WebUtil و استخداماتها

سأبدأ بإذن الله بمجموعة من الدروس الاختصاصية التي تتناول Oracle devloper 9i و سأبدها بعون الله بهذا الدرس الذي سيكون حول سيكون حول WebUtil و كيقية تثبيتها و التعامل معها وممعرفة إمكانيات هذه الأداة
و سنبدأ بعونه تعالى :


ما هو 3Tier :
مع ظهور oracle forms 9i و ما بعد أطلت علينا أوراكل بنمط جديد أسمته 3tier أو السلسلة :
oracle Server (قاعدة البيانات ) ------ Application Server (الجهاز الذي نضع عليه برامجنا )---Cleint (المستخدم )
أي أن أيام developer 6i قد ولت إلى غير رجعة ... فحينها لم نكن نحتاج إلى ثلاثة مكونات و إنما كان يكفي تثبيت Oracle Server على الجهاز الرئيسي و Oracle Forms Run Time على جهاز client و انتهت المشكلة و اصبح لدينا برنامج يعمل بكفاءة عالية ... و لكن الأمور أختلفت الآن و السبب أن أوراكل أرادت تخفيف الضغط عن جهاز السيرفر الذي يحوي القاعدة و السبب أن جميع مستخدمي Oracle Forms و مستخدمي القاعدة بشكل أساسي (pl sql ---sql – Database Administration ( سينفذون أعمالهم على oracle Server و هذا ما يؤدي إلى ضغط كبير على المخدم و يؤدي في حالات كثير إلى عملية إختناق بسبب كثر ة الطلبات ... إضافة إلى ذلك أنه في الماضي كنا نضطر إلى تنصيب أوراكل client و Oracle Forms Runtime في كل جهاز عميل client و هذه مصيبة كبيرة لأنه لو أردات أوراكل للـ Oracle Forms أن يكون مستقبلاً من أقوى أدوات برامج الويب Internet Application لوجب على كل مستخدم تثبيت ما سبق على جهازه <_< ..... إذا من الأسباب السابقة توجهت أوراكل إلى ما يسمى oracle Application Server لكي يكون المنصة التي نقوم بعملية نشر deploy لبرامجنا .fmx و عندها لن نضطر إلى تثبيت أي شيء على جهاز العميل سوى مستعرض الانترنت الداعم لتطبيقات الجافا و تطبيق صغير يدعى jInitiator ( جافا انشياتور ) لا يتجاوز حجمه 7.00 ميغا بكل بساطة إذن لنوجز الكلام : لكي يكون لدينا تطبيق يعمل يجب علينا مايلي : 1- تثبيت أوراكل سيرفر ( القاعدة ) 2- تثبيت Application Server 3- تثبيت مستعرض انترنت (مثل متصفح ويندوز العظيم IE ) بالإضافة لــ jInitiator >>>
أعلم الآن أن الرسائل سوف تهطل علي كالمطر و ردود الاستهجان و إلخ و السبب : أن الجميع سيقول : إنني أعمل حالياً على Oracle froms و تطبيقاتي تعمل بشكل ممتاز و لم أحتج لكل " الزعبلات" التي تحدثت عنها سابقاً
و الرد : أن أوركل حتى لا تتعب المبرمج بعملية أنه كلما قام بتعديل على برنامجه يجب عليه تحميله على application server ثم تجربته (و هذه عملية متعبة ) قامت بكل بساطة بتضمين جزء من Application Server مع تنصيب Oracle Developer Suite أي انك و بدون أن تدري قد أصبح لديك Oracle Application Server (بالمعنى الموجز ) مثبت على جهازك .....
إذاً ما الحاجة إلى WebUtil :
بسبب البنية السابقة إذاً لم يعد المبرمج فعلياً يتعامل مع client و إنما أصبح تعامله مع Application Server أي لو كان لدينا تطبيق يقوم بالقراءة من ملف فإننا في 6i كنا نقرأ من جهاز الكلاينت أما في 10g فإننا نقرأ من جهاز Application Server !!!!!!!!!!
عندها توجهت أوراكل إلى تنبيه مبرمجي Forms إلى ضرورة استخدام JavaBean في تعاملهم مع client و بالتاي ستضطر إلى استخدام java أو مكونات component جاهزة لتنفيذ ما تريد .. و هذا ما أثار موجة غضب المبرمجين الذي لا يعلمون شيئاً عنjava و بدأ التذمر و اضحاً في منتديات أوراكل مما حدا oracle إلى إصدار أداة جديدة قامت بتسميتها بـ WebUtil .....
إذاً :
WebUtil هي أداة تسمح بعملية تنفيذ أوامر مباشرة على جهاز client دون أن يضطر المبرمج إلى كتابة حرف واحد من java ... تتألف من صفوف جافا و أغراض فورم و pl/sql Api ....
إن WebUtil لا تنصب تلقائياً مع أوراكل ديفيلوبر و إنا يجب تنصيبها منفصلة ... معلومات عن تحميلها و كيفية تنصيبها نجدها على الرابط التالي :


http://otn.oracle.com/products/forms/htdocs/webutil/webutil.htm
ما الذي تقدمه WebUtil :
1- قراءة و كتابة الملفات على جهاز client .. مع إمكانية استعراض الملفات من جهاز الكلاينت
2- نقل الملفات بين الكلاينت – Application Server ----- Database ..
3- قراءة متحولات الكلاينت (مثل قيم Registry ) ..
4- التوافقية مع برامج C أي تنفيذها على جهاز client ..
5- تنفيذ أوامر نظام على جهاز client ( طبعاً ليس عمليات format !!!!!! حتى لا يفكر أحد بالإختراق و الأذى) ...
6- التعامل مع مستعرض الانترنت كمثال إظهار رسائل على المستعرض ...
و إذا لم تجد حاجتك فعندها أنت مضطر لكتابة جافا ....


تركيب Webutil :
تعد عملية التركيب من أصعب ما واجهت في عمليات التركيب في لغات البرمجة كاملة و ما فاجئني حقاً هو غموض manual الذي يأتي مع webutil و أخطائه العديدة ... و بعض جهد جهيد و عمل متواصل و سؤال هنا و هناك حتى فكت طلاسم التركيب و تم الأمر و فعلاً فإن استخدام هذه الأداة ينسيك كل ما عانيته في عملية التركيب لإنها تتيح لك مجالاً واسعاً للإستفادة من قوة Developer Suite 10g and 9i .....
و لنبدأ :
يمكنك تركيب webutil سواء على application server الذي ستقوم بعملية deploy لبرنامج عليك أو عملية التركيب على Developer من أجل التجربة و التركيب على الإثنين متماثل في الخطوات ..
أولاً : عليك تحميل webutil من هنا :
http://www.oracle.com/technology/software/products/forms/files/webutil/webutil_106.zip
ثانياً عليك تحميل ملف jacob :
http://prdownloads.sourceforge.net/jacob-project/jacob_18.zip


و سنرى عمله بعد قليل بإذن الله ...
بعد التحميل و فك الضغط ستجد ليدك مجلدين : webutil106 و Jacob ...
و لنبدأ هذه العملية الطويلة و المملة فعلاً :


1- انسخ مجلد webutil الموجود داخل webutil106 إلى المسار DeveloperHome\forms90 ..
2- انسخ الملف jacob.dll إلىالمسار السابق و الملف jabcob.jar داخل oraclehome\forms90 \java .. كلا الملفين تجدهما في الملف المضغوط jabcob ...
3- داخل المجلد webutil106\java ستجد الملف frmwebutil.jar انسخه إلى المجلد DeveloperHome\forms90\java ..
4- داخل الملف Developer\j2ee\DevSuite\application-deployments\forms\forms90web قم بإضافة التالي :



لا تنسى أن تستبدل المسار بالمسار الموجود لديك


-داخل الملف Developer\ forms90\ server\server\formsweb.cfg يوجد مايسمى [default] ( و هي القيم الإفتراضية التي تهم التطبيق ) قم بإضافة مايلي :
archive_jini=f90all_jinit.jar,frmwebutil.jar,jacob.jar
archive=f90all.jar


و قم بإضافة :
[webutil]
WebUtilLogging=off
WebUtilLoggingDetail=normal
WebUtilErrorMode=alert
WebUtilDispatchMonitorInterval=5
WebUtilTrustInternal=true
WebUtilMaxTransferSize=16384
baseHTMLjinitiator=webutiljini.htm
baseHTMLjpi=webutiljpi.htm
baseHTML=webutilbase.htm
archive_jini=frmall_jinit.jar
WebUtilArchive=frmwebutil.jar,jacob.jar,f90all.jar
archive=frmwebutil.jar,f90all.jar
lookAndFeel=oracle




5- افتح الملف developer\forms90\server\default.env
قم بإضافة :
FORMS_PATH=D:\oracle\product\10.1.0\Developer\forms90;D:\oracle\product\10.1.0\Developer\forms90\webutil
WEBUTIL_CONFIG=D:\oracle\product\10.1.0\Developer\forms90\server\webutil.cfg


و ستجد في نفس الملف CLASSPATH قم بإضافة ما يلي إليه :


;D:\oracle\product\10.1.0\Developer\forms90\java\jacob.jar;D:\oracle\product\10.1.0\Developer\jdk\jre\lib\rt.jar;D:\oracle\product\10.1.0\Developer\forms90\java\frmall.jar;D:\oracle\product\10.1.0\Developer\forms90\java\frmwebutil.jar;


استيدل سطر path بما يلي :
PATH=d:\oracle\product\10.1.0\Developer\jdk\bin;d:\oracle\product\10.1.0\Developer\jdk\jre\bin\classic;d:\oracle\product\10.1.0\Developer\jdk\jre\bin; d:\oracle\product\10.1.0\Developer\jdk\jre\bin\client;d:\oracle\product\10.1.0\Developer\jlib;d:\oracle\product\10.1.0\Developer\bin;d:\oracle\product\10.1.0\Developer\jre\1.4.2\bin\client;d:\oracle\product\10.1.0\Developer\jre\1.4.2\bin;
d:\oracle\product\10.1.0\Developer\bin;d:\oracle\product\10.1.0\Developer\jdk\jre\bin\client


ملا حظة هامة جداً : لا تنسى استبدال المسارات الموجودة بالمسار الذي لديك ...


6-افتح الملف devloper\forms90\server\webutil.cfg و قم بإضافة ما يلي إلى نهاية الملف :
transfer.database.enabled=TRUE
transfer.appsrv.enabled=TRUE




7 - ستجد الآن ملف sign_webutil.bat ( دفعي ) داخل مجلد webutil قم بتنفيذه بالشكل :
أ – من run في القائمة start اكتب cmd ثم Enter ..
ب- انتقل إلى المسار الذي يحوي الملف السابق ثم اكتب :
sign_webutil.bat DeveloperHome\forms\java\frmwebutil.jar
sign_webutil.bat DeveloperHome\forms\java\jacob.jar
لا تنسى استبدال المسار ..


و يستخدم الملف السابق من أجل تسجيل jacob و webutil.jar ..


8 - و أخيراً : آخر خطوة و هي إنشاء packages التي تساعد في عملية التعامل مع القاعدة من ناحية التحميل و التخزين داخل القاعدة ...إلخ ( سنتعرف عليه في الدروس اللاحقة بإذن الله ) ...
لديك خيارين لإنشاء الحزمة :
1- إما إنشاءها على مستخدم وحيد و بالتالي ستضطر إلى استعما حسابه في كل برنامج تقوم بتنفيذه ...
2- أو أن تنشأها على حساب جديد (لنسميه webutilowner ) ثم نقوم بمنح الصلاحيات لتنفيذ الحزم للجميع أي public ....
المهم قم بتنفيذ الخيار الذي تريد و بذلك بتنفيذ الملف create_webutil_db.sql الموجود داخل المجلد webutil106 ...


سوف نبدأ الآن بمثال بسيط حول webutil لنستطلع إمكانيات هذه الأداة المميزة :
1- من القائمة file اختر new ثم form ...
2- إضغط على attached library ثم زر + لإضافة مكتبة webutil.pll التي تجدها داخل المجلد webutil106 و عندما تظهر رسالة "هل تريد إزالة المسار " إختر لا
3- من القائمة file اختر open ثم قم بفتح webutil.olb ستجدها في object libraries .. اضغط بالزر الأيمن و اختر object library فتظهر نافذة .. قم بسحب webutil من النافذة إلى object library داخل module فتظهر رسالة اختر منها subclass ..
الخطوات الثلاثة السابقة يجب أن تنفذها كل مرة تقوم بإنشاء تطبيق يستخدم webutil ..
4 – اضف زر إلى module و قم بتسميته " أظهر معلومات الأداة التي عقدتني في تركيبها " ....
5- في الtrigger : when-button-pressed الذي انشأته على الزر السابق قم بإضافة الكود التالي :


show_webutil_information (TRUE);


ووظيفة هذا الكود هو إظهار معلومات حول إصدار webutil المثبت حالياً ...
6- قم بتشغيل Run للفورم ثم إضغط على الزر لتر النتيجة
7- أغلق Browser ..


ملا حظة مهمة للأخوة : الطريقة التي ذكرنها تطبق على devloper 9i في حالة developer 10g استبدل f90all.jar بــfrmall.jar
بالنسبة إلى ملف webutil.cfg تجده في مجلد webutil106\server ..
بالنسبة إلى ملف jvm.dll فتوجد مشكلة لديك ولا أستطيع الآن أن احددها لك





- فتح نافذة للإستعراض من ملف المستخدم :
CLIENT_GET_FILE_NAME(Directory name , file name , File Filter , Message , Dialog Type , select file );


حيث :
Directory name : اسم المجلد الإفتراضي الذي سيظهر مباشرة ( قيمته الإفتراضية هي مجلد المستخدم ) .
File Name : اسم الملف الذي سيتم تحديده بشكل إفتراضي ,
File Filter : ما هي الملفات التي نريد من المستخدم تحديدها فقط . أي إذا كنا نريد من المستخدم تحديد ملف صورة : ' Gif File |*.gif| JPG Files | *.jpg | ' .
Message : و هو اسم النافذة التي ستظهر .
Dialog Type : و هو نوع النافذة : إما فتح ملف open_file أو حفظ ملف save_file .
Select File : يعني هل نريد من المستخدم تحديد ملف أو مجلد بأكمله . إذا وضعنا True فإنه يسمح بتحديد ملف واحد أما إذا وضعنا False فإنه يستطيع تحديد مجلد بأكمله ..
مثال :


CIENT_GET_FILE_NAME('','','Gif Files |*.gif| ' , 'Please Select a File ' , open_file , True);




2- قراءة ملف الصورة من جهاز المستخدم :
CLIENT_IMAGE.READ_IMAGE_FILE(file_name , file_type , item_id or item_name );




حيث :
1- File_name : المسار الكامل للملف الذي نود قراته .
2- file_type : نوع الملف و يجب أن يكون من الأنواع التالية : BMP , CALS , GIF, JFIF , JPG , PICT , RAS, TIFF .
3- item_id و هو الرقم الفريد الذي يعطيه Oracle Forms ل Image_item عندما نضعه على Form .. يمكنك و ضع اسم image_item بدلاً عن ذلك الرقم ..


التطبيق :
1- نفذ جميع الخطوات التي تحدثنا عنها في الدرس الماضي من حيث إنشاء form جديد و ووضع Webutil .. إلخ .
2- ضع زراً على الفورم و لنسمه upload_picture ، و ضع أيضاً image item على الفورم و سمه Client_picture و إجعل الإثنين داخل Control Block و سمه photo ..
3- في حدث الضغط على الزر upload_picture :


declare
v_file varchar2(250):= CLIENT_GET_FILE_NAME('','','gif Files | *.gif|JPG |*.JPG|' , 'Select a file to upload ' , open_file , True);
image_id ITEM:=FIND_ITEM('photo.client_image');
begin
CLIENT_IMAGE.READ_IMAGE_FILE(v_file , '', image_id);
end;




تطبيقنا اليوم سيكون حول كتابة file Text على جهاز الكلاينت و هذا الملف هو عبارة عن ملف bat أي دفعي و سنقوم بتنفيذه على جهاز الكلاينت أيضاً :
سنعتمد اليوم على :
1- الحزمة CLIENT_TEXT_IO : و هي الحزمة التي نستطيع إستخدامها لكتابة و حتى قراءة ملفات نصية موجودة على جهاز الكلاينت .
2- الإجرائية CLIENT_HOST و هي الإجرائية التي نستطيع تنفيذ أوامر على جهاز الكلاينت و هي نوع الأوامر التي يتم تطبيقها بواسطة محرر الأوامر Command Prompt .


سأذكر التطبيق الآن ثم سأقوم بشرحه :




declare
our_folder_path varchar2(50) :='c:\temp';
output_file CLIENT_TEXT_IO.FILE_TYPE;
begin
output_file :=CLIENT_TEXT_IO.FOPEN(our_folder_path || '\myfile.bat','w');
CLIENT_TEXT_IO.PUT_LINE( output_file , 'echo Hi From webutil in the server .. it is soo easy to write a file on you computer , soo be carefaul .I will see what on you c drive : ' );
CLIENT_TEXT_IO.PUT_LINE( output_file , 'dir c:' );
CLIENT_TEXT_IO.FCLOSE(output_file);
CLIENT_HOST('cmd /c ' || our_folder_path ||'\myfile.bat' );
end;




الآن :
1- our_folder_path هو مسار المجلد الذي نريد وضع الملف داخله .
2- output_file : هو متحول من النمط المعرف FILE_TYPE الموجود داخل الحزمة CLIENT_TEXT_IO و هو مقبض الملف الذي سنتعامل معه في عملية الكتابة .
3-الإجرائية put_line من الحزمة CLIENT_TEXT : و هي مخصصة للكتابة على الملف و تأخذ وسيطين : مقبض الملف و العبارة التي نريد كتابتها على الملف .
4-FCLOSE : من إسمها لإغلاق الملف .
آمل أن يكون التطبيق واضحاً و أن يستفيد الجميع من أفكاره ..



0 التعليقات:

إرسال تعليق

Bookmark and Share

أقسام المدونة

2015 (1) أبراج (44) اتصالات (113) أحياء (1) اخبار (136) اخطاء (1) ادسنس (2) ادعيه (7) أزواق (1) إستخراج (1) إسرائيل (7) اسرار (1) أعشاب (19) أعياد (1) أغانى (7) أفريقيا (1) أفكار (2) أفلام (4) إقتصاد (19) الأردن (2) الأرض (12) الاسره (1) الأطفال (33) الإلكترونيه (3) الألوان (1) الأنبياء (1) البحرين (1) البشرة الدهنيه (1) البيئة (14) الترتيب (1) الجزائر (2) الجن (1) الربح (7) الرجل (40) الرسول (12) الزواج وأنواعه (31) السعوديه (10) الشبكة (9) الشعر (30) الشمس (6) الشوربات (19) الشيطان (2) الصيف (1) الصين (2) ألعاب (3) العالم (19) العراق (3) العنكبوتيه (1) الفراسه (6) القمر (4) القنوات الأجنبية (3) الكويت (1) الله (20) ألمانيا (2) المرأه (96) المغرب (2) المنصورة (2) الهجرة (7) الهند (2) الهيدروجين (1) أمثال (1) أمراض_الجسم​ (1) أمريكا (10) إنجلترا (1) أوراكل (4) أوروبا (1) إيران (2) إيميلات (5) باكستان (1) بترول (1) بحث (4) برامج (29) برمجة (6) بريطانيا (2) بسكلته (5) بشرتك (10) بطاقات (1) بناء (1) بنوك (2) بورصة (23) تاريخ (45) تحب (3) تحضير (1) تخسيس​ (1) ترددات (15) تركيا (1) تركيب (1) تساقط (8) تطوير المواقع (29) تعريفات (16) تعليم (43) تفاحة​ (1) تفاحة_فى_اليوم​ (1) تكنولوجيا (44) تلوث (3) توقعات (12) تونس (1) تونس. سفارات (1) ثورة (1) جمال (4) جوال (1) جوجل (19) حذف الباتش (1) حساسية (2) حشرات (1) حقائق (1) حقيقه ام خيال (23) حقيقه_وخيال​ (1) حكم (1) حيوانات (5) خضروات (8) خلق (2) دبى (2) دليل (2) دورات أمن المعلومات (19) دورة (4) ديكور (1) دين (120) ذهب (2) رسائل (1) رمز (1) رمضان (9) روسيا (3) رياضه (14) زراعه (9) زيادة (1) سامسونج (1) سفارات (5) سلامة (1) سندوتشات (2) سوريا (1) سويسرا (1) سيارة (6) شخصيات (64) شخصيتك (18) شركات (32) شعر (5) شمس (3) صحتك (289) صلصه (5) صناعة (1) صور (11) طائرات (2) طاقة (3) طاقه المستقبل (1) طاقه حره (2) طب (1) طب_ولا_عك​ (1) طيور (18) عسكرى (25) عسل (1) علاج (70) علم البصريات (6) علماء (1) علوم (18) عيد (1) عيون (17) غاز (2) فتاوى (1) فرنسا (2) فضاء (16) فلسطين (12) فلك (12) فليسطين (3) فوائد (10) فواكة (8) فواكة_وخضروات​ (1) فودافون (4) فوركس (3) فيديو (9) فيس بوك (2) قاعدة البيانات (2) قتال (6) قصص (12) قطر (4) قمر العربسات (2) قيام الليل (1) كاريكتير (3) كتب (12) كربوهيردات​ (1) كمال اجسام (1) كمبيوتر (84) كوبا (1) كوريا (1) كيتو​ (1) كيمياء (23) لغة (1) لهجات (1) ليبيا (1) لينكس (2) مجموعة (1) محرك (4) مسجات (1) مشروعات (4) مصر (111) مطبخك (214) معادن (1) معلومات (29) مقاتلات (1) مقالات (31) مكونات (2) منتجات زراعيه (1) مهارات (1) مواقع (61) موبايل (1) موضه (2) مياه (4) نشيد (1) نصائح (8) نظم (6) نكت (8) نوكيا (15) هندسه (5) هواتف (54) وصايا (1) وظائف (9) ويندوز (3) يوتيوب (5) AdSense (4) AdWords (1) call center (2) ebay (2) Egypt (1) HSPA (2) ORACLE (2) qmax (1) search (1) seo (3) Wikipedia (2)

 
;