By: M. Fowler
Published in: PLoPD2
Pages: 353-370
Category: Analysis
Summary: Patterns for analysis and design.
Pages: 359
Define a party object as a supertype for a person or an organization. This allows relationships to be established between a person or an organization by relating to a party.
Pages: 359-361
You need to describe an organization with a strict hierarchy. The levels change but not frequently. Use a recursive relationship on organization.
Pages: 361-362
Should you choose a more abstract model or a more specific one? Create an abstract model for flexibility, and use subtypes to enforce the rules.
Category: Analysis, System Modelling
Pages: 362-363
The enterprise is a matrix organization with more than one hierarchy. Apply Recursive Structures for Organizations for each hierarchy. Each hierarchy gets an association on organization and a partition of subtypes for the levels.
Pages: 363-364
There are many links in the enterprise and the links may change frequently. You may need to keep a history of past structures. Add an association type and an organizational structure type. Each instance of an organizational structure type represents a kind of organizational relationship. Time may be added to a structure to record history.
Pages: 364-365
You need to add a feature to an association, but it's inappropriate to add it to either type. Turn the association into a type with associations to the participating types and add the feature to the association.
Pages: 365
Many similar associations are bloating a type. Use Objectify Associations and add an association type attribute; one instance is created for each association in this structure.
Pages: 366-367
Similar structural relationships exist between organizations, between people, and between people and organizations. Use Typed Relationship to abstract the relationships and create an accountability type.
Pages: 367
Separate an organizational model into operational and knowledge levels. The operational level comprises accountability, party, and their interrelationships. The knowledge level comprises accountability type, party type, and their interrelationships.
Category: Analysis, System Modelling
Pages: 367-368
It isn't easy to change a model. Design the model so frequent changes affect instances of types in the same type structure.
Category: Analysis, System Modelling
Pages: 369-370
Changes in the structure of types occur with changes in the business practice. A model for the day-to-day operational aspects of the problem has been developed. Create a knowledge level for the model. Each type on the operational level has a corresponding type on the knowledge level. An association links the operational type to its corresponding knowledge type. Relationships between knowledge types define the possible links between the operational types.
Category: Analysis, System Modelling