You are not logged in Log in Join
You are here: Home » Members » infrae » SilvaMetadata » README.txt

Log in
Name

Password

 

README.txt

Copyright (c) 2003 Infrae. All rights reserved.
See also LICENSE.txt

Meta::

Valid for: SilvaMetadata 0.7.x
Author: Kapil Thangavelu
Email: <k_vertigo@objectrealms.net>
CVS: $Revision: 1.7 $

Silva Metadata

Implemented Use Cases

- Define Metadata

- Map Metadata to a Content Type

- Import Metadata Definition

- Export Metadata Definition

- Export Metadata for a Content Object

- Import Metadata for a Content Object

- Display a Form for Metadata

- Validate Values for Metadata

- Restrict Displayable/Editable Metadata based on
permissions, roles, or state.

- Containment Based Metadata Acquisition

- Invoke Triggers upon Metadata Changes

- Index/Search Metadata

- Integrated Actions for Content Types (CMF Only)

Todo Use Cases

- Delegate Metadata Element to a different Definition.

- Customize an Element of Metadata Set mapped onto a particular
Content Type.

- Upgrade/ChangeSet Engine for updating metadata sets.

- Canonical/Standards Based XML Generation and Import for
Metadata Sets.

Design

Storage/Annotations

metadata storage is based on annotating content objects. metadata
storage itself is partioned by set namespaces, and also includes
a partition for metadata configuration on a per object basis.

Definitions

definitions of the metadata are conducted with the metadata tool zmi
interface. these definitions are managed as sets composed of elements,
with guards and fields attached to elements. these definitions can
be exported and imported to xml and are used for validation and display
of the metadata. these definitions are then mapped onto content types
that they will be available for.

Tool API

the metadata tool api is fairly simple, the core of it is simply
one method. getMetadata which returns a binding object, below.

the additional methods are present to conform to the metadata tool
api defined by the cmf interfaces.

Binding/Adapter

bindings functions as an adapter between the content object,
the metadata definition, and the stored metdata values. it offers
a unified api to the programmer to operate on an object's metadata,
and unlike a service or tool, allows for security checks to be
automatically performed in the context of the content object.

additionally the binding adapter makes use of the metadata storage
to store configuration options that can be set per object, that
affect the runtime behavior of the binding. this capability is used
to implement some of the advanced features of the metadata system
such as metadata acquisition and mutation triggers, and can be
extended as need arises.

Indexing and Searching

because metadata is stored in an object annotation, and accessed
through a binding object, direct indexing of an object's metadata
using the normal zcatalog indexes is not possible. The
ProxyIndex product was developed to address the issue, and
allows for the use of a tales expression to retrieve values for
indexing. the metadata system automatically constructs indexes
for a metadata set upon set initialization, using tales
expressions to retrieve a binding and an element's value for
a content object.

Hook Points

To allow for flexibility and customization based on a
requirements the metadata system offers two major hook points
exposed at by its python api.

Access

The Access hook is used by the metadata tool to construct
a binding for a content object. access hooks can be registered
on a per content type basis or as a default hook.

Runtime Data Initializer

When a metadata binding is constructed for an object with no
metadata annotation data, a runtime data initializer is
invoked to construct the binding's runtime data. initializers
can be defined on a per content type basis or as a default
initializer.