añadir varios aspectos a un nodo

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

añadir varios aspectos a un nodo

Buenas!
estoy teniendo un problema al intentar crear un documento a traves de la api de web services. El caso es que yo quiero crear un documento y darle por un lado los aspectos de TITLED, que tienen como propiedades titulo y descripcion y por otro el aspecto VERSIONABLE que tiene otras tantas propiedades y el aspecto INLINEEDITABLE que tambien tiene sus propias propiedades…
Total, que yo pensaba que lo que habia que hacer es crear el nodo, darle los aspectos, con el addAspect de cada uno y guardarlo, pero veo que solo me guarda el ultimo aspecto que le he dado…he probado a intentar actualizarlo despues de crear cada aspecto, pero entonces me casca…os pongo el codigo porque creo que lo que me esta fallando es la forma de actualizar(si es que hay que hacerlo asi)
Yo basicamente lo que hago es una vez construido el cmlBlock, le añado los aspectos y luego hago un update…pero asi , solo me guarda el aspecto inlineEditable, que casualmente es el ultimo que le meto…
A ver si alguien me puede echar una mano, porque me urge un poco y no encuentro nada de añadir varios aspectos a la vez…GRACIAS!
// Comienza la construcción de nodo   
                      NamedValue[] contentProps = new NamedValue[1];  
                      contentProps[0] = Utils.createNamedValue(Constants.PROP_NAME, name);  
                      CMLCreate create = new CMLCreate("1", companyHomeParent, null, null, null, Constants.TYPE_CONTENT, contentProps); 
                     
                      // Añadimos aspectos al nodo 
                                          //[b]ASPECTO TITLED[/b]
                      NamedValue[] titledProps = new NamedValue[2]; 
                      titledProps[0] = Utils.createNamedValue(Constants.PROP_TITLE, titulo); 
                      titledProps[1] = Utils.createNamedValue(Constants.PROP_DESCRIPTION, descripción); 
                      CMLAddAspect addAspect = new CMLAddAspect(createQNameString("http://www.alfresco.org/model/content/1.0", "titled"), titledProps, null, "1");
                     
                     
                      //[b]aspecto versionable[/b]
                      CMLAddAspect addAspectVersionable=null;
                         if (version){
                         //añado aspectos versionable
                         NamedValue[] versionable=new NamedValue[3];
                         versionable[0]=Utils.createNamedValue(createQNameString("http://www.alfresco.org/model/content/1.0", "initialVersion"), "1.0");
                         versionable[1]=Utils.createNamedValue(createQNameString("http://www.alfresco.org/model/content/1.0", "autoVersionOnUpdateProps"), "true");
                         versionable[2]=Utils.createNamedValue(createQNameString("http://www.alfresco.org/model/content/1.0", "autoVersion"), "true");
                        addAspectVersionable = new CMLAddAspect(createQNameString("http://www.alfresco.org/model/content/1.0", "versionable"), versionable, null, "1"); 
                         }
                          // [b]ASPECTO INLINEEDITABLE[/b]
                        CMLAddAspect addAspectInline=null;
                        if (editInline){
                        //añado aspecto editar online
                        NamedValue[] inline=new NamedValue[1];
                        inline[0]=Utils.createNamedValue(createQNameString("http://www.alfresco.org/model/application/1.0", "editInline"), "true");
                        addAspectInline=new CMLAddAspect(createQNameString("http://www.alfresco.org/model/application/1.0", "inlineeditable"), inline, null, "1"); 
                        }
                          
                      // Contruimos CML Block, con el nodo y sus aspectos 
                      CML cml = new CML(); 
                      cml.setCreate(new CMLCreate[] {create}); 
                                          //DOY LOS ASPECTOS
                      cml.setAddAspect(new CMLAddAspect[] {addAspect});
                       
                      if (version){
                            cml.setAddAspect(new CMLAddAspect[] {addAspectVersionable});
                          }
               
                     if (editInline){
                            cml.setAddAspect(new CMLAddAspect[] {addAspectInline}); 
                          }
                 // Creamos y recuperamos el contenido vía Repository Web Service 
                      UpdateResult[]  result = WebServiceFactory.getRepositoryService().update(cml); 
                      Reference content = result[0].getDestination();
                     
                     
                     
                      // Escribimos el contenido 
                      ContentServiceSoapBindingStub contentService = WebServiceFactory.getContentService(); 
                      String text = textoHTML; 
                      // hay que darle el formato segun el tipo!!!
                      ContentFormat contentFormat=null;
                    
                      if (tipo.equalsIgnoreCase("html")){
                         contentFormat = new ContentFormat("application/msword", "UTF-8");
                      }
                      if (tipo.equalsIgnoreCase("txt")){
                         contentFormat = new ContentFormat("text/plain", "UTF-8");
                      }
                      System.out.println("formato del contentFormat–>"+contentFormat.getMimetype());
                     
                     
                      contentService.write(content, Constants.PROP_CONTENT, text.getBytes(), contentFormat); 
                     
2 Replies
psantis
Active Member II

Re: añadir varios aspectos a un nodo

Si te refieres a un aspecto con un  modelo de datos, debes crear tantos modelos de datos o aspectos como necesites agregar, por ejemplo si tienes los tres archivos para la creación de un aspecto:

-web-client-config-custom.xml
-miModelo.xml
-custom-model-context.xml

deberas crear tantos modelos como aspectos desees y referenciarlos en los otros dos archivos..  es por que no creas el nuevo modelo que siempre te aparece solo el último ..  :mrgreen:


te dejo un código como ejemplo

<alfresco-config>

   <!– Example of overriding the from email address –>

   <!–

   <config>

      <client>

         <from-email-address>someone@your-domain.com</from-email-address>

         <search-max-results>100</search-max-results>

      </client>

   </config>

   –>

   <!– Example of adding languages to the list in the login page –>

   <config evaluator="string-compare" condition="Languages">

      <languages>

         <language locale="en_US">English</language>

         <language locale="es_ES">Spanish</language>

      </languages>

   </config>

   <!– Example of configuring advanced search –>

   <config evaluator="string-compare" condition="Advanced Search">

      <advanced-search>

         <content-types>

            <type name="my:datosFactura"/>

         </content-types>

         <folder-types>

     

      </folder-types>

         <custom-properties>

            <meta-data type="cm:dictionaryModel" property="cm:modelAuthor"/>

            <meta-data aspect="my:datosFactura" property="my:tipo_documento"/>

            <meta-data aspect="my:datosFactura" property="my:TITULO_ABREVIADO_DE_LA_INVENCION"/>

            <meta-data aspect="my:datosFactura" property="my:SOLICITUD_PATENTE"/>

            <meta-data type="cm:dictionaryModel" property="cm:modelPublishedDate"/>

         </custom-properties>

      </advanced-search>

   </config>

   <!– Example of changing the sort direction for a view in the client –>

   <!–

   <config evaluator="string-compare" condition="Views">

      <views>

         <view-defaults>

            <topic>

               <sort-direction>ascending</sort-direction>

            </topic>

         </view-defaults>

      </views>

   </config>

   –>

   <!– Example of adding a custom icon to the Create Space dialog –>

   <!–

   <config evaluator="string-compare" condition="cm:folder icons">

      <icons>

         <icon name="space-icon-custom" path="/images/icons/space-icon-custom.gif" />

      </icons>

   </config>

   –>

   <config evaluator="aspect-name" condition="my:datosFactura">

      <property-sheet>

         <show-property name="my:tipo_documento"/>

         <show-property name="my:TITULO_ABREVIADO_DE_LA_INVENCION"/>

         <show-property name="my:SOLICITUD_PATENTE"/>

         <show-property name="my:PAISES_CON_SOLICITUD_DE_PATENTE"/>

         <show-property name="my:FECHA_DE_PRESENTACION_DE_SOLICITUD"/>

         <show-property name="my:TITULAR"/>

         <show-property name="my:FACULTAD"/>

         <show-property name="my:INVENTORES"/>

         <show-property name="my:INVESTIGADOR_RESPONSABLE"/>

         <show-property name="my:PROYECTO_ORIGEN"/>

         <show-property name="my:ETAPA_DE_TRAMITACION"/>

         <show-property name="my:FINANCIAMIENTO_PATENTAMIENTO"/>

         <show-property name="my:DERECHOS_COMERCIALES"/>

         <show-property name="my:DISTRIBUCION_DE_REGALIAS_UC"/>

         <show-property name="my:COMERCIALIZACION"/>

         <show-property name="my:PROYECTO"/>

         <show-property name="my:CONSORCIO"/>

      </property-sheet>

   </config>

   <config evaluator="aspect-name" condition="me:datosFactura1">

      <property-sheet>

         <show-property name="me:tipo_documento2"/>

         <show-property name="me:TITULO_ABREVIADO_DEL_PROYECTO"/>

         <show-property name="me:FACULTAD_CENTRO"/>

         <show-property name="me:INVESTIGADOR_RESPONSABLE"/>

         <show-property name="me:AGENCIA"/>

         <show-property name="me:FONDO"/>

         <show-property name="me:LINEA"/>

         <show-property name="me:CODIGO_PROYECTO"/>

         <show-property name="me:ANO_POSTULACION"/>

         <show-property name="me:INSTITUCION_PRINCIPAL"/>

         <show-property name="me:PATENTES"/>

         <show-property name="me:CONSORCIO"/>

      </property-sheet>

   </config>

   <config evaluator="aspect-name" condition="mi:datosFactura2">

      <property-sheet>

         <show-property name="mi:NOMBRE_DEL_CENTRO_CONSORCIO"/>

         <show-property name="mi:NOMBRE_CORTO_DEL_CENTRO_CONSORCIO"/>

         <show-property name="mi:TIPO_DE_CENTRO_CONSORCIO"/>

         <show-property name="mi:tipo_documento3"/>

         <show-property name="mi:ESTADO_DEL_DOCUMENTO"/>

         <show-property name="mi:NOMBRE_CORTO_DEL_PROYECTO"/>

         <show-property name="mi:FACULTADES"/>

         <show-property name="mi:INVESTIGADOR_RESPONSABLE"/>

         <show-property name="mi:ANO_SUSCRIPCION"/>

         <show-property name="mi:INSTITUCIONES_SOCIAS"/>

         <show-property name="mi:PATENTES"/>

         <show-property name="mi:PROYECTOS"/>

      </property-sheet>

   </config>

   <config evaluator="string-compare" condition="Action Wizards">

      <aspects>

         <aspect name="my:datosFactura"/>

      </aspects>

   </config>

   <config evaluator="string-compare" condition="Action Wizards">

      <aspects>

         <aspect name="me:datosFactura1"/>

      </aspects>

   </config>

   <config evaluator="string-compare" condition="Action Wizards">

      <aspects>

         <aspect name="mi:datosFactura2"/>

      </aspects>

   </config>

   <!–The config below shows how to incorporate the example model–>

   <!– into the web client, for this to work you will need to –>

   <!– rename example-model-context.xml.sample to example-model-context.xml –>

   <!–

   <config evaluator="string-compare" condition="Content Wizards">

      <content-types>

         <type name="my:sop" />

      </content-types>

   </config>



   <config evaluator="node-type" condition="my:sop">

      <property-sheet>

         <show-property name="mimetype" display-label-id="content_type"

                        component-generator="MimeTypeSelectorGenerator" />

         <show-property name="size" display-label-id="size"

                        converter="org.alfresco.faces.ByteSizeConverter"

                        show-in-edit-mode="false" />              

         <show-property name="my:publishedDate" />

         <show-association name="my:signOff" />

         <show-property name="my:authorisedBy" />

         <show-child-association name="my:processSteps" />

      </property-sheet>

   </config>



   <config evaluator="aspect-name" condition="my:datosFactura">

      <property-sheet>

         <show-property name="my:fecha"/>

         <show-property name="my:numero"/>

      </property-sheet>

   </config>



   <config evaluator="string-compare" condition="Action Wizards">

      <aspects>

         <aspect name="my:datosFactura"/>

      </aspects>

   </config>



   <config evaluator="string-compare" condition="Advanced Search">

      <advanced-search>

         <content-types>

            <type name="my:sop" />

         </content-types>

         <custom-properties>

            <meta-data type="my:sop" property="my:authorisedBy" />

            <meta-data aspect="my:imageClassification" property="my:resolution" />

         </custom-properties>

      </advanced-search>

   </config>

   –>

</alfresco-config>
fegor
Senior Member

Re: añadir varios aspectos a un nodo

Hola, añade todos tus aspectos en el mismo setAddAspect().

Por ejemplo:


cml.setAddAspect(new CMLAddAspect[] {addAspectTitled, addAspectVersionable, addAspectInline});

Un saludo.