permisos diferentes en un mismo directorio

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

Re: permisos diferentes en un mismo directorio

Al que madruga Dios le ayuda.

Primero, yo trabajaria con grupos mejor que con usuarios, es mas facil gestionar los permisos por grupos y mas claro.

Por supuesto, puedes asiganar distintos roles a distintos grupos/usuarios en un mismo documento.

Saludos
giorgio
Member II

Re: permisos diferentes en un mismo directorio

Si bueno, lo que pasa es que la idea, seria en el workflow cambiar los permisos con tu codigo, para que asi cualquier usuario que tenga la tarea pueda ver el documento, y el que no la tenga, como ni siquiera le aparecerá la carpeta no puede ver ese documento, pero si a ese usuario que no tiene permisos se le asigna una tarea con ese documento adjunto que si que lo pueda ver.

Gracias y saludos.
giorgio
Member II

Re: permisos diferentes en un mismo directorio

Buenas de nuevo, finalmente he conseguido mi proposito, he traducido el codigo para usarlo en los flujos avanzados, y ahora cualquier usuario puede ver cualquier documento adjunto aunque este se encuentre en un spacio en el que no tiene permisos, muchas gracias por vuestra ayuda, ahora lo que quisisera saber es,
¿el documento en cuestion, para los demas usuarios que tengan acceso al directorio donde se encuentra se seguirá viendo de la misma manera y se podran realizar las mismas acciones sobre él, quiero decir habran cambiado los permisos de alguna manera para estos usuarios?

¿Seria posible devolverle los mismos permisos que tenia al documento? Porque he visto que para este usuario ahora no es posible entrar en la carpeta que contiene el documento, pero si se le permite buscar el documento por nombre y aparece, esto estamos hablando fuera del flujo, entonces podria ser que eso no me interesara, es decir que solamente quisiera que lo viera por el flujo de trabajo. Pordria realizar el mismo procedimiento dandole los permisos anteriores al terminar el flujo, pero y como sé cuales tenia? Es simple curiosidad.

Muchas gracias por todo y saludos.
giorgio
Member II

Re: permisos diferentes en un mismo directorio

Hola buenas de nuevo, a ver si me podeis ayudar con este problemilla, como ya os he comentado eh conseguido mi cometido con los workflows, en concreto con el workflow de revision, de usuario a usuario, entonces una vez hecho esto, me he dispuesto a realizar lo mismo pero en el flujo paralelo de usuarios, es decir en el de un usuario hacia varios usuarios, y pregunto, si el código es el mismo, porque en un flujo funciona y en el otro no? en los dos flujos envia la tarea perfectamente y el correo tambien, pero en el workflow parallelo parece que no quita los permisos, sin embargo, si me imprimo en el correo la variable "acl" que contiene los permisos que voy quitando, al final si que contiene los permisos que supuestamente le pongo.

os pongo los dos processdefinition.xml de cada uno de los flujos para que veais las diferencias:

Este es el review_processdefinition.xml que si que funciona bien, quita los permisos de herencia y asigna los nuevos.

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

<process-definition xmlns="urn:jbpm.org:jpdl-3.1" name="wf:review">

    <swimlane name="initiator" />

    <start-state name="start">
        <task name="wf:submitReviewTask" swimlane="initiator" />
        <transition name="" to="review" />
    </start-state>

    <swimlane name="reviewer">
        <assignment class="org.alfresco.repo.workflow.jbpm.AlfrescoAssignment">
            <actor>#{bpm_assignee}</actor>
        </assignment>   
    </swimlane>

    <task-node name="review">
        <task name="wf:reviewTask" swimlane="reviewer">
            <event type="task-create">
                <script>
                    if (bpm_workflowDueDate != void) taskInstance.dueDate = bpm_workflowDueDate;
                    if (bpm_workflowPriority != void) taskInstance.priority = bpm_workflowPriority;
                </script>   
            </event>
        </task>
       <transition name="" to="completed" />

    <event type="node-enter">
<!– Update the status to Rejected when we enter this task –>
<action class="org.alfresco.repo.workflow.jbpm.AlfrescoJavaScript">
<script>



for (var i = 0; i &lt; bpm_package.children.length; i++)
{

bpm_package.children[i].properties["my:prioridad"] = bpm_workflowPriority;
bpm_package.children[i].properties["my:ultimoestado"] = "Pendent";
bpm_package.children[i].properties["my:ultimotecnico"] = bpm_assignee.properties["cm:userName"];
if(bpm_package.children[i].properties["my:estado"]==null){
bpm_package.children[i].properties["my:estado"] = "Pendent";
bpm_package.children[i].properties["my:tecnico"] = bpm_assignee.properties["cm:userName"];
}else{
bpm_package.children[i].properties["my:estado"][bpm_package.children[i].properties["my:estado"].length] = "Pendent";
bpm_package.children[i].properties["my:tecnico"][bpm_package.children[i].properties["my:tecnico"].length] = bpm_assignee.properties["cm:userName"];
}
bpm_package.children[i].save();




bpm_package.children[i].setInheritsPermissions(false);

var permissions = bpm_package.children[i].permissions;
var acl=[];
for (var j=0; j &lt; permissions.length; j++)
{
acl = permissions[j].split(";");
var perm=acl[2];
var grp=acl[1];
bpm_package.children[i].removePermission(perm,grp);
}


bpm_package.children[i].setPermission("Consumer", bpm_assignee.properties["cm:userName"]);



}

           var mail = actions.create("mail");
           mail.parameters.to = bpm_assignee.properties["cm:email"];
           mail.parameters.subject = "Notificacion de tarea asignada" + bpm_workflowDescription;
           mail.parameters.from = "noreply@edu.gva.es";
           mail.parameters.text = "No responda a este mensaje.La tarea "+ bpm_workflowDescription +" le ha sido ASIGNADA debe revisarla aqui http://notasinternas.edu.gva.es";
           mail.execute(bpm_package);

</script>
</action>
</event>

    </task-node>

    <task-node name="completed">
    <event type="node-enter">
<!– Update the status to Rejected when we enter this task –>
<action class="org.alfresco.repo.workflow.jbpm.AlfrescoJavaScript">
<script>
for (var z = 0; z &lt; bpm_package.children.length; z++)
{

bpm_package.children[z].properties["my:prioridad"] = bpm_workflowPriority;
bpm_package.children[z].properties["my:ultimoestado"] = "Acabat";
bpm_package.children[z].properties["my:ultimotecnico"] = bpm_assignee.properties["cm:userName"];
if(bpm_package.children[z].properties["my:estado"]==null){
bpm_package.children[z].properties["my:estado"] = "Acabat";
bpm_package.children[z].properties["my:tecnico"] = bpm_assignee.properties["cm:userName"];
}else{
bpm_package.children[z].properties["my:estado"][bpm_package.children[z].properties["my:estado"].length] = "Acabat";
bpm_package.children[z].properties["my:tecnico"][bpm_package.children[z].properties["my:tecnico"].length] = bpm_assignee.properties["cm:userName"];
}
bpm_package.children[z].save();
}
</script>
</action>
</event>
        <transition name="" to="end" />
    </task-node>
    <end-state name="end" />

</process-definition>

Y este otro es el parallellreview_proccessdefinition.xml en el que el correo llega bien la tarea tambien llega a todos los usuarios pero parece que no corta la herencia y no asigna los nuevos permisos al documento.

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

<process-definition xmlns="urn:jbpm.org:jpdl-3.1" name="wf:parallelreview">

    <swimlane name="initiator"></swimlane>

    <start-state name="start">
        <task name="wf:submitParallelReviewTask" swimlane="initiator" />
        <transition name="" to="startreview"/>
    </start-state>

    <node name="startreview">
        <action class="org.alfresco.repo.workflow.jbpm.ForEachFork">
            <foreach>#{bpm_assignees}</foreach>
            <var>reviewer</var>
        </action>

        <event type="node-enter">
            <script>
                <variable name="wf_approveCount" access="write" />
                <expression>
                    wf_approveCount = 0;
                </expression>
            </script>
        </event>
        <transition name="review" to="review" />
    </node>

    <task-node name="review">
        <task name="wf:reviewTask">
            <assignment class="org.alfresco.repo.workflow.jbpm.AlfrescoAssignment">
               <actor>#{reviewer}</actor>
            </assignment>
        </task>
<event type="node-enter">
<action class="org.alfresco.repo.workflow.jbpm.AlfrescoJavaScript">
<script>


for (var i = 0; i &lt; bpm_package.children.length; i++)
{

bpm_package.children[i].setInheritsPermissions(false);

var permissions = bpm_package.children[i].permissions;
var acl=[];
for (var j=0; j &lt; permissions.length; j++)
{
acl = permissions[j].split(";");
var perm=acl[2];
var grp=acl[1];
bpm_package.children[i].removePermission(perm,grp);

           var mail = actions.create("mail");
           mail.parameters.to = reviewer.properties["cm:email"];
           mail.parameters.subject = "Notificacion de tarea asignada";
           mail.parameters.from = "noreply@edu.gva.es";
           mail.parameters.text = acl +"No responda a este mensaje.Tiene una tarea ASIGNADA debe revisarla aqui http://notasinternas.edu.gva.es";
           mail.execute(bpm_package)

}

bpm_package.children[i].setPermission("Coordinator", reviewer.properties["cm:userName"]);


}

           var mail = actions.create("mail");
           mail.parameters.to = reviewer.properties["cm:email"];
           mail.parameters.subject = "Notificacion de tarea asignada";
           mail.parameters.from = "noreply@edu.gva.es";
           mail.parameters.text = acl +"No responda a este mensaje.Tiene una tarea ASIGNADA debe revisarla aqui http://notasinternas.edu.gva.es";
           mail.execute(bpm_package);

</script>
</action>
</event>
        <transition name="reject" to="endreview" />
        <transition name="approve" to="endreview">
            <script>
                <variable name="wf_approveCount" access="read,write" />
                <expression>
                    wf_approveCount = wf_approveCount +1;
                 </expression>
            </script>
        </transition>
    </task-node>

    <join name="endreview">
        <transition to="isapproved" />
    </join>

    <decision name="isapproved">
        <event type="node-enter">
           <script>
              <variable name="wf_reviewerCount" access="write"/>
              <variable name="wf_requiredPercent" access="write"/>
              <variable name="wf_actualPercent" access="write"/>
              <expression>
                  wf_requiredPercent = wf_requiredApprovePercent;
                  wf_reviewerCount = bpm_assignees.size();
                  wf_actualPercent = ((wf_approveCount * 100) / wf_reviewerCount);
              </expression>
           </script>
        </event>
        <transition name="reject" to="rejected" />
        <transition name="approve" to="approved">
            <condition>#{wf_actualPercent >= wf_requiredApprovePercent}</condition>
        </transition>
    </decision>
              
    <task-node name="rejected">
        <transition to="end" />
    </task-node>

    <task-node name="approved">
        <transition to="end" />
    </task-node>

    <end-state name="end"/>

</process-definition>
giorgio
Member II

Re: permisos diferentes en un mismo directorio

Hola buenas, acabo de darme cuenta, que el codigo del parallelreview_processdefintion, si que funciona, pero funciona solamente para el usuario que añado en primer lugar, ese si que coge los permisos correctamente y puede acceder al documento, pero los demas usuarios que añada detras ya no los cogen, pero y entonces yo me pregunto, si segun la defincion que hay en la wiki, cuando el flujo en paralelo llega al fork, este lo que hace es lanzar una tarea por cada usuario, y yo con la sentencia reviewer.properties[ussername] me estoy refiriendo a cada uno de ellos en cada flujo individual, quiero decir que el codigo se ejecuta una vez pero una vez por cada usuario, ¿porque solamente retira la herencia y asigna los permisos solo al primero?

Gracias y un saludo.