Interface PolicyComponent

  • All Known Implementing Classes:
    PolicyComponentImpl

    @AlfrescoPublicApi
    public interface PolicyComponent
    Policy 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 Detail

      • registerClassPolicy

        <P extends ClassPolicyClassPolicyDelegate<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 PropertyPolicyPropertyPolicyDelegate<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 AssociationPolicyAssociationPolicyDelegate<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 type
        policy - 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 type
        policy - 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 name
        className - the qualified name of a type or aspect that the policy is bound to
        behaviour - 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 name
        service - 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 name
        className - the qualified name of the class (type or aspect) to bind against
        propertyName - the name of the property to bind against
        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,
                                                                                Behaviour behaviour)
        Bind a Property specific behaviour to a Property-level Policy (for all properties of a Class)
        Parameters:
        policy - the fully qualified policy name
        className - the name of the class (type or aspect) to bind against
        behaviour - 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 name
        service - the binding service
        behaviour - 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 Policy

        For 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 name
        className - the name of the class (type or aspect) to bind against
        assocName - the name of the association to bind against
        behaviour - 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 name
        className - the name of the class (type or aspect) to bind against
        behaviour - 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 name
        service - the binding service
        behaviour - the behaviour. What gets executed by the policy
        Returns:
        the registered behaviour definition