The following code sample shows the section of the base userProfile.xml
file, included in the Personalization module, that defines the item-descriptors used by the Dynamo User Directory. (Note that the sample shows only an excerpt and not the complete userProfile.xml
file.)
<!-- Roles are the base class that organizational roles inherit from. --> <item-descriptor name="role" sub-type-property="type" version-property="version" display-property="name" display-name-resource="itemDescriptorRole" sub-type-value="role" default="false" content="false" folder="false" use-id-for-path="false" hidden="false" expert="false" cache-mode="simple"> <attribute name="resourceBundle" value="atg.userprofiling.UserProfileTemplateResources" /> <table name="dps_role" type="primary" id-column-name="role_id"> <property name="type" data-type="enumerated" expert="true" display-name-resource="type" default="role" required="false" readable="true" writable="true" queryable="true" hidden="false" cache-mode="inherit"> <attribute name="useCodeForValue" value="false" /> <option value="role" code="2000" /> <option value="organizationalRole" code="2001" /> <attribute name="propertySortPriority" value="50" /> </property> <property name="version" column-name="version" data-type="int" writable="false" expert="true" display-name-resource="version" required="false" readable="true" queryable="true" hidden="false" cache-mode="inherit"> <attribute name="propertySortPriority" value="60" /> </property> <property name="name" column-name="name" data-type="string" required="true" display-name-resource="name" readable="true" writable="true" queryable="true" hidden="false" expert="false" cache-mode="inherit"> <attribute name="propertySortPriority" value="10" /> </property> <property name="description" column-name="description" data-type="string" display-name-resource="description" required="false" readable="true" writable="true" queryable="true" hidden="false" expert="false" cache-mode="inherit"> <attribute name="propertySortPriority" value="20" /> </property> </table> <property name="relativeTo" hidden="true" required="false" readable="true" writable="true" queryable="true" expert="false" cache-mode="inherit" /> </item-descriptor> <!-- The organizational role, which is really an implementation of relativeTo of item-type organization. --> <item-descriptor name="organizationalRole" super-type="role" sub-type-value="organizationalRole" display-name-resource="itemDescriptorOrganizationalRole" default="false" content="false" folder="false" use-id-for-path="false" hidden="false" expert="false" cache-mode="simple"> <attribute name="resourceBundle" value="atg.userprofiling.UserProfileTemplateResources" /> <table name="dps_relativerole" id-column-name="role_id" type="auxiliary"> <property name="function" column-name="dps_function" data-type="string" required="true" display-name-resource="function" readable="true" writable="true" queryable="true" hidden="false" expert="false" cache-mode="inherit"> <attribute name="propertySortPriority" value="30" /> </property> <property name="relativeTo" hidden="false" item-type="organization" column-name="relative_to" required="true" cascade="update" display-name-resource="relativeTo" readable="true" writable="true" queryable="true" expert="false" cache-mode="inherit"> <attribute name="propertySortPriority" value="40" /> </property> </table> </item-descriptor> <!-- The Organization definition --> <item-descriptor name="organization" display-name-resource="itemDescriptorOrganization" display-property="name" default="false" content="false" folder="false" use-id-for-path="false" hidden="false" expert="false" cache-mode="simple"> <attribute name="resourceBundle" value="atg.userprofiling.UserProfileTemplateResources" /> <attribute name="categoryBasicsPriority" value="10" /> <attribute name="categoryOrganizationRolesPriority" value="20" /> <table name="dps_organization" type="primary" id-column-name="org_id"> <property category-resource="categoryBasics" name="name" data-type="string" required="true" column-name="name" display-name-resource="name" readable="true" writable="true" queryable="true" hidden="false" expert="false" cache-mode="inherit"> <attribute name="propertySortPriority" value="10" /> </property> <property category-resource="categoryBasics" name="description" data-type="string" column-name="description" display-name-resource="description" required="false" readable="true" writable="true" queryable="true" hidden="false" expert="false" cache-mode="inherit"> <attribute name="propertySortPriority" value="20" /> </property> <property category-resource="categoryOrganizationRoles" name="parentOrganization" item-type="organization" display-name-resource="parentOrganization" column-name="parent_org" required="false" readable="true" writable="true" queryable="true" hidden="false" expert="false" cache-mode="inherit"> <attribute name="propertySortPriority" value="30" /> </property> </table> <table name="dps_org_chldorg" type="multi" id-column-name="org_id"> <property category-resource="categoryOrganizationRoles" name="childOrganizations" data-type="set" component-item-type="organization" column-name="child_org_id" display-name-resource="childOrganizations" required="false" readable="true" writable="true" queryable="true" hidden="false" expert="false" cache-mode="inherit"> <attribute name="propertySortPriority" value="40" /> </property> </table> <table name="dps_org_ancestors" type="multi" id-column-name="org_id" multi-column-name="sequence_num"> <property category-resource="categoryOrganizationRoles" name="ancestorOrganizations" data-type="list" component-item-type="organization" column-name="anc_org" display-name-resource="ancestorOrganizations" required="false" readable="true" writable="true" queryable="true" hidden="false" expert="false" cache-mode="inherit"> <attribute name="propertySortPriority" value="50" /> </property> </table> <!-- Adding roles to the list of organizations --> <table name="dps_org_role" type="multi" id-column-name="org_id"> <property category-resource="categoryOrganizationRoles" name="roles" data-type="set" component-item-type="role" column-name="atg_role" display-name-resource="roles" required="false" readable="true" writable="true" queryable="true" hidden="false" expert="false" cache-mode="inherit"> <attribute name="propertySortPriority" value="60" /> </property> </table> <!-- This Organization has these RelativeRoles --> <table name="dps_role_rel_org" type="multi" id-column-name="organization" multi-column-name="sequence_num"> <property category-resource="categoryOrganizationRoles" name="relativeRoles" data-type="list" component-item-type="organizationalRole" column-name="role_id" display-name-resource="relativeRoles" required="false" readable="true" writable="true" queryable="true" hidden="false" expert="false" cache-mode="inherit"> <attribute name="propertySortPriority" value="70" /> </property> </table> <table name="dps_user_org" type="multi" id-column-name="organization"> <property category-resource="categoryOrganizationRoles" name="members" data-type="set" component-item-type="user" column-name="user_id" writable="true" display-name-resource="members" required="false" readable="true" queryable="true" hidden="false" expert="false" cache-mode="inherit"> <attribute name="resourceBundle" value="atg.userprofiling.UserProfileTemplateResources" /> <attribute name="propertySortPriority" value="-2" /> </property> </table> </item-descriptor> <!-- The folder structure that is used by organizations --> <item-descriptor name="genericFolder" sub-type-property="type" display-name-resource="itemDescriptorGenericFolder" sub-type-value="genericFolder" expert="true" display-property="name" default="false" content="false" folder="false" use-id-for-path="false" hidden="false" cache-mode="simple"> <attribute name="resourceBundle" value="atg.userprofiling.UserProfileTemplateResources" /> <table name="dps_folder" type="primary" id-column-name="folder_id"> <property name="type" data-type="enumerated" expert="true" display-name-resource="type" required="false" readable="true" writable="true" queryable="true" hidden="false" cache-mode="inherit"> <attribute name="useCodeForValue" value="false" /> <option value="genericFolder" code="2000" /> <option value="roleFolder" code="2001" /> <option value="orgFolder" code="2002" /> <attribute name="propertySortPriority" value="60" /> </property> <property name="name" data-type="string" column-name="name" required="true" display-name-resource="name" readable="true" writable="true" queryable="true" hidden="false" expert="false" cache-mode="inherit"> <attribute name="propertySortPriority" value="10" /> </property> <property name="description" data-type="string" column-name="description" display-name-resource="description" required="false" readable="true" writable="true" queryable="true" hidden="false" expert="false" cache-mode="inherit"> <attribute name="propertySortPriority" value="20" /> </property> <property name="parent" item-type="genericFolder" column-name="parent" display-name-resource="parent" required="false" readable="true" writable="true" queryable="true" hidden="false" expert="false" cache-mode="inherit"> <attribute name="propertySortPriority" value="30" /> </property> </table> <table name="dps_child_folder" type="multi" id-column-name="folder_id"> <property name="childFolders" data-type="set" component-item-type="genericFolder" column-name="child_folder_id" queryable="true" display-name-resource="childFolders" required="false" readable="true" writable="true" hidden="false" expert="false" cache-mode="inherit"> <attribute name="propertySortPriority" value="40" /> </property> </table> <property name="childItems" required="false" readable="true" writable="true" queryable="true" hidden="false" expert="false" cache-mode="inherit" /> </item-descriptor> <item-descriptor name="roleFolder" super-type="genericFolder" sub-type- value="roleFolder" display-name-resource="itemDescriptorRoleFolder" default="false" content="false" folder="false" use-id-for-path="false" hidden="false" expert="false" cache-mode="simple"> <attribute name="resourceBundle" value="atg.userprofiling.UserProfileTemplateResources" /> <table name="dps_rolefold_chld" type="multi" id-column-name="rolefold_id"> <property name="childItems" data-type="set" component-item-type="role" column-name="role_id" display-name-resource="childItems" required="false" readable="true" writable="true" queryable="true" hidden="false" expert="false" cache-mode="inherit"> <attribute name="propertySortPriority" value="50" /> </property> </table> </item-descriptor>