Party, Group, and User are all subtypes of ACSObject. Its purpose is to serve as a base class for use in common object-level services, such as categorization and permissioning. As such, subclasses are often types that users directly interact with such as Workflow or Category. The ACSObject object type also has generic attributes such as a unique id and a displayName.
The ACSObject object type and class are abstract. In order to differentiate among subtypes there are attributes objectType and defaultDomainClass. These attributes are used to instantiate the appropriate Java domain class to wrap data objects that are instances of subtypes of ACSObject.