cancel
Showing results for 
Search instead for 
Did you mean: 

Custom Action de règle de contenu lancé sans condition

jack_8100
Champ in-the-making
Champ in-the-making
Bonjour,
Je commencerais par dire un traditionnel "je suis nouveau et débutant sur tout ce qui touche à Alfresco".
J'ai fouillé les forum, les tutos et les codes sources, mais je n'ai pu trouver aucune piste.

Et voici mon problème :
Je cherche à donner la possibilité de créer une règle de contenu associé à un espace particulier. Cette règle devra lancer une custom action que j'ai ajouter qui se declenchera soit à la fin de la création de la règle soit au lancement d'alfresco pour les règles déja créer.
J'ai vu que du coté du wizard il n'existait pas de type pour une règle dite "immediat" à la place de entrant , sortant , ou mise a jour .

Le traitement à terme de ma custom action est de pouvoir mettre a jour une base de donnée en fonction du contenu de l'espace auxquel est appliqué la règle.

Alors pour le moment rien d'extraordinaire pour ma custom action :

public class TestActionExecuter extends ActionExecuterAbstractBase
{
   public static final String NAME = "tag";

   private NodeService nodeService;
   private ContentService contentService;
   private RuleService ruleService;

   public void init(){
    
      System.out.println("Je suis lancé OUAI \\o/");
      super.init();
   }
 
   public void setNodeService(NodeService nodeService)
   {
      System.out.println("########################## Node Service pret !!!");
      this.nodeService = nodeService;
   }
  
   public void setContentService(ContentService contentService)
   {
      System.out.println("########################## Content Service pret !!!");
       this.contentService = contentService;
   }
  
   public void setRuleService(RuleService ruleService)
   {
      System.out.println("########################## Rule Service pret !!!");
       this.ruleService = ruleService;
   }

  
   protected void executeImpl(Action action, NodeRef actionedUponNodeRef)
   {
      if (this.nodeService.exists(actionedUponNodeRef) == true)
      {
       System.out.println(nodeService.getProperty(ruleService.getOwningNodeRef(action),ContentModel.PROP_NAME));
      }
  }
  
   @Override
   protected void addParameterDefinitions(List<ParameterDefinition> paramList)
   {
      // there are no parameters
   }


et du coté du test-context.xml :
<beans>

<bean id="tags.dictionaryBootstrap" parent="dictionaryModelBootstrap" depends-on="dictionaryBootstrap">
     <property name="models">
         <list>
             <value>alfresco/extension/testModel.xml</value>
         </list>
     </property>
</bean>

<bean id="tag" class="org.alfresco.sample.TestActionExecuter" parent="action-executer" >
   <property name="nodeService">
      <ref bean="nodeService" />
   </property>
   <property name="contentService">
            <ref bean="ContentService" />
   </property>
   <property name="ruleService">
            <ref bean="RuleService" />
   </property>
</bean>


<bean id="test-action-messages" class="org.alfresco.i18n.ResourceBundleBootstrapComponent">
   <property name="resourceBundles">
      <list>
         <value>org.alfresco.sample.test-action-messages</value>
      </list>
   </property>
</bean>

</beans>

Bon je met tout ce code mais je sais pas si ca servira.
Mais auriez vous des idées afin que la custom action s'execute au moment de sa création et une seule fois.
S'il vous plait je suis désesperé  :cry:

Jack
12 REPLIES 12

christophes
Champ in-the-making
Champ in-the-making
Tu peux aussi envisager une action (Java ou JavaScript) affichée pour tous les espaces et l'utilisateur n'aurait qu'à cliquer sur un bouton pour l'exécuter. En ce qui concerne les résultats, tu peux très bien créer un fichier, txt, HTML,… grâce aux API Alfresco.

Christophe

jack_8100
Champ in-the-making
Champ in-the-making
Trés bien trés bien ^^!

Je travaille actuellement avec la version d'alfresco community 2.9B, sous windows.
Le but d'obtenir un listing n'est qu'une etape, un test pour m'assurer du bon deroulement de la methode que j'utilise.
De plus ce listing permettra aussi de pouvoir recreer l'arborescence de l'espace en question dans une base de donnée XML (comme eXist, XML db, etc).
Ainsi le contenu de cette base de donnée, après execution de la règle,  doit avoir  (en prenant l'exemple précedent) cette allure :

Espace Test
|–> sous-espace Test
|        |–> contenu.xml
|–> sous-espace Test 2
|        |–> contenu2.xml

jack_8100
Champ in-the-making
Champ in-the-making
Bon j'ai finalement choisi ma première solution.
Je m'en contente pour le moment.
Je veux juste ajouter que si j'ai choisi de passer par les règles de contenu. C'etait simplement pour béneficier d'un confort qu'il procurait.
En tout cas , je remercie tout ceux qui ont tenter de m'aider.
Cordialement,