انتشار یعنی فرایند یکپارچه سازی محتوا از منابع در صفحه وب. شاید پورتال گونه های خصوصی سازی شده پیچیده ای را برای تهیه محتوای سفارشی در برداشته باشد. همچنین ممکن است صفحات پورتال مجموعههای مختلفی از پورتلتها را که محتوا را برای کاربران میسازند، شامل شوند. برنامه مبتنی بر وب پورتال، درخواست کلاینت را پردازش نموده و پورتلت را بر روی صفحه فعلی (موجود) کاربر بازیابی میکند و سپس کانتینر پورتلت را برای بازیابی هر محتوای پورتلت فرا میخواند. کانتینر پورتلت محیط و زمان اجرا را برای پورتلتها فراهم میکند و فراخوانی را از طریق API پورتلت انجام میدهد. کانتینر پورتلت از طریق Invoker API از پورتالفراخوانی میشود. کانتینر اطلاعات مربوط به پورتال را با کمک SPI (Service Provider Interface) سرویس دهنده پورتلت بازیابی میکند. . اجزای اصلی صفحه پورتال را نشان میدهد. صفحه پورتال نمایانگر سند کامل Markup است و چند پنجره پورتلت را منتشر مینماید. این صفحه ممکن است علاوه بر پورتلتها، شامل بخش ها نواحی و آگهیهای تبلیغاتی نیز باشد. پنجره پورتلت حاوی میله عنوان (title bar) به همراه عنوان پورتلت، تزئینات و محتوای تولید شده توسط پورتلت است. تزئینات (decoration) میتواند شامل دگمههایی برای تغییر دادن وضعیت پنجره پورتلت باشد.
پورتلت
همانگونه که در فوق اشاره شد، پورتلت جزء وب مبتنی بر جاوا است که درخواستها را پردازش نموده و محتوای پویا را تولید میکند. محتوای تولید شده توسط پورتلت fragment نام دارد. بخشی از Markup (مثلا HTML، WML، XHTML) (Wireless Markup Language) مرتبط با قوانین خاص fragment میتواند با سایر fragmentها انتشار یابد و سند کاملی را ، تشکیل دهد. به طور عادی، محتوای پورتلت با محتوای سایر پورتلتها مجتمع شده و صفحه پورتال را شکل میدهد. کانتینر پورتلت چرخه حیات پورتلت را مدیریت میکند. markupهای مختلف پورتلت. سمت چپ:HTMLmarkup در مرورگر دسکتاپ. سمت راست:WMLmarkup بر روی تلفن سیار کلاینتهای وب با پورتلتها از طریق پارادایم درخواست/پاسخ پیادهسازی شده توسط پورتال، تعامل دارند. ممکن است محتوای تولید شده توسط پورتلت از کاربری به کاربر دیگر با توجه به پیکربندی صفحه کاربر، متفاوت باشد.
کانتینر پورتلت
کانتینر پورتلت، پورتلتها را اجرا میکند و آنها را برای اجرا در محیط و زمان مناسب آماده میسازد. کانتینر پورتلت حاوی پورتلتهاست و چرخه حیاتشان را مدیریت میکند. همچنین مکانیزمهای ذخیرهسازی ثابت را برای پورتلت فراهم میآورد. کانتینر پورتلت درخواستها را از پورتال دریافت میکند تا آنها را بر روی پورتلتهایی که میزبان نموده، اجرا کند. کانتینر مذکور، مسئول مجتمعسازی محتوای تولید شده پورتلتها نیست، بلکه پورتال این کار را انجام میدهد.
چرخه حیات پورتلت
چرخه حیات اصلی پورتلت در پورتلت JSR۱۶۸ عبارتست از:
- Initiator: آغازگر پورتلت
- Handle Requests: پردازش انواع مختلف درخواستها
- Destroy: خارج کردن پورتلت از سرویس
کانتینر پورتلت، چرخه حیات پورتلت را مدیریت نموده و متدهای مربوطه را بر روی واسط پورتلت فرا میخواند.
واسط پورتلت
در پورتلت باید واسط پورتلت را پیادهسازی نموده یا کلاسی را برای پیادهسازی واسط پورتلت منظور و توسعه داد. واسط پورتلت از متدهای زیر تشکیل شده است: ·Initiator (Portlet Config Config): برای آغاز نمودن پورتلت. این متد فقط یکبار پس از آغاز شدن پورتلت فراخوانده میشود و میتواند برای ساخت آبجکتها/منابعی که پورتلت به کار میبرد، استفاده شود. Process Action (Action Request Request, Action Response Response): برای اعلام به پورتلت، متوجه ساختن آن از اینکه کاربر عملی (action) را بر روی این پورتلت تحریک نموده است. در هر درخواست کلاینت، فقط یک action تحریک میشود. پورتلت میتواند در action تغییر جهت دهد، mode یا state خود را تغییر دهد، وضعیت ثابت خود را عوض کند یا پارامترهای ارسال را تنظیم کند. Render (Render Request Request, Render Response Response): برای تولید markup، متد render برای هر پورتلت روی صفحه فعلی، فراخوانی میشود و پورتلت میتواند markup را که ممکن است به mode پورتلت یا state پنجره، پارامترهای render، صفحات درخواست، وضعیت ثابت و دادههای session وابسته باشد، تولید کند. Destroy: پایان چرخه حیات پورتلت را مشخص میکند. این متد به پورتلت امکان میدهد تا منابع را آزاد نموده و هر داده ثابتی که متعلق به پورتلت است، به روز برساند.
Mode های پورتلت
Mode پورتلت، عملکرد پورتلت را مشخص میکند. معمولا پورتلتها، اعمال مختلفی را انجام میدهند و بسته به نوع عملکرد، محتوای متفاوتی را میسازند. Mode پورتلت عملکرد و محتوایی را که باید تولید شود، مشخص مینماید. هنگامیکه پورتلت درخواست میشود، کانتینر پورتلت، Mode فعلی پورتلت را برایش فراهم میآورد. Mode پورتلتها را میتوان از طریق برنامهنویسی تغییر داد. JSR۱۶۸ ، Modeهای پورتلت ها را به سه گروه تقسیم میکند:
- Modeهای ضروری: هر پورتال باید از Mode های Edit، Help، View پشتیبانی کند. پورتلت باید حداقل از view پشتیبانی کند. Render markup از این Mode برای صفحه استفاده میکند. Edit نیز برای تغییر تنظیمات کاربر و سفارشی کردن markup پورتلت و Help برای نمایش صفحه Help بکار میروند.
- Modeهای سفارشی اختیاری:Modeهایی وجود دارند که ممکن است پورتال از آنها پشتیبانی کند، در حالیکه پورتلت در Mode اختیاری شاید فراخوانی نشود. Modeهای اختیاری عبارتند از: About برای نمایش پیام about، config که به کاربران امکان میدهد تا پورتلت را پیکربندی نمایند، Edit-default که با استفاده از آن میتوان مقادیر Edit را از پیش تنظیم کرد، Preview برای پیش نمایش پورتلت و print برای چاپ.
- Modeهای ویژه فروشنده: این modeها ویژه فروشنده هستند و در ویژگی تعریف نشدهاند.
State های پنجره
e پنجره (حالت پنجره) نمایانگر میزان فضای صفحه پورتال است که به محتوای تولید شده توسط پورتال اختصاص مییابد. وقتی پورتلت درخواست میشود، کانتینر پورتلت حالت کنونی پنجره را برای پورتلت فراهم میآورد. ممکن است پورتلت از حالت پنجره برای مشخص نمودن میزان اطلاعاتی که باید ارسال نماید، استفاده کند. هنگام پردازش درخواست action میتوان از طریق برنامهنویسی حالت پنجره پورتلت را تغییر داد. JSR۱۶۸ حالات زیر را برای پنجره تعریف نموده است:
- عادی: پورتلت میتواند صفحه را با سایر پورتلتها به اشتراک بگذارد. این حالت پیش فرض است.
- حداکثر: پورتلت ممکن است تنها پورتلت صفحه پورتال باشد یا فضای بیشتری در مقایسه با سایر پورتلتها در صفحه پورتال داشته باشد و می تواند محتوایی غنی تر از حالت عادی پنجره تولیدکند.
- حداقل:پورتلت حداقل خروجی را ارسال می کند.
علاوه بر حالات فوق،JSR۱۶۸ امکان تعریف حالات پنجره ویژه را نیز فراهم آورده است. پورتلت میتواند در هر یک از حالات فوق فراخوانده شود، اما میتواند markup یکسانی را برای هر سه حالت تولید کند.
ذخیره ثابت
پورتلت میتواند دادههای ثابت کاربر خاصی را با کمک آبجکت Portlet Preferences ذخیره کند.Preferenceها در فاز action خوانده و نوشته و در فاز render، فقط خوانده میشوند. Edit، mode مناسبی برای نوشتن preferenceهاست و برای کاربر صفحه نمایش سفارشی تهیه میکند. Preferenceها میتوانند به صورت رشته یا مقادیر آرایه رشته باشند و میتوان آنها را با مقادیر پیش فرض در توصیف کننده تنظیم نمود. مشخصات پورتلت و preferenceها در توصیفکننده، پورتلتی به نام Portlet entity تعریف میکنند. مفهوم session مبتنی بر http session است که برای برنامههای وب تعریف میشود. از آنجائیکه برنامههای پورتلت برنامههای وب هستند، از همان sessionهای سرولت استفاده میکنند. برای اینکه پورتلتها بتوانند دادههای موقتی پورتلت را ذخیره نمایند، حوزه session،پیش فرض حوزه پورتلت است. پورتلت در این حوزه میتواند اطلاعات مورد نیاز درخواستهای کاربر و ویژه موجودیت پورتلت را ذخیره نماید. صفات ذخیره شده در این حوزه، پیشوند دارند تا از بازنویسی دو پورتلت (یا دو موجودیت با یک تعریف پورتلت) ممانعت بعمل آید. JSR۱۶۸ از حوزه Web application نیز پشتیبانی میکند. در این حوزه هر جزء برنامه وب میتواند به اطلاعات دسترسی پیداکند. این اطلاعات برای تبادل وضعیت گذرا در بین اجزای مختلف یک برنامه وب (مثلا بین پورتلت و سرولت) به کار میرود.
لحاظ نمودن سرولتها/صفحات JSP
پورتلت برای پشتیبانی از الگوی Model-View-Controll er باید بتواند محتوای تولید شده از سرولتها و صفحات JSP را لحاظ نماید. بدین ترتیب پورتلت همانند کنترل کننده عمل و bean را با دادهها پر میکند و صفحه JSP را در خروجی render لحاظ مینماید. مکانیزم لحاظ نمودن سرولتها و صفحات JSP در JSR۱۶۸ همانند سرولت API است. درخواست از طریق زمینه پورتلت برای مسیر مورد نظر بازیابی و سپس متد (include) بر روی آبجکت فرستنده درخواست (request-dispatcher )و فراخوانی میشود.
تنظیم با WSRP
محتوای تولید شده توسط پورتلتها را مجتمع میسازد. این پورتلتها بر روی ماشینهای راهدور در حال اجرا هستند و از محیطهای مختلف برنامهنویسی نظیر J?EE، Net. استفاده میکنند. سرویسهای WSRP ارائهگرا هستند. سرویسهایی نیز به صورت Plug، Play با پورتالها یا سایر برنامهها کار می کنند. بدینترتیب شرکتها میتوانند محتوا یا برنامه را بینیاز از تطبیق دستی محتوا یا برنامه تهیه کنند. پورتالهامیتوانند به سهولت سرویسهای WSRP را بینیاز از برنامهنویسی مجتمع سازند. JSR??? مفاهیم بین JSR۱۶۸ وWSRP را منطبق ساخته است. در ذیل مفاهیم عمده در استاندارد مذکور آمده است: modeهای پورتلت و حالات پنجره به طور کامل منطبقند. کدگذاری و ساخت اشارهگرهای URL به پورتلت به طور کامل منطبقند. هر دو استاندارد تعامل کاربر با پورتلت را با فازهای render، action دارند. وضعیتی که امکان گسستگی پورتلت و نمایش آن را در فراخوانیهای بعدی render فراهم میآورد، در WSRPتحت عنوان navigational state و در JSR۱۶۸ با پارامترهای render پشتیبانی میشود. هر دو استاندارد حالت گذرا را در درخواستها با session ذخیره میکنند. Session ID در WSRP هنگام نگارش فراخوانیهای WPSR به پورتلتهای JSR۱۶۸ وJSR۱۶۸ session اشاره میکند و بالعکس. ذخیرهسازی حالت ثابت برای خصوصیسازی ارسال پورتلت در WSRP با ویژگیهای انواع اختیاری صورت میگیرد، در حالیکه JSR۱۶۸ فقط از رشته یا آرایه پشتیبانی میکند. به عبارتی تولیدکنندگان WSRP مبتنی بر JSR۱۶۸ فقط زیر مجموعهای از عملکردهای WSRP را بکار میبرند. اطلاعات مربوط به فراخوانی پورتلت در WSRP، RegistrationData و در JSR۱۶۸، Portlet Context نام دارد. همه دادههایی که در portlet context نشان داده میشوند، در Registration Data نیز وجود دارند. همانگونه که در فهرست فوق مشاهده میشود، همه این مفاهیم، انطباق بین JSR۱۶۸ وWSRP را نشان میدهند. لذا میتوانید کانتینرهای پورتلتJSR۱۶۸ را که از طریق WSRP قابل دسترسی هستند، پیادهسازی نمایید و پورتلتهایJSR۱۶۸ را به صورت سرویسهای WSRP نشان دهید.
آیتمهای پیشرفته پورتلت API
این بخش به مفاهیم پیشرفته پورتلت API نظیر دستیابی به اطلاعات کاربر، فراخوانی زمینه پورتال، localization وcaching میپردازد.
اطلاعات کاربر
شاید بعضی از پورتالها بخواهند markupهای تولید شده را با توجه به اطلاعات شخصی کاربر، خصوصی نمایند. چنین اطلاعاتی اطلاعات پروفایل نام دارند و حاوی جزئیاتی نظیر نام کاربر، نشانی، پست الکترونیکی و غیره میباشند. برای نمونه، با استفاده از پروفایل کاربر، پورتلت شرایط جوی میتواند شرایط جوی شهری که کاربر فعلا در آن زندگی میکند را نشان دهد. پورتلت API از دسترسی به اطلاعات پروفایل کاربر از طریق صفت درخواست USER-INFO به صورت نگارشی پشتیبانی میکند. ویژگی پورتلت، استفاده از اسامی صفت کاربر (Platform for privacy preference) 3P را توصیه میکند. پورتلت میتواند در تعریف کننده نصب تعریف شود، توصیف کنندهای که صفات اطلاعات کاربر از طریقاین نگاشت در درخواست دسترس پذیر می سازد. سپس پورتال میتواند این صفات را در زمان نصب به صفات موجود در ذخیره دادههای کاربر بنگارد یا از آنها صرفنظر کند. اطلاعات کاربر درباره تحریک action ممکن است متفاوت از اصول J2EE باشد و در این صورت پورتلت، پورتلت راهدور نامیده میشود. اگر پورتلت، پورتلت راهدور باشد (تولیدکننده WSRP)، اصول J?EE مصرف کننده WSRP را نشان میدهد.
زمینه پورتال (Portal Context)
پورتلت API برای سازگار نمودن پورتلتها با پورتالی که آنها را فرا میخواند، portal context را فراهم میآورد.این پورتال از درخواست بازیابی میشود. این پورتلت اطلاعاتی نظیر فروشنده پورتال، نسخه پورتال و ویژگیهای مختص پورتال را فراهم میآورد. این اطلاعات به پورتلت امکان میدهد تا از گسترههای ویژه فروشنده در هنگام فراخوانی توسط پورتال استفاده کند. از آنجائیکه Portal Context به درخواست ضمیمه شده، ممکن است از درخواستی به درخواست دیگر تغییر یابد. این حالت میتواند در سناریوی راه دور اتفاق بیفتد، جایی که یک پورتلت ممکن است از پورتال های مختلف (مصرف کننده WSRP) فراخوانی شود.
Localization
ویژگی localization، استقرار را در دو سطح فراهم میآورد: توصیف کننده نصب و پورتلت. در سطح توصیف کننده نصب، همه تنظیمات توسط راهبر وب سرور (توصیف پورتلت، پارامترهای initiator، نمایش نام و غیره) از جمله صفت Xml:lang نظیر توصیفکننده نصب سرولت 4/2 ، تغییر مییابد. تگ Xml:lang، تگ مشابهی را در زبانهای مختلف (مثلا نمایش نام به انگلیسی، آلمانی و ژاپنی) ایجاد می نماید. این ویژگی در سطح پورتلت، کلاس منبع را در توصیف کنندهای که حاوی نسخ localized عنوان پورتلت است، عنوان کوتاهی برای تجهیزاتی که از نظر گرافیکی محدودیت دارند و کلمات کلیدی که عملکردهای پورتلت را توصیف میکنند، در نظر می گیرد. ویژگی نمادی را برای استقرار نمایش اسامی و مقادیر توصیفها توصیه میکند. پورتلت میتواند از طریق متد Portlet Context (Get Resource Bundle) به منبع دسترسی پیدا کند.
Caching
JSR۱۶۸، پشتیبانی از Caching را به صورت اعلان و برنامه نویسی، تعریف میکند. زمان انقضای پاسخ پورتلت را میتوان در هر پورتلت تعریف نمود. پورتلت در زمان اجرا میتواند زمان انقضا را برای پاسخ render با استفاده از ویژگی EXPIRATION_CACHE تنظیم کند. هر درخواستی که به این پورتلت ارسال شود، به طور خودکار، محتوای Cach شده را منقضی میکند، به عبارتی وقتی کاربری بر روی action یا render کلیک میکند، پورتلت آن را مستقل از زمان انقضا دریافت میدارد.
قابلیت گسترش
ویژگی پورتلت مکانیزمهای متعددی دارد که به فروشندگان پورتال امکان میدهد تا گسترههای ویژهشان را لحاظ نمایند. این بخش مهمترین این مکانیزمها را توضیح میدهد: ویژگیهای مختص فروشنده، modeهای سفارشی پورتلت و حالات سفارشی پنجره. همانگونه که پیشتر توضیح داده شد، پورتلت میتواند اطلاعاتی را درباره گسترههای پشتیبانی شده از طریق portal context کسب نماید.
ویژگیها
ویژگیها با تنظیمات مختص فروشنده بین پورتلت و کانتینر پورتلت و بین پورتلت و پورتال، ارتباط برقرار میسازند. این ویژگیها را میتوان درJSR۱۶۸ یافت. پورتلت میتواند ویژگیهای String را با متد getproperty از:
ActionRequest: برای دریافت ویژگیهایی که مختص action-request هستند.
RenderRequest :برای دریافت ویژگیهایی که مختص render-request هستند.
PortalContext :برای دریافت ویژگیهایی که مختص پورتال هستند و برای درخواست مختلف تغییر نمیکنند، بخواند.
پورتلت میتواند ویژگیهای String را با متد Setproperty در RenderResponse برای تنظیم ویژگیها در پاسخ به درخواست renderبنویسد.
انتشار یعنی فرایند یکپارچه سازی محتوا از منابع در صفحه وب. شاید پورتال گونه های خصوصی سازی شده پیچیده ای را برای تهیه محتوای سفارشی در برداشته باشد. همچنین ممکن است صفحات پورتال مجموعههای مختلفی از پورتلتها را که محتوا را برای کاربران میسازند، شامل شوند. برنامه مبتنی بر وب پورتال، درخواست کلاینت را پردازش نموده و پورتلت را بر روی صفحه فعلی (موجود) کاربر بازیابی میکند و سپس کانتینر پورتلت را برای بازیابی هر محتوای پورتلت فرا میخواند. کانتینر پورتلت محیط و زمان اجرا را برای پورتلتها فراهم میکند و فراخوانی را از طریق API پورتلت انجام میدهد. کانتینر پورتلت از طریق Invoker API از پورتالفراخوانی میشود. کانتینر اطلاعات مربوط به پورتال را با کمک SPI (Service Provider Interface) سرویس دهنده پورتلت بازیابی میکند. . اجزای اصلی صفحه پورتال را نشان میدهد. صفحه پورتال نمایانگر سند کامل Markup است و چند پنجره پورتلت را منتشر مینماید. این صفحه ممکن است علاوه بر پورتلتها، شامل بخش ها نواحی و آگهیهای تبلیغاتی نیز باشد. پنجره پورتلت حاوی میله عنوان (title bar) به همراه عنوان پورتلت، تزئینات و محتوای تولید شده توسط پورتلت است. تزئینات (decoration) میتواند شامل دگمههایی برای تغییر دادن وضعیت پنجره پورتلت باشد.
پورتلت
همانگونه که در فوق اشاره شد، پورتلت جزء وب مبتنی بر جاوا است که درخواستها را پردازش نموده و محتوای پویا را تولید میکند. محتوای تولید شده توسط پورتلت fragment نام دارد. بخشی از Markup (مثلا HTML، WML، XHTML) (Wireless Markup Language) مرتبط با قوانین خاص fragment میتواند با سایر fragmentها انتشار یابد و سند کاملی را ، تشکیل دهد. به طور عادی، محتوای پورتلت با محتوای سایر پورتلتها مجتمع شده و صفحه پورتال را شکل میدهد. کانتینر پورتلت چرخه حیات پورتلت را مدیریت میکند. markupهای مختلف پورتلت. سمت چپ:HTMLmarkup در مرورگر دسکتاپ. سمت راست:WMLmarkup بر روی تلفن سیار کلاینتهای وب با پورتلتها از طریق پارادایم درخواست/پاسخ پیادهسازی شده توسط پورتال، تعامل دارند. ممکن است محتوای تولید شده توسط پورتلت از کاربری به کاربر دیگر با توجه به پیکربندی صفحه کاربر، متفاوت باشد.
کانتینر پورتلت
کانتینر پورتلت، پورتلتها را اجرا میکند و آنها را برای اجرا در محیط و زمان مناسب آماده میسازد. کانتینر پورتلت حاوی پورتلتهاست و چرخه حیاتشان را مدیریت میکند. همچنین مکانیزمهای ذخیرهسازی ثابت را برای پورتلت فراهم میآورد. کانتینر پورتلت درخواستها را از پورتال دریافت میکند تا آنها را بر روی پورتلتهایی که میزبان نموده، اجرا کند. کانتینر مذکور، مسئول مجتمعسازی محتوای تولید شده پورتلتها نیست، بلکه پورتال این کار را انجام میدهد.
چرخه حیات پورتلت
چرخه حیات اصلی پورتلت در پورتلت JSR۱۶۸ عبارتست از:
-
Initiator: آغازگر پورتلت
-
Handle Requests: پردازش انواع مختلف درخواستها
-
Destroy: خارج کردن پورتلت از سرویس
کانتینر پورتلت، چرخه حیات پورتلت را مدیریت نموده و متدهای مربوطه را بر روی واسط پورتلت فرا میخواند.
واسط پورتلت
در پورتلت باید واسط پورتلت را پیادهسازی نموده یا کلاسی را برای پیادهسازی واسط پورتلت منظور و توسعه داد. واسط پورتلت از متدهای زیر تشکیل شده است: ·Initiator (Portlet Config Config): برای آغاز نمودن پورتلت. این متد فقط یکبار پس از آغاز شدن پورتلت فراخوانده میشود و میتواند برای ساخت آبجکتها/منابعی که پورتلت به کار میبرد، استفاده شود. Process Action (Action Request Request, Action Response Response): برای اعلام به پورتلت، متوجه ساختن آن از اینکه کاربر عملی (action) را بر روی این پورتلت تحریک نموده است. در هر درخواست کلاینت، فقط یک action تحریک میشود. پورتلت میتواند در action تغییر جهت دهد، mode یا state خود را تغییر دهد، وضعیت ثابت خود را عوض کند یا پارامترهای ارسال را تنظیم کند. Render (Render Request Request, Render Response Response): برای تولید markup، متد render برای هر پورتلت روی صفحه فعلی، فراخوانی میشود و پورتلت میتواند markup را که ممکن است به mode پورتلت یا state پنجره، پارامترهای render، صفحات درخواست، وضعیت ثابت و دادههای session وابسته باشد، تولید کند. Destroy: پایان چرخه حیات پورتلت را مشخص میکند. این متد به پورتلت امکان میدهد تا منابع را آزاد نموده و هر داده ثابتی که متعلق به پورتلت است، به روز برساند.
Mode های پورتلت
Mode پورتلت، عملکرد پورتلت را مشخص میکند. معمولا پورتلتها، اعمال مختلفی را انجام میدهند و بسته به نوع عملکرد، محتوای متفاوتی را میسازند. Mode پورتلت عملکرد و محتوایی را که باید تولید شود، مشخص مینماید. هنگامیکه پورتلت درخواست میشود، کانتینر پورتلت، Mode فعلی پورتلت را برایش فراهم میآورد. Mode پورتلتها را میتوان از طریق برنامهنویسی تغییر داد. JSR۱۶۸ ، Modeهای پورتلت ها را به سه گروه تقسیم میکند:
-
Modeهای ضروری: هر پورتال باید از Mode های Edit، Help، View پشتیبانی کند. پورتلت باید حداقل از view پشتیبانی کند. Render markup از این Mode برای صفحه استفاده میکند. Edit نیز برای تغییر تنظیمات کاربر و سفارشی کردن markup پورتلت و Help برای نمایش صفحه Help بکار میروند.
-
Modeهای سفارشی اختیاری:Modeهایی وجود دارند که ممکن است پورتال از آنها پشتیبانی کند، در حالیکه پورتلت در Mode اختیاری شاید فراخوانی نشود. Modeهای اختیاری عبارتند از: About برای نمایش پیام about، config که به کاربران امکان میدهد تا پورتلت را پیکربندی نمایند، Edit-default که با استفاده از آن میتوان مقادیر Edit را از پیش تنظیم کرد، Preview برای پیش نمایش پورتلت و print برای چاپ.
-
Modeهای ویژه فروشنده: این modeها ویژه فروشنده هستند و در ویژگی تعریف نشدهاند.
State های پنجره
e پنجره (حالت پنجره) نمایانگر میزان فضای صفحه پورتال است که به محتوای تولید شده توسط پورتال اختصاص مییابد. وقتی پورتلت درخواست میشود، کانتینر پورتلت حالت کنونی پنجره را برای پورتلت فراهم میآورد. ممکن است پورتلت از حالت پنجره برای مشخص نمودن میزان اطلاعاتی که باید ارسال نماید، استفاده کند. هنگام پردازش درخواست action میتوان از طریق برنامهنویسی حالت پنجره پورتلت را تغییر داد. JSR۱۶۸ حالات زیر را برای پنجره تعریف نموده است:
-
عادی:پورتلت میتواند صفحه را با سایر پورتلتها به اشتراک بگذارد. این حالت پیش فرض است.
-
حداکثر: پورتلت ممکن است تنها پورتلت صفحه پورتال باشد یا فضای بیشتری در مقایسه با سایر پورتلتها در صفحه پورتال داشته باشد و می تواند محتوایی غنی تر از حالت عادی پنجره تولیدکند.
-
حداقل:پورتلت حداقل خروجی را ارسال می کند.
علاوه بر حالات فوق،JSR۱۶۸ امکان تعریف حالات پنجره ویژه را نیز فراهم آورده است. پورتلت میتواند در هر یک از حالات فوق فراخوانده شود، اما میتواند markup یکسانی را برای هر سه حالت تولید کند.
ذخیره ثابت
پورتلت میتواند دادههای ثابت کاربر خاصی را با کمک آبجکت Portlet Preferences ذخیره کند.Preferenceها در فاز action خوانده و نوشته و در فاز render، فقط خوانده میشوند. Edit، mode مناسبی برای نوشتن preferenceهاست و برای کاربر صفحه نمایش سفارشی تهیه میکند. Preferenceها میتوانند به صورت رشته یا مقادیر آرایه رشته باشند و میتوان آنها را با مقادیر پیش فرض در توصیف کننده تنظیم نمود. مشخصات پورتلت و preferenceها در توصیفکننده، پورتلتی به نام Portlet entity تعریف میکنند. مفهوم session مبتنی بر http session است که برای برنامههای وب تعریف میشود. از آنجائیکه برنامههای پورتلت برنامههای وب هستند، از همان sessionهای سرولت استفاده میکنند. برای اینکه پورتلتها بتوانند دادههای موقتی پورتلت را ذخیره نمایند، حوزه session،پیش فرض حوزه پورتلت است. پورتلت در این حوزه میتواند اطلاعات مورد نیاز درخواستهای کاربر و ویژه موجودیت پورتلت را ذخیره نماید. صفات ذخیره شده در این حوزه، پیشوند دارند تا از بازنویسی دو پورتلت (یا دو موجودیت با یک تعریف پورتلت) ممانعت بعمل آید. JSR۱۶۸ از حوزه Web application نیز پشتیبانی میکند. در این حوزه هر جزء برنامه وب میتواند به اطلاعات دسترسی پیداکند. این اطلاعات برای تبادل وضعیت گذرا در بین اجزای مختلف یک برنامه وب (مثلا بین پورتلت و سرولت) به کار میرود.
لحاظ نمودن سرولتها/صفحات JSP
پورتلت برای پشتیبانی از الگوی Model-View-Controll er باید بتواند محتوای تولید شده از سرولتها و صفحات JSP را لحاظ نماید. بدین ترتیب پورتلت همانند کنترل کننده عمل و bean را با دادهها پر میکند و صفحه JSP را در خروجی render لحاظ مینماید. مکانیزم لحاظ نمودن سرولتها و صفحات JSP در JSR۱۶۸ همانند سرولت API است. درخواست از طریق زمینه پورتلت برای مسیر مورد نظر بازیابی و سپس متد (include) بر روی آبجکت فرستنده درخواست (request-dispatcher )و فراخوانی میشود.
تنظیم با WSRP
محتوای تولید شده توسط پورتلتها را مجتمع میسازد. این پورتلتها بر روی ماشینهای راهدور در حال اجرا هستند و از محیطهای مختلف برنامهنویسی نظیر J?EE، Net. استفاده میکنند. سرویسهای WSRP ارائهگرا هستند. سرویسهایی نیز به صورت Plug، Play با پورتالها یا سایر برنامهها کار می کنند. بدینترتیب شرکتها میتوانند محتوا یا برنامه را بینیاز از تطبیق دستی محتوا یا برنامه تهیه کنند. پورتالهامیتوانند به سهولت سرویسهای WSRP را بینیاز از برنامهنویسی مجتمع سازند. JSR??? مفاهیم بین JSR۱۶۸ وWSRP را منطبق ساخته است. در ذیل مفاهیم عمده در استاندارد مذکور آمده است: modeهای پورتلت و حالات پنجره به طور کامل منطبقند. کدگذاری و ساخت اشارهگرهای URL به پورتلت به طور کامل منطبقند. هر دو استاندارد تعامل کاربر با پورتلت را با فازهای render، action دارند. وضعیتی که امکان گسستگی پورتلت و نمایش آن را در فراخوانیهای بعدی render فراهم میآورد، در WSRPتحت عنوان navigational state و در JSR۱۶۸ با پارامترهای render پشتیبانی میشود. هر دو استاندارد حالت گذرا را در درخواستها با session ذخیره میکنند. Session ID در WSRP هنگام نگارش فراخوانیهای WPSR به پورتلتهای JSR۱۶۸ وJSR۱۶۸ session اشاره میکند و بالعکس. ذخیرهسازی حالت ثابت برای خصوصیسازی ارسال پورتلت در WSRP با ویژگیهای انواع اختیاری صورت میگیرد، در حالیکه JSR۱۶۸ فقط از رشته یا آرایه پشتیبانی میکند. به عبارتی تولیدکنندگان WSRP مبتنی بر JSR۱۶۸ فقط زیر مجموعهای از عملکردهای WSRP را بکار میبرند. اطلاعات مربوط به فراخوانی پورتلت در WSRP، RegistrationData و در JSR۱۶۸، Portlet Context نام دارد. همه دادههایی که در portlet context نشان داده میشوند، در Registration Data نیز وجود دارند. همانگونه که در فهرست فوق مشاهده میشود، همه این مفاهیم، انطباق بین JSR۱۶۸ وWSRP را نشان میدهند. لذا میتوانید کانتینرهای پورتلتJSR۱۶۸ را که از طریق WSRP قابل دسترسی هستند، پیادهسازی نمایید و پورتلتهایJSR۱۶۸ را به صورت سرویسهای WSRP نشان دهید.
آیتمهای پیشرفته پورتلت API
این بخش به مفاهیم پیشرفته پورتلت API نظیر دستیابی به اطلاعات کاربر، فراخوانی زمینه پورتال، localization وcaching میپردازد.
-
اطلاعات کاربر
شاید بعضی از پورتالها بخواهند markupهای تولید شده را با توجه به اطلاعات شخصی کاربر، خصوصی نمایند. چنین اطلاعاتی اطلاعات پروفایل نام دارند و حاوی جزئیاتی نظیر نام کاربر، نشانی، پست الکترونیکی و غیره میباشند. برای نمونه، با استفاده از پروفایل کاربر، پورتلت شرایط جوی میتواند شرایط جوی شهری که کاربر فعلا در آن زندگی میکند را نشان دهد. پورتلت API از دسترسی به اطلاعات پروفایل کاربر از طریق صفت درخواست USER-INFO به صورت نگارشی پشتیبانی میکند. ویژگی پورتلت، استفاده از اسامی صفت کاربر (Platform for privacy preference) 3P را توصیه میکند. پورتلت میتواند در تعریف کننده نصب تعریف شود، توصیف کنندهای که صفات اطلاعات کاربر از طریقاین نگاشت در درخواست دسترس پذیر می سازد. سپس پورتال میتواند این صفات را در زمان نصب به صفات موجود در ذخیره دادههای کاربر بنگارد یا از آنها صرفنظر کند. اطلاعات کاربر درباره تحریک action ممکن است متفاوت از اصول J2EE باشد و در این صورت پورتلت، پورتلت راهدور نامیده میشود. اگر پورتلت، پورتلت راهدور باشد (تولیدکننده WSRP)، اصول J?EE مصرف کننده WSRP را نشان میدهد.
-
زمینه پورتال (Portal Context)
پورتلت API برای سازگار نمودن پورتلتها با پورتالی که آنها را فرا میخواند، portal context را فراهم میآورد.این پورتال از درخواست بازیابی میشود. این پورتلت اطلاعاتی نظیر فروشنده پورتال، نسخه پورتال و ویژگیهای مختص پورتال را فراهم میآورد. این اطلاعات به پورتلت امکان میدهد تا از گسترههای ویژه فروشنده در هنگام فراخوانی توسط پورتال استفاده کند. از آنجائیکه Portal Context به درخواست ضمیمه شده، ممکن است از درخواستی به درخواست دیگر تغییر یابد. این حالت میتواند در سناریوی راه دور اتفاق بیفتد، جایی که یک پورتلت ممکن است از پورتال های مختلف (مصرف کننده WSRP) فراخوانی شود.
-
Localization
ویژگی localization، استقرار را در دو سطح فراهم میآورد: توصیف کننده نصب و پورتلت. در سطح توصیف کننده نصب، همه تنظیمات توسط راهبر وب سرور (توصیف پورتلت، پارامترهای initiator، نمایش نام و غیره) از جمله صفت Xml:lang نظیر توصیفکننده نصب سرولت 4/2 ، تغییر مییابد. تگ Xml:lang، تگ مشابهی را در زبانهای مختلف (مثلا نمایش نام به انگلیسی، آلمانی و ژاپنی) ایجاد می نماید. این ویژگی در سطح پورتلت، کلاس منبع را در توصیف کنندهای که حاوی نسخ localized عنوان پورتلت است، عنوان کوتاهی برای تجهیزاتی که از نظر گرافیکی محدودیت دارند و کلمات کلیدی که عملکردهای پورتلت را توصیف میکنند، در نظر می گیرد. ویژگی نمادی را برای استقرار نمایش اسامی و مقادیر توصیفها توصیه میکند. پورتلت میتواند از طریق متد Portlet Context (Get Resource Bundle) به منبع دسترسی پیدا کند.
-
Caching
JSR۱۶۸، پشتیبانی از Caching را به صورت اعلان و برنامه نویسی، تعریف میکند. زمان انقضای پاسخ پورتلت را میتوان در هر پورتلت تعریف نمود. پورتلت در زمان اجرا میتواند زمان انقضا را برای پاسخ render با استفاده از ویژگی EXPIRATION_CACHE تنظیم کند. هر درخواستی که به این پورتلت ارسال شود، به طور خودکار، محتوای Cach شده را منقضی میکند، به عبارتی وقتی کاربری بر روی action یا render کلیک میکند، پورتلت آن را مستقل از زمان انقضا دریافت میدارد.
قابلیت گسترش
ویژگی پورتلت مکانیزمهای متعددی دارد که به فروشندگان پورتال امکان میدهد تا گسترههای ویژهشان را لحاظ نمایند. این بخش مهمترین این مکانیزمها را توضیح میدهد: ویژگیهای مختص فروشنده، modeهای سفارشی پورتلت و حالات سفارشی پنجره. همانگونه که پیشتر توضیح داده شد، پورتلت میتواند اطلاعاتی را درباره گسترههای پشتیبانی شده از طریق portal context کسب نماید.
ویژگیها
ویژگیها با تنظیمات مختص فروشنده بین پورتلت و کانتینر پورتلت و بین پورتلت و پورتال، ارتباط برقرار میسازند. این ویژگیها را میتوان درJSR۱۶۸ یافت. پورتلت میتواند ویژگیهای String را با متد getproperty از:
-
ActionRequest: برای دریافت ویژگیهایی که مختص action-request هستند.
-
RenderRequest :برای دریافت ویژگیهایی که مختص render-request هستند.
-
PortalContext :برای دریافت ویژگیهایی که مختص پورتال هستند و برای درخواست مختلف تغییر نمیکنند، بخواند.
-
پورتلت میتواند ویژگیهای String را با متد Setproperty در RenderResponse برای تنظیم ویژگیها در پاسخ به درخواست renderبنویسد.
Mode های سفارشی پورتلت و حالات پنجره
اگر برنامه کاربردی پورتلت از Modeهای دیگر پورتلت یا حالات پنجره (به غیر از آنچه در ویژگی پورتلت تعریف شده) استفاده میکند، میتواند آنها را در توصیف کننده نصب اعلان کند. در زمان نصب، Modeهای تعریف شده سفارشی پورتلت و حالات پنجره یا در Modeهای پورتلت مختص فروشنده نگاشته شده یا از آن صرفنظر شده است. پورتلت میتواند فقط از Modeهای پورتلت یا حالات پنجره که پورتال پشتیبانی میکند، استفاده کند. پورتلت میتواند از متدهای Get Supported Portlet Modes، Get Supported Window States برای بازیابی Modeهای پورتلت و حالات پنجره استفاده کند. پورتلت میتواند Modeهای سفارشی پورتلت و حالات پنجره را در توصیف کننده نصب با استفاده از تگهای custom-portlet- mode، custom-window- state تعریف کند.
بستهبندی و نصب
منابع برنامه کاربردی پورتلت، پورتلتها و توصیفکنندههای نصب، می توانند در یک آرشیو برنامه نصب؛ بستهبندی شوند. برنامههای کاربردی پورتلت برخلاف برنامه کاربردی وب سرولت، حاوی دو توصیف کننده نصب هستند: یکی برای مشخصسازی منابع برنامه کاربردی وب (web.xml) و یکی برای مشخص سازی منابع پورتلت (Portlet.xml) . منابعی که پورتلت نیستند باید در توصیف کننده نصب web.xml مشخص گردند. همه تنظیمات پورتلتها باید در فایلی به نام portlet.xml تعریف شوند. این قانون سه استثنا دارد. موارد ذیل برای همه برنامههای کاربردی وب مجاز هستند:
-
توصیف برنامه کاربردی پورتلت
-
نام برنامه کاربردی پورتلت
-
نقش امنیتی برنامه کاربردی پورتلت
در نتیجه نصب دو فایل توصیف کننده، نصب برنامه پورتلت طی دو مرحله صورت می گیرد که در این دو مرحله برنامه وب در سرور برنامه اجرا می شوند و پورتلتها در سرور پورتال نصب میشوند. همواره فایل Portlet.xml فقط یک برنامه پورتلت خاص را توصیف میکند. برای ساخت کپی برنامه پورتلت با تنظیمات مختلف، باید برنامه پورتلت جدید ساخته شود. اولین نسخه ویژگی پورتلت، پورتلت API جامع و توانایی را تعریف میکند که تمام نیازهای برنامههای کاربردی سادهتر پورتلت رابرآورده میسازد.نسخ آتی این ویژگی، احتیاجات برنامههای کاربردی پیچیدهتر را که به تعاملات بیشتر بین پورتلتها نیاز دارد، پاسخگو خواهند بود.
نتیجه گیری
معماری پورتال براساس پورتلت ها شکل می گیرد و ویژگی خاص این پورتلت ها آنها را نسبت به سایر API های مرسوم متمایز ساخته است. همانطور که گذشت، JSR ویژگی پورتلت را برای غلبه بر مشکلات ناشی از اجزای ناهمگون پورتلت ها (API) و نیز ایجاد قابلیت تعامل میان پورتلت ها و پورتالها تهیه نموده است. از میان اهدافی که JSR۱۶۸ دنبال می کند، ایجاد مکانیزمی جهت ذخیره سازی داده های ثابت و گذرا برای پورتلت ها مهمترین هدف به شمار می آید. نقشی که کانتینر پورتلت از حیث محیط و زمان اجرای پورتلت بر عهده دارد، در خور توجه و بررسی است. چرا که اساسا کانتینر، حاوی پورتلت ها است و چرخه حیاتشان را کنترل می کند. کانتینر همچنین اطلاعات مربوط به پورتال را با کمک(service Provider Interface)SPIبازیابی می کند. از سوی دیگر، محتوای تولید شده توسط هر پورتلت که اصطلاحا Fragment نام دارد، در نهایت به صورت مجموعه ای از Fragment ها صفحه پورتال را شکل می دهد
اگر برنامه کاربردی پورتلت از Modeهای دیگر پورتلت یا حالات پنجره (به غیر از آنچه در ویژگی پورتلت تعریف شده) استفاده میکند، میتواند آنها را در توصیف کننده نصب اعلان کند. در زمان نصب، Modeهای تعریف شده سفارشی پورتلت و حالات پنجره یا در Modeهای پورتلت مختص فروشنده نگاشته شده یا از آن صرفنظر شده است. پورتلت میتواند فقط از Modeهای پورتلت یا حالات پنجره که پورتال پشتیبانی میکند، استفاده کند. پورتلت میتواند از متدهای Get Supported Portlet Modes، Get Supported Window States برای بازیابی Modeهای پورتلت و حالات پنجره استفاده کند. پورتلت میتواند Modeهای سفارشی پورتلت و حالات پنجره را در توصیف کننده نصب با استفاده از تگهای custom-portlet- mode، custom-window- state تعریف کند.
بستهبندی و نصب
منابع برنامه کاربردی پورتلت، پورتلتها و توصیفکنندههای نصب، می توانند در یک آرشیو برنامه نصب؛ بستهبندی شوند. برنامههای کاربردی پورتلت برخلاف برنامه کاربردی وب سرولت، حاوی دو توصیف کننده نصب هستند: یکی برای مشخصسازی منابع برنامه کاربردی وب (web.xml) و یکی برای مشخص سازی منابع پورتلت (Portlet.xml) . منابعی که پورتلت نیستند باید در توصیف کننده نصب web.xml مشخص گردند. همه تنظیمات پورتلتها باید در فایلی به نام portlet.xml تعریف شوند. این قانون سه استثنا دارد. موارد ذیل برای همه برنامههای کاربردی وب مجاز هستند:
- توصیف برنامه کاربردی پورتلت
- نام برنامه کاربردی پورتلت
- نقش امنیتی برنامه کاربردی پورتلت
در نتیجه نصب دو فایل توصیف کننده، نصب برنامه پورتلت طی دو مرحله صورت می گیرد که در این دو مرحله برنامه وب در سرور برنامه اجرا می شوند و پورتلتها در سرور پورتال نصب میشوند. همواره فایل Portlet.xml فقط یک برنامه پورتلت خاص را توصیف میکند. برای ساخت کپی برنامه پورتلت با تنظیمات مختلف، باید برنامه پورتلت جدید ساخته شود. اولین نسخه ویژگی پورتلت، پورتلت API جامع و توانایی را تعریف میکند که تمام نیازهای برنامههای کاربردی سادهتر پورتلت رابرآورده میسازد.نسخ آتی این ویژگی، احتیاجات برنامههای کاربردی پیچیدهتر را که به تعاملات بیشتر بین پورتلتها نیاز دارد، پاسخگو خواهند بود.
نتیجه گیری
معماری پورتال براساس پورتلت ها شکل می گیرد و ویژگی خاص این پورتلت ها آنها را نسبت به سایر API های مرسوم متمایز ساخته است. همانطور که گذشت، JSR ویژگی پورتلت را برای غلبه بر مشکلات ناشی از اجزای ناهمگون پورتلت ها (API) و نیز ایجاد قابلیت تعامل میان پورتلت ها و پورتالها تهیه نموده است. از میان اهدافی که JSR۱۶۸ دنبال می کند، ایجاد مکانیزمی جهت ذخیره سازی داده های ثابت و گذرا برای پورتلت ها مهمترین هدف به شمار می آید. نقشی که کانتینر پورتلت از حیث محیط و زمان اجرای پورتلت بر عهده دارد، در خور توجه و بررسی است. چرا که اساسا کانتینر، حاوی پورتلت ها است و چرخه حیاتشان را کنترل می کند. کانتینر همچنین اطلاعات مربوط به پورتال را با کمک(service Provider Interface)SPIبازیابی می کند. از سوی دیگر، محتوای تولید شده توسط هر پورتلت که اصطلاحا Fragment نام دارد، در نهایت به صورت مجموعه ای از Fragment ها صفحه پورتال را شکل می دهد