Programavimas

Pristatome „Portlet“ specifikacijos 1 dalį

Atsiradus vis daugiau įmonių portalų, įvairūs tiekėjai sukūrė skirtingas API portalų komponentams, vadinamus portletai. Ši nesuderinamų sąsajų įvairovė kelia problemų programų tiekėjams, portalo klientams ir portalo serverio tiekėjams. Norint įveikti šias problemas, JSR („Java Specification Request“) 168, „Portlet Specification“, buvo pradėta teikti portletų ir portalų sąveika.

JSR 168 apibrėžia portletus kaip „Java“ pagrindu sukurtus žiniatinklio komponentus, valdomus portleto konteinerio, kurie apdoroja užklausas ir kuria dinaminį turinį. Portalai naudoja portletus kaip prijungiamus vartotojo sąsajos komponentus, kurie teikia informacinių sistemų pristatymo sluoksnį.

JSR 168 tikslai yra šie:

  • Apibrėžkite paleidimo laiko aplinką arba portleto sudėtinį rodinį
  • Apibrėžkite portletų sudėtinio rodinio ir portletų API
  • Pateikite laikinų ir nuolatinių portletų duomenų kaupimo mechanizmus
  • Pateikite mechanizmą, leidžiantį portletams įtraukti servletus ir JSP („JavaServer Pages“)
  • Apibrėžkite portletų pakuotę, kad ją būtų lengva įdiegti
  • Leisti dvejetainį portletą perkelti tarp JSR 168 portalų
  • Paleiskite JSR 168 portletus kaip nuotolinius portletus, naudodami nuotolinių portletų (WSRP) protokolą

IT pramonė plačiai pripažino „JSR 168“. Visos pagrindinės portalo erdvės įmonės yra JSR 168 ekspertų grupės dalis: „Apache“, ATG, BEA, „Boeing“, „Borland“, „Broadvision“, „Citrix“, EDS, „Fujitsu“, „Hitachi“, IBM, „Novell“, „Oracle“ , SAP, SAS institutas, „Sun Microsystems“, „Sybase“, „TIBCO“ ir „Vinjetė“. Oficialių rėmėjų sąrašas yra dar ilgesnis.

Šiuo metu JSR 168 yra viešai peržiūrimas, o galutinė versija planuojama 2003 m. Rugsėjo mėn.

Šiame straipsnyje pirmiausia apibrėžiame portalus ir portletus, tada paaiškiname JSR 168 pristatomas sąvokas, įskaitant pagrindinius API objektus. Toliau mes pasineriame į pažangesnes JSR funkcijas, tokias kaip vartotojo informacija, lokalizavimas ir talpinimas. Tada apimsime išplėtimo taškus, kurie leidžia portalo tiekėjams išplėsti šiuo metu apibrėžtą portleto specifikacijos funkciją. Straipsnio pabaigoje pateikiamas portleto programos pakuotės ir diegimo aprašymas.

Perskaitykite visą seriją „Portlet“ specifikacijoje:

  • 1 dalis. Sušlapinkite kojas naudodamiesi specifikacijos pagrindiniais terminais ir sąvokomis
  • 2 dalis: „Portlet“ API nuorodų diegimas atskleidžia jos paslaptis

Pagrindiniai apibrėžimai

Šiame skyriuje paaiškiname pagrindinius portleto specifikacijoje vartojamus apibrėžimus, įskaitant pagrindinę portalo architektūrą, portleto sudėtinį rodinį ir portalo puslapį.

Portalas

A portalas yra žiniatinklio programa, teikianti personalizavimą, vienkartinį prisijungimą ir turinio kaupimą iš skirtingų šaltinių ir talpinanti informacinių sistemų pateikimo sluoksnį. Apibendrinimas yra tinklalapio turinio iš įvairių šaltinių integravimo procesas. Portale gali būti sudėtingų suasmeninimo funkcijų, kurios vartotojams teikia pritaikytą turinį. Portalo puslapiuose gali būti skirtingi portalų rinkiniai, kuriantys turinį skirtingiems vartotojams.

1 paveiksle pavaizduota pagrindinė portalo architektūra. Portalo žiniatinklio programa apdoroja kliento užklausą, nuskaito portletus dabartiniame vartotojo puslapyje ir paskambina į portleto sudėtinį rodinį, kad gautų kiekvieno portleto turinį. Portleto sudėtinis rodinys pateikia portletų vykdymo trukmės aplinką ir iškviečia portletus per „Portlet“ API. Portleto sudėtinis rodinys iškviečiamas iš portalo per „Portlet Invoker“ API; konteineris gauna informaciją apie portalą naudodamas „Portlet Provider SPI“ (paslaugų teikėjo sąsaja).

Puslapis

2 paveiksle pavaizduoti pagrindiniai portalo puslapio komponentai. Pats portalo puslapis reiškia išsamų žymėjimo dokumentą ir sujungia kelis portleto langus. Be portletų, puslapį taip pat gali sudaryti naršymo sritys ir reklamjuostės. Portleto langą sudaro antraštės juosta su portleto pavadinimu, dekoracijomis ir portleto sukurtu turiniu. Dekoracijose gali būti mygtukai, skirti pakeisti portleto lango būseną ir režimą (šias sąvokas paaiškinsime vėliau).

„Portlet“

Kaip minėta pirmiau, portletas yra „Java“ pagrindu sukurtas žiniatinklio komponentas, apdorojantis užklausas ir generuojantis dinaminį turinį. Portleto sugeneruotas turinys vadinamas a fragmentas, žymėjimo dalis (pvz., HTML, XHTML ar WML (belaidžio žymėjimo kalba)), laikantis tam tikrų taisyklių. Fragmentą galima sujungti su kitais fragmentais ir sudaryti išsamų dokumentą, kaip parodyta 3 paveiksle. Portleto turinys paprastai kaupiamas su kitų portletų turiniu, kad būtų suformuotas portalo puslapis. Portleto sudėtinis rodinys valdo portleto gyvavimo ciklą.

Žiniatinklio klientai sąveikauja su portletais per užklausos / atsakymo paradigmą, kurią įgyvendina portalas. Paprastai vartotojai sąveikauja su portletų sukurtu turiniu, pavyzdžiui, sekdami nuorodas ar pateikdami formas, todėl portalas gauna portleto veiksmus, kurie tada persiunčia į portletus, kuriems taikoma vartotojo sąveika.

Portleto sugeneruotas turinys kiekvienam vartotojui gali skirtis, atsižvelgiant į portleto vartotojo konfigūraciją.

„Portlet“ talpykla

A portleto talpykla valdo portletus ir teikia jiems reikalingą vykdymo laiko aplinką. Portleto talpykloje yra portletai ir valdomi jų gyvavimo ciklai. Tai taip pat suteikia nuolatinius portleto nuostatų saugojimo mechanizmus. Portleto sudėtinis rodinys gauna prašymus iš portalo vykdyti prašymus jo priglobtuose portletuose. Portleto talpykla nėra atsakinga už portalų sukurto turinio kaupimą; pats portalas tvarko agregavimą.

Portalas ir portleto talpykla gali būti sudaryti kartu kaip vienas programų paketo komponentas arba kaip du atskiri portalo programos komponentai.

Sąvokos

Šiame skyriuje paaiškinamos pagrindinės JSR 168 programavimo sąvokos, tokios kaip portleto gyvavimo ciklas, sąsaja, režimai ir langų būsenos, taip pat prieiga prie sesijos, nuolatinė prieiga prie saugyklos ir kaip įtraukti servletus ir JSP puslapius.

Portletės gyvavimo ciklas

Pagrindinis „JSR 168“ portleto portletės gyvavimo ciklas yra:

  • Init: inicializuokite portletą ir pradėkite naudoti
  • Tvarkyti užklausas: apdoroti įvairias veiksmų ir pateikimo užklausų rūšis
  • Sunaikinti: išjungti portletą

Portleto sudėtinis rodinys valdo portleto gyvavimo ciklą ir iškviečia atitinkamus metodus portleto sąsajoje.

„Portlet“ sąsaja

Kiekviena portlet turi įdiegti portlet sąsają arba išplėsti klasę, kuri įgyvendina portlet sąsają. Portlet sąsają sudaro šie metodai:

  • init („PortletConfig“ konfigūracija): inicializuoti portletą. Šis metodas iškviečiamas tik vieną kartą po to, kai išvedamas portletas. Šis metodas gali būti naudojamas kuriant brangius objektus / išteklius, kuriuos naudoja portletas.
  • processAction („ActionRequest“ užklausa, „ActionResponse“ atsakymas): pranešti portletui, kad vartotojas suaktyvino šį portletą. Suaktyvinamas tik vienas veiksmas kiekvienai kliento užklausai. Atlikdamas veiksmą, portletas gali peradresuoti, pakeisti portleto režimą ar lango būseną, modifikuoti nuolatinę būseną arba nustatyti pateikimo parametrus.
  • pateikimas („RenderRequest“ užklausa, „RenderResponse“ atsakymas): sugeneruoti žymėjimą. Kiekvienam dabartinio puslapio portletui iškviečiamas atvaizdavimo metodas ir portletas gali sukurti žymėjimą, kuris gali priklausyti nuo portleto režimo ar lango būsenos, pateikimo parametrų, užklausos atributų, nuolatinės būsenos, seanso duomenų ar vidinės programos duomenų.
  • sunaikinti (): nurodyti portletui gyvenimo ciklo pabaigą. Šis metodas leidžia portletui atlaisvinti išteklius ir atnaujinti visus nuolatinius šiam portletui priklausančius duomenis.

Portlet režimai

Portleto režimas rodo funkciją, kurią atlieka portletas. Paprastai portletai vykdo skirtingas užduotis ir sukuria skirtingą turinį, atsižvelgiant į šiuo metu atliekamas funkcijas. Portleto režimas pataria, kokią užduotį jis turėtų atlikti ir kokį turinį jis turėtų generuoti. Kreipiantis į portletą, portleto sudėtinis rodinys pateikia dabartinį portleto režimą. Apdorodami veiksmo užklausą portletai gali programiškai pakeisti savo režimą.

JSR 168 padalija portleto režimus į tris kategorijas:

  1. Reikalingi režimai: Kiekvienas portalas turi palaikyti Redagavimo, Pagalbos ir Peržiūros režimus. Portletas turi bent palaikyti peržiūros režimą, naudojamą pateikiant puslapio žymėjimą. Redagavimo režimas naudojamas vartotojo nustatymams pakeisti, kad būtų galima pritaikyti portleto žymėjimą, o pagalbos režimas naudojamas pagalbos ekrane.
  2. Pasirenkami pasirinktiniai režimai: Tai yra režimai, kuriuos portalas gali palaikyti; o pasirinktiniu režimu portletas gali būti iškviestas. Pasirenkamuose režimuose yra režimas Apie, kad būtų rodomas pranešimas „apie“; konfigūravimo režimas, leidžiantis administratoriams konfigūruoti portletą; „Edit_defaults“ režimas leidžia administratoriui iš anksto nustatyti redagavimo režimo reikšmes; peržiūros režimas, kad būtų rodoma portleto peržiūra; ir spausdinimo režimas, kad būtų pateiktas vaizdas, kurį būtų galima lengvai atspausdinti.
  3. Portalo tiekėjo režimai: Šie režimai nėra apibrėžti specifikacijoje, todėl yra būdingi pardavėjui.

Lango būsenos

Lango būsena nurodo portalo puslapio vietos kiekį, kuris bus priskirtas portleto sugeneruotam turiniui. Kreipiantis į portletą, portleto sudėtinis rodinys pateikia dabartinę lango būseną. Portletas gali naudoti lango būseną nuspręsdamas, kiek informacijos turėtų pateikti. Apdorodami veiksmo užklausą portletai gali programiškai pakeisti lango būseną.

JSR 168 apibrėžia šias lango būsenas:

  • Normalus: Nurodo, kad portletė gali bendrinti puslapį su kitais portletais. Tai yra numatytoji lango būsena.
  • Padidinta: Nurodo, kad portletas gali būti vienintelis portalo portalo puslapis portale arba kad jame yra daugiau vietos, palyginti su kitais portletais portalo puslapyje, todėl jis gali sukurti turtingesnį turinį nei įprastoje lango būsenoje.
  • Sumažinta: Nurodo, kad portletas turėtų pateikti tik minimalų išvestį arba išvesties iš viso.

Be šių langų būsenų, JSR 168 leidžia portalui apibrėžti tiekėjo lango būsenas.

Portletą galima iškviesti bet kurioje iš šių trijų langų būsenų, tačiau jis gali kurti tą patį žymėjimą visoms trims būsenoms.

Nuolatinė parduotuvė

Portlet gali išsaugoti konkretaus vartotojo nuolatinius duomenis naudodamas „PortletPreferences“ objektas. Nuostatas galima skaityti ir rašyti veiksmo fazėje, o skaityti - pateikimo etape. Pageidaujamas režimas rašant nuostatas yra redagavimo režimas, kuris suteikia vartotojui tinkinimo ekraną. Parinktys gali būti eilutės arba eilutės masyvo vertės, susietos su eilutės tipo raktu. Nuostatas galima iš anksto nustatyti su numatytosiomis reikšmėmis diegimo apraše.

Nuostatos ir portleto apibrėžimas diegimo apraše kartu apibrėžia portletą, kartais vadinamą a portleto esybė.

Seansai

JSR 168 sesijos koncepcija remiasi „HttpSession“ apibrėžta žiniatinklio programoms. Kadangi portletų programos yra žiniatinklio programos, jos naudoja tą patį seansą kaip ir servletai. Norint leisti portletams saugoti laikinus asmeninius portleto duomenis, numatytoji seanso sritis yra portlet taikymo sritį. Taikant šią sritį, portletas gali saugoti informaciją, reikalingą visoms vartotojo užklausoms ir būdingą portleto objektui. Atributus, saugomus naudojant šią sritį, seansas pridedamas prie portleto sudėtinio rodinio, kad būtų išvengta dviejų portletų (arba dviejų to paties portleto apibrėžimo objektų), kurie perrašytų vienas kito nustatymus.

Be portlet seanso srities, JSR 168 palaiko Interneto programa seanso apimtis. Šioje srityje kiekvienas žiniatinklio programos komponentas gali pasiekti informaciją. Informacija gali būti naudojama keičiant trumpalaikę būseną tarp skirtingų tos pačios žiniatinklio programos komponentų (pvz., Tarp portletų arba tarp portlet ir servleto).

Įskaitant servletus / JSP puslapius

Kad palaikytų „Model-View-Controller“ modelį, portletas turi galėti įtraukti turinį, sugeneruotą iš servletų ir JSP puslapių. Tokiu būdu portletas gali veikti kaip valdiklis, užpildyti pupelę duomenimis ir įtraukti JSP puslapį, kad būtų pateiktas išvestis.

JSR 168 servletų ir JSP puslapių įtraukimo mechanizmas yra tas pats „Servlet“ API. Portleto kontekste užklausų dispečeris gaunamas tam tikram keliui; įtraukti () Tada šiame užklausos siuntimo objekte iškviečiamas metodas:

 „PortletRequestDispatcher“ rd = getPortletContext (). GetRequestDispatcher (editJSP); rd.include (portletRequest, portletResponse); 

Derinimas su WSRP

WSRP apibendrina turinį, kurį sukuria portletai, veikiantys nuotolinėse mašinose, naudojančiose skirtingas programavimo aplinkas, pvz., J2EE („Java 2 Platform“, „Enterprise Edition“) ir .Net. WSRP paslaugos yra į pristatymą orientuotos, vartotojui skirtos žiniatinklio paslaugos, jungiančios ir grojančios su portalais ar kitomis programomis. Jie leidžia įmonėms teikti turinį ar programas, nereikalaujant rankinio turinio ar programų pritaikymo vartojant portalus; portalai gali lengvai sujungti WSRP paslaugas be programavimo pastangų.

JSR 168 ekspertų grupė kruopščiai suderino JSR 168 ir WSRP sąvokas. Šiame sąraše apžvelgiama, kiek pagrindinės sąvokos buvo suderintos tarp abiejų standartų: