iPAM Developer Documentation

- Product Overview

Introduction

Product structure is central to the interoperation of iPAM agents.  The purpose of iPAM is to:
  1. gather the information used to create the product as in the case of Input modules
  2. aggregate the product and organize it for presentation to the user as in the case of Handler modules
  3. deliver the product over various channels and media as in the case of Output modules
  4. schedule tasks and perform file management as in the case of the executive.

Products are defined by two interfaces of the package org.mitre.pam.interfaces. The Product interface defines the minimum required set of methods supported by Product classes. The ContainerProduct interface defines additional methods to be implemented by products that contain other products.

There are three classes that implement the Product/ContainerProduct realization in iPAM. These classes should be instantiated indirectly by using the ProductFactory obtained via an executive callback. The product classes are BasicProduct and VectorProduct.  BasicProduct implements the Product interface and directly encapsulates String data, URL content, or File content.  The VectorProduct is a container of other products (including VectorProducts). There was another type of product, a HashtableProduct, but it was never used and will be eventually removed from iPAM.

These classes allow an internal hierarchical product structure of a general nature that can "contain" a variety of information from different sources. The product structure must be rendered into an appropriate form before distribution. This rendering is performentd by product visitors.

The remainder of this page describes:

Product Attributes (metadata)

All products, regardless of type can "carry" metadata about the product. This metadata is carried as a set of attribute-value pairs. The following product attributes are always available:
id
The identifier or product name, automatically created by all input agents/input agents
lifeTimeLong
Lifetime in milliseconds for the product. This attribute is only used by a few agents such as the archive juggler and the putBackWeb output agent.
description
Most input agents provide a description for each product.

Additional product attributes may be created by the user. Using the BERT gui the user can "stamp" products via any input agent or Handler. The BERT gui allows the user to create special agent attributes that are interpreted as product attributes. If the agent attribute starts with "product_" then the attribute is "stamped" onto the product created by the input agent or the product being handled by the Handler. For example, to create a product attribute called "latitude" the user can go to the input agent that accepts the product and create an input agent prperty called "product_latitude".

There are iPAM handlers that can use product attributes to perform filtering, selectively passing or rejecting products based on this metadata.

Product Visitor

Product visitors are used to create a data or file structure that is meaningful to the distribtuion medium (e.g. e-mail, BackWeb, PointCast) and to the end user. In general a product visitor is created to "browse" an existing product. It may then create the files and data required to submit that product for delivery to the end user. The internal representation of the product within iPAM will not generally be delivered to the end user.

The external rendered view of a product seen by the user depends mainly upon which product visitors have been called to structure and organize the product so that output agents can deliver it to the user.  Product visitors tailor the product for delivery by a specific output agent by creating data, auxiliary, and configuration files that may be needed by various distribution media.  Product visitors are instantiated by output agents to help them perform lower-level manipulation of the product so that it reaches the user in a readable, useable form. There are 9 product visitors.

Here is a list of product visitors and a short description of what they do. Product visistors are located in the Java package org.mitre.pam.productVisitor.

Product visitors are different than agents because they have no state and are not configurable through iPAM configuration files.  Product visitors are more like "helpers" for agents to perform certain product related tasks. 

 

Product Structure

BasicProduct

VectorProduct

HashtableProduct

Product Expiration 

Agent Responsibilities in Creating, Modifying, and Delivering Products

Input Agent Responsibilities

Handler Responsibilities

ProductVisitor Responsibilities

Output Agent Responsibilities

Agent Responsibilities for Maintaining Product Integrity

Input Agent Responsibilities

Handler Responsibilities

ProductVisitor Responsibilities

Output agent Responsibilities

Revised: 30 September 1999