Notes for governance plug-ins

These notes apply to the governance validation, governance modification, and governance notification plug-ins.

The plug-in will be invoked only for the object on which an operation is initially performed, not for any other objects in the governed collection on which the operation might be performed automatically, as a result of the initial operation. For example, if you transition the root object of a governed collection to a new state, the other objects in the collection will be transitioned automatically but the transition() method of the plug-in will be invoked only for the root object.

However, in your plug-in code you can obtain the complete list of objects in the governed collection by retrieving the GovernanceRecord object, using the getGovernanceRecord() method on the Governance Session Bean, and then calling its getGovernedObjects() method.

Validator, modifier and notifier events for governed objects

When a governance operation (makeGovernable(), transition(), or removeGovernance()) is invoked on an object or collection of objects in the WSRR a sequence of events will be seen by the validator, modifier or notifier plug-ins currently installed.

For example, consider a transition() operation performed on a governed collection consisting of several related WSDL documents and XSD documents. The transition() operation itself is run on a single object that is the object defined as the root of the governed collection. If the transition is successful the entire collection will move to a new lifecycle state and the classifications of each document in the collection will be updated to reflect this new state. In addition, the classifications of any logical objects derived from the documents in the governed collection will also be updated to reflect the new state, although these logical objects are not themselves considered as governed (only the documents from which they derive are considered governed). Note that for each logical object derived from the document, the update() method will not be called.

The result of this is that a specific sequence of events will be seen by any validators, modifiers or notifiers installed in WSRR. In the case of a transition this sequence will be:
  1. The transition() method will be called for any governance validators, modifiers or notifiers that are installed. This method will be passed the root object of the governed collection that is being transitioned.
    Note: this method is invoked only for the root object of the collection. However, in your plug-in code you can obtain the complete list of objects in the governed collection by retrieving the GovernanceRecord object, using the getGovernanceRecord() method on the Governance Session Bean, and then calling its getGovernedObjects() method.
  2. For each document in the governed collection the update() method will be called for all validators, modifiers and notifiers applicable to the given document. This update event occurs as the document classification is changed to reflect the new lifecycle state. The change of classification is the only change present on the update event.
    Note: a governance-specific validator, modifier or notifier might choose to ignore these update events, because it will have already seen the corresponding transition event. Also note that update events are not produced for the classification changes that occur to the logical objects derived from the original documents, even though these classifications do change. This is partly for performance reasons to avoid creating excessive numbers of validation calls for each governance operation and partly because these logical objects, although reflecting the same state classification as their originating document, are not themselves considered as governed.
A similar sequence of one governance event followed by multiple classification update events will also occur for the makeGovernable and removeGovernance operations.