1. A method of managing permissions, comprising: accessing, by a processor, a hierarchical permission model stored on a storage device, wherein the hierarchical permission model corresponds to a hierarchical data model, wherein: the hierarchical data model comprises a plurality of case nodes, the hierarchical permission model comprises a plurality of hierarchical permission model nodes, the hierarchical permission model and the hierarchical data model are included in a case model, each case node in the hierarchical data model corresponds to a corresponding hierarchical permission model node in the hierarchical permission model, each corresponding hierarchical permission model node defines a corresponding set of case roles to be afforded permissions at the corresponding case node, and for each such case role, the each corresponding hierarchical permission model node defines a set of permissions to be associated with that case role with respect to the corresponding case node, wherein at least a subset of the each corresponding hierarchical permission model node defines at least one of the permissions as being conditioned on corresponding case node specific data that includes a run-time state of a state machine specifically defined for, and associated with, the corresponding case node; and the processor enforcing the permissions defined in the hierarchical permission model with respect to one or more case instances instantiated using the case model by allowing, or not allowing, a requested action to be performed, at run time, based on a case role to which a requesting user has been assigned.