cancel
Showing results for 
Search instead for 
Did you mean: 

gestion du contenue

visapon
Champ in-the-making
Champ in-the-making
Bonjour tout le monde,

Voila je met en place un workflow pour validation du contenu .Cependant j'ai un petit souci car je dois garder les documents en cours de validation invisibles pour les utilisateurs saufe l'administrateur qui joue le role du valideur .

Ensuit apres valiation l'administrateur publie le contenue et tt les utilisateurs accessible à l'espace peuvent consulter le contenu validé .

Je sais comment implementer un worflow avancé sur alfresco mais j'ai aucune idée de la façon avec laquelle je dois implmenté cette condition avant publication du contenue .
21 REPLIES 21

visapon
Champ in-the-making
Champ in-the-making
Merci pour le tuyau de l’héritage  😎 , d’autres part pour correction il faut utiliser le "Read" et non pas le "Reader" dans le removePermission  car il s’agit d’une permission.

Ceci dit l’execution passe l’étape du removePermission, mais elle me génère une autre erreur qui est la suivante :

20:00:34,984 WARN  [org.alfresco.web.ui.repo.component.property.UIAssociation] Failed to find association definition for association 'bpm:assignee'
20:00:44,281 ERROR [org.alfresco.web.ui.common.Utils] Une erreur système s'est produite pendant l'opération : null
java.lang.NullPointerException
   at org.jbpm.graph.def.Transition.fireSuperStateEnterEvents(Transition.java:157)
   at org.jbpm.graph.def.Transition.take(Transition.java:141)

cleseach
Star Contributor
Star Contributor
Bonjour,

Sur ce genre de problème, le mieux est de nous présenter ton code et la log complète.

Cordialement,
Charles Le Seac'h

visapon
Champ in-the-making
Champ in-the-making
Voila les deux fichiers (processDefinition , validationModel) :


1- fichier  vdprecessdefintion.xml :


<?xml version="1.0" encoding="UTF-8"?>

<process-definition  xmlns="urn:jbpm.org:jpdl-3.2"  name="vdwf:validation du document">

   <!–Definition des swimlanes–>
<swimlane name="initiator" />

<swimlane name="Employee">
   <assignment pooled-actors="admin,autre"/>
   </swimlane>

<swimlane name="invite">
<assignment actor-id="invite"/>
</swimlane>


   <start-state name="vdwf:indexer un document">
   <task name="indexerDocument" swimlane="initiator"/>
      
      <transition name="submit" to="envoyer mail au validateur ">
      <action class="org.alfresco.repo.workflow.jbpm.AlfrescoJavaScript">
      <!–    Deplacement du fichier –>
            <script>   
               var tes = bpm_package;
               var doc = tes.children[0];   
               var invite = people.getPerson("invite");
            doc.setInheritsPermissions(false);
            doc.removePermission("Read",invite);
            </script>
         </action>
      </transition>
   </start-state>
   <node name="envoyer mail au validateur ">
      <transition name="Validor review" to="examiner document">
      </transition>
   </node>
   
<task-node name="vdwf:examiner document">
      <task name="examiner document" swimlane="Employee">
      </task>
      <transition to="publier le document" name="valide"></transition>
      <transition to="envoyer notification rejet" name="reject"></transition>
</task-node>

   <task-node name="vdwf:publier le document">
      <task name="publier document" swimlane="Employee"></task>
      <transition to="envoyer notification favorable" name="approuver">
      <action class="org.alfresco.repo.workflow.jbpm.AlfrescoJavaScript">
     <script>
        var tes = bpm_package;
               var doc = tes.children[0];               
     </script>
    </action>
         </transition>
   </task-node>

   <node name="envoyer notification rejet">
      <transition to="end" name="finir">
   
      </transition>
   </node>

   <node name="envoyer notification favorable">
   
      <transition to="end" name="sortir">
      
      </transition>
   </node>

   <end-state name="end"></end-state>
</process-definition>

2- Fichier vdworkflowModel.xml :


<?xml version="1.0" encoding="UTF-8"?>

<model name="wf:workflowmodel" xmlns="http://www.alfresco.org/model/dictionary/1.0">

   <imports>
      <import uri="http://www.alfresco.org/model/dictionary/1.0" prefix="d"/>
      <import uri="http://www.alfresco.org/model/bpm/1.0" prefix="bpm"/>
   </imports>

   <namespaces>
      <namespace uri="http://www.alfresco.org/model/workflow/1.0" prefix="vdwf"/>
   </namespaces>
     
   <types>

      <!–                               –>
      <!–  Basic Review & Approve Tasks –>              
      <!–                               –>
     
      <type name="vdwf:indexerDocument">
         <parent>bpm:startTask</parent>
      
      </type>

         <type name="vdwf:examiner document">
         <parent>bpm:workflowTask</parent>
         <overrides>
            <property name="bpm:packageItemActionGroup">
               <default>edit_package_item_actions</default>
            </property>
      
         </overrides>
      </type>
    
     <type name="vdwf:publier document">
         <parent>bpm:workflowTask</parent>
         <overrides>
         <property name="bpm:packageItemActionGroup">
         <default>edit_package_item_actions</default>
         </property>
         </overrides>
      </type>   
</model>

3-  La log :


21:25:43,296 INFO  [org.alfresco.config.xml.XMLConfigService$PropertyConfigurer] Loading properties file from class path resource [alfresco/file-servers.properties]
21:26:10,234 INFO  [org.alfresco.repo.domain.schema.SchemaBootstrap] Schema managed by database dialect org.hibernate.dialect.MySQLInnoDBDialect.
21:26:13,343 INFO  [org.alfresco.repo.domain.schema.SchemaBootstrap] Aucune modification na été apportée au schéma.
21:26:19,140 INFO  [org.alfresco.repo.admin.ConfigurationChecker] Le répertoire racine de données d'Alfresco ('dir.root') est : C:\Alfresco\alf_data
21:26:19,187 INFO  [org.alfresco.repo.admin.patch.PatchExecuter] Vérification des correctifs à appliquer …
21:26:19,515 INFO  [org.alfresco.repo.admin.patch.PatchExecuter] Aucun correctif requis.
21:26:19,578 INFO  [org.alfresco.repo.module.ModuleServiceImpl] 1 module(s) trouvé(s).
21:26:19,640 INFO  [org.alfresco.repo.module.ModuleServiceImpl] Démarrage du module 'org.alfresco.module.RecordsManagement' version 1.3.
21:26:21,703 WARN  [org.alfresco.util.OpenOfficeConnectionTester] La connexion à OpenOffice n'a pu être établie.
21:26:22,062 INFO  [org.alfresco.service.descriptor.DescriptorService] Alfresco JVM - v1.6.0_12-b04; maximum heap size 493,063MB
21:26:22,062 WARN  [org.alfresco.service.descriptor.DescriptorService] Alfresco JVM - WARNING - maximum heap size 493,063MB is less than recommended 512MB
21:26:22,062 INFO  [org.alfresco.service.descriptor.DescriptorService] Alfresco started (Labs): Current version 3.0.0 (Stable 1526) schema 1002 - Installed version 3.0.0 (Stable 1526) schema 1002
21:26:55,578 INFO  [org.alfresco.web.site.FrameworkHelper] Successfully Initialized Web Framework
21:27:00,671 INFO  [org.alfresco.util.OpenOfficeConnectionTester] The OpenOffice connection was re-established.
21:27:02,109 INFO  [org.alfresco.web.scripts.DeclarativeRegistry] Registered 67 Web Scripts (+0 failed), 71 URLs
21:27:02,109 INFO  [org.alfresco.web.scripts.AbstractRuntimeContainer] Initialised Presentation Web Script Container (in 1225.3787ms)
21:28:04,093 INFO  [org.alfresco.web.scripts.DeclarativeRegistry] Registered 101 Web Scripts (+0 failed), 105 URLs
21:28:04,093 INFO  [org.alfresco.web.scripts.AbstractRuntimeContainer] Initialised WebFramework Web Script Container (in 61935.37ms)
21:28:04,296 INFO  [org.alfresco.web.site.FrameworkHelper] Successfully Initialized Web Framework
21:28:47,171 WARN  [org.alfresco.web.ui.repo.component.property.UIAssociation] Failed to find association definition for association 'bpm:assignee'
21:28:56,140 ERROR [org.alfresco.web.ui.common.Utils] Une erreur système s'est produite pendant l'opération : null
java.lang.NullPointerException
   at org.jbpm.graph.def.Transition.fireSuperStateEnterEvents(Transition.java:157)
   at org.jbpm.graph.def.Transition.take(Transition.java:141)
   at org.jbpm.graph.def.Node.leave(Node.java:394)
   at org.jbpm.graph.def.Node.leave(Node.java:358)
   at org.jbpm.graph.def.Node.execute(Node.java:350)
   at org.jbpm.graph.def.Node.enter(Node.java:319)
   at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
   at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
   at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
   at java.lang.reflect.Method.invoke(Method.java:597)
   at org.hibernate.proxy.pojo.cglib.CGLIBLazyInitializer.invoke(CGLIBLazyInitializer.java:157)
   at org.jbpm.graph.def.Node$$EnhancerByCGLIB$$a794f40.enter(<generated>)
   at org.jbpm.graph.def.Transition.take(Transition.java:151)
   at org.jbpm.graph.def.Node.leave(Node.java:394)
   at org.jbpm.graph.node.StartState.leave(StartState.java:70)
   at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
   at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
   at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
   at java.lang.reflect.Method.invoke(Method.java:597)
   at org.hibernate.proxy.pojo.cglib.CGLIBLazyInitializer.invoke(CGLIBLazyInitializer.java:157)
   at org.jbpm.graph.def.Node$$EnhancerByCGLIB$$a794f40.leave(<generated>)
   at org.jbpm.graph.exe.Token.signal(Token.java:195)
   at org.jbpm.graph.exe.Token.signal(Token.java:140)
   at org.jbpm.taskmgmt.exe.TaskInstance.end(TaskInstance.java:485)
   at org.alfresco.repo.workflow.jbpm.WorkflowTaskInstance.end(WorkflowTaskInstance.java:133)
   at org.jbpm.taskmgmt.exe.TaskInstance.end(TaskInstance.java:399)
   at org.alfresco.repo.workflow.jbpm.JBPMEngine$26.doInJbpm(JBPMEngine.java:1693)
   at org.springmodules.workflow.jbpm31.JbpmTemplate$1.doInHibernate(JbpmTemplate.java:87)
   at org.springframework.orm.hibernate3.HibernateTemplate.execute(HibernateTemplate.java:372)
   at org.springframework.orm.hibernate3.HibernateTemplate.execute(HibernateTemplate.java:338)
   at org.springmodules.workflow.jbpm31.JbpmTemplate.execute(JbpmTemplate.java:80)
   at org.alfresco.repo.workflow.jbpm.JBPMEngine.endTask(JBPMEngine.java:1670)
   at org.alfresco.repo.workflow.WorkflowServiceImpl.endTask(WorkflowServiceImpl.java:544)
   at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
   at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
   at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
   at java.lang.reflect.Method.invoke(Method.java:597)
   at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:296)
   at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:177)
   at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:144)
   at org.alfresco.repo.security.permissions.impl.AlwaysProceedMethodInterceptor.invoke(AlwaysProceedMethodInterceptor.java:40)
   at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:166)
   at org.alfresco.repo.security.permissions.impl.ExceptionTranslatorMethodInterceptor.invoke(ExceptionTranslatorMethodInterceptor.java:49)
   at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:166)
   at org.alfresco.repo.audit.AuditComponentImpl.audit(AuditComponentImpl.java:275)
   at org.alfresco.repo.audit.AuditMethodInterceptor.invoke(AuditMethodInterceptor.java:69)
   at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:166)
   at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:107)
   at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:166)
   at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204)
   at $Proxy51.endTask(Unknown Source)
   at org.alfresco.web.bean.workflow.StartWorkflowWizard.finishImpl(StartWorkflowWizard.java:227)
   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.doInTransaction(RetryingTransactionHelper.java:320)
   at org.alfresco.repo.transaction.RetryingTransactionHelper.doInTransaction(RetryingTransactionHelper.java:227)
   at org.alfresco.web.bean.dialog.BaseDialogBean.finish(BaseDialogBean.java: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(DelegatingMethodAccessorImpl.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(ActionListenerImpl.java:61)
   at javax.faces.component.UICommand.broadcast(UICommand.java:109)
   at javax.faces.component.UIViewRoot._broadcastForPhase(UIViewRoot.java:97)
   at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:171)
   at org.apache.myfaces.lifecycle.InvokeApplicationExecutor.execute(InvokeApplicationExecutor.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(ApplicationFilterChain.java:290)
   at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
   at org.alfresco.web.app.servlet.AuthenticationFilter.doFilter(AuthenticationFilter.java:81)
   at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
   at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
   at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
   at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
   at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
   at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
   at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
   at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)
   at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:845)
   at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
   at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
   at java.lang.Thread.run(Thread.java:619)

cleseach
Star Contributor
Star Contributor
Bonjour,

Que donne ton workflow si tu enlève le script de gestion des permissions ? Arrives-tu bien à aller jusqu'au bout ?

En lisant la définition de ton workflow, je m'étonne de cette section :
   <node name="envoyer mail au validateur ">
      <transition name="Validor review" to="examiner document">
      </transition>
   </node>

Je n'en comprends pas la logique, ce qui me pousse à penser qu'elle peut générer un problème et qu'on pourrait s'en passer Smiley Wink

Cordialement,
Charles Le Seac'h

visapon
Champ in-the-making
Champ in-the-making
En fait j'ai toujours la même erreur, cependant cette fois le workflow est passé malgré ceci, c’est un peut bizarre, bref  après avoir testé mon worflow plusieurs fois il plante de temps en temps  ,je m’explique :
Quand j’initie le workflow en tant qu’administrateur  ça marche à presque tout les coups, mais quand j’initie avec n’importe quel utilisateur de l’espace j’ai des problèmes et cela est du surement à ce que cet utilisateur n’a pas le droit des couper les permission à priori (removePermission) .

Bien sur  ceci n’arrange pas les choses dans mon cas, car n’importe qui peut ajouter un contenue et lui initier le workflow et  par forcement l’admin  .

Meme dans le cas ou seul l’admin doit voir le document c’été a titre d’exemple, je peux laisser le droit seulement au Monsieur X pour voir et valider.
Autre question que je voulais te poser, c’est que l’utilisateur du worflow  n’est pas forcement un informaticien donc il ne doit pas démarrer le workflow, autrement dit ce workflow avancé doit être une règle prédéfini  (herite) dans cet espace et il s’exécute sur un fichier dès qu’il s’ajoute à l’espace.

visapon
Champ in-the-making
Champ in-the-making
Apres plusieurs tentatives j'ai compris ou se situe le problème :

Comme je l'ai deja précisé il y a 3 acteurs (initateur ,valideur,invite) ,du moment ou l'initateur fait le setinrehted(false) le valideur n'arrive plus à voir la resouce meme ci le valideur a des droits de lecture sur l'espace, il n'arrive plus a voir le document , ceci n'est pas valable quand le valideur est un administrateur (cas particulier ) .Dans le cas general le fait de couper l'heritage entre l'espace et le contenue cache le document non selement pour le visteur masi aussi pour le validuer (probleme) .

Donc j'ai esseyé de redonner les droits au valideur juste apres avoir enlever l'heritage ,mais sans succes voila comment j'ai proceder :


<action class="org.alfresco.repo.workflow.jbpm.AlfrescoJavaScript">
      <!–    Gestion des permissions –>
         <script>   
            var tes = bpm_package;
            var doc = tes.children[0];   
            var invite = people.getPerson("invite");
                                var valideur = people.getPerson("valideur");
            doc.setInheritsPermissions(false);
            doc.removePermission("Read",invite);
                                doc.setPermission("Read",valideur);
         </script>
      </action>

Voici l'erreur générée :


Caused by: org.hibernate.exception.DataException: could not insert: [org.alfresco.repo.domain.hibernate.DbAuthorityImpl]
   at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:77)
   at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:43)
   at org.hibernate.id.insert.AbstractReturningDelegate.performInsert(AbstractReturningDelegate.java:40)
   at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:2163)
   at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:2643)
   at org.hibernate.action.EntityIdentityInsertAction.execute(EntityIdentityInsertAction.java:51)
   at org.hibernate.engine.ActionQueue.execute(ActionQueue.java:322)

——–
Caused by: com.mysql.jdbc.MysqlDataTruncation: Data truncation: Data too long for column 'authority' at row 1
   at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3489)
   at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3423)
   at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1936)
   at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2060)

Quelqu'un aurais un petit astuce pour ce problème ?

cleseach
Star Contributor
Star Contributor
Bonjour,

Aucune idée sur la cause exacte de l'erreur que tu retournes.
En revanche, pour la gestion de tes permissions :
  • n'oublie pas qu'il faut travailler sur les rôles (Reader);

  • commence par définir les permissions propres à l'objet (remove, set, …) avant de couper l'héritage.
Cordialement,
Charles Le Seac'h

visapon
Champ in-the-making
Champ in-the-making
Merci cleseach pour votre reponse ,

Premierement je vois pas pourquoi je dois utilser le "Reader" à la place du "Read" ça me genère toujours une erreur  cannor find "Reader" , ce qui n'est pas le cas pour le "Read" d'ailleur c'est ce qui est precisé par les tutoriaux (il faut utiliser des permissions comme "Read,Write,Remove") .

Deuxiement je dois gérer les permission apres l'heritage car je dois redonner aux visiteurs la possibilite de consulter le contenue une fois publié .

Donc si je suis votre logique je dois avoir un truc du genre :


(…)

<start-state name="vdwf:indexer un document">
   <task name="indexerDocument" swimlane="initiator"/>
      <transition name="indexer" to="vdwf:examiner document">
               <action class="org.alfresco.repo.workflow.jbpm.AlfrescoJavaScript">
      <!– Donner les permissions de lecture au valideur avant de couper l'heritage –>
         <script>   
            var tes = bpm_package;
            var doc = tes.children[0];   
            var valideur = people.getPerson("valideur");
            doc.setPermission("Read",valideur);
         </script>
      </action>   

                <action class="org.alfresco.repo.workflow.jbpm.AlfrescoJavaScript">
      <!–    Couper l'heritage et cacher le doc aux visiteurs –>
         <script>   
            var tes = bpm_package;
            var doc = tes.children[0];   
            var invite = people.getPerson("invite");
            doc.setInheritsPermissions(false);   
         </script>
      </action>      
</transition>
   </start-state>

….

   <task-node name="vdwf:publier le document">
      <task name="publier document" swimlane="valideur"></task>
      <transition to="vdwf:envoyer notification favorable" name="Publier">
      <action class="org.alfresco.repo.workflow.jbpm.AlfrescoJavaScript">
      <!–    Redonner le droit de lecture aux visiteurs –>
         <script>   
            var tes = bpm_package;
            var doc = tes.children[0];   
            var invite = people.getPerson("invite");
            doc.setPermission("Read",invite);
         </script>
      </action>   
      </transition>
   </task-node>



Autrement dit, je donne la permission de lecture au valideur , je coup l'heritage et j'enlève le droit de lire pour le visiteur ,j'attend la publication du document pour redonner les droit aux invitée .

visapon
Champ in-the-making
Champ in-the-making
Bon pour ne pas trop se perdre dans cette discussion, je résume la problématique :

L’iniciateur lance le workflow ,il coupe l’héritage ,quand le valideur vient pour valider le document ,il ne peut pas voir le document car l’héritage  est coupé. Cependant si le valideur est l’admin lui-même le workflow passe avec sucées et l’administrateur publie le document en réappliquant les règles d’héritage (doc.setinrehted(true)) ,le problème c’est que le valideur n’est pas forcement un admin ,il peut être n’importe qui  que je lui accorde n’importe quel droit .

Bref avec admin comme valideur ça marche à merveille, mais quand le valideur est quelqu’un d’autres ça block !

cleseach
Star Contributor
Star Contributor
Bonjour,

Pour la permission "Reader", je suis bien dans l'erreur…. il faut utiliser "Consumer" qui est le rôle de lecteur.
Je vous incite à utiliser la permission "Consumer" plutôt que "Read" car vous pourrez voir depuis l'interface de gestion des utilisateurs invités d'Explorer les utilisateurs bénéficiant de ce rôle. Je ne suis pas certain qu'un utilisateur disposant uniquement de la permission "Read" sur un noeud soit visible dans cette interface.

Dans l'enchaînement de vos actions, on peut avoir quelque chose de la sorte pour la première étape du workflow :

<start-state name="vdwf:indexer un document">
   <task name="indexerDocument" swimlane="initiator"/>
      <transition name="indexer" to="vdwf:examiner document">
               <action class="org.alfresco.repo.workflow.jbpm.AlfrescoJavaScript">
         <script>  
            var tes = bpm_package;
            var doc = tes.children[0];  
     
            /* Donner les permissions de lecture au valideur avant de couper l'heritage */
            var valideur = people.getPerson("valideur");
            doc.setPermission("Coordinator",valideur);
            /* Couper l'heritage et cacher le doc aux visiteurs */
            doc.setInheritsPermissions(false);  

         </script>
      </action>     
</transition>
</start-state>

J'utilise le rôle "Coordinator" pour que le valideur puisse changer les permissions du contenu lors de l'étape de validation.
Si le rôle "Coordinator" offre trop de droits sur le document par rapport aux attentes, il faudra en créer un nouveau, dérivant du rôle "Consumer" et ajoutant la permission "ChangePermissions" au permissionGroup (cf. fichier permissionDefinition.xml).
Pour l'étape de validation, il faut juste utiliser le rôle "Consumer".

Je vous souhaite de bien terminer la semaine sur une réussite de la mise en oeuvre de votre workflow.

Cordialement,
Charles Le Seac'h
Getting started

Tags


Find what you came for

We want to make your experience in Hyland Connect as valuable as possible, so we put together some helpful links.