Ré-appliquer les règles récursivement...

cancel
Showing results for 
Search instead for 
Did you mean: 
berlioux
Member II

Ré-appliquer les règles récursivement...

Bonjour.

J'ai une règle qui associe une catégorie aux contenus d'un espace. Cette règle s'applique aussi aux sous-espaces.

Quand j'effectue l'action "ré-appliquer les règles", les dites règles sont ré-appliquées uniquement dans l'espace courant, et pas dans les sous-espaces…
Comment peut-on paramétrer cela ?
4 Replies
michaelh
Active Member

Re: Ré-appliquer les règles récursivement...

Eh bien … on ne peut pas … pour l'instant Smiley Happy

J'ai vu passer un commentaire disant qu'une nouvelle action avait été ajoutée pour ré-appliquer récursivement, mais ce sera pour une version suivante.
berlioux
Member II

Re: Ré-appliquer les règles récursivement...

Un petit java-script (Re-appliquer les regles recursivement.js) permettant de faire ça :


// JavaScript Document

// Se lance sur un espace
// Réapplique les règles de contenu dans l'espace et tous les sous-espaces.

// Création de l'action
var apprules = actions.create("execute-all-rules");
// Activation de l'exécution des règles héritées
apprules.parameters["execute-inherited-rules"] = true;

// Lancement de la fonction de parcours récursif sur l'espace
logger.log("Début du script…");
rulexec_recurse(space);
logger.log("Fin du script…");

// Fonction de parcours récursif
//==============================
function rulexec_recurse(currentSpace)
{
   logger.log("Execution des regles de "+currentSpace.displayPath + "/" + currentSpace.name)
   // Lancement de l'action sur l'espace courant
   apprules.execute(currentSpace);
  
   if ( currentSpace.children != null )
   {
      for each ( child in currentSpace.children )
      {
         if ( child.isContainer ) // Si c'est un répertoire…
         {
            rulexec_recurse(child);
         }
      }
   }
}


Pour que l'action "execute-all-rules" soit accessible il faut rajouter dans le dossier d'extension de configuration un fichier custom-action-services-context.xml contenant :


<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE beans PUBLIC '-//SPRING//DTD BEAN//EN' 'http://www.springframework.org/dtd/spring-beans.dtd'>

<beans>
    <bean id="execute-all-rules" class="org.alfresco.repo.action.executer.ExecuteAllRulesActionExecuter" parent="action-executer" >
        <property name="nodeService">
            <ref bean="NodeService" />
        </property>
        <property name="actionService">
            <ref bean="ActionService" />
        </property>
        <property name="ruleService">
            <ref bean="RuleService" />
        </property>
        <property name="dictionaryService">
            <ref bean="DictionaryService" />
        </property>
        <!–property name="publicAction">
            <value>false</value>
        </property–>
    </bean>
</beans>


Attention : Ce script n'exécute pas les règles de l'espace dans les sous-espaces qui en héritent, mes TOUTES les règles de TOUS les sous-espaces. A utiliser en connaissance de cause Smiley Wink
michaelh
Active Member

Re: Ré-appliquer les règles récursivement...

Merci pour la contrib !

Je me suis permis de remplacer la balise "citation" par la balise "code", elle a le bon goût de conserver l'indentation Smiley Happy
berlioux
Member II

Re: Ré-appliquer les règles récursivement...

merci pour l'info, j'utiliserai cette balise à l'avenir Smiley Wink