我有一个我为Alfresco创建的自定义内容模型,其类型带有d:date属性。我能够构建存储库并共享项目似乎没有错误。但是,我无法使用数据类型d:date或d:int搜索属性。我通过将数据类型更改为d:text并添加正则表达式约束来解决d:int问题,但我不确定这对d:date属性是否谨慎。
是否需要提供或创建一些其他配置才能按非d:text属性进行搜索?
这是一个显示类型声明的片段:
<types>
<!-- Enterprise-wide generic document type -->
<type name="gl:x">
<title>Document</title>
<parent>cm:content</parent>
<properties>
<property name="gl:period">
<type>d:text</type>
</property>
<property name="gl:year">
<type>d:text</type>
<constraints>
<constraint ref="gl:documentYears" />
</constraints>
</property>
<property name="gl:docType">
<type>d:text</type>
<constraints>
<constraint ref="gl:documentTypeList" />
</constraints>
</property>
<property name="gl:date">
<type>d:date</type>
</property>
</properties>
</type>
</types>
共享搜索表单和属性表单似乎正确呈现,因此我不认为其中存在任何问题。
答案 0 :(得分:1)
高级搜索页面接受两种类型的参数。
一个只是“关键字”字段。这将执行全文搜索,即它在任何文本属性中查找提供的关键字。无需为自定义类型配置全文搜索(例如gl:x) - 它会自动获取系统中任何模型中的任何文本属性。
另一个是单个参数组:名称,标题,描述,mime类型,修改日期,修饰符。这些属性可以是任何类型。这里d:date属性是完全可以接受的,因为modified-date参数可以证明。 但是这里不会自动获取自定义属性。它们需要明确配置。
请注意,在高级搜索页面的上半部分是一个名为“查找”的下拉列表,其中包含两个选项:内容和文件夹。最好的方法是为您的内容类型gl:x添加一个选项,并为其配置搜索表单。
您可以在tomcat / webapps / share / WEB-INF / classes / alfresco / share-form-config.xml中找到两种标准搜索表单的定义。文件很长,所以这里有两个要查找的部分:
<config evaluator="model-type" condition="cm:content">
<forms>
<!-- Default Create Content form -->
<form>
</form>
<!-- Document Library Create Google Doc form -->
<form id="doclib-create-googledoc">
</form>
<!-- Search form -->
<form id="search">
</form>
</forms>
</config>
<!-- cm:folder type (creating nodes) -->
<config evaluator="model-type" condition="cm:folder">
<forms>
<!-- Document Library Common form -->
<form id="doclib-common">
</form>
<!-- Search form -->
<form id="search">
</form>
</forms>
</config>
我已经跳过了细节,但重要的是“cm:content”和“cm:folder”各自定义了一个<form id="search">
,其中包含所需的搜索属性/参数。
作为实验,您可以直接修改share-form-config.xml并添加自己的定义:
<config evaluator="model-type" condition="gl:x">
<forms>
<!-- Search form -->
<form id="search">
<field-visibility>
<show id="gl:date" />
</field-visibility>
<appearance>
<field id="gl:date">
<control template="/org/alfresco/components/form/controls/daterange.ftl" />
</field>
</appearance>
</form>
</forms>
</config>
此外,您必须将新搜索表单添加到tomcat / webapps / share / WEB-INF / classes / alfresco / share-config.xml中的AdvancedSearch配置中:
<config evaluator="string-compare" condition="AdvancedSearch">
<advanced-search>
<forms>
<form labelId="search.form.label.cm_content" descriptionId="search.form.desc.cm_content">cm:content</form>
<form labelId="search.form.label.cm_folder" descriptionId="search.form.desc.cm_folder">cm:folder</form>
<form labelId="search.form.label.gl_x" descriptionId="search.form.desc.gl_x">gl:x</form>
</forms>
</advanced-search>
</config>
请记住在每次更改后重新启动alfresco。 当您对结果感到满意时,最好将自定义定义移动到项目中的单独share-config-custom.xml(不应直接修改share-config.xml和share-form-config.xml) )。