Permissions...

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

Permissions...

Coucou!

j'ai une question toute simple, rapide à répondre, mais qui m'aiderait à avancer dans ma réflexion :

Dans un workflow par exemple Review and Approve, il y a deux acteurs principaux : le reviewer et le submitter du doc.

quand le reviewer approve, le fichier doit se déplacer dans un autre dossier.

y'a -til moyen donc de changer les droits directement dans le javascript pour permettre au reviewer de déplacer le fichier(c'est à dire les droits de deletion et d'écriture…), ou doit -on obligatoirement passer par alfresco et ajouter des droits contributor ou autres aux personnes? (ce qui serait embetant en fait car les dossiers ou les docs st déplacés, seraient en fait créés directement dans le workflow…)

Suis-je assez claire pour une fois dans l'expression de mon besoin?

j'espère que quelqu'un pourra me soulager vite de cette question!

Merci =)
17 Replies
st
Member II

Re: Permissions...

J'ai trouvé dans le forum anglophone une once de solution (qui aurait pu etre LA solution) :

http://issues.alfresco.com/browse/AR-1911 : ce lien parle d'une implémentation de "<runas>".

Cependant quand je mets ça dans mon code :
<transition name="reject" to="S Revision">
      <action class="org.alfresco.repo.workflow.jbpm.AlfrescoJavaScript">
      <runas>admin</runas>
          <script>
         <!–Find the Acceptance folder–>
         var workingFolder = companyhome.childByNamePath("Working");

etc etc


j'obtiens l'erreur suivante :

ERROR [org.jbpm.instantiation.FieldInstantiator] couldn't parse set field 'runas' to value '<runas xmlns="urn:jbpm.org:jpdl-3.1">admin</runas>'
java.lang.NullPointerException

J'ai pourtant la version 'alfresco-community-2.1.0' le dernière dispo sur alfresco…


Quelqu'un pourrait-il me dire rapidement si possible, si c'est normal que j'obtienne cette erreur?

Auquel cas, comment faire pour disposer de cet attribut?

Merci d'avance de votre aide… J'en ai vraiment besoin :? …
rguinot
Customer

Re: Permissions...

Il semble que la balise runas ne soit dispo que dans la 2.9 et supérieures (voir fix version) comme indiqué sur l'issue JIRA que tu mentionnes.
En revanche tu peux donner des droits de contributeur sur le repertoire qui contiendra le contenu à ton reviewer mais inutile de le donner au submitter .

En gros tu peux avoir qqch de ce style :

Repertoire initial : reviewer et submitter sont coordinator ou moins
Repertoire de transition ( approval ) : submitter est contributor, reviewer coordinator par exemple
Repertoire d'approbation : submitter est guest, reviewer est contributor par exemple.

Cela répond il à ton besoin ?
st
Member II

Re: Permissions...

Merci de nouveau rguiniot pour ta réponse!

En fait non ça ne répond pas à ma problématique.

Je m'explique un peu mieux : j'ai besoin que  :

- le reviewer n'aie seulement qu'à approuver ou rejeter le document que le submitter lui propose
- le reviewer n'ait aucun droit de toucher à quoique ce soit dans ces trois dossiers que tu mentionnes : ni création, ni deletion
- le répertoire initial d'ou le doc est soumis à révision soit totalement privé au submitter et que le reviewer ne le voie pas ni ne peut le consulter
- le contenu du repertoire d'approbation (qui contient tous les documents approuvés) ne puisse être touché ni par le reviewer ni par le submitter( personne a part l'admin n'a le droit de modifier son contenu)

C'est pour cela que le "runas"  correspond tout à fait à mon besoin.

j'ai pu le trouver sur https://svn.alfresco.com/repos/alfresco-open-mirror/alfresco/HEAD/root/projects/repository/source/ja... .
Existe-il un moyen (svn?) pour mettre à jour ma version d'alfresco community 2.1.0? (je ne comprends pas bien pourquoiil existe une version 2.9 qui n'est pas dispo directement sur le wiki??)
Si c'est par le svn qu'il faut mettre à jour (et si c'est possible aussi), y'a t-il des docs à ta connaissance qui expliquent cela? (je n'ai jamais encore fait ça, cependant je souhaite vivement apprendre, cela me parait fort intéressant!)

Merci d'avance encore à toi!
michaelh
Active Member

Re: Permissions...

Hello,

La version 2.9 est pour le moment une version de développement, et pas une version utilisable. Donc il est normal qu'elle ne soit pas mise en avant particulièrement.

Tu peux essayer de suivre les indications du wiki pour recompiler entièrement Alfresco à partir des sources … ou alors récupérer une version 2.9 compilée ici. Attention par contre, c'est un "cliché" effectué chaque nuit qui comporte des portions de code non terminées, et donc :
- Il se peut qu'elle ne soit tout simplement pas fonctionnelle.
- tu risques de n'avoir de support de personne (car supporter une version de développement est souvent une perte de temps)

Autre piste : contacter l'auteur … c'est un collègue à toi Smiley Happy
st
Member II

Re: Permissions...

Merci Michael de me répondre encore à cette heure ci!  Smiley Very Happy

Qui est cet auteur dont tu parles? je ne le connais pas…

De plus, n'y a t-il pas moyen de récupérer juste la partie de code dont j'ai besoin pour avoir la balise runas qui marche?  :roll: C'est vraiment ce dont j'ai besoin! Prendre une version de développement serait effectivement assez risqué…

Que me conseillerais-tu de faire alors si tu étais moi?^^  :wink:
st
Member II

Re: Permissions...

J'ai une info à demander à ce propos…

J'ai récupéré la classe AlfrescoJavaScript grâce au head, avec le runas implémenté.

J'ai créé un jar avec jre1.6.0 et jre1.5.0 mais j'ai une erreur qui dit :

Caused by: java.lang.UnsupportedClassVersionError: Bad version number in .class file
lorsque je démarre mon workflow…

Avec quoi est compilé alfresco? Il faudrait que j'utilise le meme jre ou jdk, mais je ne sais pas comment trouver cette info. le wiki ne me donne pas la réponse.

Suivre les infos de la section "Java Code" du document : http://wiki.alfresco.com/wiki/Packaging_And_Deploying_Extensions est bien la bonne méthode n'est ce pas?
rguinot
Customer

Re: Permissions...

Habituellement il te donne un numéro de version (par exemple : 47, 48 , 49 dans ces eaux la) lorsque ce type d'erreur est généré. Cela peut te donner des indications sur la version de Java attendue.

Il faut soit compiler ton extension avec la version majeure de Java qu'Alfresco, ou bien recompiler Alfresco avec la version avec laquelle tu as compilé ton extension.
Je penche pour la première solution si cette extension n'utilise pas de nouveautés spécifiques à la 1.6.
st
Member II

Re: Permissions...

Merci!
Non je n'ai pas de numéro de version associé.

et Euhhh… Je suis vraiment désolée de ta gentillesse mais :

compiler ton extension avec la version majeure de Java qu'Alfresco

Comment je sais quelle est la version majeure d'Alfresco?
Et comment je fais ça?(j'attends pas un tutoriel, mais des grandes lignes… ) Dans ma courte vie d'informaticienne, je n'ai pas encore eu l'occasion de faire ça.. Et si ça se trouve ça en intéressera plus d'un!  :wink:


PS : Je suis en train d'essayer avec les AMP, mais ta solution  me parait plus facile quand même …

Merci d'avance rguinot (et non guiniot..pardon Smiley Surprisedops:  lol)
rguinot
Customer

Re: Permissions...

Les 4 premiers octets sont appelés "magic number" et servent à identifier une classe valide. Je te laisse chercher sur wikipedia ou l'historique des private jokes cachées derrière ces noms.
Les 2 suivants servent à identifier le major number et le minor number.

J'ai une petite classe qui permet de déterminer automatiquement le numéro, et c'est cadeau :

import java.io.*;

public class ClassVersionChecker {
    public static void main(String[] args) throws IOException
   {
        for (int i = 0; i < args.length; i++)
            checkClassVersion(args[i]);
    }

    private static void checkClassVersion(String filename) throws IOException
    {
        DataInputStream in = new DataInputStream
         (new FileInputStream(filename));

        int magic = in.readInt();
        if(magic != 0xcafebabe)
        {
              System.out.println(filename + " is not a valid class!");;
        }
        int minor = in.readUnsignedShort();
        int major = in.readUnsignedShort();
        System.out.println(filename + ": " + major + " . " + minor);
        in.close();
    }
}

Elle n'est pas de moi mais je ne sais plus ou je l'ai trouvée.
Tu peux également obtenir le même résultat avec un hexdump mais il faut parler couramment l'hexa.