A Folder is an Artifact whose main purpose is to contain other Artifacts.
Every Folder except a root Folder
will have exactly one parent Folder. Subclasses of Folder should
enforce their own semantics on members of the Folder. Every Artifact
must be contained in exactly one Folder (primary affinity). However,
other Folders may refer (or link) to the Artifact (secondary affinity).
Before a Folder is moved from one Scope to another Scope, the system
must check that the Folder Policies are compatible with the higher level
Policies of the destination Scope. Compatibility has two layers of meaning:
a Folder cannot define Policies that conflict with those of its primary
container, and Policies at the Folder scope can be extended from those defined
at the primary container scope.
This means that there are two types of Policies a Folder can have:
1.) Policies inherited from its parent container or Workspace.
2.) Policies not inherited from its parent container. These are the Policies
created at Folder level.
When a Folder is moved between Workspaces, type 1 Policies specified
above should not be allowed to move with the Folder. A subset of type 2,
Policies that are compatible with the new higher scope, are moved with the
Folder.
A Folder can be shared among different Workspaces. At any time, there's
one primary container for a Folder. Folder level Policies must be compatible
with the Policies of the primary container. Note that a Workspace cannot be
moved to a different Organization but a Folder can be moved to a Workspace
belonging to a different Organization.