cancel
Showing results for 
Search instead for 
Did you mean: 

Duda con comportamiento de documentos asociados con otros documentos

ruben_arjonilla
Champ in-the-making
Champ in-the-making
Buenos días,

Tengo una duda acerca del comportamiento de los documentos y sus asociaciones con otros documentos.

Imaginemos que tengo los 2 siguientes tipos de documentos (ambos custom model)

Tenemos el tipo "a" y el tipo "b", cada uno con sus propiedades.
Y el tipo "b" tiene asociados varios tipos "a"
(esta seria la definición de los tipos "a" y "b").
<type name="dt:a">
   <title>Tipo A</title>
   <parent>cm:content</parent>
   <properties>
      <property name="dt:x">
         <title>X</title>
         <description>X</description>
         <type>d:text</type>
         <mandatory>false</mandatory>
         <default></default>
      </property>
   </properties>
</type>


<type name="dt:b">
   <title>Tipo B</title>
   <parent>cm:content</parent>
   <properties>
      <property name="dt:y">
         <title>Y</title>
         <description>Y</description>
         <type>d:text</type>
         <mandatory>false</mandatory>
         <default></default>
      </property>
   </properties>

   <associations>
      <association name="dt:asociacionA">
         <title>asociaciones del tipo A</title>
         <source>
            <mandatory>false</mandatory>
            <many>true</many>
         </source>
         <target>
            <class>dt:a</class>
            <mandatory>false</mandatory>
            <many>true</many>
         </target>
      </association>
   </associations>
</type>


Imaginemos que tengo 3 documentos de tipo "a" y 1 documento de tipo "b", llamémosles "a1", "a2", "a3" y "b1" y asociamos "a1" y "a2" en "b1".

Si yo elimino el documento "a3", este se elimina sin ningún tipo de problema.

Si yo elimino el documento "a1", este se elimina, y además elimina la asociación con "b1".
Por tanto, en "b1" me quedara asociado solamente "a2".

Este es el comportamiento normal en alfresco.

Yo lo que necesito, es que al eliminar "a1", si este esta asociado en "b1", que no deje eliminarlo o me avise.

¿Hay alguna manera de conseguir esto?

Muchas gracias de antemano
2 REPLIES 2

angelborroy
Community Manager Community Manager
Community Manager
Quizá puedas hacerlo utilizando el behaviour
NodeServicePolicies.OnDeleteChildAssociationPolicy
para escuchar el evento de eliminación de la asociación entre "a1" y "b1". Si cuando se cumpla esa condición lanzas una excepción romperás la transaccionalidad y no te dejará realizar la eliminación de "a1".
Hyland Developer Evangelist

Me miro el behaviour este y haré pruebas

Muchas gracias.