/**
   * Returns the association definition for the given association on the given node
   *
   * @param node The node from which to get the association
   * @param association The association to find the definition for
   * @return The association definition or null if the association is not known
   */
  public AssociationDefinition getAssociationDefinition(Node node, String association) {
    AssociationDefinition assocDef = null;

    TypeDefinition typeDef = getTypeDef(node.getType(), node.getAspects());

    if (typeDef != null) {
      Map<QName, AssociationDefinition> assocs = typeDef.getAssociations();
      assocDef = assocs.get(Repository.resolveToQName(association));
    }

    return assocDef;
  }
  /**
   * Returns the property definition for the given property on the given node
   *
   * @param node The node from which to get the property
   * @param property The property to find the definition for
   * @return The property definition or null if the property is not known
   */
  public PropertyDefinition getPropertyDefinition(Node node, String property) {
    PropertyDefinition propDef = null;

    TypeDefinition typeDef = getTypeDef(node.getType(), node.getAspects());

    if (typeDef != null) {
      Map<QName, PropertyDefinition> properties = typeDef.getProperties();
      propDef = properties.get(Repository.resolveToQName(property));
    }

    return propDef;
  }
 /** {@inheritDoc} */
 @Override
 protected String getItemType(WorkflowTask item) {
   TypeDefinition typeDef = item.getDefinition().getMetadata();
   return typeDef.getName().toPrefixString(namespaceService);
 }