cancel
Showing results for 
Search instead for 
Did you mean: 

[Résolu]Propriétés d'espace et des documents

slipknotik
Champ on-the-rise
Champ on-the-rise
Salut à tous,
je veux créer un modele d'espace auqu'elle j'attribue des propriétés, et je veux que tout les documents qu'on ajoute à cette espace aient les mêmes propriétés ainsi que les valeurs.
je peux utiliser l'action qui change le type d'un document, mais le problème et comment hériter les mêmes valeurs de propriétés que l'espace?
est ce quelqu'un a une idée?
merci
10 REPLIES 10

christophes
Champ in-the-making
Champ in-the-making
Bonjour,

La première idée qui me vient à l'esprit serait de créer une règle de contenu qui exécuterait un script à l'entrée d'un document dans l'espace. Ce script changerait le type des documents et copierait les métadonnées du dossier vers le document.

Si cela n'est pas possible directement depuis un JavaScript (j'avoue ne pas trop savoir comment changer le type ni si c'est possible), tu peux aussi appeler une action Java depuis la règle.

Enfin si tu as beaucoup de dossier de ce type sur lesquels placer cette règle et que cela peut être long à faire, tu peux créer un modèle d'espace avec cette règle. Ainsi tous les dossiers créés à partir du modèle auront cette règle.

Christophe

slipknotik
Champ on-the-rise
Champ on-the-rise
je pense à utiliser une  action excuter, pour attribuer des valeurs à mes propriétés.
mais j'ai besoin de connaitre la méthode qui attribue une valeur à une propriété personnalisé ?

est elle la methode suivante:
NodeService.addproperty(nodeRef, qname du property, (serializable) "chaine_de_caractere" );

svp est ce quelqu'un peut me donner un exemple ?
merci

slipknotik
Champ on-the-rise
Champ on-the-rise
salut a tous j'ai développé une action pour tester comment attribuer des valeurs à mes propriétés



package org.alfresco.sample;

import java.util.List;
import java.io.Serializable;

import java.util.Map;

import org.alfresco.model.*;
import org.alfresco.repo.action.ParameterDefinitionImpl;
import org.alfresco.repo.action.executer.ActionExecuterAbstractBase;
import org.alfresco.service.cmr.action.Action;
import org.alfresco.service.cmr.action.ParameterDefinition;
import org.alfresco.service.cmr.dictionary.DataTypeDefinition;
import org.alfresco.service.cmr.repository.NodeRef;
import org.alfresco.service.cmr.repository.NodeService;
import org.alfresco.service.namespace.QName;
import org.alfresco.web.bean.repository.Node;



public class SpaceOffreActionExecuter extends ActionExecuterAbstractBase
{
   private NodeService nodeService;
   

    /** The name of the action */
    public static final String NAME = "spaceoffre-action";   
   
    @Override
    protected void executeImpl(Action action, NodeRef actionedUponNodeRef)
    {
  

   

          if (this.nodeService.exists(actionedUponNodeRef) == false)
         
          {
          System.out.println("————erreur node ————————");  
          }
          else
         
          {   
  this.nodeService.setProperty(actionedUponNodeRef, SpaceOffreModel.PROP_CLIENT, (Serializable)"actionclient");          
           
     this.nodeService.setProperty(actionedUponNodeRef, SpaceOffreModel.PROP_BAILLEUR, (Serializable)"rrr");
                    
          }
       
       
     }
    }

 

   public NodeService getNodeService() {
      return nodeService;
   }

   public void setNodeService(NodeService nodeService) {
      this.nodeService = nodeService;
   }

   

}

quand je lance l'action depuis le client web j'obtiens l'erreur suivante :


Veuillez corriger les erreurs ci-dessous puis cliquez sur Terminer.

    * Impossible d'exécuter les Actions à cause de l'erreur : null

et voila la trace de l'erreur :!


08:19:52,218 User:admin ERROR [ui.common.Utils] Impossible d'excuter les Action
s  cause de l'erreur : null
java.lang.NullPointerException
        at org.alfresco.sample.SpaceOffreActionExecuter.executeImpl(SpaceOffreAc
tionExecuter.java:82)
        at org.alfresco.repo.action.executer.ActionExecuterAbstractBase.execute(
ActionExecuterAbstractBase.java:127)
        at org.alfresco.repo.action.ActionServiceImpl.directActionExecution(Acti
onServiceImpl.java:592)
        at org.alfresco.repo.action.ActionServiceImpl.executeActionImpl(ActionSe
rviceImpl.java:529)
        at org.alfresco.repo.action.ActionServiceImpl.executeAction(ActionServic
eImpl.java:391)
        at org.alfresco.repo.action.ActionServiceImpl.executeAction(ActionServic
eImpl.java:379)
        at org.alfresco.repo.action.ActionServiceImpl.executeAction(ActionServic
eImpl.java:600)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.
java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
sorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflecti
on(AopUtils.java:296)
        at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJo
inpoint(ReflectiveMethodInvocation.java:177)
        at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(
ReflectiveMethodInvocation.java:144)
        at org.alfresco.repo.security.permissions.impl.AlwaysProceedMethodInterc
eptor.invoke(AlwaysProceedMethodInterceptor.java:40)
        at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(
ReflectiveMethodInvocation.java:166)
        at org.alfresco.repo.security.permissions.impl.ExceptionTranslatorMethod
Interceptor.invoke(ExceptionTranslatorMethodInterceptor.java:49)
        at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(
ReflectiveMethodInvocation.java:166)
        at org.alfresco.repo.audit.AuditComponentImpl.audit(AuditComponentImpl.j
ava:275)
        at org.alfresco.repo.audit.AuditMethodInterceptor.invoke(AuditMethodInte
rceptor.java:69)
        at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(
ReflectiveMethodInvocation.java:166)
        at org.springframework.transaction.interceptor.TransactionInterceptor.in
voke(TransactionInterceptor.java:107)
        at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(
ReflectiveMethodInvocation.java:166)
        at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynami
cAopProxy.java:204)
        at $Proxy22.executeAction(Unknown Source)
        at org.alfresco.web.bean.actions.RunActionWizard.finishImpl(RunActionWiz
ard.java:101)
        at org.alfresco.web.bean.dialog.BaseDialogBean$1.execute(BaseDialogBean.
java:121)
        at org.alfresco.web.bean.dialog.BaseDialogBean$1.execute(BaseDialogBean.
java:118)
        at org.alfresco.repo.transaction.RetryingTransactionHelper.doInTransacti
on(RetryingTransactionHelper.java:320)
        at org.alfresco.repo.transaction.RetryingTransactionHelper.doInTransacti
on(RetryingTransactionHelper.java:227)
        at org.alfresco.web.bean.dialog.BaseDialogBean.finish(BaseDialogBean.jav
a:127)
        at org.alfresco.web.bean.wizard.WizardManager.finish(WizardManager.java:
580)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.
java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
sorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at org.apache.myfaces.el.MethodBindingImpl.invoke(MethodBindingImpl.java
:132)
        at org.apache.myfaces.application.ActionListenerImpl.processAction(Actio
nListenerImpl.java:61)
        at javax.faces.component.UICommand.broadcast(UICommand.java:109)
        at javax.faces.component.UIViewRoot._broadcastForPhase(UIViewRoot.java:9
7)
        at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:1
71)
        at org.apache.myfaces.lifecycle.InvokeApplicationExecutor.execute(Invoke
ApplicationExecutor.java:32)
        at org.apache.myfaces.lifecycle.LifecycleImpl.executePhase(LifecycleImpl
.java:95)
        at org.apache.myfaces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java
:70)
        at javax.faces.webapp.FacesServlet.service(FacesServlet.java:139)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Appl
icationFilterChain.java:290)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationF
ilterChain.java:206)
        at org.alfresco.web.app.servlet.AuthenticationFilter.doFilter(Authentica
tionFilter.java:81)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Appl
icationFilterChain.java:235)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationF
ilterChain.java:206)
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperV
alve.java:233)
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextV
alve.java:191)
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.j
ava:128)
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.j
ava:102)
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineVal
ve.java:109)
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.jav
a:286)
        at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java
:845)
        at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.proce
ss(Http11Protocol.java:583)
        at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:44
7)
        at java.lang.Thread.run(Thread.java:619)

est ce que quelqu'un à une idée concernant cette erreur et comment la corriger ?

slipknotik
Champ on-the-rise
Champ on-the-rise
svp j'ai besoin d'une idée

jayjayecl
Confirmed Champ
Confirmed Champ
Avez-vous donné ici l'ensemble du code de la classe de test ?
En fait l'erreur réside à la ligne 82 de cette classe, mais si je copie-colle votre code dans un éditeur de texte, cela s'arrete a la ligne 60 et quelques …

christophes
Champ in-the-making
Champ in-the-making
Est-ce que tu as mis l'entièreté du code de ton action? Car tes logs semblent indiquer une erreur en ligne 82 mais quand je copie ton code je n'en ai que 68.

        at org.alfresco.sample.SpaceOffreActionExecuter.executeImpl(SpaceOffreAc
tionExecuter.java:82)
C'est peut-être un problème d'injection du nodeService dans la déclaration de ton action. Poste également le fichier XML qui décrit ton action.

Christophe

slipknotik
Champ on-the-rise
Champ on-the-rise
En effet il y avait des commentaire au début, quand j'ai fait le copie collé je l'ai supprimé,
mais cette ligne correspond au test de l'existence du noeud :
if (nodeService.exists(actionedUponNodeRef) == false)
         


voici le fichier context de l'action :

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

<beans>
     
    <!– Logger Action Bean –>
    <bean id="spaceoffre-action" class="org.alfresco.sample.SpaceOffreActionExecuter" parent="action-executer"/>
  
      <!– Load the Logger Action Messages –>  
      <bean id="spaceoffre-action-messages" class="org.alfresco.i18n.ResourceBundleBootstrapComponent">
       <property name="resourceBundles">
          <list>
             <value>org.alfresco.sample.spaceoffre-action-messages</value>
          </list>
       </property>
      </bean>
     
</beans>

le fichier modele oû sont défini les QName
package org.alfresco.sample;

import org.alfresco.service.namespace.QName;



public interface SpaceOffreModel {

    static final String SPOFFRE_MODEL_URI = "package.model";
    static final String SPOFFRE_MODEL_PREFIX = "erm";
   

    static final QName TYPE_SPOFFRE = QName.createQName(SPOFFRE_MODEL_URI, "package");

  
   
    static final QName PROP_DESEIGN = QName.createQName(SPOFFRE_MODEL_URI, "Design");
    static final QName PROP_NOFFRE = QName.createQName(SPOFFRE_MODEL_URI, "NumOffre");
    static final QName PROP_OBJET = QName.createQName(SPOFFRE_MODEL_URI, "Objet");
    static final QName PROP_CLIENT = QName.createQName(SPOFFRE_MODEL_URI, "Client");
    static final QName PROP_MODEOFFRE = QName.createQName(SPOFFRE_MODEL_URI, "ModeOffre");
    static final QName PROP_PAYS = QName.createQName(SPOFFRE_MODEL_URI, "Pays");
    static final QName PROP_MISSION = QName.createQName(SPOFFRE_MODEL_URI, "Mission");
    static final QName PROP_SERVICE = QName.createQName(SPOFFRE_MODEL_URI, "Service");
    static final QName PROP_SITUATION = QName.createQName(SPOFFRE_MODEL_URI, "Situation");
    static final QName PROP_RO = QName.createQName(SPOFFRE_MODEL_URI, "RO");
    static final QName PROP_PARTENAIRE = QName.createQName(SPOFFRE_MODEL_URI, "Partenaire");
    static final QName PROP_BAILLEUR = QName.createQName(SPOFFRE_MODEL_URI, "Bailleur");
    static final QName PROP_ETAT = QName.createQName(SPOFFRE_MODEL_URI, "Etat");
    static final QName PROP_DATEENVOI = QName.createQName(SPOFFRE_MODEL_URI, "DateEnvoi");
    static final QName PROP_QUALITE = QName.createQName(SPOFFRE_MODEL_URI, "Qualite");
    static final QName PROP_CODESOC = QName.createQName(SPOFFRE_MODEL_URI, "CodeSociete");

}

jayjayecl
Confirmed Champ
Confirmed Champ
C'est peut-être un problème d'injection du nodeService dans la déclaration de ton action. Poste également le fichier XML qui décrit ton action.

Christophe

bingo !

christophes
Champ in-the-making
Champ in-the-making
Il me semble que la déclaration de ton action devrait plutôt ressembler à :
    <bean id="spaceoffre-action" class="org.alfresco.sample.SpaceOffreActionExecuter" parent="action-executer">
      <property name="nodeService">
            <ref bean="nodeService"/>
        </property>
    </bean>
Le fait de rajouter les lignes property, permet d'injecter le nodeService dans ton action (attention à bien déclarer tes getter/setter pour les différents services).

Christophe