Package org.alfresco.repo.policy
Interface PolicyComponent
-
- All Known Implementing Classes:
PolicyComponentImpl
@AlfrescoPublicApi public interface PolicyComponentPolicy Component for managing Policies and Behaviours.This component provides the ability to:
- a) Register policies
- b) Bind behaviours to policies
- c) Invoke policy behaviours
A behaviour may be bound to a Policy before the Policy is registered. In this case, the behaviour is not validated (i.e. checked to determine if it supports the policy interface) until the Policy is registered. Otherwise, the behaviour is validated at bind-time. Policies may be selectively "turned off" by the Behaviour Filter.
- Author:
- David Caruana
- See Also:
BehaviourFilter,NodeServicePolicies
-
-
Method Summary
All Methods Instance Methods Abstract Methods Modifier and Type Method Description BehaviourDefinition<ServiceBehaviourBinding>bindAssociationBehaviour(org.alfresco.service.namespace.QName policy, java.lang.Object service, Behaviour behaviour)Bind a Service specific behaviour to an Association-level PolicyBehaviourDefinition<ClassFeatureBehaviourBinding>bindAssociationBehaviour(org.alfresco.service.namespace.QName policy, org.alfresco.service.namespace.QName className, Behaviour behaviour)Bind an Association specific behaviour to an Association-level Policy (for all associations of a Class)BehaviourDefinition<ClassFeatureBehaviourBinding>bindAssociationBehaviour(org.alfresco.service.namespace.QName policy, org.alfresco.service.namespace.QName className, org.alfresco.service.namespace.QName assocName, Behaviour behaviour)Bind an Association specific behaviour to an Association-level PolicyBehaviourDefinition<ServiceBehaviourBinding>bindClassBehaviour(org.alfresco.service.namespace.QName policy, java.lang.Object service, Behaviour behaviour)Bind a Service behaviour to a Class-level PolicyBehaviourDefinition<ClassBehaviourBinding>bindClassBehaviour(org.alfresco.service.namespace.QName policy, org.alfresco.service.namespace.QName className, Behaviour behaviour)Bind a Class specific behaviour to a Class-level Policy.BehaviourDefinition<ServiceBehaviourBinding>bindPropertyBehaviour(org.alfresco.service.namespace.QName policy, java.lang.Object service, Behaviour behaviour)Bind a Service specific behaviour to a Property-level PolicyBehaviourDefinition<ClassFeatureBehaviourBinding>bindPropertyBehaviour(org.alfresco.service.namespace.QName policy, org.alfresco.service.namespace.QName className, Behaviour behaviour)Bind a Property specific behaviour to a Property-level Policy (for all properties of a Class)BehaviourDefinition<ClassFeatureBehaviourBinding>bindPropertyBehaviour(org.alfresco.service.namespace.QName policy, org.alfresco.service.namespace.QName className, org.alfresco.service.namespace.QName propertyName, Behaviour behaviour)Bind a Property specific behaviour to a Property-level Policyjava.util.Collection<PolicyDefinition>getRegisteredPolicies()Gets all registered PoliciesPolicyDefinition<Policy>getRegisteredPolicy(PolicyType policyType, org.alfresco.service.namespace.QName policy)Gets the specified registered PolicybooleanisRegisteredPolicy(PolicyType policyType, org.alfresco.service.namespace.QName policy)Determine if the specified policy has been registered<P extends AssociationPolicy>
AssociationPolicyDelegate<P>registerAssociationPolicy(java.lang.Class<P> policy)Register a Association-level Policy<P extends ClassPolicy>
ClassPolicyDelegate<P>registerClassPolicy(java.lang.Class<P> policy)Register a Class-level Policy<P extends PropertyPolicy>
PropertyPolicyDelegate<P>registerPropertyPolicy(java.lang.Class<P> policy)Register a Property-level PolicyvoidremoveClassDefinition(BehaviourDefinition<ClassBehaviourBinding> definition)Unbind behaviour
-
-
-
Method Detail
-
registerClassPolicy
<P extends ClassPolicy> ClassPolicyDelegate<P> registerClassPolicy(java.lang.Class<P> policy)
Register a Class-level Policy- Type Parameters:
P- the policy interface- Parameters:
policy- the policy interface class- Returns:
- A delegate for the class-level policy (typed by the policy interface)
-
registerPropertyPolicy
<P extends PropertyPolicy> PropertyPolicyDelegate<P> registerPropertyPolicy(java.lang.Class<P> policy)
Register a Property-level Policy- Type Parameters:
P- the policy interface- Parameters:
policy- the policy interface class- Returns:
- A delegate for the property-level policy (typed by the policy interface)
-
registerAssociationPolicy
<P extends AssociationPolicy> AssociationPolicyDelegate<P> registerAssociationPolicy(java.lang.Class<P> policy)
Register a Association-level Policy- Type Parameters:
P- the policy interface- Parameters:
policy- the policy interface class- Returns:
- A delegate for the association-level policy (typed by the policy interface)
-
getRegisteredPolicies
java.util.Collection<PolicyDefinition> getRegisteredPolicies()
Gets all registered Policies- Returns:
- the collection of registered policy definitions
-
getRegisteredPolicy
PolicyDefinition<Policy> getRegisteredPolicy(PolicyType policyType, org.alfresco.service.namespace.QName policy)
Gets the specified registered Policy- Parameters:
policyType- the policy typepolicy- the policy name- Returns:
- the policy definition (or null, if it has not been registered)
-
isRegisteredPolicy
boolean isRegisteredPolicy(PolicyType policyType, org.alfresco.service.namespace.QName policy)
Determine if the specified policy has been registered- Parameters:
policyType- the policy typepolicy- the fully qualified name of the policy- Returns:
- true => registered, false => not yet
-
bindClassBehaviour
BehaviourDefinition<ClassBehaviourBinding> bindClassBehaviour(org.alfresco.service.namespace.QName policy, org.alfresco.service.namespace.QName className, Behaviour behaviour)
Bind a Class specific behaviour to a Class-level Policy.So when the named policy, happens on the specified aspect or type, the specified behaviour is executed.
Example of calling this method
this.policyComponent.bindClassBehaviour( NodeServicePolicies.BeforeUpdateNodePolicy.QNAME, ContentModel.ASPECT_LOCKABLE, new JavaBehaviour(this, "beforeUpdateNode"));- Parameters:
policy- the fully qualified policy nameclassName- the qualified name of a type or aspect that the policy is bound tobehaviour- the behaviour. What gets executed by the policy- Returns:
- the registered behaviour definition
-
bindClassBehaviour
BehaviourDefinition<ServiceBehaviourBinding> bindClassBehaviour(org.alfresco.service.namespace.QName policy, java.lang.Object service, Behaviour behaviour)
Bind a Service behaviour to a Class-level Policy- Parameters:
policy- the fully qualified policy nameservice- the service (any object, in fact)behaviour- the behaviour. What gets executed by the policy- Returns:
- the registered behaviour definition
-
bindPropertyBehaviour
BehaviourDefinition<ClassFeatureBehaviourBinding> bindPropertyBehaviour(org.alfresco.service.namespace.QName policy, org.alfresco.service.namespace.QName className, org.alfresco.service.namespace.QName propertyName, Behaviour behaviour)
Bind a Property specific behaviour to a Property-level Policy- Parameters:
policy- the fully qualified policy nameclassName- the qualified name of the class (type or aspect) to bind againstpropertyName- the name of the property to bind againstbehaviour- the behaviour. What gets executed by the policy- Returns:
- the registered behaviour definition
-
bindPropertyBehaviour
BehaviourDefinition<ClassFeatureBehaviourBinding> bindPropertyBehaviour(org.alfresco.service.namespace.QName policy, org.alfresco.service.namespace.QName className, Behaviour behaviour)
Bind a Property specific behaviour to a Property-level Policy (for all properties of a Class)- Parameters:
policy- the fully qualified policy nameclassName- the name of the class (type or aspect) to bind againstbehaviour- the behaviour, what gets executed by the policy- Returns:
- the registered behaviour definition
-
bindPropertyBehaviour
BehaviourDefinition<ServiceBehaviourBinding> bindPropertyBehaviour(org.alfresco.service.namespace.QName policy, java.lang.Object service, Behaviour behaviour)
Bind a Service specific behaviour to a Property-level Policy- Parameters:
policy- the fully qualified policy nameservice- the binding servicebehaviour- the behaviour- Returns:
- the registered behaviour definition
-
bindAssociationBehaviour
BehaviourDefinition<ClassFeatureBehaviourBinding> bindAssociationBehaviour(org.alfresco.service.namespace.QName policy, org.alfresco.service.namespace.QName className, org.alfresco.service.namespace.QName assocName, Behaviour behaviour)
Bind an Association specific behaviour to an Association-level PolicyFor example, before a rule folder association is created.
policyComponent.bindAssociationBehaviour( NodeServicePolicies.OnCreateChildAssociationPolicy.QNAME, RuleModel.ASPECT_RULES, RuleModel.ASSOC_RULE_FOLDER, new JavaBehaviour(this, "OnCreateChildAssociation"));- Parameters:
policy- the policy nameclassName- the name of the class (type or aspect) to bind againstassocName- the name of the association to bind againstbehaviour- the behaviour. What gets executed by the policy- Returns:
- the registered behaviour definition
-
bindAssociationBehaviour
BehaviourDefinition<ClassFeatureBehaviourBinding> bindAssociationBehaviour(org.alfresco.service.namespace.QName policy, org.alfresco.service.namespace.QName className, Behaviour behaviour)
Bind an Association specific behaviour to an Association-level Policy (for all associations of a Class)- Parameters:
policy- the policy nameclassName- the name of the class (type or aspect) to bind againstbehaviour- the behaviour. What gets executed by the policy- Returns:
- the registered behaviour definition
-
bindAssociationBehaviour
BehaviourDefinition<ServiceBehaviourBinding> bindAssociationBehaviour(org.alfresco.service.namespace.QName policy, java.lang.Object service, Behaviour behaviour)
Bind a Service specific behaviour to an Association-level Policy- Parameters:
policy- the policy nameservice- the binding servicebehaviour- the behaviour. What gets executed by the policy- Returns:
- the registered behaviour definition
-
removeClassDefinition
void removeClassDefinition(BehaviourDefinition<ClassBehaviourBinding> definition)
Unbind behaviour
-
-