solo cambia los permisos al primer usuario (en workflow)

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

solo cambia los permisos al primer usuario (en workflow)

Cual puede ser el problema en el siguiente código de mi parallelreview_processdefinition.xml? os cuento lo que me ocurre, con este codigo lo que hago es recorrer los adjuntos que tiene el flujo de trabajo y por cada documento le rompo la herencia le quito permisos y le asigno permisos de consumidor para los usuarios del workflow, entonces pregunto, si me esta enviando un correo a cada uno de los usuarios, porque los permisos solo los asigna al primer usuario?es decir solo puede ver el adjunto el primer usuario que asigno en el flujo de trabajo, pero los demas no pueden verlo. A que puede deberse esto? sin embargo la tarea llega a todos y el correo tambien.

saludos y gracias de antemano.


<?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);

}

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

}


           var mail = actions.create("mail");
           mail.parameters.to = "correo@correo.es";
           mail.parameters.subject = "Notificacion de tarea asignada";
           mail.parameters.from = "noreply@notasinternas.edu.gva.es";
           mail.parameters.text = reviewer.properties["cm:userName"]+"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>

19 Replies
pjcaracuel_2349
Active Member II

Re: solo cambia los permisos al primer usuario (en workflow)

Buenas,

Entiendo que puede ser por lo siguiente:
bpm_package.children.setPermission("Consumer", reviewer.properties["cm:userName"]);

Que valor tiene reviewer.properties["cm:userName"] ? Creo que la asignacion de permisos funcionaba con un grupo o con un usuario, si lo haces usando usurios, entiendo que tendras que iterar n veces la linea anterior.

Saludos
giorgio
Member II

Re: solo cambia los permisos al primer usuario (en workflow)

Lo he hecho, pero no ha funcionado tampoco Pedro.

he utilizado esto

for var a = 0; a > bpm_assignees.length; a++ {
bpm_package.children.setPermission("Consumer", bpm_assignees[a].properties["cm:userName"]);
}

pero no ha funcionado.
no se si quizá exista, reviewers
pero de todas formas, no entiendo que si que llegue la tarea para todos, y el correo tambien, pero los permisos solo se apliquen al primer usuario que asigno
porque si te fijas el correo lo envio tambien a reviewer.properties["cm:userName"]. Bueno en el ejemplo que he puesto aqui en el foro, he puesto mi correo para que no les llegue a los usuarios, pero si que lo he comprobado y llega un correo a cada uno con su nombre de usuario.

saludos y gracias.
pjcaracuel_2349
Active Member II

Re: solo cambia los permisos al primer usuario (en workflow)

Estan bien puestas las condiciones del bucle for? no sera <??? perdona si me equivoco pero hace ya años que no veo mucho codigo. Lo mismo seme ha ido la cabeza.

Saludos
giorgio
Member II

Re: solo cambia los permisos al primer usuario (en workflow)

jeje, si si estas en lo cierto pedro, pero ese codigo lo he puesto a modo de ejemplo aqui directamene en el post, tambien faltan mas cosas como los parentesis y demas, jejej.

Esto me esta trayendo de cabeza, y es que no encuentro ningun ejemplo ni nada sobre parallelreviews que me sirva.

Saludos.
pjcaracuel_2349
Active Member II

Re: solo cambia los permisos al primer usuario (en workflow)

Bueno Jorge,

Entiendo que el problema esta en la asignacion de permisos, nada que ver con los workflow.

¿Prueba a ejecutar un script que solo cambie la seguridad, es decir que le asigne un rol a unos usuarios a "pelo" para ver si si solo esto funciona. Seria a partir de un for, asignar usuarios a capon. Si esto funcionara, ya se podría ir mirando otras cosas.

Saludos
giorgio
Member II

Re: solo cambia los permisos al primer usuario (en workflow)

hola Pedro, acabo de crear este script, que he ejecuto con una regla al actualizar propiedades de un documento dentro de un espacio en el que user1 y user2 no tienen permisos para ver los documentos, y la verdad es que ni si quiera se si se esta ejecutando el script, ya que el correo no me llega, pero de todas manera si se esta ejecutando, no esta dando los permisos a los usuarios.

document.setInheritsPermissions(false);

var permissions = document.permissions;
var acl=[];
for (var j=0; j < permissions.length; j++)
{
acl = permissions[j].split(";");
var perm=acl[2];
var grp=acl[1];
document.removePermission(perm,grp);

}

document.setPermission("Consumer", "user1");
document.setPermission("Consumer", "user2");
document.save();

var mail = actions.create("mail");
mail.parameters.to="correo";
mail.parameters.subject = "Permisos";
mail.parameters.from = "noreply@notasiternas.edu.gva.es";
mail.parameters.text = "hola hola hola";
var doc=companyhome.childByNamePath("Data Dictionary/Email Templates/notify_user_email.ftl");
mail.execute(doc);
pjcaracuel_2349
Active Member II

Re: solo cambia los permisos al primer usuario (en workflow)

Bueno algo es algo.

Le quita los permisos al documento? Haz un document.save.. antes de empezar a asignar, asi vemos si falla en esa fase. Puedes echarle un vistazo a alfresco.log por si puede aportar algo de luz al error?

Saludos
giorgio
Member II

Re: solo cambia los permisos al primer usuario (en workflow)

Pues he encontrado esto por el error, primero un error mio al poner el correo, por eso no llega el correo y por otro lado hay un unknow resource, que puede que sea porque no coge el documento o algo asi?

   at java.lang.Thread.run(Thread.java:595)
10:09:37,481 ERROR [org.alfresco.repo.action.executer.MailActionExecuter] Failed to send email to jherraiz986g@cv.gva.es
org.springframework.mail.MailSendException; nested exception details (1) are:
Failed message 1:
com.sun.mail.smtp.SMTPSendFailedException: 553 5.1.8 <noreply@notasiternas.edu.gva.es>… Domain of sender address noreply@notasiternas.edu.gva.es does not exist

   at com.sun.mail.smtp.SMTPTransport.issueSendCommand(SMTPTransport.java:1275)
   at com.sun.mail.smtp.SMTPTransport.mailFrom(SMTPTransport.java:895)
   at com.sun.mail.smtp.SMTPTransport.sendMessage(SMTPTransport.java:524)
   at org.springframework.mail.javamail.JavaMailSenderImpl.doSend(JavaMailSenderImpl.java:388)
   at org.springframework.mail.javamail.JavaMailSenderImpl.send(JavaMailSenderImpl.java:332)
   at org.springframework.mail.javamail.JavaMailSenderImpl.send(JavaMailSenderImpl.java:347)
   at org.springframework.mail.javamail.JavaMailSenderImpl.send(JavaMailSenderImpl.java:336)
   at org.alfresco.repo.action.executer.MailActionExecuter.executeImpl(MailActionExecuter.java:352)
   at org.alfresco.repo.action.executer.ActionExecuterAbstractBase.execute(ActionExecuterAbstractBase.java:127)
   at org.alfresco.repo.action.ActionServiceImpl.directActionExecution(ActionServiceImpl.java:592)
   at org.alfresco.repo.action.ActionServiceImpl.executeActionImpl(ActionServiceImpl.java:529)
   at org.alfresco.repo.action.ActionServiceImpl.executeAction(ActionServiceImpl.java:391)
   at org.alfresco.repo.action.ActionServiceImpl.executeAction(ActionServiceImpl.java:379)
   at org.alfresco.repo.action.ActionServiceImpl.executeAction(ActionServiceImpl.java:600)
   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:585)
   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 $Proxy22.executeAction(Unknown Source)
   at org.alfresco.repo.jscript.ScriptAction.execute(ScriptAction.java:142)
   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:585)
   at org.mozilla.javascript.MemberBox.invoke(MemberBox.java:155)
   at org.mozilla.javascript.NativeJavaMethod.call(NativeJavaMethod.java:243)

Ahora voy a probar a hacer el save como comentas a ver que pasa.

gracias y saludos.
giorgio
Member II

Re: solo cambia los permisos al primer usuario (en workflow)

vale ahora ya llega el corre, y he escrito en él, la variable acl con lo cual me llega esto al correo

"ALLOWED,user1,Consumerhola hola hola";

Sin embargo al entrar con ese usuario y buscar el nombre de archivo que ya debe de poder verlo, no aparece