Script mover archivos

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

Script mover archivos

Hola atodos

en esta ocasion recurro a ustedes
para poder hacer algo que necesito

necesito un script que me mueva un documento a un espacio que tiene el mismo nombre del documento, debido a que el volumen va a ser muy alto por eso requiero hacerlo de este modo ya que es poco pracitco hacer tantas reglas aplicadas a un mismo espacio


Muchas gracias por su atencion y espero que me puedan ayudar
13 Replies
pjcaracuel_2349
Active Member II

Re: Script mover archivos

Buenas,

A ver si algo asi te puede servir:

var nombre = document.name; Asignas el nombre del documento a una variable
var destino="Tu ESpacio/"+nombre; Calculas la ruta destino del documento
var carpetaDestino=companyhome.childByNamePath(destino);Calculas la referencia a la carpeta destino
document.move(carpetaDestino);
document.save();

Ni que decir tiene q este supuesto es en el caso de que la carpeta destino ya exista, sino tendrias que crearla previamente, pero eso lo dejo para que practiques un poco.

Saludos
jesa
Member II

Re: Script mover archivos

Hola

muchas gracias por tu gran aporte

he modificado el script para que me busque el espacio,  y en caso de que ono exista lo crea, pero me esta mostrando un error muy extraño

este es mi script:

       var nombre = document.name;
var espacio="Company Home/User Homes/"+nombre;

      var dest = companyhome.childByNamePath(espacio);
        if (dest == null)
        {
           companyhome.createFolder(espacio);
        }
         var mover = document.move(dest);
            if (mover == null)
            {
                var backupName =document.name + ".pdf";
               mover.name = backupName;
               mover.save();
               mover.move(espacio);
            }

mi error en alfresco:
 Por favor corrija los errores siguientes y haga clic en Aceptar. 
Ocurrió un error del sistema durante la operación: Failed to execute script 'workspace://SpacesStore/dfcdcfce-fc3b-11dd-939f-a18f28a99e90': Failed to execute script 'workspace://SpacesStore/dfcdcfce-fc3b-11dd-939f-a18f28a99e90': Wrapped java.lang.IllegalArgumentException: Destination Node is a mandatory parameter (AlfrescoScript#12)

mi log

10:13:29,952 User:jacosta ERROR [ui.common.Utils] Ocurrió un error del sistema durante la operación: Failed to execute script 'workspace://SpacesStore/dfcdcfce-fc3b-11dd-939f-a18f28a99e90': Failed to execute script 'workspace://SpacesStore/dfcdcfce-fc3b-11dd-939f-a18f28a99e90': Wrapped java.lang.IllegalArgumentException: Destination Node is a mandatory parameter (AlfrescoScript#12)
org.alfresco.service.cmr.repository.ScriptException: Failed to execute script 'workspace://SpacesStore/dfcdcfce-fc3b-11dd-939f-a18f28a99e90': Failed to execute script 'workspace://SpacesStore/dfcdcfce-fc3b-11dd-939f-a18f28a99e90': Wrapped java.lang.IllegalArgumentException: Destination Node is a mandatory parameter (AlfrescoScript#12)
   at org.alfresco.repo.processor.ScriptServiceImpl.executeScript(ScriptServiceImpl.java:172)
   at sun.reflect.GeneratedMethodAccessor749.invoke(Unknown Source)
   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:281)
   at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:187)
   at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:154)
   at org.alfresco.repo.security.permissions.impl.AlwaysProceedMethodInterceptor.invoke(AlwaysProceedMethodInterceptor.java:40)
   at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:176)
   at org.alfresco.repo.security.permissions.impl.ExceptionTranslatorMethodInterceptor.invoke(ExceptionTranslatorMethodInterceptor.java:49)
   at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:176)
   at org.alfresco.repo.audit.AuditComponentImpl.audit(AuditComponentImpl.java:241)
   at org.alfresco.repo.audit.AuditMethodInterceptor.invoke(AuditMethodInterceptor.java:69)
   at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:176)
   at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:107)
   at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:176)
   at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:210)
   at $Proxy91.executeScript(Unknown Source)
   at org.alfresco.repo.action.executer.ScriptActionExecuter.executeImpl(ScriptActionExecuter.java:157)
   at org.alfresco.repo.action.executer.ActionExecuterAbstractBase.execute(ActionExecuterAbstractBase.java:120)
   at org.alfresco.repo.action.ActionServiceImpl.directActionExecution(ActionServiceImpl.java:537)
   at org.alfresco.repo.action.executer.CompositeActionExecuter.executeImpl(CompositeActionExecuter.java:72)
   at org.alfresco.repo.action.executer.ActionExecuterAbstractBase.execute(ActionExecuterAbstractBase.java:120)
   at org.alfresco.repo.action.ActionServiceImpl.directActionExecution(ActionServiceImpl.java:537)
   at org.alfresco.repo.action.ActionServiceImpl.executeActionImpl(ActionServiceImpl.java:472)
   at org.alfresco.repo.action.ActionServiceImpl.executeAction(ActionServiceImpl.java:399)
   at sun.reflect.GeneratedMethodAccessor746.invoke(Unknown Source)
   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:281)
   at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:187)
   at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:154)
   at org.alfresco.repo.security.permissions.impl.AlwaysProceedMethodInterceptor.invoke(AlwaysProceedMethodInterceptor.java:40)
   at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:176)
   at org.alfresco.repo.security.permissions.impl.ExceptionTranslatorMethodInterceptor.invoke(ExceptionTranslatorMethodInterceptor.java:49)
   at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:176)
   at org.alfresco.repo.audit.AuditComponentImpl.audit(AuditComponentImpl.java:241)
   at org.alfresco.repo.audit.AuditMethodInterceptor.invoke(AuditMethodInterceptor.java:69)
   at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:176)
   at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:107)
   at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:176)
   at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:210)
   at $Proxy18.executeAction(Unknown Source)
   at org.alfresco.repo.rule.RuleServiceImpl.executeRule(RuleServiceImpl.java:922)
   at org.alfresco.repo.rule.RuleServiceImpl.executePendingRule(RuleServiceImpl.java:890)
   at org.alfresco.repo.rule.RuleServiceImpl.executePendingRulesImpl(RuleServiceImpl.java:861)
   at org.alfresco.repo.rule.RuleServiceImpl.executePendingRules(RuleServiceImpl.java:834)
   at org.alfresco.repo.rule.RuleTransactionListener.beforeCommit(RuleTransactionListener.java:69)
   at org.alfresco.repo.transaction.AlfrescoTransactionSupport$TransactionSynchronizationImpl.doBeforeCommit(AlfrescoTransactionSupport.java:638)
   at org.alfresco.repo.transaction.AlfrescoTransactionSupport$TransactionSynchronizationImpl.doBeforeCommit(AlfrescoTransactionSupport.java:620)
   at org.alfresco.repo.transaction.AlfrescoTransactionSupport$TransactionSynchronizationImpl.beforeCommit(AlfrescoTransactionSupport.java:592)
   at org.springframework.transaction.support.TransactionSynchronizationUtils.triggerBeforeCommit(TransactionSynchronizationUtils.java:48)
   at org.springframework.transaction.support.AbstractPlatformTransactionManager.triggerBeforeCommit(AbstractPlatformTransactionManager.java:821)
   at org.springframework.transaction.support.AbstractPlatformTransactionManager.processCommit(AbstractPlatformTransactionManager.java:637)
   at org.springframework.transaction.support.AbstractPlatformTransactionManager.commit(AbstractPlatformTransactionManager.java:624)
   at org.springframework.transaction.interceptor.TransactionAspectSupport.commitTransactionAfterReturning(TransactionAspectSupport.java:307)
   at org.alfresco.util.transaction.SpringAwareUserTransaction.commit(SpringAwareUserTransaction.java:420)
   at org.alfresco.repo.transaction.RetryingTransactionHelper.doInTransaction(RetryingTransactionHelper.java:250)
   at org.alfresco.repo.transaction.RetryingTransactionHelper.doInTransaction(RetryingTransactionHelper.java:166)
   at org.alfresco.web.bean.dialog.BaseDialogBean.finish(BaseDialogBean.java:125)
   at sun.reflect.GeneratedMethodAccessor1630.invoke(Unknown Source)
   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:269)
   at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
   at org.alfresco.web.app.servlet.NTLMAuthenticationFilter.doFilter(NTLMAuthenticationFilter.java:329)
   at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215)
   at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
   at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:210)
   at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:174)
   at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
   at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
   at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108)
   at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:151)
   at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:870)
   at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665)
   at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528)
   at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81)
   at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:685)
   at java.lang.Thread.run(Thread.java:619)
Caused by: org.alfresco.service.cmr.repository.ScriptException: Failed to execute script 'workspace://SpacesStore/dfcdcfce-fc3b-11dd-939f-a18f28a99e90': Wrapped java.lang.IllegalArgumentException: Destination Node is a mandatory parameter (AlfrescoScript#12)
   at org.alfresco.repo.jscript.RhinoScriptProcessor.execute(RhinoScriptProcessor.java:149)
   at org.alfresco.repo.processor.ScriptServiceImpl.executeScript(ScriptServiceImpl.java:168)
   … 88 more
Caused by: org.alfresco.error.AlfrescoRuntimeException: Wrapped java.lang.IllegalArgumentException: Destination Node is a mandatory parameter (AlfrescoScript#12)
   at org.alfresco.repo.jscript.RhinoScriptProcessor.executeScriptImpl(RhinoScriptProcessor.java:524)
   at org.alfresco.repo.jscript.RhinoScriptProcessor.execute(RhinoScriptProcessor.java:145)
   … 89 more
Caused by: org.mozilla.javascript.WrappedException: Wrapped java.lang.IllegalArgumentException: Destination Node is a mandatory parameter (AlfrescoScript#12)
   at org.mozilla.javascript.Context.throwAsScriptRuntimeEx(Context.java:1757)
   at org.mozilla.javascript.MemberBox.invoke(MemberBox.java:170)
   at org.mozilla.javascript.NativeJavaMethod.call(NativeJavaMethod.java:243)
   at org.mozilla.javascript.optimizer.OptRuntime.call1(OptRuntime.java:66)
   at org.mozilla.javascript.gen.c50._c0(AlfrescoScript:12)
   at org.mozilla.javascript.gen.c50.call(AlfrescoScript)
   at org.mozilla.javascript.ContextFactory.doTopCall(ContextFactory.java:393)
   at org.mozilla.javascript.ScriptRuntime.doTopCall(ScriptRuntime.java:2834)
   at org.mozilla.javascript.gen.c50.call(AlfrescoScript)
   at org.mozilla.javascript.gen.c50.exec(AlfrescoScript)
   at org.mozilla.javascript.Context.evaluateString(Context.java:1196)
   at org.alfresco.repo.jscript.RhinoScriptProcessor.executeScriptImpl(RhinoScriptProcessor.java:516)
   … 90 more
Caused by: java.lang.IllegalArgumentException: Destination Node is a mandatory parameter
   at org.alfresco.util.ParameterCheck.mandatory(ParameterCheck.java:48)
   at org.alfresco.repo.jscript.ScriptNode.move(ScriptNode.java:1436)
   at sun.reflect.GeneratedMethodAccessor1654.invoke(Unknown Source)
   at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
   at java.lang.reflect.Method.invoke(Method.java:597)
   at org.mozilla.javascript.MemberBox.invoke(MemberBox.java:155)
   … 100 more

pjcaracuel_2349
Active Member II

Re: Script mover archivos

La verdad es que no entiendo muy bien lo del move, pero vamos yo probaria esto y tampoco estaria mal que revisaras como usar el debugger para js en Alfresco (http://wiki.alfresco.com/wiki/3.0_JavaScript_API#Alfresco_JavaScript_Debugger).


var nombre = document.name;
var espacio="Company Home/User Homes/"+nombre;

      var dest = companyhome.childByNamePath(espacio);
        if (dest == null)
          companyhome.createFolder(espacio);
         var backupName =document.name + ".pdf";
          document.name = backupName;
          document.move(dest);
           document.save();
Saludos
jesa
Member II

Re: Script mover archivos

He modificado mi codigo par aque me parta el nombre de el archivo y me extraiga lo que necesito

el codigo lo tengo asi:


var documento   = document.name.toString();
var nombre      = documento.substring(0,documento.lastIndexOf("."));
var ext         = documento.substring(documento.lastIndexOf("."), documento.length());

var espacio   = "Company Home/Guest Home/"+nombre;
var dest    = companyhome.childByNamePath(espacio);
if (dest    == null)
{
   companyhome.createFolder(espacio);
}
var mover = document.move(dest);
if (mover != null)
{
      // companyhome.createFolder(nombre);
      document.properties.name = nombre + ext;
      document.move(dest);
      document.save();
}

y me sigue sacando el mismo error que me salia en el hilo anterior

en que estare fallando con mi script
pjcaracuel_2349
Active Member II

Re: Script mover archivos

Buenas,

Creo que puede ser por esto
var mover = document.move(dest);
if (mover != null)
{
      // companyhome.createFolder(nombre);
      document.properties.name = nombre + ext;
      document.move(dest);
      document.save();
}

Elimina la linea en negrita y prueba de nuevo.

Saludos
jesa
Member II

Re: Script mover archivos

Hola pedro

He hecho lo que me dijiste de eliminar la linea
document.move(dest)
y el script ahora si se ejecuta pero no hace nada simplemente realiza las comparacioens pero el documento no se mueve se queda en el sitio donde se ejecuta el script, podrias indicarme o alguien me podria indicar entonces cual es el comando correcto para mover en alfresco por que necesito este script urgente

muchas gracias y disculpen las molestias
pjcaracuel_2349
Active Member II

Re: Script mover archivos

Buenas,

Probablemente sino se mueve es porque la ruta donde lo quieres mandar no existe. Prueba esto, porque la verdad que no entiendo para que compruebas si se ha movido o no.

var documento   = document.name.toString();
var nombre      = documento.substring(0,documento.lastIndexOf("."));
var ext         = documento.substring(documento.lastIndexOf("."), documento.length());

var espacio   = "Company Home/Guest Home/"+nombre;
var dest    = companyhome.childByNamePath(espacio);
if (dest    == null)
{
   companyhome.createFolder(espacio);
}
document.move(dest);
document.properties.name = nombre + ext;
document.save();

Saludos

PD: Si usas el depurador que te envie ayer, podras ver el valor de las distintas variables.
pjcaracuel_2349
Active Member II

Re: Script mover archivos

Buenas,

QUE TONTO ESTABAAAAAAAAAAAAAAAAAAA, prueba este codigo que deberia funcionar
ESo si, revisa las tres primera lineas porque da un error tal que esto
String index out of range: -1

var documento   = document.name.toString();
var nombre      = documento.substring(0,documento.lastIndexOf("."));
var ext         = documento.substring(documento.lastIndexOf("."), documento.length());

var Folder = space.childByNamePath(nombre);
if (Folder == null && space.hasPermission("CreateChildren"))
{
 
   Folder = space.createFolder(nombre);
}
if (Folder != null && Folder.hasPermission("CreateChildren"))
{
 
   var copy = document.move(Folder);
   if (copy != null)
   {
     
      document.name = nombre + ext;
      document.save();
   }
}
gvergara
Member II

Re: Script mover archivos

I'm having the same problem but in this scenario. I have set up a rule in a folder . That rule executes a Script whick does certain basic operations. The problem is that if tried with many users (obviously with admin user it works fine) and all the roles available (coordinator, collaborator…) but this message is thrown :


A system error happened during the operation: Failed to execute script 'workspace://SpacesStore/aab54cba-d718-4f1b-b197-04463be2b518': Access Denied. You do not have the appropriate permissions to perform this operation


Help please!!!!!!!!!!!!!1 I'm I doing something wrong or it is a bug in Al fresco