As I was going through some of the sessions on the QUEST NORTHEAST CONFERENCE I noticed on of the presenters mentioning customizing Test environments Main PeopleSoft CSS PSSTYLEDEF so that the users are always able to distinguish between environments.

The solution that I have employ to solve this problem is to modify the PT_BRANDING:BrandingBase class to dynamically display environment name based on the URL, like this:

captured_Image.png

PT_BRANDING Application package was meant to be used to dynamically customize the look and feel of you application and of course you can do a lot more with this but this is just a very simple example of how easy this can be done.

In order to achieve the above effect all you need is to add code to 2 methods in the class PT_BRANDING:BrandingBase

method GetUniHeaderHTML
method GetUniHeaderHTML_PIA

These methods, as the name suggests are responsible for rendering you Application Portal Header.

/*Iouri Chadour - Added to put Test Environment notification in the header&Request.ContentURI - returns your portal URL in form http://server:port/psp/PSPRC/Left(Right(&Request.ContentURI, 4), 3) - extracts the significant piece to displayon the header*/
&zEnvName = Left(Right(&Request.ContentURI, 4), 3);
&Greeting = &zEnvName | " Environment " | ", UserID:" | %UserId | ", Name: " | %UserDescription;
/* End Mod */

/* This code below is delivered checks for client browser to ensure that Header is displayed correctly */

If &navTheme.isNS4x() Then    &UniHeaderHTMLPIA = GetHTMLText(HTML.PORTAL_UNI_HEADER_NS4X, &Response.GetImageURL(Image.NEW_PS_LOGO), &Response.GetImageURL(Image.NEW_PORTAL_HDR_TBRCRV), " ", " ", &FavoritesHTML, &AddToFavoritesHTML, &HelpHTML, "", &Response.GetImageURL(Image.NEW_PORTAL_HDR_CRV), &Response.GetImageURL(Image.NEW_PORTAL_HDR_BG), &Response.GetImageURL(Image.NEW_PORTAL_HDR_BG), &Response.GetImageURL(Image.NEW_PORTAL_HDR_TBRCRV), &Response.GetImageURL(Image.NEW_PORTAL_HDR_SHD), &Response.GetImageURL(Image.NEW_PORTAL_HDR_TBR), &styleSheet, &homeURL, &startURL, &AddToFavFormHTML, &LogoutURL, MsgGetText(95, 400, "Return Home"), /*20*/MsgGetText(95, 401, "Home"), MsgGetText(95, 402, "Return to Menu"), MsgGetText(95, 403, "Menu"), MsgGetText(95, 408, "Sign out"), &Greeting, &SearchHTML, &ColSpanHTML, &PersonalizeHTML, "", "", &HelpJSHTML, &homepageJS, "", &TabHTML, &WLHTML, &domainScript, &Response.GetJavaScriptURL(HTML.PT_SAVEWARNINGSCRIPT), "", &SaveWarnCrossDomainScript, &Response.GetImageURL(Image.PT_HOME_TAB_ACTIVE_CENTER), &Response.GetImageURL(Image.PT_HOME_TAB_INACTIVE_CENTER), /*40*/&Response.GetImageURL(Image.PT_HOME_TAB_LINE), %Request.ExpireMeta, &CTIHTML, &MCFHTML, &PPMHTML, &Charset);ElseElse    &UniHeaderHTMLPIA = GetHTMLText(HTML.PORTAL_UNI_HEADER_NNS, &Response.GetImageURL(Image.NEW_PS_LOGO), &Response.GetImageURL(Image.NEW_PORTAL_HDR_TBRCRV), "", "", &FavoritesHTML, &AddToFavoritesHTML, &HelpHTML, "", &Response.GetImageURL(Image.NEW_PORTAL_HDR_CRV), &Response.GetImageURL(Image.NEW_PORTAL_HDR_BG), &Response.GetImageURL(Image.NEW_PORTAL_HDR_BG), &Response.GetImageURL(Image.NEW_PORTAL_HDR_TBRCRV), &Response.GetImageURL(Image.NEW_PORTAL_HDR_SHD), &Response.GetImageURL(Image.NEW_PORTAL_HDR_TBR), &styleSheet, &homeURL, &startURL, &AddToFavFormHTML, &LogoutURL, MsgGetText(95, 400, "Return Home"), /*20*/MsgGetText(95, 401, "Home"), MsgGetText(95, 402, "Return to Menu"), MsgGetText(95, 403, "Menu"), MsgGetText(95, 408, "Sign out"), &Greeting, &SearchHTML, &ColSpanHTML, &PersonalizeHTML, "", "", &HelpJSHTML, &homepageJS, MsgGetText(95, 138, "Tool Bar Header"), &TabHTML, &WLHTML, &domainScript, &Response.GetJavaScriptURL(HTML.PT_SAVEWARNINGSCRIPT), "", &SaveWarnCrossDomainScript, &Response.GetImageURL(Image.PT_HOME_TAB_ACTIVE_CENTER), &Response.GetImageURL(Image.PT_HOME_TAB_INACTIVE_CENTER), /*40*/&Response.GetImageURL(Image.PT_HOME_TAB_LINE), %Request.ExpireMeta, &CTIHTML, &MCFHTML, &PPMHTML, &Charset); End-If;
 

There are a few people who mention different tools for Application Development in PeopleSoft. Over the past years I have tried many of the IDEs like TextPad, UltraEdit. For the past 6 months I have started extensively using Notepad++ and I absoltely love it. Unfortunately App Designer does not include a good syntax highlighting, Intellisense and other features that have been long implemented in other IDEs like Visual Studio, JBuilder, Eclipse. It seems that so far Notpad++ developers did a great job with developing enough options that the tool could be easily configured to support multiple languages, specifically SQR and PeopleCode. I have started by downloading initial syntax color scheme files from greysparling.com (they are always on the forefront of peoplesoft development). Then, I have played with options a little and voila – I finally have an IDE that makes it all easier – syntax highlighting, IntelliSense (I wish it could access AppDesigner API too). Below I would like to provide a 5 minute guide to configuring NOTEPAD++ for use:

  1. Download Notepad++ from http://notepad-plus.sourceforge.net/
  2. After install go to Settings and remove all languages that you are not using:

image image

3. Download PeopleCode and SQR syntax and Intellisense files below

a) Paste Intellisense File below

into C:\Program Files\Notepad++\plugins\APIs\

and %appdata%\Notepad++\plugins

b) Paste PeopleCode and SQR Syntax files attached below into %appdata%\Notepad++\

Download File – PeopleCode SQR Syntax Files

c) Close and restart Notepad++

 

4. Configure Notpad++ to recognize sqr and peoplecode by following the instructions below:

image

image

Choose the desired language e.g. Peoplecode or SQR and change the color scheme to the way you like it. For PeopleCode I suggest specifying rem and  remark in the comments & Number section. For the slash comments to work properly  / /  – we need to specify them in the Operators section (screenshot), because for some reason PeopleCode has more that 2 types of comments –

/+ your comment +/

/* your comment */

rem your comment

remark your comment

notepad comments configuration

 

Enjoy – in my next post I will explain how Notepad++ can be effectively used for looking at PeopleCode Trace files.

 

SELECT DISTINCT       ltrim (rtrim (a.classid))  AS classid, ltrim (rtrim (b.menuname))  AS       menuname, ltrim (rtrim (b.barname))  AS barname, ltrim          (rtrim (b.baritemname))  AS baritemname, ltrim(rtrim(d.pnlname))  AS       pnlname, ltrim (rtrim (d.itemlabel))  AS itemlabel, ltrim          (rtrim (e.itemlabel))  AS itemlabel, ltrim(rtrim(c.pageaccessdescr))         AS pageaccessdescr, b.displayonly, ltrim (rtrim (f.portal_label))  AS       portal_label, ltrim (rtrim (f.portal_objname))  AS portal_objname,       ltrim(rtrim(f.portal_uri_seg1))  AS portal_uri_seg1, ltrim (rtrim (f.portal_uri_seg2)       )  AS portal_uri_seg2, (SELECTCASE          WHEN ltrim(rtrim(descr)) = ''THEN             ltrim(rtrim(menulabel))ELSE             ltrim(rtrim(descr))ENDFROM psmenudefnWHERE menuname = b.menuname)       || ' > '       || ltrim(rtrim(f.portal_label))  AS pathFROM psroleclass a,       psauthitem b,       pspgeaccessdesc c,       pspnlgroup d,       psmenuitem e,       psprsmdefn f,       psprsmperm gWHERE a.classid = b.classidAND d.pnlgrpname = e.pnlgrpnameAND b.menuname = e.menunameAND b.barname = e.barnameAND b.baritemname = e.itemname--AND a.rolename LIKE 'GLIC_PO%'AND b.menuname NOT IN ('APPLICATION_DESIGNER',                              'CLIENTPROCESS',                              'DATA_MOVER ',                              'IMPORT_MANAGER ',                              'OBJECT_SECURITY ',                              'QUERY ',                              'PERFMONPPMI ')AND b.menuname NOT LIKE 'WEBLIB%'

AND B.PNLITEMNAME IN (SELECT DISTINCT PNLNAMEFROM PSFSSYS.PSPNLFIELDwhere RECNAME ='PYMNT_ADVICE')AND NOT EXISTS             (SELECT 'x'FROM psprsmsysattrvlWHERE portal_name = f.portal_nameAND portal_reftype = f.portal_reftypeAND portal_objname = f.portal_objnameAND portal_attr_nam = 'PORTAL_HIDE_FROM_NAV'AND f.portal_objname NOT IN ('CO_NAVIGATION_COLLECTIONS',                                                  'PORTAL_BASE_DATA'))AND b.authorizedactions = c.authorizedactionsAND f.portal_reftype = 'C'AND f.portal_cref_usgt = 'TARG'AND f.portal_name = g.portal_nameAND f.portal_reftype = g.portal_reftypeAND f.portal_objname = g.portal_objnameAND a.classid = g.portal_permnameAND b.classid = g.portal_permnameAND f.portal_name = 'EMPLOYEE'AND f.portal_uri_seg1 <> ' 'AND f.portal_uri_seg2 <> ' 'AND f.portal_uri_seg3 <> ' 'AND f.portal_uri_seg1 = b.menunameAND b.pnlitemname = d.itemname  WITH UR;

 

It seems that Oracle have caught on with the Virtual Documentation, not only lots of books are available in common formats, but they allow you to format your search results as a book as well. Now you can take just what you need and read it on your screen or printed and stapled. I guess they really want us to know know more about their products!

Here is a link to

Oracle Database Online Documentation 11g Release 1 (11.1)

And here PeopleBooks Link:

http://download.oracle.com/docs/cd/E12341_01/crm9pbr0_run2/eng/index.htmcaptured_Image.png

 

As many PeopleSoft developers and managers I have suffered through my share of nVision Tuning efforts and until very recent we could not get our reports to run under 4 hours, until the recent change…
In any case here are a few points from my experience:
We experienced an almost almost 5 fold increase in performance when we did a PS_LEDGER reorg with PSCLEDGER index option as follows:

   1:  

   2: db2 "reorg table PSFSSYS.PS_LEDGER index PSFSSYS.PSCLEDGER allow read access indexscan"

   3: db2 "RUNSTATS ON TABLE PSFSSYS.PS_LEDGER FOR INDEX PSFSSYS.PSCLEDGER"

   4: db2 "reorgchk current statistics on table PSFSSYS.PS_LEDGER"

Also it is great to cleanup treeselectors, to make sure that static selectors did not get out of sync with trees, this can be done on a regular basis, see a sample script below. Please note that the number in the end of the treeselector name xx – corresponds to the chartfield length:

   1:  

   2: -- Delete TreeSelectors

   3: Delete from PSFSSYS.PSTREESELECT05;

   4: Delete from PSFSSYS.PSTREESELECT06;

   5: Delete from PSFSSYS.PSTREESELECT10;

   6:  

   7: -- Delete Tree Control table for the respective selectors above

   8: delete from PSFSSYS.pstreeselctl

   9: where length in (5,6,10);

For details about PeopleSoft nVision architecture and structure please make sure to read the Red Paper by clicking below

PeopleSoft nVision Red Paper

Tags:

© 2011 WorkingScripts Suffusion theme by Sayontan Sinha

Switch to our mobile site