Content Management Guide
CHAPTER 8
This chapter describes how to handle events related to Content Management (CM) subsystem operations and activities. It has these sections:
This chapter assumes familiarity with exteNd Director event model and event handling. For more information, see the chapter on working with events in Developing exteNd Director Applications.
CM events are an extension of the exteNd Director event model framework, consisting of state change events, event producers, and event listeners (including vetoable listeners). The API for CM events is defined in these packages:
The API defines a set of state change events related to CM operations on documents, folders, and other elementsas well as general activities like data import/export. Event IDs are exposed on the individual event classes as well as on the com.sssw.cm.event.api.EbiConstants interface. In addition, there are state change constants defined in com.sssw.fw.event.api.EboStateChangeEvent.
Here is a list of events defined for the CM subsystem:
This section includes these sections:
Event support in the CM subsystem provides convenience methods for registration of listeners based on CM categories, folders, and documents. The methods are available on an EbiContentMgmtDelegate object:
For example, here is how to subscribe to all events that relate to folder operations:
EbiContentMgmtDelegate cmgr =
com.sssw.cm.client.EboFactory.getDefaultContentMgmtDelegate();
cmgr. addFolderStateChangeListener (myStateChangeListener);
You can register for specified type(s) of events using the framework version of addStateChangeListener(), available on EbiContentMgmtDelegate:
public boolean addStateChangeListener(
BitSet events, EbiStateChangeListener listener)
where events is a bit set of event IDs. The CM API provides some helper methods for specifying a bit set, as described in Using the event helper class next.
You can also filter events that occur on either a specific directory entry or a directory and entries underneath it (recursively). In order to register for events that occur within a certain directory entry scope, add the listener using this method:
public boolean addStateChangeListener(
BitSet events, EbiDirectoryEntry entry, int depth,
EbiStateChangeListener listener)
The com.sssw.cm.event.util.EboEventHelper class provides utilities for managing event sets. It includes these methods:
Listen on one event for all elements This example adds a listener for the "create" state change event on all elements:
EbiContentMgmtDelegate cmgr =
com.sssw.cm.client.EboFactory.getDefaultContentMgmtDelegate();
BitSet events = EboEventHelper.getEventIDSet(
com.sssw.fw.event.api.EboStateChangeEvent.SC_CREATE);
cmgr.addStateChangeListener(events, MyListener);
Listen on all events for two element types This example adds a listener for all changes on document types and fields only; note the use of adjustEventIDSet():
EbiContentMgmtDelegate cmgr =
com.sssw.cm.client.EboFactory.getDefaultContentMgmtDelegate();
BitSet events =
EboEventHelper.getEventIDSet(EbiDocType.EL_DOC_TYPE);
EboEventHelper.adjustEventIDSet(events,
EbiDocField.EL_DOC_FIELD, true);
cmgr.addStateChangeListener(events, Mylistener);
Listen on multiple events for all elements This example adds event types by instantiating a new bit set; this is the technique to use for specifying multiple sets of events:
EbiContentMgmtDelegate cmgr =
com.sssw.cm.client.EboFactory.getDefaultContentMgmtDelegate();
BitSet events = new BitSet();
events.set(com.sssw.cm.event.api.EbiConstants.
EVENT_ID_ACCESS_CHECKED);
events.set(com.sssw.cm.event.api.EbiConstants.
EVENT_ID_ADMIN_ACCESS_CHECKED);
events.set(com.sssw.cm.event.api.EbiConstants.
EVENT_ID_SECUIRTY_RETRIEVED);
cmgr.addStateChangeListener(events, Mylistener);
Listen on all events except for a specified element type This example shows how to use the boolean argument on adjustEventIDSet() to turn off an event set:
EbiContentMgmtDelegate cmgr =
com.sssw.cm.client.EboFactory.getDefaultContentMgmtDelegate();
BitSet events = EboEventHelper.getFullEventIDSet();
EboEventHelper.adjustEventIDSet(events, EbiDocType.EL_DOC_TYPE, false);
cmgr.addStateChangeListener(events, Mylistener);
To enable or disable CM events:
Open config.xml for CM your exteNd Director project.
com.sssw.cm.events.enable.Default
Copyright © 2004 Novell, Inc. All rights reserved. Copyright © 1997, 1998, 1999, 2000, 2001, 2002, 2003 SilverStream Software, LLC. All rights reserved. more ...