ciclo de vida

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

ciclo de vida

buenas, tengo creado un documento con un metadato llamado ciclo de vida. Este por defecto esta como "borrador", lo que me gustaría hacer es que al cambiar esta propiedad del documento a "definitivo" y que cuando esto sucediera que implicara un cambio en los permisos de los usuarios sobre el documento… alguien tiene alguna idea de como hacerlo? puede ser que un workflow sea la solución?
12 Replies
dacedos
Member II

Re: ciclo de vida

Puedes hacerlo cn un workflow.

Tambien puedes utilizar un behaviuor que detecte el cambio de esa propiedad, de forma que cuando se dispare modifique los permisos
ijr87
Member II

Re: ciclo de vida

he estado mirando por el foro y lo mas fácil que he visto es cambiar el documento de carpeta ya que los permisos van relacionados a un espacio concreto… para cambiar la propiedad lo puedo hacer con un simple update, pero lo que no tengo mucha idea es de como lanzar el workflow cuando para mover el documento cuando le cambie la propiedad…
dacedos
Member II

Re: ciclo de vida

No recuerdo yo bien exactamente que se podia hacer con las reglas, pero creo recordar que hay una que detecta cambios en las propiedades.

Puedes decirle que cuando cambien esa propiedad al valor que tu quieras mueva el contenido a la carpeta que le indiques
ijr87
Member II

Re: ciclo de vida

he decidido mover el documento de carpeta para pasarlo a definitivo, estoy mirando ejemplos pero todo lo que encuentro es para mover folders, alguien me podría poner un ejemplo para mover documentos mediante webservices?

gracias!
pjcaracuel_2349
Active Member II

Re: ciclo de vida

Hola,

Si utilizas una regla de tipo update que ejecute un script cuando cambia el valor de una propiedad, podras moverlo a la ubicacion que quieras y tambien cambiar la seguridad, yo en su dia publique en Comparte tu codigo un ejemplo que cambiaba la seguridad a un documento via js.
http://forums.alfresco.com/es/viewtopic.php?f=18&t=1921

Via servicios web, pues me imagino que mover un folder sera igual que mover un documento, solo cambia el tipo de contenido que mueves.

Un Saludo
ijr87
Member II

Re: ciclo de vida

estoy utilizando el siguiente codigo para mover un fichero pero me sale un error y no se que hago mal, os lo dejo aqui haber si alguien me puede decir algo.

codigo:

public void moureDoc (String origen, String desti, String idDoc) throws Exception{
      DMSConnectionAlfresco dms = new DMSConnectionAlfresco();
      ProfileTO profileUser = new ProfileTO();
      profileUser.setUserName("admin");
      profileUser.setPassword("admin");
            
      if(origen!= null){
         dms.establishConnection(profileUser);

      ParentReference folderParentRef = new ParentReference();
      folderParentRef.setUuid(desti);
      folderParentRef.setStore(dms.getStore());
      folderParentRef.setAssociationType(Constants.ASSOC_CHILDREN);
      folderParentRef.setChildName(Constants.ASSOC_CHILDREN);
      
      Reference sourceRef = new Reference();
      sourceRef.setUuid(origen);
      sourceRef.setStore(dms.getStore());
      
      CMLMove moveDoc = new CMLMove(folderParentRef, null, Constants.TYPE_CONTENT, idDoc, new Predicate(new Reference[]{sourceRef}, null, null), null);
//      CMLMove moveDoc = new CMLMove(null,origen, Constants.TYPE_CONTENT, idDoc, null, desti);
      CML cml = new CML();
      cml.setMove(new CMLMove[]{moveDoc});
      
      UpdateResult[] results = WebServiceFactory
      .getRepositoryService().update(cml);
      dumpUpdateResults(results);
      
      
      }else{
         throw new AD10Exception("MoveDocumentDaoAlfrescoImpl00001",
         "La ID rebuda és nula");
      }
      
   }

error:

AxisFault
faultCode: {http://schemas.xmlsoap.org/soap/envelope/}Server.generalException
faultSubcode:
faultString:
faultActor:
faultNode:
faultDetail:
   {http://www.alfresco.org/ws/service/repository/1.0}RepositoryFault:<ns1:errorCode>0</ns1:errorCode><ns1:message>java.lang.IllegalStateException: Cyclical ACL detected</ns1:message>
   {http://xml.apache.org/axis/}exceptionName:org.alfresco.repo.webservice.repository.RepositoryFault
   {http://xml.apache.org/axis/}stackTrace:
   at org.alfresco.repo.webservice.repository.RepositoryWebService.update(RepositoryWebService.java:341)
   at sun.reflect.GeneratedMethodAccessor762.invoke(Unknown Source)
   at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
   at java.lang.reflect.Method.invoke(Method.java:597)
   at org.apache.axis.providers.java.RPCProvider.invokeMethod(RPCProvider.java:397)
   at org.apache.axis.providers.java.RPCProvider.processMessage(RPCProvider.java:186)
   at org.apache.axis.providers.java.JavaProvider.invoke(JavaProvider.java:323)
   at org.apache.axis.strategies.InvocationStrategy.visit(InvocationStrategy.java:32)
   at org.apache.axis.SimpleChain.doVisiting(SimpleChain.java:118)
   at org.apache.axis.SimpleChain.invoke(SimpleChain.java:83)
   at org.apache.axis.handlers.soap.SOAPService.invoke(SOAPService.java:454)
   at org.apache.axis.server.AxisServer.invoke(AxisServer.java:281)
   at org.apache.axis.transport.http.AxisServlet.doPost(AxisServlet.java:699)
   at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
   at org.apache.axis.transport.http.AxisServletBase.service(AxisServletBase.java:327)
   at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
   at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
   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)

   {http://xml.apache.org/axis/}hostname:gd-alfresco-vm


   at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
   at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
   at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
   at java.lang.reflect.Constructor.newInstance(Constructor.java:494)
   at java.lang.Class.newInstance0(Class.java:350)
   at java.lang.Class.newInstance(Class.java:303)
   at org.apache.axis.encoding.ser.BeanDeserializer.<init>(BeanDeserializer.java:104)
   at org.apache.axis.encoding.ser.BeanDeserializer.<init>(BeanDeserializer.java:90)
   at org.alfresco.webservice.repository.RepositoryFault.getDeserializer(RepositoryFault.java:146)
   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.apache.axis.encoding.ser.BaseDeserializerFactory.getSpecialized(BaseDeserializerFactory.java:154)
   at org.apache.axis.encoding.ser.BaseDeserializerFactory.getDeserializerAs(BaseDeserializerFactory.java:84)
   at org.apache.axis.encoding.DeserializationContext.getDeserializer(DeserializationContext.java:464)
   at org.apache.axis.encoding.DeserializationContext.getDeserializerForType(DeserializationContext.java:547)
   at org.apache.axis.message.SOAPFaultDetailsBuilder.onStartChild(SOAPFaultDetailsBuilder.java:157)
   at org.apache.axis.encoding.DeserializationContext.startElement(DeserializationContext.java:1035)
   at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.startElement(AbstractSAXParser.java:533)
   at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.scanStartElement(XMLNSDocumentScannerImpl.java:330)
   at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(XMLDocumentFragmentScannerImpl.java:1693)
   at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:368)
   at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:834)
   at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:764)
   at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:148)
   at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1242)
   at javax.xml.parsers.SAXParser.parse(SAXParser.java:375)
   at org.apache.axis.encoding.DeserializationContext.parse(DeserializationContext.java:227)
   at org.apache.axis.SOAPPart.getAsSOAPEnvelope(SOAPPart.java:696)
   at org.apache.axis.Message.getSOAPEnvelope(Message.java:435)
   at org.apache.axis.handlers.soap.MustUnderstandChecker.invoke(MustUnderstandChecker.java:62)
   at org.apache.axis.client.AxisClient.invoke(AxisClient.java:206)
   at org.apache.axis.client.Call.invokeEngine(Call.java:2784)
   at org.apache.axis.client.Call.invoke(Call.java:2767)
   at org.apache.axis.client.Call.invoke(Call.java:2443)
   at org.apache.axis.client.Call.invoke(Call.java:2366)
   at org.apache.axis.client.Call.invoke(Call.java:1812)
   at org.alfresco.webservice.repository.RepositoryServiceSoapBindingStub.update(RepositoryServiceSoapBindingStub.java:986)
   at com.everis.ad10.data.dao.documents.DocumentDaoAlfrescoImpl.moureDoc(DocumentDaoAlfrescoImpl.java:415)
   at demoAltaAlfresco.main(demoAltaAlfresco.java:150)
ijr87
Member II

Re: ciclo de vida

se que puede ser una pregunta algo tonta pero me estoy liando mirando por el foro.. los permisos van siempre asignados a un espacio o pueden ir asignados a un documento en concreto?

por otra parte me gustaría crear una regla del tipo update para lanzar luego el script de cambio de permisos pero todos los ejemplos que veo son a través de la web de alfresco y me gustaría hacerlo mediante código, alguien tiene un ejemplo o un link con un problema similar?
pjcaracuel_2349
Active Member II

Re: ciclo de vida

Los permisos pueden asignarse a espacios, lo mas recomendable y a documentos.

Lo suyo es asignarlo por espacios pero puede suceder que te interese hacerlo por documento, en cualquier caso ambos son posibles.

Saludos
fegor
Senior Member

Re: ciclo de vida

Efectivamente es un problema de permisos el error en tu WebService. De todas formas, mejor no te compliques, mediante reglas/acciones se hace muy bien y si necesitas cambiar permisos, siempre puedes llamar a un fichero JavaScript para que te lo haga. Por ejemplo en muchos casos necesitarás que el documento movido a algún sitio tenga permisos de "owner" o dueño del espacio y como el movimiento se demuestra andando, aquí tienes un código JavaScript que hace esto:


document.setOwner(space.getOwner());

Un saludo.