Création d'une classe de vérification d'opération
Le plug-in OperationCheckPlugin est utilisé pour indiquer si une opération au sein du système doit continuer ou si elle doit être arrêtée. The extension is called prior to committing a Web Content Manager operation to evaluate whether the operation should be allowed to continue. Le plug-in peut renvoyer un message d'erreur qui s'affichera pour l'utilisateur.
Pourquoi et quand exécuter cette tâche
Pour créer un plug-in OperationCheckPlugin, vous devez créer une classe de vérification d'opération, puis enregistrer le fichier en le déployant sur le serveur.
Procédure
- Créez une classe Java qui implémente l'interface interface com.ibm.workplace.wcm.api.extensions.operation.OperationCheckPlugin. Cette classe peut implémenter les méthodes suivantes :
Operation scope()- Cette méthode renvoie l'opération sur laquelle ce plug-in est exécuté. Actuellement, seule l'opération Operation.CREATE est prise en charge.
OperationCheckResult checkOperation(OperationContext context)
Consultez la documentation Javadoc pour plus d'informations. The Javadoc files for Web Content Manager are in the
PortalServer_root/doc/Javadoc/spi_docs/com/ibm/workplace/wcmdirectory. - Implémentez la méthode checkOperation(). Cette méthode contient le code qui est exécuté lorsque le plug-in est appelé avant la validation d'une opération Web Content Manager. La méthode doit renvoyer une instance qui implémente l'interface com.ibm.workplace.wcm.api.extensions.operation.OperationCheckResult. L'instance doit implémenter deux méthodes :
boolean canContinue()- Renvoie la valeur true pour signifier que l'opération peut continuer. Sinon, si la valeur false est renvoyée, l'opération est abandonnée.
ErrorMessageContainer messages();- Renvoie des messages localisés à l'appelant. Si la valeur NULL est renvoyée, au message ne s'affiche.
Si canContinue() renvoie la valeur true, l'opération se poursuit. Dans le cas contraire, l'opération est bloquée et le message renvoyé par la méthode messages() s'affiche dans l'interface utilisateur.
Par exemple:package com.acme; import com.ibm.workplace.wcm.api.Document; import com.ibm.workplace.wcm.api.DocumentLibrary; import com.ibm.workplace.wcm.api.ErrorMessageContainer; import com.ibm.workplace.wcm.api.WCMApiObject; import com.ibm.workplace.wcm.api.extensions.operation.CreateOperationContext; import com.ibm.workplace.wcm.api.extensions.operation.OperationCheckPlugin; import com.ibm.workplace.wcm.api.extensions.operation.OperationCheckResult; import com.ibm.workplace.wcm.api.extensions.operation.OperationContext; /** * Test OperationCheckPlugin that will track if it has been invoked and can optionally * halt or allow the operation to continue. The message to return must be supplied or null * will be returned. */ public class SampleOperationChecker implements OperationCheckPlugin { /** Operation cancel token. When found in the title of the item being created the operation * will be stopped. */ public static final String CREATE_OP_STOPPER_TOKEN = "--- Operation Check Plugin ----"; /** Message to return */ private ErrorMessageContainer m_msgContainer = null; /** * Constructor */ public SampleOperationChecker() { super(); } @Override public OperationCheckResult checkOperation(OperationContext p_context) { OperationCheckResult result = null; final boolean canContinue; if (p_context instanceof CreateOperationContext) { CreateOperationContext createContext = (CreateOperationContext) p_context; WCMApiObject object = createContext.object(); String title = null; if (object instanceof Document) { Document document = (Document) object; title = document.getTitle(); } else if (object instanceof DocumentLibrary) { title = ((DocumentLibrary)object).getTitle(); } else { title = object.getName(); } if (title != null && title.indexOf(CREATE_OP_STOPPER_TOKEN) > -1) { canContinue = false; } else { canContinue = true; } } else { canContinue = true; } result = new OperationCheckResult() { @Override public ErrorMessageContainer messages() { return m_msgContainer; } @Override public boolean canContinue() { return canContinue; } }; return result; } @Override public Operation scope() { return Operation.CREATE; } /** * @param p_msgContainer message container this plugin will return */ public void setMsgContainer(ErrorMessageContainer p_msgContainer) { m_msgContainer = p_msgContainer; } } - Un fichier plugin.xml est requis, que le déploiement soit effectué via un fichier WAR, EAR ou JAR. Si vous effectuez un déploiement via une application dans un fichier WAR ou EAR, ajoutez le fichier plugin.xml au dossier "WEB-INF" de l'application. Lorsque vous utilisez un fichier JAR, ajoutez le fichier plugin.xml à la racine du fichier JAR.
<?xml version="1.0" encoding="UTF-8"?> <plugin id="com.acme" name= "Sample Operation Check Plugin" version= "1.0.0" provider-name= "IBM" > <extension point="com.ibm.workplace.wcm.api.OperationCheckPlugin" id="SampleOperationChecker" > <processor class="com.acme.SampleOperationChecker"/> </extension> </plugin>
Que faire ensuite
- Chaque plug-in est représenté par une balise
<extension></extension>unique. - La valeur de l'attribut de point doit être "
com.ibm.workplace.wcm.api.OperationCheckPlugin". - Entrez l'ID de votre choix.
- Indiquez la classe de fournisseur associée à votre plug-in.
- L'ID de plug-in, le nom de plug-in et l'extension de plug du fichier plugin.xml.
- Le nom de classe qualifié complet et le chemin de toutes les classes dans l'application.
- le chemin d'accès aux fichiers de l'application.