<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-2868654040120797038</id><updated>2012-02-16T06:44:51.986-08:00</updated><title type='text'>PeopleSoft-GUI</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://think-peoplesoft.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2868654040120797038/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://think-peoplesoft.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Think-PeopleSoft</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>4</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-2868654040120797038.post-6210043232469337474</id><published>2007-01-26T12:37:00.000-08:00</published><updated>2007-01-26T12:38:08.720-08:00</updated><title type='text'>Log Activities in PeopleSoft</title><content type='html'>Logging Pages Accessed by the user&lt;br /&gt;&lt;br /&gt;In today’s norms and compliance world, there is a specific need for each software to track activities of a user, what time did user logged in the system ,what time he logged out, what did he do while in the system.&lt;br /&gt;&lt;br /&gt;PeopleSoft as a market leader ERP software has good techniques to capture this data, but how many of us have been able to answer, which page had the maximum hit today? We all know pay day is the greatest and happiest day in our lives, but could some one tell on the fly that today ‘View Online Page’ was accessed by these many users.&lt;br /&gt;&lt;br /&gt;PeopleSoft provides PSACCESSLOG and PSACTIVITYLOG to see what happened today. Also they provide PeopleSoft performance monitor to log lot of stuff, but how simple this is to manage, all know.&lt;br /&gt;&lt;br /&gt;I have written a very small program to which uses AJAX/ IScript to overcome this deficiency in PeopleSoft. The program logs each user’s activities in a custom table.&lt;br /&gt;&lt;br /&gt;Here is the program flow,&lt;br /&gt;a) Read URL parameters using JavaScript       function rup(parmname)        {&lt;br /&gt;var regexS = "[\\?&amp;]"+parmname+"=([^&amp;#]*)";&lt;br /&gt;var regex = new RegExp( regexS );&lt;br /&gt;   var tmpURL = window.location.href;&lt;br /&gt;var results = regex.exec( tmpURL );&lt;br /&gt; if( results == null )&lt;br /&gt;    return "";&lt;br /&gt; else&lt;br /&gt;    return results[1];         }&lt;br /&gt;&lt;br /&gt;b) For testing purpose I developed an HTML Area on my page, but this script needs to be global and must be placed in some of the delivered PTs JavaScript, PT_SAVEWARNING is a good place for this to be.&lt;br /&gt;c) Next step was to develop AJAX script which would call this function and find out the page names         &lt;br /&gt;&lt;br /&gt;function ajaxFunction()&lt;br /&gt;  {  &lt;br /&gt;   var xmlHttp;&lt;br /&gt;  try&lt;br /&gt;    {    // Firefox, Opera 8.0+, Safari   &lt;br /&gt; xmlHttp=new XMLHttpRequest();   &lt;br /&gt;    }&lt;br /&gt;  catch (e)&lt;br /&gt;    {    // Internet Explorer   &lt;br /&gt; try&lt;br /&gt; { &lt;br /&gt;  xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");    &lt;br /&gt; }&lt;br /&gt; catch (e)&lt;br /&gt; {&lt;br /&gt;  try&lt;br /&gt;         {        &lt;br /&gt;   xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");        &lt;br /&gt;  }&lt;br /&gt;          catch (e)&lt;br /&gt;  {       &lt;br /&gt;   alert("Your browser does not support AJAX!");       &lt;br /&gt;   return false;        &lt;br /&gt;   }      &lt;br /&gt; }    &lt;br /&gt;    }&lt;br /&gt;    &lt;br /&gt;    xmlHttp.onreadystatechange=function()&lt;br /&gt;      {&lt;br /&gt;      if(xmlHttp.readyState==4)&lt;br /&gt;        {&lt;br /&gt;&lt;br /&gt;       alert(xmlHttp.responseText);&lt;br /&gt;        }&lt;br /&gt;      }&lt;br /&gt;rup(“PanelgroupName”) // for &lt; 8.4 tools&lt;br /&gt;rup(“FolderPath”) // &gt; 8.4 tools&lt;br /&gt;    xmlHttp.open("GET","IScript URL with parameters in Query String",true);&lt;br /&gt;    xmlHttp.send(null);  &lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;d) Now next step is to call this function as soon as the user accesses a page, and for me the best place is form load. Here is how I did that     function addEvent(obj, evType, fn, useCapture){  if (obj.addEventListener){&lt;br /&gt;    obj.addEventListener(evType, fn, useCapture);&lt;br /&gt;    return true;&lt;br /&gt;  } else if (obj.attachEvent){&lt;br /&gt;    var r = obj.attachEvent("on"+evType, fn);&lt;br /&gt;    return r;&lt;br /&gt;  } else {&lt;br /&gt;    alert("Handler could not be attached");&lt;br /&gt;  }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt; addEvent(window, "load", ajaxFunction, false);&lt;br /&gt;&lt;br /&gt;Here is how the IScript looks like&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Sqlexec(“insert into mytable values”, %operatorid,current dat,%request.getParameter(“PageName”)&lt;br /&gt;)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2868654040120797038-6210043232469337474?l=think-peoplesoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://think-peoplesoft.blogspot.com/feeds/6210043232469337474/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2868654040120797038&amp;postID=6210043232469337474' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2868654040120797038/posts/default/6210043232469337474'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2868654040120797038/posts/default/6210043232469337474'/><link rel='alternate' type='text/html' href='http://think-peoplesoft.blogspot.com/2007/01/log-activities-in-peoplesoft.html' title='Log Activities in PeopleSoft'/><author><name>Think-PeopleSoft</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2868654040120797038.post-2757143855631416327</id><published>2007-01-17T07:48:00.001-08:00</published><updated>2007-01-17T07:48:48.723-08:00</updated><title type='text'>SSO PS - Non PS applications</title><content type='html'>PeopleSoft - Non PeopleSoft Single Sign On&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Single Sign On, in today’s world of Integration SSO is the heart of IT operations. All users want to be signed on to one app as a Gateway to all applications available in your enterprise.&lt;br /&gt;&lt;br /&gt;This article would help many of the developers to configure SSO w/o any issues and w/o spending much effort in this process. Somehow PS delivers excellent mechanism for SSO among all PS applications, where PS_TOKEN is passed along to all PS Web Servers wherever the user is trying to connect through.&lt;br /&gt;&lt;br /&gt;PeopleSoft also delivers a smart CI to handle SSO between PS and Non-PS applications, but there is a limitation. Limitation is if your web-application is not in Java, VB or C++, you would have to find ways of writing an interim program to call Java from your technology.&lt;br /&gt;&lt;br /&gt;For example, an enterprise has some legacy application in CGI-Perl or PHP. Do I need to write a PHP program to call C++ or java which would internally call PeopleSoft APIs? Most of the developers/ implementers’ would have this question in mind.&lt;br /&gt;&lt;br /&gt;The answer to these questions is NO. I don’t want to unnecessarily introduce cumbersome technologies in my enterprise when I don’t need them. So what to do? Answer is use AJAX.&lt;br /&gt;&lt;br /&gt;Last few days I researched this Google terminology (won’t call it technology as it is just old JavaScript XML) and successfully implemented SSO between my PS – Non PS(Non Java, C++ or VB) applications. Here is how it was achieved&lt;br /&gt;&lt;br /&gt;I used an intermediate page to execute JavaScript which had an AJAX function to call an IScript in PeopleSoft.&lt;br /&gt;&lt;br /&gt;xmlHttp.open("POST","https://myserverIScript",true)&lt;br /&gt;&lt;br /&gt;The IScript internally calls a CI to authenticate PS_TOKEN posted by my JavaScript and returns the User ID once authenticated.&lt;br /&gt;&lt;br /&gt;After authentication by PeopleSoft, I ser a hidden field on this page and then post another request to my web server for authorization to this User ID and display them the application.&lt;br /&gt;&lt;br /&gt;Ofcourse enterprise is more than happy to enter PeopleSoft as a single Gateway to IT world&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2868654040120797038-2757143855631416327?l=think-peoplesoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://think-peoplesoft.blogspot.com/feeds/2757143855631416327/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2868654040120797038&amp;postID=2757143855631416327' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2868654040120797038/posts/default/2757143855631416327'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2868654040120797038/posts/default/2757143855631416327'/><link rel='alternate' type='text/html' href='http://think-peoplesoft.blogspot.com/2007/01/sso-ps-non-ps-applications.html' title='SSO PS - Non PS applications'/><author><name>Think-PeopleSoft</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2868654040120797038.post-613637659879611400</id><published>2007-01-17T07:31:00.001-08:00</published><updated>2007-01-17T07:31:13.019-08:00</updated><title type='text'>AutoSave</title><content type='html'>PeopleSoft AutoSave&lt;br /&gt;&lt;br /&gt;Sometime back I was given a requirement to auto save a component after several intervals. Initially I thought this would be a big customization, but I calmed down and thought that this should be a concept similar to a Component Interface, where a Robot is running all my transactions.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The requirement popped up as the page where customer enters data takes several minutes for data entry and in between if something goes wrong the data entered by User is totally gone and leads to frustration.&lt;br /&gt;&lt;br /&gt;Here is how I achieved this by using JavaScript. JavaScript delivers several time interval methods like, setInterval(), setTimeout etc. I leveraged setInterval method. I created an HTML Area and wrote&lt;br /&gt;&lt;br /&gt;&lt;javascript language="”JavaScript”"&gt;&lt;br /&gt;(window.setInterval("submitAction_main0(document.main0, '#ICSave')",300000); // for 8 SP1&lt;br /&gt;// The function will get triggered after every five minutes and will press save. As of now the limitation of this script is, that it will only work in Parent most window, if you open a child window, the function will not work and needs extra programming effort.&lt;br /&gt;&lt;br /&gt;&lt;/javascript&gt;&lt;br /&gt;&lt;br /&gt;As usual, Users were more than happy to see this working&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2868654040120797038-613637659879611400?l=think-peoplesoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://think-peoplesoft.blogspot.com/feeds/613637659879611400/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2868654040120797038&amp;postID=613637659879611400' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2868654040120797038/posts/default/613637659879611400'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2868654040120797038/posts/default/613637659879611400'/><link rel='alternate' type='text/html' href='http://think-peoplesoft.blogspot.com/2007/01/autosave.html' title='AutoSave'/><author><name>Think-PeopleSoft</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2868654040120797038.post-448982479036200732</id><published>2007-01-15T13:22:00.000-08:00</published><updated>2007-01-15T13:23:35.140-08:00</updated><title type='text'>PeopleSoft Scrollable Grid</title><content type='html'>PeopleSoft GUIs&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;No doubt PeopleSoft in comparison to its competitors has more user friendly GUIs, but everyone would agree with me that there is never an end to User’s requirements, for instance, we need this color, we need this Grid at this place, we need this that and so on..&lt;br /&gt;&lt;br /&gt;Though everybody is waiting for Fusion results, how that would change / revolutionize the word of ERP, but that is a long wait.  So what to do when users come to you with GUI related requirements, the answer to that normally is, this is a Tools customization, that is a customization and end result is users have to get used to the existing GUIs and get used to it and by the time new Interface comes in no one wants a change.&lt;br /&gt;&lt;br /&gt;In my opinion, we should try and see what a user needs, is that a real tool customization, could that be done without customizing anything. If we customize what is the maintenance cost (though doesn’t matter much because of outsourcing and cheap labor available in market).&lt;br /&gt;&lt;br /&gt;I am starting this blog as I took some of GUI changes as a challenge without doing much into PeopleSoft and leveraging JavaScript and DOM.&lt;br /&gt;&lt;br /&gt;One of my recent requirement was to have an excel like Grid into PeopleSoft, first all PeopleSoft developers would consider this a wage requirement and would throw it away, I thought of taking this up and see what I could do with that, I knew this is surely something which one can not do using PeopleTools, I would need something else. I have good Java Server Side programming experience as well, so I thought of using JavaScript to handle this requirement. The requirement clearly stated that, a Grid in PeopleSoft 8.8, should have its first column fixed and should be horizontally scrollable.&lt;br /&gt;&lt;br /&gt;I created an HTML Area on the page where this was required. In that HTML area I pushed the following code (explained little bit later)&lt;br /&gt;&lt;br /&gt;What I have in the above code is an HTML STYLE tag a few lines of JavaScript using DOM APIs. The javascript code gets triggered on the body onload event and fires Init function. Init pushes the desired HTML table in PeopleSoft HTML into another HTML DIV tag and fixes the width and height of the table. This helps you in converting a PeopleSoft Grid to a scrollable Grid. Now the function calls another function to Lock the desired column. It uses loops through all the rows in the desired table and fixes the desired columns.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2868654040120797038-448982479036200732?l=think-peoplesoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://think-peoplesoft.blogspot.com/feeds/448982479036200732/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2868654040120797038&amp;postID=448982479036200732' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2868654040120797038/posts/default/448982479036200732'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2868654040120797038/posts/default/448982479036200732'/><link rel='alternate' type='text/html' href='http://think-peoplesoft.blogspot.com/2007/01/peoplesoft-scrollable-grid.html' title='PeopleSoft Scrollable Grid'/><author><name>Think-PeopleSoft</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
