Business concerns are multiple and overlapping, stakeholders may cross boundaries, and interests may conflict. Hence the importance of comprehensive and consistent representations of agents involvement.
Objectives & Pitfalls
Considering that business requirements are by nature partial, biased and prone to changes, it is safe to assume that business objects and agents may be identified differently across organizations and business units. Nonetheless, persistency units must be identified consistently and continuously independently of the execution units that may target them.
A common proposition is to specialize a base type into subtypes for persons, organizations, etc. Unfortunately such a solution contravenes the substitution principle when checked for external consistency: contrary to persons, organizations are not physical entities and, as a consequence, a base representation of occurrences of both cannot be substituted to a specialized one. Defining the base type as abstract would remove the consistency contention but it would greatly limit its practicality in supporting accounting applications for which parties are meant to be created and managed independently of persons or organization?
Hence, based upon representation patterns, the objective should be to define a customary object with a consistent identification mechanism to be applied to individual entities across business domains and processes. Context identification could then be delegated depending on party’s nature, physical or social.
It’s worth to note that, contrary to parties, contracts can be fully identified as customary entities.
A party is a customary object identified by the organization considered. It stands locally for a social entity whose identity is managed independently of any specific business organization and used by all of them.
- Since connectors from Party to Person and Organization are identifying (#) that makes them mutually exclusive.
- Occupation is an overlapping partition, individual status is exclusive but can be modified, legal status is used to identify organizations and therefore cannot be modified.
- Partitions may (individual and legal status) or may not (occupation) be associated with subtypes.
As noted above, sub-typing parties into organizations or persons would imply a single identification mechanism managed under a single authority. Since that is not usually the case, introducing subtypes at this stage would probably put external consistency at risk.
There is no such risk for persons and organizations which can be identified as such (#); subtypes may be introduced providing they are supported by exclusive (individual status) or identifying (legal status) partitions.
Whereas an abstract class may be introduced for party roles (e.g customers/suppliers), it should not be directly associated with contracts or accounts because roles are usually multiple and overlapping.