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

L'extension de vérification d'opération prend en charge uniquement la création d'un nouvel objet, y compris la création d'une nouvelle bibliothèque. Les opérations d'importation de bibliothèque ou d'obtention d'élément créées lors de la syndication ignorent cette vérification d'opération.

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.

Remarque : Cette extension ne peut pas être utilisée avec des composants de page ou des modèles générés à l'aide de la fonction de génération.

Procédure

  1. 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/wcm directory.

  2. 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;
       }
    }
  3. 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.
Naming conventions :
Si vous créez une application de plug-in associée aux mêmes nom et ID qu'un plug-in existant, le nouveau plug-in risque de remplacer le premier. Lorsque vous créez des applications de plug-in, vérifiez que les éléments suivants sont uniques sur votre système :
  • 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.