The Web Graph Database


Probe Framework

The purpose of the InfoGrid Probe Framework is to make the content of external data sources appear as native InfoGrid objects that self-update, shadowing the content of the external data source as it changes. By doing this, the development of applications that use changing data from external sources (like RSS feeds, web service calls, ...) becomes substantially simpler.

It accomplishes this through the following concepts:

Often, applications choose to update a ShadowMeshBase periodically. (The actual timing depends on the applied policy, which can be defined and updated programmatically.) During each update, the following sequence of events occurs:

  1. The correct Probe is determined for the given data source, by means of the ProbeDirectory, any preferences that the data source expressed in a previous run, and the MIME type and URL of the data source
  2. Changes made by the InfoGrid application to MeshObjects instantiated from the data source content are passed to the Probe, which can attempt to update the data source accordingly. This only occurs if the Probe is a WritableProbe.
  3. The Probe re-reads the data source, and instantiates the corresponding MeshObjects into the StagingMeshBase.
  4. The Differencer compares the previously-read set of MeshObjects (current content of the ShadowMeshBase) with the most recently-read set of MeshObjects (current content of the StagingMeshBase)
  5. It then applies the found changes to the ShadowMeshBase, which transitions the MeshObjectGraph contained in the ShadowMeshBase to the most current version.
  6. The StagingMeshBase is discarded.
  7. As a consequence, the ShadowMeshBase emits a stream of events that is identical to the stream of events that would have been emitted if the ShadowMeshBase's MeshObjects would have been manipulated there directly. If conveyed via XPRISO, other MeshBases cannot distinguish this event stream from any other event stream conveyed via XPRISO.
  8. A future update may be scheduled.

See also:

Last modified 9 years ago Last modified on 01/19/10 16:48:39