Feed Types and Options

This section provides an overview of feed types and options.

Real-time feeds are dynamic—that is, they are produced when the user requests them. Real-time feeds are created using Integration Broker synchronous service operations. These service operations are similar to other Integration Broker service operations except that the service operation handler returns an ATOM_1_0 message.

Whenever the HTTP listening connector gets a request for a real-time feed, it invokes the appropriate synchronous service operation. It uses either the PS_TOKEN or basic authentication credentials. User authentication and service operation authorization are handled by Integration Broker; feed authorization is handled by the Feed Publishing Framework. If a user has access to the feed, then the service operation handler adjudicates any HTTP request parameters passed to it, generates an Atom feed, and returns it in an ATOM_1_0 response message.

Scheduled feeds are published asynchronously and stored as messages in Integration Broker queues.

Scheduled feeds can be further classified into up-front feeds and generic feeds. When using up-front feeds, the messages published to the Integration Broker queues are feed messages. When using generic feeds, the messages published to Integration Broker queues are either PeopleSoft rowset or XML messages. They are not feed (Atom) XML messages.

When a user requests the feed, the GetFeed (PTFP_GETPREPUBFEED) synchronous service operation is invoked by the HTTP listening connector. The GetFeed service operation handler fetches the appropriate feed messages from Integration Broker queues and collates them into a single feed message. The GetFeed service operation handler collates the messages for up-front feeds into a single feed message; for generic feeds, it wraps the feed element tags to the Integration Broker messages and then collates them into a single feed message.

Note: Unlike real-time feeds, for which you can create your own service operation to deliver the feed, scheduled feeds always use the PTFP_GETPREPUBFEED service operation to deliver feeds.

A paged feed is a feed that has been split into pages (also known as segments) to improve system performance in delivering large feed documents and to improve performance for consuming a feed. A paged feed is presented with first, last, next, and previous links to allow access to additional pages in the feed document.

Paged feeds are supported for scheduled feeds only. The framework supports paged feeds via Integration Broker message segments. %MaxMessageSize is recommended when creating Integration Broker message segments for paged feeds.

When setting the paging property for a feed, select either Segmented or No Paging to determine how the framework displays the complete feed:

  • Segmented

    • This option is designed for feeds intended for crawlers or system synchronization.

    • This option is not supported by most feed readers or clients.

    • Feed links (first, next, previous, last) are added to the feed XML.

    • Feed entries are not restricted by the Max Rows Limit parameter.

      See Setting Feed Publishing Framework Options.

  • No paging

    • This option is designed for feeds intended for end user viewing.

    • This option is supported by all feed readers or clients.

    • Feed entries are restricted by the Max Rows Limit parameter.

The following table describes how paged feed options and Integration Broker message segment options affect the output of the framework:

Integration Broker Message Option

Feed Option - Segmented

Feed Option - No Paging

Segmented

  • Each message segment becomes a page in the feed XML.

  • Oldest message contents appear first.

  • The Max Rows Limit is not applicable.

  • All message or message segments appear in a single feed XML.

  • Latest message contents appear first.

  • The Max Rows Limit applies.

Non-segmented

  • Each message becomes a page in the feed XML.

  • Oldest message contents appear first.

  • The Max Rows Limit is not applicable.

  • All message content entries appear in a single feed XML.

  • Latest message contents appear first.

  • The Max Rows Limit applies.

An incremental feed is a feed that has been published and updated with time stamps that allow the feed content to be delivered incrementally. An incremental feed allows the Feed Publishing Framework to deliver only the feed content that has changed since the user last requested the feed.

Note: The incremental feed option is incompatible with the paged feed option. For the delivered feed data types that can be specified as paged, the Incremental option is disabled when Segmented is selected.

Incremental feeds save network bandwidth by using HTTP conditional GET headers. The HTTP conditional GET headers supported are:

  • ETag

  • If-None-Match

  • Last-Modified

  • If-Modified-Since

Note: Not all feed readers support incremental feeds, which requires that the reader retain the feed request time stamp and present that data as part of the next feed request.

Image: Incremental feeds

The following diagram illustrates how HTTP conditional headers are used with incremental feeds. With the initial feed request, the feed reader does not include any HTTP conditional headers. In the response, the PeopleSoft system sends the complete feed data and includes two HTTP conditional headers: ETag equals the feed ID and Last-Modified equals the feed request time stamp. When the feed reader makes a subsequent feed request, it includes two HTTP conditional headers: If-None-Match equals the ETag sent by the PeopleSoft system and If-Modified-Since equals Last-Modified sent by the system. In the response, the PeopleSoft system sends just the incremental feed data and includes the same two HTTP conditional headers as the initial response; Last-Modified now represents the latest feed request time stamp.

Incremental feeds

As delivered, the Feed Publishing Framework provides support for scheduled, incremental feeds. For the feed data source, you must define the DSPARAMETER_INCREMENTAL data source parameter and assign an appropriate value to it. For real-time, incremental feeds, you must also define the DSPARAMETER_INCREMENTAL data source parameter. In addition, you must implement the PeopleCode to deliver an incremental feed in the data source's execute method.