Files
alfresco-community-repo/config/alfresco/model/contentModel.xml
Dave Ward 7fbccecd71 MOB-1073: RM Ghosted Records
- The <archive> setting on model class definitions (controlling archival on node deletion) is now paid attention to for aspects as well as types
- Archive is on by default for aspects and off by default for types
- If a node's type or any of its aspects has archiving off then it will be purged rather than archived
- Only the cm:content and cm:folder types currently have archiving switched on
- RM subtypes of cm:content and cm:folder plus rm:record aspect switch off archiving
- A module can now include global property overrides in classpath*:alfresco/module/*/alfresco-global.properties
- The RM module currently sets two global properties:
   system.content.eagerOrphanCleanup=true # Switches on synchronous content purging
   rm.ghosting.enabled=true               # Enables the new RM ghosting functionality
- When ghosting is switched on, for nodes with the rma:record aspect the DestroyAction synchronously removes all content properties and applies the rma:ghosted aspect
- TODO: Any properties required for rma:ghosted?


git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@15990 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
2009-08-28 15:26:15 +00:00

1092 lines
36 KiB
XML

<model name="cm:contentmodel" xmlns="http://www.alfresco.org/model/dictionary/1.0">
<description>Alfresco Content Domain Model</description>
<author>Alfresco</author>
<published>2009-06-04</published>
<version>1.1</version>
<imports>
<import uri="http://www.alfresco.org/model/dictionary/1.0" prefix="d"/>
<import uri="http://www.alfresco.org/model/system/1.0" prefix="sys"/>
</imports>
<namespaces>
<namespace uri="http://www.alfresco.org/model/content/1.0" prefix="cm"/>
</namespaces>
<constraints>
<constraint name="cm:filename" type="REGEX">
<parameter name="expression"><value><![CDATA[(.*[\"\*\\\>\<\?\/\:\|]+.*)|(.*[\.]?.*[\.]+$)|(.*[ ]+$)]]></value></parameter>
<parameter name="requiresMatch"><value>false</value></parameter>
</constraint>
<constraint name="cm:userNameConstraint" type="org.alfresco.repo.dictionary.constraint.UserNameConstraint" />
<constraint name="cm:authorityNameConstraint" type="org.alfresco.repo.dictionary.constraint.AuthorityNameConstraint" />
<constraint name="cm:storeSelectorConstraint" type="REGISTERED">
<parameter name="registeredName"><value>defaultStoreSelector</value></parameter>
</constraint>
</constraints>
<types>
<type name="cm:cmobject">
<title>Object</title>
<parent>sys:base</parent>
<properties>
<property name="cm:name">
<title>Name</title>
<type>d:text</type>
<mandatory enforced="true">true</mandatory>
<index enabled="true">
<atomic>true</atomic>
<stored>false</stored>
<tokenised>both</tokenised>
</index>
<constraints>
<constraint ref="cm:filename" />
</constraints>
</property>
</properties>
<mandatory-aspects>
<aspect>cm:auditable</aspect>
</mandatory-aspects>
</type>
<type name="cm:folder">
<title>Folder</title>
<parent>cm:cmobject</parent>
<archive>true</archive>
<associations>
<child-association name="cm:contains">
<source>
<mandatory>false</mandatory>
<many>true</many>
</source>
<target>
<class>sys:base</class>
<mandatory>false</mandatory>
<many>true</many>
</target>
<duplicate>false</duplicate>
<propagateTimestamps>true</propagateTimestamps>
</child-association>
</associations>
</type>
<type name="cm:content">
<title>Content</title>
<parent>cm:cmobject</parent>
<archive>true</archive>
<properties>
<property name="cm:content">
<type>d:content</type>
<mandatory>false</mandatory>
<!--- Index content in the background -->
<index enabled="true">
<atomic>true</atomic>
<stored>false</stored>
<tokenised>true</tokenised>
</index>
</property>
</properties>
</type>
<type name="cm:dictionaryModel">
<title>Dictionary Model</title>
<parent>cm:content</parent>
<properties>
<property name="cm:modelName">
<title>Model name</title>
<type>d:qname</type>
<protected>true</protected>
</property>
<property name="cm:modelDescription">
<title>Description</title>
<type>d:text</type>
<protected>true</protected>
</property>
<property name="cm:modelAuthor">
<title>Author</title>
<type>d:text</type>
<protected>true</protected>
</property>
<property name="cm:modelPublishedDate">
<title>Published Date</title>
<type>d:date</type>
<protected>true</protected>
</property>
<property name="cm:modelVersion">
<title>Version</title>
<type>d:text</type>
<protected>true</protected>
</property>
<property name="cm:modelActive">
<title>Model Active</title>
<type>d:boolean</type>
<default>false</default>
</property>
</properties>
</type>
<type name="cm:link">
<title>Link Object</title>
<parent>cm:cmobject</parent>
<properties>
<property name="cm:destination">
<title>Link Destination</title>
<type>d:noderef</type>
<mandatory>true</mandatory>
</property>
</properties>
</type>
<type name="cm:savedquery">
<title>Saved Query</title>
<parent>cm:content</parent>
</type>
<type name="cm:systemfolder">
<title>System Folder</title>
<parent>cm:folder</parent>
</type>
<type name="cm:authority">
<title>Alfresco Authority Abstract Type</title>
<parent>sys:base</parent>
</type>
<type name="cm:person">
<title>Person</title>
<parent>cm:authority</parent>
<properties>
<!-- The tokenisation set here is ignored - it is fixed for this type -->
<!-- This is so you can not break person lookup -->
<property name="cm:userName">
<type>d:text</type>
<mandatory>true</mandatory>
<constraints>
<constraint ref="cm:userNameConstraint" />
</constraints>
</property>
<property name="cm:homeFolder">
<type>d:noderef</type>
<mandatory>true</mandatory>
</property>
<property name="cm:firstName">
<type>d:text</type>
<mandatory>true</mandatory>
</property>
<property name="cm:lastName">
<type>d:text</type>
<mandatory>true</mandatory>
</property>
<property name="cm:middleName">
<type>d:text</type>
</property>
<property name="cm:email">
<type>d:text</type>
</property>
<property name="cm:organizationId">
<type>d:text</type>
</property>
<property name="cm:homeFolderProvider">
<type>d:text</type>
</property>
<property name="cm:defaultHomeFolderPath">
<type>d:text</type>
</property>
<property name="cm:presenceProvider">
<type>d:text</type>
</property>
<property name="cm:presenceUsername">
<type>d:text</type>
</property>
<property name="cm:organization">
<type>d:text</type>
</property>
<property name="cm:jobtitle">
<type>d:text</type>
</property>
<property name="cm:location">
<type>d:text</type>
</property>
<property name="cm:persondescription">
<type>d:content</type>
</property>
<property name="cm:telephone">
<type>d:text</type>
</property>
<property name="cm:mobile">
<type>d:text</type>
</property>
<property name="cm:companyaddress1">
<type>d:text</type>
</property>
<property name="cm:companyaddress2">
<type>d:text</type>
</property>
<property name="cm:companyaddress3">
<type>d:text</type>
</property>
<property name="cm:companypostcode">
<type>d:text</type>
</property>
<property name="cm:companytelephone">
<type>d:text</type>
</property>
<property name="cm:companyfax">
<type>d:text</type>
</property>
<property name="cm:companyemail">
<type>d:text</type>
</property>
<property name="cm:skype">
<type>d:text</type>
</property>
<property name="cm:instantmsg">
<type>d:text</type>
</property>
<!-- system maintained values -->
<property name="cm:sizeCurrent">
<type>d:long</type>
<protected>true</protected>
</property>
<property name="cm:sizeQuota">
<type>d:long</type>
<protected>true</protected>
</property>
</properties>
<associations>
<association name="cm:avatar">
<source>
<role>cm:avatarOf</role>
<mandatory>false</mandatory>
<many>false</many>
</source>
<target>
<class>cm:content</class>
<role>cm:hasAvatar</role>
<mandatory>false</mandatory>
<many>false</many>
</target>
</association>
</associations>
</type>
<type name="cm:authorityContainer">
<title>Alfresco Authority Type</title>
<parent>cm:authority</parent>
<properties>
<!-- The tokenisation set here is ignored - it is fixed for this type -->
<!-- This is so you can not break group lookup -->
<property name="cm:authorityName">
<type>d:text</type>
<constraints>
<constraint ref="cm:authorityNameConstraint" />
</constraints>
</property>
<property name="cm:authorityDisplayName">
<type>d:text</type>
</property>
</properties>
<associations>
<child-association name="cm:member">
<source>
<mandatory>false</mandatory>
<many>true</many>
</source>
<target>
<class>cm:authority</class>
<mandatory>false</mandatory>
<many>true</many>
</target>
<duplicate>false</duplicate>
</child-association>
</associations>
</type>
<type name="cm:zone">
<title>Alfresco Authentication Zone Type</title>
<parent>cm:cmobject</parent>
<properties>
</properties>
<associations>
<child-association name="cm:inZone">
<source>
<mandatory>false</mandatory>
<many>true</many>
</source>
<target>
<class>cm:authority</class>
<mandatory>false</mandatory>
<many>true</many>
</target>
<duplicate>false</duplicate>
</child-association>
</associations>
</type>
<!-- Classification -->
<type name="cm:category_root">
<title>Category Root</title>
<parent>cm:cmobject</parent>
<associations>
<child-association name="cm:categories">
<source>
<mandatory>false</mandatory>
<many>true</many>
</source>
<target>
<class>cm:category</class>
<mandatory>false</mandatory>
<many>true</many>
</target>
</child-association>
</associations>
<mandatory-aspects>
<aspect>sys:aspect_root</aspect>
</mandatory-aspects>
</type>
<type name="cm:category">
<title>Category</title>
<parent>cm:cmobject</parent>
<associations>
<child-association name="cm:subcategories">
<source>
<mandatory>false</mandatory>
<many>true</many>
</source>
<target>
<class>cm:category</class>
<mandatory>false</mandatory>
<many>true</many>
</target>
<duplicate>false</duplicate>
</child-association>
</associations>
</type>
<!-- Multilingual -->
<type name="cm:mlRoot">
<title>Multilingual Root</title>
<parent>sys:container</parent>
<associations>
<child-association name="cm:mlContainer">
<source>
<mandatory>false</mandatory>
<many>false</many>
</source>
<target>
<class>cm:mlContainer</class>
<mandatory>false</mandatory>
<many>true</many>
</target>
</child-association>
</associations>
</type>
<type name="cm:mlContainer">
<title>Multilingual Container</title>
<parent>sys:container</parent>
<associations>
<child-association name="cm:mlChild">
<source>
<mandatory>false</mandatory>
<many>false</many>
</source>
<target>
<class>cm:mlDocument</class>
<mandatory>true</mandatory>
<many>true</many>
</target>
</child-association>
</associations>
<mandatory-aspects>
<aspect>cm:versionable</aspect>
<aspect>cm:author</aspect>
<aspect>sys:localized</aspect>
</mandatory-aspects>
</type>
<!-- Thumbnail content type -->
<type name="cm:thumbnail">
<title>Thumbnail</title>
<parent>cm:content</parent>
<archive>true</archive>
<properties>
<property name="cm:thumbnailName">
<title>Thumbnail Name</title>
<type>d:text</type>
<mandatory>false</mandatory>
</property>
<property name="cm:contentPropertyName">
<title>Thumbnailed Content Property Name</title>
<type>d:qname</type>
<mandatory>true</mandatory>
</property>
</properties>
</type>
</types>
<aspects>
<aspect name="cm:titled">
<title>Titled</title>
<properties>
<property name="cm:title">
<title>Title</title>
<type>d:mltext</type>
<index enabled="true">
<atomic>true</atomic>
<stored>false</stored>
<tokenised>both</tokenised>
</index>
</property>
<property name="cm:description">
<title>Description</title>
<type>d:mltext</type>
<index enabled="true">
<atomic>true</atomic>
<stored>false</stored>
<tokenised>both</tokenised>
</index>
</property>
</properties>
</aspect>
<aspect name="cm:auditable">
<title>Auditable</title>
<properties>
<property name="cm:created">
<title>Created</title>
<type>d:datetime</type>
<protected>true</protected>
<mandatory enforced="true">true</mandatory>
<index enabled="true">
<atomic>true</atomic>
<stored>false</stored>
<tokenised>both</tokenised>
</index>
</property>
<property name="cm:creator">
<title>Creator</title>
<type>d:text</type>
<protected>true</protected>
<mandatory enforced="true">true</mandatory>
</property>
<property name="cm:modified">
<title>Modified</title>
<type>d:datetime</type>
<protected>true</protected>
<mandatory enforced="true">true</mandatory>
<index enabled="true">
<atomic>true</atomic>
<stored>false</stored>
<tokenised>both</tokenised>
</index>
</property>
<property name="cm:modifier">
<title>Modifier</title>
<type>d:text</type>
<protected>true</protected>
<mandatory enforced="true">true</mandatory>
</property>
<property name="cm:accessed">
<title>Accessed</title>
<type>d:datetime</type>
<protected>true</protected>
<index enabled="true">
<atomic>true</atomic>
<stored>false</stored>
<tokenised>both</tokenised>
</index>
</property>
</properties>
</aspect>
<aspect name="cm:transformable">
<title>Transformable</title>
<associations>
<association name="cm:formats">
<title>Formats</title>
<source>
<role>cm:formatOf</role>
<mandatory>false</mandatory>
<many>false</many>
</source>
<target>
<class>cm:content</class>
<role>cm:hasFormat</role>
<mandatory>false</mandatory>
<many>true</many>
</target>
</association>
</associations>
</aspect>
<aspect name="cm:templatable">
<title>Templatable</title>
<properties>
<property name="cm:template">
<title>Template</title>
<type>d:noderef</type>
<mandatory>false</mandatory>
</property>
</properties>
</aspect>
<aspect name="cm:webscriptable">
<title>Webscriptable</title>
<properties>
<property name="cm:webscript">
<title>Webscript</title>
<type>d:text</type>
<mandatory>false</mandatory>
</property>
</properties>
</aspect>
<aspect name="cm:projectsummary">
<title>Project Summary</title>
<properties>
<property name="cm:summaryWebscript">
<title>Project Summary Webscript</title>
<type>d:text</type>
<mandatory>false</mandatory>
</property>
</properties>
</aspect>
<aspect name="cm:complianceable">
<title>Complianceable</title>
<properties>
<property name="cm:removeAfter">
<title>Remove After</title>
<type>d:datetime</type>
<index enabled="true">
<atomic>true</atomic>
<stored>false</stored>
<tokenised>both</tokenised>
</index>
</property>
</properties>
<mandatory-aspects>
<aspect>cm:auditable</aspect>
</mandatory-aspects>
</aspect>
<aspect name="cm:ownable">
<title>Ownable</title>
<properties>
<property name="cm:owner">
<title>Owner</title>
<type>d:text</type>
</property>
</properties>
</aspect>
<aspect name="cm:author">
<title>Author</title>
<properties>
<property name="cm:author">
<title>Author</title>
<type>d:text</type>
</property>
</properties>
</aspect>
<aspect name="cm:dublincore">
<title>Dublin Core</title>
<parent>cm:titled</parent>
<properties>
<property name="cm:publisher">
<title>Publisher</title>
<type>d:text</type>
<mandatory enforced="false">true</mandatory>
</property>
<property name="cm:contributor">
<title>Contributor</title>
<type>d:text</type>
<mandatory enforced="false">true</mandatory>
</property>
<property name="cm:type">
<title>Type</title>
<type>d:text</type>
<mandatory enforced="false">true</mandatory>
</property>
<property name="cm:identifier">
<title>Identifier</title>
<type>d:text</type>
<mandatory enforced="false">true</mandatory>
</property>
<property name="cm:dcsource">
<title>Source</title>
<type>d:text</type>
<mandatory enforced="false">true</mandatory>
</property>
<property name="cm:coverage">
<title>Coverage</title>
<type>d:text</type>
<mandatory enforced="false">true</mandatory>
</property>
<property name="cm:rights">
<title>Rights</title>
<type>d:text</type>
<mandatory enforced="false">true</mandatory>
</property>
<property name="cm:subject">
<title>Subject</title>
<type>d:text</type>
<mandatory enforced="false">true</mandatory>
</property>
</properties>
<mandatory-aspects>
<aspect>cm:auditable</aspect>
<aspect>cm:author</aspect>
</mandatory-aspects>
</aspect>
<aspect name="cm:basable">
<title>Basable</title>
<associations>
<association name="cm:basis">
<source>
<role>cm:basedOn</role>
<mandatory>false</mandatory>
<many>true</many>
</source>
<target>
<class>cm:content</class>
<role>cm:hasBasis</role>
<mandatory>false</mandatory>
<many>true</many>
</target>
</association>
</associations>
</aspect>
<aspect name="cm:partable">
<title>Partable</title>
<associations>
<association name="cm:parts">
<source>
<role>cm:partOf</role>
<mandatory>false</mandatory>
<many>true</many>
</source>
<target>
<class>cm:content</class>
<role>cm:hasPart</role>
<mandatory>false</mandatory>
<many>true</many>
</target>
</association>
</associations>
</aspect>
<aspect name="cm:referencing">
<title>Referencing</title>
<associations>
<association name="cm:references">
<source>
<role>cm:referencedBy</role>
<mandatory>false</mandatory>
<many>true</many>
</source>
<target>
<class>cm:content</class>
<role>cm:references</role>
<mandatory>false</mandatory>
<many>true</many>
</target>
</association>
</associations>
</aspect>
<aspect name="cm:replaceable">
<title>Replacable</title>
<associations>
<association name="cm:replaces">
<source>
<role>cm:replacedBy</role>
<mandatory>false</mandatory>
<many>true</many>
</source>
<target>
<class>cm:content</class>
<role>cm:replaces</role>
<mandatory>false</mandatory>
<many>true</many>
</target>
</association>
</associations>
</aspect>
<aspect name="cm:effectivity">
<title>Effectivity</title>
<properties>
<property name="cm:from">
<title>Effective From</title>
<type>d:datetime</type>
<index enabled="true">
<atomic>true</atomic>
<stored>false</stored>
<tokenised>both</tokenised>
</index>
</property>
<property name="cm:to">
<title>Effective To</title>
<type>d:datetime</type>
<index enabled="true">
<atomic>true</atomic>
<stored>false</stored>
<tokenised>both</tokenised>
</index>
</property>
</properties>
</aspect>
<aspect name="cm:summarizable">
<title>Summarizable</title>
<properties>
<property name="cm:summary">
<title>Summary</title>
<type>d:text</type>
</property>
</properties>
</aspect>
<aspect name="cm:countable">
<title>Countable</title>
<properties>
<property name="cm:hits">
<type>d:int</type>
</property>
<property name="cm:counter">
<type>d:int</type>
</property>
</properties>
</aspect>
<aspect name="cm:copiedfrom">
<title>Copied From</title>
<properties>
<property name="cm:source">
<type>d:noderef</type>
<protected>true</protected>
<mandatory>true</mandatory>
<multiple>false</multiple>
<index enabled="true">
<atomic>true</atomic>
<stored>false</stored>
<tokenised>true</tokenised>
</index>
</property>
</properties>
</aspect>
<aspect name="cm:workingcopy">
<title>Working Copy</title>
<!-- Explicitly turn off archiving for all nodes with this aspect -->
<archive>false</archive>
<properties>
<property name="cm:workingCopyOwner">
<type>d:text</type>
<protected>true</protected>
<mandatory>true</mandatory>
</property>
<property name="cm:workingCopyMode">
<type>d:text</type>
</property>
</properties>
</aspect>
<aspect name="cm:versionable">
<title>Versionable</title>
<properties>
<property name="cm:versionLabel">
<title>Version Label</title>
<type>d:text</type>
<protected>true</protected>
</property>
<property name="cm:initialVersion">
<title>Initial Version</title>
<type>d:boolean</type>
<default>true</default>
</property>
<property name="cm:autoVersion">
<title>Auto Version</title>
<type>d:boolean</type>
<default>true</default>
</property>
<property name="cm:autoVersionOnUpdateProps">
<title>Auto Version - on update properties only</title>
<type>d:boolean</type>
<default>true</default>
</property>
</properties>
</aspect>
<aspect name="cm:lockable">
<title>Lockable</title>
<properties>
<property name="cm:lockOwner">
<type>d:text</type>
<protected>true</protected>
</property>
<property name="cm:lockType">
<type>d:text</type>
<protected>true</protected>
</property>
<property name="cm:expiryDate">
<type>d:date</type>
<protected>true</protected>
<mandatory>false</mandatory>
</property>
<property name="cm:lockIsDeep">
<type>d:boolean</type>
<protected>true</protected>
</property>
</properties>
</aspect>
<aspect name="cm:subscribable">
<associations>
<association name="cm:subscribedBy">
<source>
<mandatory>false</mandatory>
<many>true</many>
</source>
<target>
<class>cm:person</class>
<mandatory>false</mandatory>
<many>true</many>
</target>
</association>
</associations>
</aspect>
<aspect name="cm:classifiable">
<title>Classifiable</title>
</aspect>
<aspect name="cm:generalclassifiable">
<title>General Classifiable</title>
<parent>cm:classifiable</parent>
<properties>
<property name="cm:categories">
<title>Categories</title>
<type>d:category</type>
<mandatory>false</mandatory>
<multiple>true</multiple>
<index enabled="true">
<atomic>true</atomic>
<stored>true</stored>
<tokenised>false</tokenised>
</index>
</property>
</properties>
</aspect>
<aspect name="cm:taggable">
<title>Taggable</title>
<parent>cm:classifiable</parent>
<properties>
<property name="cm:taggable">
<title>Tags</title>
<type>d:category</type>
<mandatory>false</mandatory>
<multiple>true</multiple>
<index enabled="true">
<atomic>true</atomic>
<stored>true</stored>
<tokenised>false</tokenised>
</index>
</property>
</properties>
</aspect>
<aspect name="cm:tagscope">
<title>Tag Scope</title>
<properties>
<property name="cm:tagScopeCache">
<title>Tags</title>
<type>d:content</type>
<protected>true</protected>
</property>
</properties>
</aspect>
<aspect name="cm:attachable">
<title>Attachable</title>
<associations>
<association name="cm:attachments">
<source>
<mandatory>false</mandatory>
<many>true</many>
</source>
<target>
<class>cm:cmobject</class>
<mandatory>false</mandatory>
<many>true</many>
</target>
</association>
</associations>
</aspect>
<aspect name="cm:emailed">
<title>Emailed</title>
<properties>
<property name="cm:originator">
<title>Originator</title>
<type>d:text</type>
</property>
<property name="cm:addressee">
<title>Addressee</title>
<type>d:text</type>
</property>
<property name="cm:addressees">
<title>Addressees</title>
<type>d:text</type>
<multiple>true</multiple>
</property>
<property name="cm:subjectline">
<title>Subject</title>
<type>d:text</type>
</property>
<property name="cm:sentdate">
<title>Sent Date</title>
<type>d:datetime</type>
<index enabled="true">
<atomic>true</atomic>
<stored>false</stored>
<tokenised>both</tokenised>
</index>
</property>
</properties>
</aspect>
<!-- An aspect to make a node reference another node. Needed to
support cross repository references. There is a sys:reference type but
that is awkard for AVM Nodes which are less flexible as to type. -->
<aspect name="cm:referencesnode">
<title>References Node</title>
<properties>
<property name="cm:noderef">
<title>Node Reference</title>
<type>d:noderef</type>
<mandatory>true</mandatory>
</property>
</properties>
</aspect>
<aspect name="cm:mlDocument">
<title>Multilingual Document</title>
<mandatory-aspects>
<aspect>sys:localized</aspect>
<aspect>cm:versionable</aspect>
</mandatory-aspects>
</aspect>
<aspect name="cm:mlEmptyTranslation">
<title>Empty Translation</title>
<mandatory-aspects>
<aspect>cm:mlDocument</aspect>
</mandatory-aspects>
</aspect>
<!-- Thumbnailed aspect relates a content node to it's thumbnails -->
<aspect name="cm:thumbnailed">
<title>Thumbnailed</title>
<properties>
<property name="cm:automaticUpdate">
<title>Automatic Update</title>
<type>d:boolean</type>
<mandatory>true</mandatory>
<default>true</default>
</property>
</properties>
<associations>
<child-association name="cm:thumbnails">
<source>
<mandatory>false</mandatory>
<many>true</many>
</source>
<target>
<class>cm:thumbnail</class>
<mandatory>false</mandatory>
<many>true</many>
</target>
</child-association>
</associations>
</aspect>
<aspect name="cm:storeSelector">
<title>ContentStore Selector</title>
<properties>
<property name="cm:storeName">
<title>Store Name</title>
<type>d:text</type>
<mandatory enforced="false">true</mandatory>
<constraints>
<constraint ref="cm:storeSelectorConstraint" />
</constraints>
</property>
</properties>
</aspect>
<aspect name="cm:preferences">
<title>Preferences</title>
<properties>
<property name="cm:preferenceValues">
<type>d:content</type>
</property>
</properties>
<associations>
<child-association name="cm:preferenceImage">
<source>
<mandatory>false</mandatory>
<many>false</many>
</source>
<target>
<class>cm:content</class>
<mandatory>false</mandatory>
<many>false</many>
</target>
</child-association>
</associations>
</aspect>
<aspect name="cm:syndication">
<title>Content syndication</title>
<properties>
<property name="cm:published">
<title>Published</title>
<type>d:datetime</type>
<index enabled="true">
<atomic>true</atomic>
<stored>false</stored>
<tokenised>both</tokenised>
</index>
</property>
<property name="cm:updated">
<title>Updated</title>
<type>d:datetime</type>
<index enabled="true">
<atomic>true</atomic>
<stored>false</stored>
<tokenised>both</tokenised>
</index>
</property>
</properties>
</aspect>
</aspects>
</model>