Bridging the gap to Fusion through our PeopleSoft Solutions Extenders
Grey Sparling PeopleSoft Expert's Corner
Oracle Blogs
 Subscribe Now!

Thursday, December 10, 2009

Related Content Feature in PeopleTools 8.5

As part of the Social Networking webinar we gave yesterday as part of our PeopleSoft virtual user group meetings, we spent a lot of time discussing how the new Related Content feature in PeopleTools 8.5 facilitates collaboration and social networking within PeopleSoft.

Cool. What is it?

Well, related content is a new Portal frame that is delivered within PeopleTools (just as the navigation frame is a Portal frame delivered within PeopleTools). It allows contextual content related to your page to be displayed at the bottom of the page. Many of the demonstrations you'll see from Oracle highlight content from the Enterprise Portal or Analytics (OBIEE), such as the following

  • Blog
  • Wiki
  • Tags
  • Discussions
  • OBIEE Report
However, you can put pretty much anything that you want there as long as it has the following:
  • A URL way of accessing it that returns an HTML page
  • Query strings as a means of passing the parameters you want (i.e. a question mark in the URL with name1=value1&name2=value2 syntax.
  • It's a standard PeopleSoft page
  • It's a standard PeopleSoft Query.

Example page with Related Content

Here are a few examples of what I'm talking about. You'll notice that this page, the performance document selection page in HCM9.1 has a "related information" link with the other portal links in the upper right. In this circumstance, we've attached 3 different types of related content that either take key fields, system variables (such as current user or current page), or hard-coded literals).

Because we've been doing a lot of version control demonstrations recently, we thought it would be nice to show how you could link your version control tool directly into your transaction pages.

The first example is to show a WIKI page related to the content displayed. Although the Enterprise Portal provides a complimentary license for using its WIKI related to your PeopleSoft application, we're using our version control WIKI here, where we keep development notes and other information related to the current page or business process.

Or, you could do a search to find information related to what's being displayed. In this circumstance, we're using a custom search created in Google that looks at online PeopleBooks, common PeopleSoft websites, blogs, and bulletin boards to return results.

Or, you could display tickets related to what's being displayed, such as those in the Grey Sparling Version Control product for PeopleSoft.

Setting up a new related content service

There are two pieces to setting this up.

  1. The first is to create a service definition that identifies the source of the related content as well as the set of parameters that are needed for it.
  2. The second is to attach that service to each component where it will be displayed and to map values into the parameters required for the service definition.
In this example, we'll create a service definition for a query that lists out the set of employees you have as a manager. The service definition can be create at PeopleTools > Portal > Related Content Service > Define Related Content Service.

Because we chose a query with a single bind required for it, that is the only one that shows up in the list. One thing to note, is that the service can only pass in query strings (it cannot use data to create the main part of the URL. Also, you have to create a parameter for every name=value in the URL, even if it's always going to be the same. Although it would be nice to set a default value here, you will need to provide the literal value mapping when you attach the service to each component using it. In our google search example, we needed to pass the id of the custom search as a query string as well as the search value as a separate parameter, even though we will always be using the same custom search.

Attaching related content to a component

Now that we have our service definition, let's put it in use. To do this, you navigate to at PeopleTools > Portal > Related Content Service > Manage Related Content Service. If you choose to assign a service to a component, you will be taken to a page to use the Portal structure to identify what page you want to work on.

Then, you attach the related content services you want to use

Next, you identify where you want to source each parameter that the service requires

Finally, you identify the key field, variable, or value to pass in for that parameter. In this circumstance, we're passing the current User's EMPLID into the query as the Supervisor ID, which is why we chose a session variable as the source type in the prior step.

TADA!! You're done!!

If you go back to the page, you'll see the new related content. You may notice that the query that we've linked also utilize a new feature in PeopleTools 8.5, Query Drilling URLs. This will allow you to navigate from the query to content related to it as well.

Labels:

Sunday, October 25, 2009

In Depth - PeopleTools 8.50 RSS Feed Publishing Framework

This post is a follow-on to both our Inside PeopleTools 8.5 webinar (which had over 80 attendees last week) as well as our initial blog post on this subject. As the person sometimes inaccurately referred to as "the father of reporting in PeopleSoft" (Dana Quitslund deserves that honor), I am extremely excited about this feature, as I think most of you should be.

Why is RSS So Important?

Put quite simply, RSS solves probably the most important problem that users want solved in reporting (and it is not to be shown fancy charts with drag and drop). With all the information that they have to wade through every day, users just want to be told when something that's important to them changed. With PeopleTools 8.5, your users how have the ability to subscribe to your application data and get told when something they care about changed.

Here's a simple example of an RSS feed I created against the Query Statistics table. It returns data for queries that I'm worried about, and over time will only show me when things change in this respect. Probably a better example would be to create RSS Feeds against queries related to your employees (or how about warehouse inventory information) so you can be notified when things occur versus having to run reports yourself and look for yourself to see if the information has changed.

How it works

Although there are 3 different ways to publish an RSS Feed, I'm going to focus on the one that's easiest for you to control without having to write code: the Query feeds. From within Query Manager, you will see a new link at the bottom, the Publish as Feed (or Manage Feeds) link.

By clicking on this link, you can either create a new RSS Feed or modify and existing RSS Feed for this query. When you either Create or Edit a feed, you will begin with the Publish Feed Definition page, which allows you to give it a name (the default is the query name), a description, as well as other properties of the feed. When you Clikc on the Advanced Options, you will be getting in the heart of creating the feed.

Just taking the Defaults

If you just take all the defaults when you create a feed, this is what your end-user will see.

As you can see, it's not very easy to comprehend. Therefore, you will want to spend some time with the Advanced Query Options.

Advanced Query Options

As previously stated, this is where you will really take your query reults and format them into a meaningful feed.

The first thing you will see is the set of options in the middle of the page. Here is what they are:

  • Entry Occurance - This is where you specify whether the feed has one row or multiple rows per entry. I personally haven't had much luck formatting the "All Rows in Entry" results, so I've stuck to One Row per Entry.
  • Feed Publishing Type - This defines whether your feed reader will run the query in real-time, or whether the data will be staged for you.
  • Query Feed Security - This is where you determine whether the feed is authenticated to a PeopleSoft user, or whether it's public. It's important to note that you will most likely want to use a feed reader that can pass PeopleSoft credentials (such as the Enterprise Portal), or use a Single Signon Solution on the desktop (such as ours) and use a client tool to read the RSS feed if you use a secured feed.
The next section is the Feed Entry Content Mapping. This is where you have the ability to specify the title, the formatting, and how the feed entries are determined as updated. As these are the most important options, let's go into them in more detail.

Actually, even before that, I would like to discuss how data from the query can be used in each of these "Entry Templates". You see, you have the ability to pass in Query results, Message Catalog Entries, System Variables, and "Templates". All of these are surrounded by the % sign (just as all meta-variables are in PeopleTools). Here is what each is:

  • Query Fields - These are fields in the Alias.ColumnName syntax in the select clause of your Query. For exampmle, a query against the PS_JOB table may have a field of A.EMPLID.
  • Message Catalog - These refer to the message catalog entries using the syntax of MSGT:{setnum}:{msgnum}, or MSGT:1:2 for message set 1, message 2.
  • System Variables - These are you garden variety System Variables, such as Userid, DbType, or Language
  • Templates - These are shortcuts for generating default data for a row in the query result. As of release of PeopleTools 8.5, there are three template types that are available: a GUID, ROW.HTML (which is a table without headers of a row of data), and ROW.TEXT (which is just a comma separated string of a row of data from the query... again without column headings)
Okay. Now that we've got that covered, let's go into each of the common Feed Elements you can map in the Advanced Feed Options page.

Entry Content URL

This is where the end-user will drill to when they click on the feed title. You can either specify a fully-qualified URL (including the server name), or specify a URL that begins with /psp/ or /psc/ if you want to define a relative one from the current PeopleSoft system. Keep in mind that you can pass in parameters from the query results using the syntax described above. I was hoping to see more of the Query Drilling URL functionality replicated here, but it isn't so you'll need to know how to compose the proper URL yourself and will have to go farther up the chain of the URL to define a relative one.

Here is a sample Entry Content URL I put in one of my Queries:

/psc/hcm91dev/EMPLOYEE/HRMS/q/?ICAction=ICQryNameURL=PUBLIC.GS_EXEC_LOG_FOR_QRY&BIND1=%A.QRYNAME%

Entry Full Content

This is what shows up for the detail of each feed entry. For Query results, I suggest you create a table with headings with all the fields you're interested in (but not the field you put in the title). You can use full HTML syntax with all of the variable substitution for the data.

If you click on the Edit push button, you can be sent to a web-based HTML editor that's embedded in PeopleTools. It even has a helper dialog if you don't have the list of variables you can use handy. Here's what it looks like.

Entry ID

This is the internal ID for each feed entry that shows up inside your RSS feed. It generally represents an identifier for each row of data that comes back from the Query (assuming that you're using the One Row per Entry option).

It's important to note that what you specify for this element in combination with the Entry Updated element will determine how the entries will show up as "new" in your feed reader. With the playing around I've done, I've found that putting a Last Update DateTime field works very nicely here. I've tried other key fields of the query without much luck (for example, putting the QRYNAME in there for a feed that returns query statistics won't flag updated entries as new in the feed, which is what I want if I want to know if the statistics have changed for query). I found that the GUID (which is the default) was the worst option, because it simply causes the feed reader to think every row returned is new each time it requests the data.

Entry Title

The Entry Title is exactly what you would expect it to be. Because a lot of my queries are against data that people are not very good at putting descriptions for, I end up usually stringing together the meaningful keys to the data with a space and dash in the middle. Again, you just use the alias.columname syntax to do this.

Entry Updated

Just as I did for the Entry ID, I use a last updated datetime field whenever I have one available. Although effective date may be tempting, you will find that it will not mark items as being updated if they are modified in corrections mode.

How End-Users Subscribe to Quer Feeds

There are several places in PeopleTools 8.5, where your users can go to subscribe to a feed.

  • The My Feeds menu item in the main PeopleSoft menu
  • From within Query Manager when you have a query opened with feeds published
  • From the RSS Feeds portal pagelet in the Enterprise Portal
Probably the most common place your users will go is the main menu.

When they go there, they can search through the list of feeds available to them and click on the one they wish to subscribe to:

Then, they can use their feed reader to subscribe to it and they're up and running.

A few parting notes

Here are a few things that I found as I started using this feature

  • You absolutely need to go through the PeopleBooks that covers how to configure the RSS Feed Publishing Framework. I ended up losing at least 1 week of time because I never got an error message when I didn't do this step and my framework was misconfigured. Hint: if you click on an RSS Feed to subscribe to it and you get the search page again, most likely you're misconfigured. Rahul at the PeopleTools Demogrounds was kind enough to show me that My URLs were wrong and let me look at his correct configuration to verify I was doing it right.
  • I was disappointed that the ROW.HTML template was not more robust. I would very much like to see column headings included as well as more formatting in it. As such, you should expect to write your own HTML for your RSS Feed results.
  • I really liked the thought put into editing the templates. At first, I got confused by the option to expand the edit box, thinking that was the best/only way to edit it. I'm considering personalizing the grid to hide that option in my environment, so the edit button is more prevalent.
  • I'm hoping that the helper user interface and some of the syntax for Drilling URLs in Query will be adopted in the Entry URL template in future releases.
  • I would like to be able to do more with RSS Feeds from the search pages for Query Manager or Query Viewer. In Query Manager, I would like to create a feed against a query without needing to open it. In Query Viewer, I would like to be able to subscribe to feeds related to the queries in my search results.
All of that being said, I am extremely impressed with the work for RSS Feeds in Tools 8.5. The issues I highlighted are very minor in nature, and it's evident that a lot of though went in to this feature, and it will make a big difference to PeopleSoft customers out there.

Labels: , ,

Sunday, October 18, 2009

Query Drilling URL Feature in PeopleTools 8.5 Review

While attending Open World last week, I was reminded in Robert Taylor's session on reporting, about the Query Drilling URL feature in PeopleTools 8.5. I quickly decided to spend some time playing around with it to see how it works and what it does.

Although drilling from queries is one of the first topics we've presented at user group meetings, there have been some significant improvements in PeopleTools 8.5 (see blog entry for powerpoint with the drilling techniques supported in versions prior to 8.50)

Benefits of this feature in PeopleTools 8.5

Although it was possible to embed drilling hyperlinks in to queries since PeopleTools 8.45, there were several limitations in how it was accomplished that made it difficult to design, manage, support, and even use.

  • Because the only way it knew whether to turn data into a hyperlink was to evaluate the HTTP: at the beginning of the data returned from query column, references were hard-coded to a specific environment (meaning you have to fix the URI when moving between environments)
  • The syntax for embedding references to pages, queries, and references to data to pass into the pages or queries was very cumbersome and depending on the platform, required knowledge of both trimming data and concatenating syntax.
  • You could not attach a drilling link to data in the query. In other words, you have to display the drilling link in the result set (often a very large string) as its own entity. Ideally, you would like to be able to click on an EMPLID or DEPTID and drill to data for either of those
Fortunately, the features in PeopleTools 8.5 address these limitations
  • The expression object in Query is extended with a new expression type called Drilling URL. Because it is a special type of expression, Query knows to turn it into a hyperlink regardless of the data in it.
  • It supports relative references that begin at the content type (Query, Component, or External). This means that queries moved between environments do not need to be modified to fix URI values
  • It allows linkage between bind values and data in the query easily without requiring meta-sql or other advanced SQL syntax
  • It allows specifying which fields the URL should be attached to. This means that your queries look a lot better and are much more usable. These links are also embedded in all output types of query.

How to Use it

To take advantage of this feature, you will want to create an expression for each drilling URL you will want to put in your query. You first go to the Expressions tab in Query and add the expression. When you ge there, there will be a new expression type:

Depending on the type of expression you want to define, you can click on a link that helps you build the appropriate syntax for the URL.

Here is what is displayed when you click on link to specify a query URL

Here is what is displayed when you click on the link to specify a component URL

These pages are very helpful in understanding how to specify the pieces needed to drill to a query or component, what is needed by the query or component as parameters, as well as what is available in your query to pass as parameters.

Going a little deeper

However, it's interesting to note that all the pages really do is create the syntax for the expression (and the expression is stored in the same table as other expressions). Why don't we look at this syntax just to understand a bit more about it?

Syntax for drilling to a page

'/c/ADMINISTER_WORKFORCE_(GBL).PERSONAL_DATA.GBL?Page=PERSONAL_DATA1&Action=U&EMPLID=A.EMPLID:A.EMPLID:A.NAME_DISPLAY'

The first thing you'll see is that the first part of the expression is a standard PeopleSoft URL to a page starting from the /c/ and going to the end of the &Action=U. If you were to supply the host, site, portal, etc. information from a common hyperlink, you could easily type it in the address bar of your browser and go to the page.

The second thing you'll see is the reference between the field in the search record EMPLID= and the field in the query A.EMPLID. You may also notice that you didn't have to exit out of the quote of the text in order to enter this like in previous versions.

Finally, you may notice the syntax of :A.EMPLID:A.NAME_DISPLAY. This syntax tells you which fields to attach the URL to (colon first, then query field second).

Syntax for drilling to a query

'/q/?ICAction=ICQryNameURL=PUBLIC.GS_EMPL_ACTIONS&BIND1=A.EMPLID:A.HIGHEST_EDUC_LVL'

In a manner similar to pages, everyghing up to and including the query name is a standard URL that could be typed into the browser once adding the host, site, portal, etc. to the beginning. It also uses the standard PeopleSoft syntax of BIND2, BIND2 for each expression. Finally, it uses the same syntax of binding to query fields for both passing parameters and attaching the URL to a field.

Things that I found in playing around

As I played around with this feature, I found that you definitely don't want to stray too far outside of the expected syntax generated by the pages if you key in values manually.

There were a few situations where I wanted to pass a literal value into a page that didn't exist in my query (for example, drilling from an employee into the Job table, where the job component needs EMPL_RCD as a parameter). I tried a couple of ways to pass in a value of 0 for it, and managed either to crash the app server or put it into an infinite loop (as I am working with one of the first releases of this, I am sure that this is already addressed in one of the patches that have recently come out). To pass the literal, though, I didn't even need to try to hard-code it in my expression. Instead, I simply created a number expression with a value of 0 and then used the expression as my parameter for EMPL_RCD.

I was also hoping that I could drill directly to excel when drilling from a query to another query. I modified the ICQryNameURL to ICQryNameExcel, but the resulting link ended up still being ICQryNameURL. I have a hunch that the way the expression works is to find the appropriate tokens and pull them out versus taking the URL as keyed, and that this will make sure that there aren't injection security risks created by this feature.

Conclusion

In the end, I am very pleased with this feature, and think that customers will benefit greatly from it.

Labels: , ,

Monday, September 21, 2009

PeopleTools 8.50 RSS Feed Publishing Framework

As mentioned in the previous post, we've built out some environments with the GA release of PeopleTools 8.50 and have really been liking what we've been seeing so far.

One of the brand new features is the RSS Feed Publishing Framework, which enables you to create RSS feeds from a variety of different PeopleSoft sources. There's actually enough functionality baked in that the Feed Publishing Framework warranted it's own new PeopleBook. It's a reflection of the importance of PeopleSoft Query as a source for RSS feeds that the Feed Publishing Framework PeopleBooks is categorized with the Reporting and Analytic tools (but Query is not the only place to generate RSS from).

This Wednesday we will be taking a closer look at the Feed Publishing Framework in our popular "Social Networking Your PeopleSoft application" webinar. We'll also be including content from previous versions of the session as well, but we'll make sure to have plenty of time for the new PeopleTools 8.50 content since there's so much interest in that these days.

You can register directly from our upcoming events page.

*** Update - October 26, 2009 ***

We have taken the content presented in our webinars and created the following blog entry. Hopefully, this will help you get started with this cool new feature.

Labels: , , ,

Friday, September 18, 2009

PeopleTools 8.50 Installation

Just got my first login on a local PeopleTools 8.50 installation. The installation was great - kudos to the PeopleTools development team.

Things worked perfectly after finally getting it downloaded (I get the feeling that there were a lot of downloads from Oracle's site today :-). Here are some quick random observations.
  • The installers not only worked well, but they look a lot nicer. They also look a lot more consistent across the entire install (Tuxedo, WebLogic, PeopleTools).
  • I was caught off guard for a second when the Tuxedo installer asked for "Oracle Home" instead of "BEA Home" :-)
  • The WebLogic and PeopleTools installers both prompt you to subscribe to Oracle Security Alerts and guilt you a little bit when you turn them down. I forget the exact wording, but something to the effect of "failure to keep on security alerts makes you a bad person" :-) This is a Good Thing ; encouraging/shaming people into keeping up on current security threats will have an overall net positive effect.
  • PeopleTools installer is now smart enough to understand that installing from CD copies on the filesystem is common. So if you unzip everything with Disk1, Disk2, and Disk3 all in the same directory the installer continues along. Of course I was already installing from Disk1 before Disk2 had finished downloading so I didn't get the immediate benefit...
  • I did minimal installs for Tuxedo and WebLogic. Those took about 1GB of disk space.
  • I did the full install of PeopleTools (multi-language, SDK, etc.). That took about 5.5GB of disk space.
  • Nothing prompted me about the new separation of binaries vs log files in PSHOME. When I created a domain in psadmin though it was automatically created under a subdirectory of the user account that I was logged in with; PSHOME didn't get touched.
  • After logging in and clicking around through the environment I noticed that things just felt snappier. I haven't done any extensive testing on this yet, but even places that aren't impacted by the new Ajax functionality seemed to load quicker (portal home page, component loading, etc.).
  • No more "Processing" image blinking when server trips happen :-) Now it's a very Web 2.0-ish looking spinner.
There's a whole lot more to write about, but overall first impressions are that this is a top notch release. If you're trying to avoid upgrading for some reason, then you'd better keep your users away from playing with this because the reality matches the hype.

Labels: , , ,