I need to be able to disable the auditable aspect when creating associations so that I can manually set the modified property on the source and target nodes. However, I do not always want this behavior. I need to be able to disable the auditable aspect for some associations and not others. This would be dependent on the REST endpoint that is called and not the content itself.
Is there a way to do this?
You can use org.alfresco.repo.policy.BehaviourFilter class to handle this case. It contract disabling and enabling policy behaviours.
In your behavior where you have implemented onCreateAssociation() method, you can add a check based on your requirement and call below method:
policyBehaviourFilter.disableBehaviour(nodeRef, ContentModel.ASPECT_AUDITABLE);
You can look at this project for reference, it has example of disabling aspect: https://github.com/aborroy/auditable-aspect-disable/blob/master/src/main/java/org/alfresco/behaviour...
Thank you for the reply. Unfortunately this does not get me exactly what I need. Basically I am simply attempting to prevent Alfresco from setting the cm:modified property on a node. I want to be able to set that property myself so that I can save multiple nodes that all share the same cm:modfied time.
From what I can tell, onCreateAssocation() acts as an event listener, getting called every time nodeService.createAssociation() is invoked. What I would like to do is disable the auditable behavior from my code when I call nodeService.createAssociation() so that I can manually set the cm:modified time. It doesn't seem like I can do much from within the onCreateAssociation() method because it only takes an AssociationRef as a parameter.
Is there a way to simply disable the auditable behavior one time and have it remain off indefinitely?
You can still use org.alfresco.repo.policy.BehaviourFilter anywhere in your code to disable/enable auditable aspect.
For example:
LOGGER.debug("Disabling auditable behaviour for node {}", srcNodeRef); behaviourFilter.disableBehaviour(srcNodeRef, ContentModel.ASPECT_AUDITABLE); //Creating an association nodeService.createAssociation(srcNodeRef, targetNodeRef, MyContentModel.ASSOC_SupportDoc); // Enabling AUDITABLE ASPECT Behaviour for this node LOGGER.debug("Enabling auditable behaviour for node {}", srcNodeRef); behaviourFilter.enableBehaviour(srcNodeRef, ContentModel.ASPECT_AUDITABLE);
Your custom code could be as per your usecase but above code shows an example to disabling and enabling auditable aspect on a selected node.
Is there a way to simply disable the auditable behavior one time and have it remain off indefinitely? -- May be NO.
Auditable aspect remains disabled during the same transaction until you enable it. In a new transaction it will be enabled until you disable it again on the same node.
Ask for and offer help to other Alfresco Content Services Users and members of the Alfresco team.
Related links:
By using this site, you are agreeing to allow us to collect and use cookies as outlined in Alfresco’s Cookie Statement and Terms of Use (and you have a legitimate interest in Alfresco and our products, authorizing us to contact you in such methods). If you are not ok with these terms, please do not use this website.