The HowTo Components tutorial contains several advanced Java components for the Content Server, as well as documentation of common Stellent Java classes. The intention of this document is to show examples of how to hook into the internal Stellent Java API, and call custom Java code. Stellent Java Component Architecture supports five primary methods for adding custom Java code: Filters, Class Aliases, custom Service Handlers, custom Service Classes, and custom IdocScript Extensions.
Filters are used to execute custom code at specific moments that occur deep down in the core of the product, such as when new content is checked in, when security credentials are determined, or when the server first starts up. They are generally the quickest, easiest, and least intrusive way to plug in custom code. However, a filter might not exist where you need one.
Service Classes are used to execute custom Java code in the exact same way that IdcServices (such as 'CHECKIN_NEW') call Java code. A new Service Class can easilly be configured to call customized code, however they are limited in what standard code they can call.
Service Handlers are also used to execute custom code in the context of a custom Service, but with greater flexibility. Java code inside a custom Service Handler can be called from either a custom Service, or an existing Service. Also, custom Services that leverage Service Handlers can be configured to execute standard Java code as well. These are slightly harder to configure than custom Service Classes.
IdocScript Extensions can be used to add new IdocScript functions. These functions will be available on any template page or dynamic server page (HCSP/T/F). These are useful for anybody who uses IdocScript extensively on rendered pages or workflows, and would like to extend the functionality.
Class Aliasing is used when you wish to extend the functionality of an entire content server Java class. This can only be used on select classes, and should be considered a last resort. You should not use one unless no Filter exists, and a custom Service would not be sufficient.
Some of the HowTo components are simple, such as the DynamicPrefix and WorkflowCheck components. Others demonstrate a higher degree of code complexity, such as the DataAccess and StockQuotes components. They are numbered in order of difficulty below:
| Name: | Purpose: |
| #1 - DynamicPrefix | This will alter the auto number prefix of a checked in document based on the document type. |
| #2 - WorkflowCheck | When a document is checked in, sometimes it fits the proper criteria for a workflow. This component causes additional security checks on the contributor to be performed to make sure the workflow should be started. |
| #3 - AcmeMail | This creates a simple web form that can be used to send email to arbitrary email addresses, or to the specific users based on nothing more than their username or alias. |
| #4 - SecurityFilter | A filter that allows a temporary "boosting" of security credentials over one request, for a specific service. In this case, it allows anonymous users to check in files, and dynamicly grants account priviledges to users. |
| #5 - ScheduledEvent | A filter that hooks into the scheduling system inside the content server. It creates two events, one that is executed every five minutes, and one that is executed with the system events, and can be configured to only run at midnight. |
| #6 - AddAlternateFile | This component demonstrates the new 7.5 ability to 'chain' ServiceHandlers by overriding the existing action 'addFiles' to generate and add an alternate file for large documents. |
| #7 - NewIdocScript | This component demonstrates how to add new IdocScript functions and variables for use on template pages. Very handy if you wish to farm out some page generation to pure Java code. |
| #8 - StockQuotes | This component demonstrates how to use personalization to create a special page for each user that displays personal stock ticker data. |
| #9 - DataAccess | This component creates and prefills a database table once, then allows the user to alter the data in the table with simple Idc services. |
| #10 - DatabaseProvider | This component demonstrates how to use Database Providers to perform predefined queries against an external database through the content server. |
Filters are a common way to plug-in custom Java code into the server using specific 'hooks' in the code. You can create custom Java code, and register that code with a component, in order to have it executed at these specific moments. Many hooks exist, but the most commonly used ones are the hooks for server startup, for the checkin of a document, and when security privileges are calculated.
The component DynamicPrefix demonstrates how to use a filter upon the checkin of a document. The component ScheduledEvent demonstrates how to hook into the internal scheduling system of the content server to run code at specific times. The component DataAccess demonstrates how to use a filter upon the startup of the server to modify the database. The component SecurityFilter shows how to boost a users security access for one single request.
In a filter, you always have access to a DataBinder object, which contains some information about the actions being performed. There is also a Workspace object, which gives access to the database. There is also an ExecutionContent object, which typically has information about the user performing the action, as well as other relevant cached objects.
A list of available filter hooks are listed at the end of this document.
New Service Classes are a common way to create new services that execute custom Java code. A new service is created, along with a new Service Type, and any code in a custom Java class file that extends intradoc.server.Service (or one of its subclasses) can be executed. This is a quick and simple way to create new services that call custom code.
The component AcmeMail uses a custom Service Type and a custom service to call custom Java code. The Java code extends the class 'intradoc.server.Service', and the IdcService 'SEND_ACME_MAIL' calls functions that exist inside this custom code. All functions called by the custom IdcService must be defined in the custom Java code, or its superclass.
Please note, some functionality is lost with custom Service Classes - actions such as checkin, update, editing personalization, etc. cannot be easily executed from an entirely new Service Type, unless the specific subclass is extended. Either way, existing IdcServices cannot be easily augmented to call custom code in new service classes. For these kinds of customizations, custom Service Handlers are used.
Service Handlers are another powerful way to add custom code to standard IdcServices, and to create completely new services. To do this, the custom Java code must extend 'intradoc.server.ServiceHandler' (or one of its subclasses), and be registered as a service handler with the component. Then Java methods with a specific signature can be called from service definitions as actions. This is done in the components DatabaseProvider, StockQuotes, and AddAlternateFile.
Starting in Content Server version 7.5, Service Handler actions can be chained.
This means that if two components both define a method called addFiles,
they can be written in such a way that any service that has uses addFiles
as an action can call both pieces of Java code. The order is determined by the load
order specified in the ServiceHandler table.
In StockQuotes, we wish to create a new service, but it needs to be able to execute the personalization code as well. Personalization uses the UserProfileHandler code, which is a handler for services of type DocService. Therefore, our custom services should be of the type DocService, and a custom handler should be merged into that Service Type.
In DatabaseProvider, we wish to execute new services with custom Java code to run queries against an external database. In this case, we are not currently executing any actions in other ServiceHandler objects, so it is not required to have its Java methods in a ServiceHandler. However, it is still a good idea to make it a handler for DocService, to better enable future enhancements.
In AddAlternateFile,
Another more specialized way to execute custom Java code is by creating a new IdocScript variable, or function. In general, modifications to IdocScript should focus on page generation and display, and should be limited to read-only requests. IdocScript should never be used to write data, otherwise security issues will become a problem. A few examples of possible new IdocScript variables and functions are presented in the component NewIdocScript.
The code in this component demonstrates what parts of the Java code should be left alone, and what parts should be altered. Modification of this component requires more care than the other components, because certain parts of the sample code should never be altered.
When standard functionality is not desirable, or when the user wants significantly different behavior that cannot be altered with a ServiceHandler, new IdocScript, or a filter, the last resort is a class alias.
A class alias uses a custom class instead of the default Java class. Typically, this custom class will extend the standard class, and then overload only those functions that need to behave differently. In most cases, these kinds of customizations require access to the original source code, such as the one in the WorkflowCheck component.
Since class aliasing will cause the component's class to override the standard, no content server can run two components that override the same class. Therefore, it should be done only as a last resort. All services and service handlers can be class aliased.
A list of all aliasable classed is at the end of this document.
Below you will find lists of the available filter hooks, and the classes that can be aliased. Please note that this only applies to SCS 7.5, and older versions may not support all of the classes below.
Below is a list of filter names, and a short description of where and when they are executed. In addition, a list of what CachedObjects are available in the ExecutionContent object is presented. Unless explicitly noted, all Cached Objects are Strings.
A |
| addExportedWebFilterConfiguration |
| Executed right before the web filter configuration file 'SecurityInfo.hda' is published. Use this hook to pass extra configuration info to a custom web filter plugin. |
| addExtraPreviewParameters |
| Executed towards the end of intradoc.preview.PreviewHandler.performPreview in the service call 'PREVIEW_DOCUMENT' to add parameters to the binder used to create a preview of a document. |
| addFiles |
| During checkin, executed immediately before the uploaded files are placed into the vault folder. |
| additionalImportFilter |
| Used during a Archiver table import, can specify a SQL WHERE clause in the databainder variable 'additionalImportFilter' to control what rows get imported. |
| advanceDocumentStateMarkWorkflowFinished |
| Executed just before a content item in workflow is marked as finished.
Extra logging, or updating of external resources can be done here.
Cached Objects: intradoc.server.workflow.WorkflowStates WorkflowStates |
| advanceDocumentStateStart |
| Executed at each step in a workflow (check in, check out,
approve)to enable the storage of extra data, or the complete overriding of
core workflow behavior.
Cached Objects: intradoc.server.workflow.WorkflowStates WorkflowStates, boolean WorkflowUseLocal |
| afterArchiveBatchFile |
| After archiving a batch of files, this filter is
executed. A good place to perform additional logging. Cached Objects: String archiveName, String batchDir, String batchFileName, String metaFileName, String fileNumber |
| afterCreateTransferPackageFileSet |
| Executed during archive replication services
such as 'REQUEST_TRANSFER' and 'TRANSFER_ARCHIVE'. It is executed just
before creating the ZIP file to replicate. A good place to add extra
data to an archive.
Cached Objects: String batchDir, String archiveDir, String targetDir, String fileName, intradoc.data.ResultSet fileSet, intradoc.server.archive.ArchiveImportStateInformation importState |
| afterLoadRecordWebChange |
| Executed during indexing of deletions, additions, or retries. This will fire
after a web file (???) If it returns ABORT, no idexing of the content item is done. A
good place to hook in extremely pervasive changes to the indexing engine. Execution Context: intradoc.indexer.IndexerWorkObject Cached Objects: intradoc.data.DataBinder WebChangeFilterParams, intradoc.indexer.IndexerInfo FilterIndexerInfo, intradoc.indexer.IndexerBulkLoader IndexerBulkLoader, intradoc.indexer.WebChange WebChange, intradoc.data.ResultSet DemotedRevisionInfo |
| afterImportBatch |
| Executed during an archive import after a batch of files
is imported. Most batches are groups of 1000 or less.
Cached Objects:Vector currentImportDocs |
| afterInitLocale |
| Executed at the beginning of every service request after the locale for the user has been determined. |
| afterPrepareSingleDoc |
| This is executed only when the archive explicitly imports
one single item from an archive via the 'IMPORT_DOCUMENT' service. It is run after
the item has been preprocessed. All field maps and value maps will have been applied.
Cached Objects: Vector currentImportDocs |
| afterPreprocessImportBatch |
| Called after the metadata for a batch of items in an
import have been preprocessed. All field maps and value maps will have been applied.
Cached Objects:Vector currentImportDocs |
| allowProblemReportAction |
| Executed at the beginning of allowProblemReportAction() in
UPDATE_PROBLEMREPORT and DELETE_PROBLEMREPORT
Cached Objects: String TestProblemReportAction |
| alterProviderAttributes |
| This filter is executed after retrieving a user's information
from an external user provider, such as LDAP. It is useful for altering any user attribute,
or mapping an organizational attribute to a security attribute. Cached Objects: intradoc.provider.UserProvider TargetUserProvider |
| alterUserCredentials |
| Executed at the end of 'retrieveUserDatabaseProfileData' to allow
temporary alteration of user credentials over the scope of a
single request for any purpose. Cached Objects: intradoc.shared.UserData TargetUserData |
| archiveCheckinRevisionComparisonTest |
| Executed during an archive, when testing to see which service call to perform when inserting a new item. If 'canInsertNew' is true, the 'INSERT_NEW' service is used. Otherwise an error is thrown. |
| archiveHistoryItem |
| During an archive, executed after recording the history of an archived document into the ArchiveHistory database table. |
| ArchivableTableRelationsDefinition |
| Executed during an archive to grab a list of additional database tables to package up into the archive. |
| auditUserAttributesStore |
| During an update of user data, before the new data is saved to
the database, this filter can be called to perform extra validation
or store extra information into a different table. Cached Objects: intradoc.shared.UserData TargetUserData, Boolean hasUserChanged |
B |
| beforeLoadRecordWebChange |
| Executed during indexing of deletions, additions, or retries. A
good place to hook in extremely pervasive changes to the indexing engine. Cached Objects: intradoc.data.DataBinder WebChangeFilterParams, intradoc.indexer.IndexerInfo FilterIndexerInfo, intradoc.indexer.IndexerBulkLoader IndexerBulkLoader, intradoc.indexer.WebChange WebChange, intradoc.data.ResultSet DemotedRevisionInfo |
C |
| checkDocRules |
| Called in function 'checkDocRules' which is executed during a
check-in, check-out, or update to check which security rules apply.
For example, does this user have rights to change the author on
an update. Additional rules can be added. Cached Objects: String CheckRule |
| checkExtendedSecurityModelDocAccess |
| During a security check for a document, executed to augment the
normal security levels to grant access to other documents. Cached Objects: Integer desiredPrivilege, intradoc.data.ResultSet securityProfileResultSet, intradoc.data.DataBinder securityProfileData, Boolean securityResult, String securityResultMsg |
| checkMetaChangeSecurity |
| Used during entity/collaboration security checks when the content
info for an item changes. Throw a security exception if access is denied.
Cached Objects:boolean checkMeta:isNewDoc, intradoc.data.ResultSet checkMeta:priorDocInfo |
| checkScheduledEvents |
| Executed after checking if its time to run scheduled events, such as the compaction of the database, or the removal of the cache, which are performed every few hours. The check itself is executed every five minutes. A good place to add scheduled actions. |
| xxxComponentUninstallFilter |
| Replace 'xxx' with the name of a component, and this filter will be run when the Admin Server or Component Wizard uninstalls a component. If extra cleanup is required, place such code here. |
| computeDocName |
| Used to adjust 'dDocName' during a checkin after the AutoNumberPrefix (if any) is applied, but before valididation is done. |
| computeExtendedSecurityModelWhereClausePrivileges |
| During a security check for a service, executed to augment the normal
security levels to grant special access to finding files in the search
results that a user might not normally have access to. Cached Objects: Integer desiredPrivilege, Boolean isVerity, intradoc.shared.UserData UserData |
| computeFunction |
| Used as a quick way to add an IdocScript function, but
not an IdocScript variable. The last object in the array 'args' is the return value,
if one exists.
Cached Objects: String function, Object[] args |
| computeOptionList |
| Used to compute or filter an option list for display on
IdocScript pages. Place the result Vector in the cached object 'optionlist'. Mostly
deprecated by the Schema functionality.
Cached Objects: Vector params |
| createProviderData |
| When adding or editing a provider, executed after the data
for the provider has been created (and after 'validateProvider'). Cached Objects: intradoc.data.DataBinder ProviderData |
| createWebWiewable |
| Executed in the last step of a check in, when the
web viewable file is placed in the weblayout directory. Executed immediately before
the web files are created/converted/moved.
Cached Objects: intradoc.server.WebViewableConverterOutput WebViewableOutput |
D |
| determineDocConversion |
| Executed in the 'docRefinery' action to override the
computed value for 'dConversion', which is used by the refinery to process content.
Cached Objects: Object[] DocConversionParams, which contains in order intradoc.server.DocFormats docFormats, Boolean isResubmit, String fileKey, String format, String conversionType |
| doUpdateMoveCheck |
| Called in the 'UPDATE_DOCINFO' service to check if
a content item's metadata was modified sufficiently to force it to be moved.
For example, changing the security group or content type is usually blocked if the
item is in a workflow or refinery process.
Cached Objects: String doUpdateMoveCheckParams |
| docUrlAllowAccess |
| During "remoteCredentialsCheck", executed to allow augmentation
of security levels for external users. Cached Objects: intradoc.shared.UserData UserData |
| docUrlAllowDisclosure |
| During the IdocScript function "docUrlAllowDisclosure" executed to allow augmentation of security levels for the disclosure of urls to content. |
| dynamicFileLoadDocEnvironment |
| Executed every time a HCSP/T/F is rendered in the content server. Use this hook to load up a richer environment for rendering pages. |
E |
| editHttpResponseHeader |
| Used when building the response page to any service call to
modify the generated HTTP headers in the response. Cached Objects: intradoc.server.ServiceHttpImplementor HttpImplementor, StringBuffer responseBuffer |
| editTopic |
| Executed when PNE data is saved to the content server (workflow in queue, saved searches). If FINISHED is returned, the default updating of the files is not done. Can be used to modify or extend how user preferences are saved. Cached Objects: Properties topicEditRowProps |
| evaluateGlobalRulesAndProfile |
| Executed before content profiles are evaluated. Can be used to set flags to trigger profile specific behavior, such as ':defaultValue' and ':isExcluded'. |
| editTopic |
| During the addition or editing of personalization topics, executed
before the editing takes place in "prepareTopicEdits" to perform
final validation, or saving to another topic. Cached Objects: Properties topicEditRowProps |
| extraAfterConfigInit |
| Executed after the IdcSystemLoader is initialized, at the very beginning of the server's startup. A good place to execute a filter once early on in intialization. |
| extraAfterServicesLoadInit |
| Executed after all the services are loaded into the server. Typically, this is at the last part of the server's initialization, and any one-time post initialization filter can go here.. |
| extraBeforeCacheLoadInit |
| Executed during server initialization, after database connections have been established, but before the data in the database has been cached. A good place for database table manipulation. |
F |
| finishProfileEvaluation |
| Executed after all the content profiles and global rules
have been evaluated. An ideal place to trigger additional profile side-effects.
Cached Objects: Hashtable FieldMap |
| fixUpAndValidateQuery |
| Executed immediately before a search query is run. This is the last chance to modify 'QueryText' before the search is run. |
| formPostSubmit |
| Executed at the very end of a Html Form submission, after all the data has been submitted. |
| formPreSubmit |
| Executed at the very end of processForm(), after the default data precessing occurs, but before the Html Form gets submitted |
G |
| getDocFormats |
| Executed on content info pages to determine the known formats of a content item (text/html, application/unknown, etc) |
| getEnterpriseSearchResults |
| Executed at the end of an enterprise search. |
| getnextrow |
| A callback filter used when looping over result sets
in IdocScript. It can be used to filter the values displayed.
Cached Objects: String resultset |
H |
| handleIndexerResult |
| Executed after indexing was attempted on a content item.
Additional error logging, callbacks, or retry logic can occur here.
Cached Objects: intradoc.indexer.IndexerInfo, intradoc.indexer.WebChange |
I |
| importTable |
| Executed before the Archiver imports the data from an archived database table. |
| incomingSocketProviderInit |
| Executed when any incoming socket provider is initialized, such as the connection from the web server, or from another content server. |
| incomingSocketProxyAuth |
| Executed when an incoming socket provider has its
authorization validated. Cached Objects: intradoc.data.DataBinder ProxyAuthProviderData, Properties ProxyAuthParams |
| initSearchIndexer |
| Executed at the end of the initialization of the search indexer. |
| initSubjects |
| Executed after loading the cached tables upon server intialization. |
J |
| JspExecution |
| Executed immediately before a request for a JSP is
rendered by the internal JSP engine. This is a good place to create a richer
environment for JSP execution.
Cached Objects: java.io.OutputStream OutputStream, intradoc.data.Workspace Workspace |
L |
| loadDefaultInfo |
| Executed at the beginning of the function loadDefaultInfo, typically when checkin/update forms are displayed for retrieval of doc formats, doc types, and accounts. |
| loadMetaDefaults |
| Executed at the beginning of the function loadMetaDefaults, for the loading of custom metadata and the defaults. |
| loadMetaOptionsLists |
| Executed before loading the custom metadata option lists from the database. |
| loadStateLists |
| Executed before the state list is loaded for a project. |
| loadUserAttributes |
| Executed towards the end of loading the database
attributes for a user. Cached Objects: intradoc.shared.UserData TargetUserData |
N |
| notifySubjects |
| Called before the subjects are notified (users, work,
indexer status, etc.). Cached Objects: Vector serviceSubjects, Boolean isNotify |
| notifynextrow |
| Executed after the 'getnextrow' filter.
Cached Objects: String resultset |
O |
| onEndScriptSubServiceActions |
| Executed at the end of every service call that is executed from IdocScript. |
| onEndServiceRequestActions |
| Executed at the end of all successful service requests before the response is sent back. |
| onServiceRequestError |
| Executed every time a service throws an error.
Cached Objects: intradoc.server.ServiceException CurrentRequestError |
| outgoingRequestHeaders |
| Executed to alter the HTTP headers for an outgoing request
from one content server to another. Cached Objects: Properties requestHeaders |
P |
| parseDataForServiceRequest |
| A hook to allow parsing of raw GET request data before it is barsed into a DataBinder object. |
| postConversionQueueSubmit |
| Executed in the refinery process further along than 'createWebWiewable', right before the workflow history is recorded. |
| postDocHistoryInfo |
| Executed after the document history is recorded in the DocumentHistory database table. |
| postHtmlFormCheckin |
| Executed in function postHtmlFormCheckin() in service 'SUBMIT_HTML_FORM' for submitting Html Forms. |
| postIndexingStep |
| Executed after the indexer processes a content item, immediately before the cleanup. |
| postParseDataForServiceRequest |
| Similar to 'parseDataForServiceRequest', but for POST requests. |
| postProcessBatch |
| Executed by the archiver at the end of the import of an archived database table. |
| postUnpackageResultFile |
| Executed towards the end of a preview request, after the preview files have been unpackaged. |
| postValidateCheckinData |
| Executed at the end of the action 'validateCheckinData' after the filter 'validateCheckinData' and the content profiles have been evaulated. This is a good hook for last-chance metadata validation for check ins. |
| postWebfileCreation |
| Executed after the file is placed into the weblayout
directory. Cached Objects: String WebfilePath, String VaultfilePath |
| preIndexingStep |
| Executed at the beginning of an indexer step, right after the indexer determines which files to process. |
| preMergeInFileInfo |
| Executed when building an archive, during creation of a batch result set, before computing the names of the files to archive. |
| preWebfileCreation |
| Executed before the file is put into the conversion queue. The resulting converted file will be placed into the weblayout directory. |
| prepareHttpResponseHeader |
| Executed before the HTTP response is created for
every service call. Cached Objects: intradoc.server.ServiceHttpImplementor HttpImplementor, StringBuffer responseBuffer |
| prepareQuery |
| Executed before the general search query is assembled. A good place to modify the sort order and result count. |
| prepareQueryText |
| This is the first chance available to modify the parameters that will alter how the 'QueryText' is normalized. Modifications to the 'QueryText' belong here or in 'fixUpAndValidateQuery'. |
| prepareSubscriptionMail |
| Executed before information about a subscription is placed in the
mail queue. A good place to add extra data to the binder so that subscription emails can
be rendered.
Cached Objects: boolean isSendMail |
R |
| removeCustomDatedCaches |
| Executed before deleting a dated cache for the Dynamic Converter(???). |
| requestAuditEndRequest |
| If the 'requestaudit' tracing section is active, this filter
will be executed at the end of every request. A useful place to put extra debugging information.
Cached Objects: String requestAuditServiceName, String requestAuditCurNumActiveThreads |
| requestAuditParsedRequest |
| If the 'requestaudit' tracing section is active, this will be executed after the data for a request has been parsed, but before the request has been processed. |
| requestAuditStartRequest |
| If the 'requestaudit' tracing section is active, this
will be executed immediately after an incoming request has been initialized, before
any parsing of the request. This is a very powerful hook to allow for extremely
thread-specific and request-specific logging.
Cached Objects: intradoc.server.IdcServerThread RequestAuditIncomingThread, intradoc.server.ServiceManager RequestAuditServiceManager |
| requestAuditStatisticsReport |
| If the 'requestaudit' tracing section is active, this will be
executed intermittently (see RequestAuditIntervalSeconds) to generate an overall statistics
report. If customization of the report is desired, mostly likely another filter for
'requestAuditStartRequest' will be needed in order to store custom data.
Cached Objects:StringBuffer (requestAuditReportBuffer) |
| retrieveProviderInfo |
| Executed after the data about a provider is loaded for display. |
S |
| scheduledSystemEvent |
| Similar to the 'checkScheduledEvents' filter, but more useful for modifying the behavior of existing system scheduled events. |
| sendDataForServerResponse |
| Executed at the end of every service request that
returns raw data, like what happens when 'IsJava=1' is passed in the URL. This
is useful for overriding how request data is sent back to application servers
and the like.
Cached Objects: String responseString |
| sendDataForServerResponseBytes |
| Same as 'sendDataForServerResponse', but this filter
is executed first. If the cached object 'responseBytes' is non-null, its byte
stream will be passed back.
Cached Objects: String encoding, byte[] responseBytes |
| submitHtmlForm |
| Executed in function submitHtmlForm() in service 'SUBMIT_HTML_FORM'
for submitting Html Forms. Cached Objects: String IsTemplate |
U |
| unmanagedDocCheckAccess |
| In the event of a dynamic page request for an unmanaged file (eg. images, help, portal.htm) this filter will be executed to enable custom access validation. |
| updateExtendedAttributes |
| Executed when revision information about a content item
changes (check in, delete, update) right before the 'dRevRank' flag is calculated.
Cached Objects: String attributes:revAction |
| updateMetaTable |
| Executed after the DocMetaDefinition has changed. |
| updateSubscriptionInfo |
| Executed before the subscription info is
updated. Cached Objects: intradoc.indexer.WebChanges WebChanges, intradoc.indexer.IndexerState IndexerState |
| updateWorkflowStateAfterChange |
| Executed in function updateWorkflowStateAfterCheckin() in service 'WORKFLOW_CHECKIN_SUB' to allow additional alteration of parameters for updating the state of a content item in a workflow. |
V |
| XXX:validate |
| Executed at the beginning of 'hasAllowableValueInOptionLists' which checks whether or not a value for a metadata field is valid. 'XXX' should be replaced with the name of the metadata field to check, such as 'xComments'. |
| validateCheckinData |
| During checkin or update, executed before validating some of the data, such as account name, revision label, and field lengths. |
| validateProvider |
| When adding or editing a provider, executed after the data for the provider has been validated. |
| validateStandard |
| During update or checkin, executed before validating some of the data, such as dReleaseState, dDocName, dRevClassID, dDocTitle, primaryFile, alternateFile, dCreateDate, dInDate, and dOutDate. |
W |
| workflowComputeDocStepInfo |
| Executed each time a the state of an item in workflow
is calculated for display purposes.
Cached Objects: intradoc.shared.workflow.WfStepData WfStepData |
| Classname | Location |
| Applications | intradoc.apps.shared.Applications |
| ArchiveCheckinHandler | intradoc.server.ArchiveCheckinHandler |
| ArchiveExportHelper | intradoc.server.archive.ArchiveExportHelper |
| ArchiveHandler | intradoc.server.archive.ArchiveHandler |
| ArchiveHandler | intradoc.server.archive.ArchiveHandler |
| ArchiveImportStateInformation | intradoc.server.archive.ArchiveImportStateInformation |
| ArchiveService | intradoc.server.ArchiveService |
| ArchiveTableCallBack | intradoc.server.archive.ArchiveTableCallBack |
| BatchService | intradoc.server.BatchService |
| BuildChanges | intradoc.indexer.IndexerBuildChanges |
| ChunkedService | intradoc.server.ChunkedService |
| CollaborationService | intradoc.server.CollaborationService |
| CommonSearchConfigCompanion | intradoc.search.DBSearchConfigCompanion, intradoc.search.AvsSearchConfigCompanion, or intradoc.search.VeritySearchConfigCompanion |
| ConverterHandler | intradoc.server.converter.ConverterHandler |
| DataBinderProtocol | intradoc.server.DataBinderProtocolImplementor |
| DetermineSubscription | intradoc.indexer.DetermineSubscription |
| DocCommonHandler | intradoc.server.DocCommonHandler |
| DocIndexer | intradoc.indexer.DocIndexerAdaptor |
| DocIndexer | intradoc.indexer.DocIndexerAdaptor |
| DocProfileService | intradoc.server.DocProfileService |
| DocProfileStates | intradoc.server.DocProfileStates |
| DocService | intradoc.server.DocService |
| DocServiceHandler | intradoc.server.DocServiceHandler |
| DocServiceHandler | intradoc.server.DocServiceHandler |
| DocumentAccessSecurity | intradoc.server.DocumentAccessSecurity |
| DtmExtendedLoader | intradoc.server.IdcExtendedLoader |
| ExpirationNotifier | intradoc.server.ExpirationNotifier |
| ExpiredContentHandler | intradoc.server.ExpiredContentHandler |
| FileService | intradoc.server.FileService |
| FormHandler | intradoc.server.FormHandler |
| HttpImplementor | intradoc.server.ServiceHttpImplementor |
| IdcExtendedLoader | intradoc.server.IdcExtendedLoader |
| IndexAdditions | intradoc.indexer.CommonIndexerBulkLoader |
| IndexDeletions | intradoc.indexer.CommonIndexerBulkLoader |
| IndexRetries | intradoc.indexer.CommonIndexerBulkLoader |
| Indexer | intradoc.indexer.Indexer |
| IndexerDriver | intradoc.indexer.IndexerDriverAdaptor |
| IndexerExecution | intradoc.indexer.IndexerExecution |
| IndexerExecutionHandler | intradoc.indexer.VerityHandler |
| (ALTAVISTA)IndexerExecutionHandler | intradoc.indexer.AltavistaHandler |
| (DATABASE)IndexerExecutionHandler | intradoc.indexer.DatabaseHandler |
| (DATABASEFULLTEXT)IndexerExecutionHandler | intradoc.indexer.DatabaseFullTextHandler |
| IndexerService | intradoc.server.IndexerService |
| IndexerTransition | intradoc.indexer.IndexerTransition |
| JspServiceHandler | intradoc.server.jsp.JspServiceHandler |
| ListBoxService | intradoc.server.ListBoxService |
| LocaleService | intradoc.server.LocaleService |
| MetaService | intradoc.server.MetaService |
| OutgoingProviderManager | intradoc.server.proxy.OutgoingProviderManager |
| PageHandler | intradoc.server.PageHandler |
| PageHandler | intradoc.server.PageHandler |
| PageHandlerService | intradoc.server.PageHandlerService |
| PageHandlerService | intradoc.server.PageHandlerService |
| PageRequestService | intradoc.server.PageRequestService |
| ProblemReportHandler | intradoc.server.ProblemReportHandler |
| ProjectDocHandler | intradoc.server.ProjectDocHandler |
| ProjectService | intradoc.server.ProjectService |
| ProviderManagerService | intradoc.server.ProviderManagerService |
| ProxyImplementor | intradoc.server.proxy.ServiceProxyImplementor |
| Replication | intradoc.server.IndexerReplication |
| RevisionImplementor | intradoc.shared.RevisionImplementor |
| ScheduledSystemEvents | intradoc.server.ScheduledSystemEvents |
| SchemaArchiveHandler | intradoc.server.archive.SchemaArchiveHandler |
| SchemaEditHelper | intradoc.shared.schema.SchemaEditHelper |
| SchemaFieldConfig | intradoc.shared.schema.SchemaFieldConfig |
| SchemaHandler | intradoc.server.SchemaHandler |
| SchemaHelper | intradoc.shared.schema.SchemaHelper |
| SchemaLoader | intradoc.server.schema.ServerSchemaLoader |
| SchemaPublisher | intradoc.server.schema.StandardSchemaPublisher |
| SchemaPublisherThread | intradoc.server.schema.StandardSchemaPublisherThread |
| SchemaRelationConfig | intradoc.shared.schema.SchemaRelationConfig |
| SchemaService | intradoc.server.SchemaService |
| SchemaTableConfig | intradoc.shared.schema.SchemaTableConfig |
| SchemaUtils | intradoc.server.schema.SchemaUtils |
| SchemaViewConfig | intradoc.shared.schema.SchemaViewConfig |
| SearchCache | intradoc.search.SearchCache |
| SearchFieldInfo | intradoc.shared.SearchFieldInfo |
| SearchManager | intradoc.server.SearchManager |
| SearchService | intradoc.server.SearchService |
| SecurityImplementor | intradoc.upload.UploadSecurityImplementor |
| ServerSchemaManager | intradoc.server.schema.StandardSchemaManager |
| Service | intradoc.server.Service |
| ServiceHandler | intradoc.server.ServiceHandler |
| SubscriptionByDocument | intradoc.indexer.DocumentOrientedSubscription |
| SubscriptionBySubscription | intradoc.indexer.SubscriptionOrientedSubscription |
| SubscriptionHandler | intradoc.server.SubscriptionHandler |
| TransferHandler | intradoc.server.archive.TransferHandler |
| TransferHandler | intradoc.server.archive.TransferHandler |
| TransferServiceHandler | intradoc.server.archive.TransferServiceHandler |
| UserProfileHandler | intradoc.server.UserProfileHandler |
| UserService | intradoc.server.UserService |
| UserServiceHandler | intradoc.server.UserServiceHandler |
| UserServiceHandler | intradoc.server.UserServiceHandler |
| UserServiceHandler | intradoc.server.UserServiceHandler |
| WebFilterConfigHandler | intradoc.server.filter.WebFilterConfigHandler |
| WebViewableConverterOutput | intradoc.server.WebViewableConverterOutput |
| WorkflowDocImplementor | intradoc.server.workflow.WorkflowDocImplementor |
| WorkflowHandler | intradoc.server.workflow.WorkflowHandler |
| WorkflowScriptHandler | intradoc.server.workflow.WorkflowScriptHandler |
| WorkflowService | intradoc.server.WorkflowService |
| WorkflowStates | intradoc.server.workflow.WorkflowStates |
| WorkflowTemplateService | intradoc.server.WorkflowTemplateService |
| intradoc.server.UserStorageImplementor | intradoc.server.UserStorageImplementor |
| intradoc.server.UserTempCache | intradoc.server.UserTempCache |