Facebook Your Portal: Chronological Content vs. Pagelet Content

Recently I gave a presentation for the HEUG Alliance conference.  Since the HEUG website is fairly closed doors, I thought I would post the description, and my power point presentation here.

Description

This presentation will examine MICA’s switch to a portal based on events triggered by changes to a person’s Enrollment, Finance, and HR records. These events are then listed chronologically and contain links to direct calls to action.

This approach is more commonly seen on blog posts and social networking sites, but not portals which rely heavily on spatially sorted pagelet based content. This is a better organizational model since end-users are more interested in current events than the second pagelet to the right. Direct calls to action allow easier navigation to the PeopleSoft components that people are then interested in.

This concept was implemented with the use of the RSS standard, so that feeds from Campus Solutions, and Human Resources could be threaded and sorted together with other news sources on campus.

PowerPoint

Creating an XML Export File with PeopleSoft


Part of MICA‘s web redesign project is going to involve doing data integration between our CMS (Ingeniux), and our HRMS (PeopleSoft).  Recently I have been playing with XML Publisher, and the flat files that it produces seem so perfect for distribution to our CMS.  I was a little disappointed that the XML documents that XML Publisher creates are not exposed for use as an integration point between systems.

So I began looking for other alternatives.

Integration Broker seems to be quite the rage for the moment.  After poking around with that, it seemed like a lot of work for what would ultimately be a flat file that is updated periodically when things like course descriptions, or degree plans changed.  While this may be useful for more interactive or personalized content, it doesn’t really fit the bill for static content.

The “simplest” (remember, this is PeopleSoft) way I found to create an XML file similar to the one created by XML Publisher is using File Layouts in Application Designer.

The rest of this article is about creating a simple File Layout.

There are 4 basic parts to creating a File Layout.

  1. Create or Select a Record for your data.  I used a view, to avoid having to deal with joins in PeopleCode.
  2. Create a File Layout Definition.
  3. Create an Application Engine Program, with a tiny bit of code in it.
  4. Stuff all these things into a project so you can maintain your sanity at a later time.

After you have selected the record with the data you want to export, create a new File Layout Definition (File->New Definition->File Layout).

New File Layout Definition

On the definition tab, right click “NEW FILE” and select Insert Record.  Search for the record you are using for your data, and double click it.  The Record Definition, and its columns will show up under “NEW FILE” now.  Save your File Layout Definition.

File Layout Definition

Click the Property Icon (Application Designer Property Icon), then click the “Use” tab, and select XML in the “File Layout Format” drop down. Click OK.

File Layout Property \

Create a new Application Engine Program (File->New->Application Engine Program).  Right click “Step01” and select “Insert Action”.  Click where it says “SQL”, and select “PeopleCode” from the drop down.

Application Engine Program New

Double click the new action to edit the PeopleCode.  Copy and paste this PeopleCode into the window:

Local Record &Rec;
Local File &File;
Local SQL &SQL;


&File = GetFile("c:\temp\export_sample.xml", "W", %FilePath_Absolute);
If &File.IsOpen Then
If &File.SetFileLayout(FileLayout.YOUR_FILE_LAYOUT_DEFINITION) Then
&Rec = CreateRecord(Record.YOUR_RECORD_DEFINITION);
&SQL = CreateSQL("%Selectall(:1)", &Rec);
While &SQL.Fetch(&Rec)
&File.WriteRecord(&Rec);
&File.WriteLine("</
YOUR_RECORD_DEFINITION>");
End-While;
Else
Error ("File Layout Not Correct");
End-If;
Else
Error ("file not open");
End-If;
&File.Close();

Save the above Peoplecode and close this window.  Insert all these definitions into your project, and make sure you build it, creating any views and tables you may have created for your data.  Click the Run Program Icon (Application Designer Run Program Icon), and voila: you have a XML file which can be used outside of PeopleSoft (View the File Layout XML Sample)

eText, and XSL Templates for XML Publisher do not work in PeopleTools 8.49

This title really says the most important part.  The rest of this is a rant–I have no work around for making this work at the moment.

Back in May Human Resources aproached me, asking for help developing a flat file for uploading our retirement data with TIA/Cref.  Since I have taken this job as an Information Systems Developer, newly exposed to Oracle and PeopleSoft to a level I had not previously been exposed I have heard about this XML Publisher thing.  It’s supposed to replace crystal reports, which are old and gross (yet, seem to work).  Being a web dude, I love XML.  I’m all about it.  So clearly, me and XML Publisher seem like a match.

XML Publisher supports 4 template formats.  These are: Rich Text Format (RTF), eText Format (also RTF), PDF (Built using word in the RTF format), and miraculously enough Extensible Stylesheet Language Transformations (XSLT).  Personally, I was quite pleased that Oracle had embraced a web standard created by the World Wide Web Consortium.  As a bonus, I had used this technology previously, and while wordy, I had found it excellent for translating XML.

I tried creating a simple XSL Template.  Unfortunately, it did not work.  It was at this time that I created my first support ticket with Oracle.  Now, nearly 3 months later, my first support ticket is still open.

They told me that they didn’t really support, or have example XSL documents I could use.  I switched between XSLT to eText because, supposedly, eText worked and was supposed to do exactly this kind of thing.  It was also broken.

One thing that is cool about this is I think I was their first client that ever tried to use the XSL Template option.  That makes me a trail blazer, in a defunct kind of way.

XML Publisher For the Rest of Us

Today we went live with our first XML Publisher report. Seeing as MICA is possibly the only school running PeopleSoft Campus Solution 9.0 in a production environment, this is possibly the first XML Publisher report in this environment. This post will focus specifically on simple template creation.

There were a couple things that I found annoying about learning XML Publisher:

Our first XML Publisher report was a welcome letter to new people at our institution, which included their name, user name, and a randomly generated password. With this information people would be able login to their email, or use other institutional resources. Since we are a university we can get a mass of new users at the beginning of every semester. As a result we had these additional requirements:

We had written a PeopleSoft Query that would return our set of users, with the relevant data. The generated Sample XML Publisher XML File contained a couple fields:

In order to loop over each person in the RTF Template, I used this syntax in the word document:

<?for-each:row?>

Some repeating content.

<?end for-each?>

Please note, the ‘row’ is a reference to the XML generated by peoplesoft. No mention to the <query> element is necessary. The string after the colon is cAsE sEnSiTiVe, which is an undocumented bonus. You should be able to use ‘row’ for every PeopleSoft Query XML Publisher report. The case may be different based on your implementation however.

In order to sort the result set by last name, and then by first name, I added this syntax to the above code:

<?for-each:row?><?sort:LAST_NAME?><?sort:FIRST_NAME?>

Some repeating content.

<?end for-each?>

Again, LAST_NAME is cAsE sEnSiTiVe. You could continue to sort your data by adding more <?sort?> tags.

Finally, to output data from your XML file, you use this syntax:

<?for-each:row?><?sort:LAST_NAME?><?sort:FIRST_NAME?>

Dear <?DISPLAYNAME?>,

Some repeating content.

<?end for-each?>

This includes the data in the <DISPLAYNAME> tag in your XML document. You can include other attributes by using this syntax on other elements in your XML document.

I hope this helps the rest of you get through this a little faster then I did.