Alfresco Share文档库知识库(repository)层定制与扩展




为了保持现有的自定义和第三方附加组件,并行数据的Web脚本已发展为4.0版本并与以前的数据网络脚本共存。这些新的Web脚本位于远程API的项目,URL网址以/slingshot/doclib2/开始。

有三个扩展点支持知识库(repository)数据web脚本。

1. 文档库定义响应

一个自定义响应出现在JSON响应的metadata.custom内。一个干净的安装服务的例子是vitServer配置,slingshot-context.xml文件内定义。

customResponses属性定义了JSON的关键映射,自定义响应bean在SlingshotDocLibCustomerResponse bean内定义。

<bean id="slingshotDocLibCustomResponse"
       parent="baseJavaScriptExtension"
       class="org.alfresco.repo.jscript.SlingshotDocLibCustomResponse">
    <property name="extensionName">
       <value>slingshotDocLib</value>
    </property>
    <property name="customResponses">
      <map>
         <entry key="vtiServer">
            <ref bean="doclibCustomVtiServer"/>
         </entry>
      </map>
    </property>
    </bean>
默认slingshotDocLibCustomResponse bean 配置


返回vtiServer配置的bean被定义为:

<bean id="doclibCustomVtiServer" class="org.alfresco.repo.jscript.app.VtiServerCustomResponse">
    <property name="scriptUtils">
        <ref bean="utilsScript" />
    </property>
    <property name="sysAdminParams">
        <ref bean="sysAdminParams" />
    </property>
    <property name="port">
        <value>${vti.server.external.port}</value>
    </property>
    <property name="host">
        <value>${vti.server.external.host}</value>
    </property>
</bean>


DocLibVtiServer bean 配置

VtiServerCustomResponse类(实现了CustomResponse) 返回一个Serializable对象(例如LinkedHashMap) 序列化为JSON响应的DocLib web脚本。
这个扩展点设计为返回对任何节点不特定的有用的信息,例如,存在一个可选模块,子系统是否是活动的或没有,等


2. 属性decorators


其他地方数据的Web脚本可以通过属性装饰扩展机制被扩展。这些都是用来由org.alfresco.repo.jscript.ApplicationScriptUtils类和允许属性,例如nodeRefs,用户名和日期将在一个更可用状态返回到Web层的属性。例如,
Share界面显示的用户名,用First-和Last-name,而不仅仅是用户名。由装饰属性在初始网页脚本请求返回的属性,进一步的请要是没有必要获取丢失的数据。

<bean id="applicationScriptUtils" parent="baseJavaScriptExtension"
class="org.alfresco.repo.jscript.ApplicationScriptUtils">  
  <property
        name="decoratedProperties">
        <map>
          <entry key="cm:creator">
            <ref bean="usernamePropertyDecorator"/>        
          </entry>
          <entry key="cm:modifier">
            <ref bean="usernamePropertyDecorator"/>
          </entry>

applicationScriptUtils bean配置的局部视图

decoratedProperties属性定义短格式的QName装饰实现bean的映射。每个装饰Bean类实现了PropertyDecorator接口,并通过装饰()方法返回一个序列化的影射,然后序列化为JSON响应网页脚本请求返回的每个节点。

3. 权限列表

第三方数据的Web脚本响应是通过为每个节点返回的权限列表扩展。这些通过applicationScriptUtils bean上的userPermissions属性来定义。例如:
  <property name="userPermissions">
    <list>     
        <value>CancelCheckOut</value>     
        <value>ChangePermissions</value>     
        <value>CreateChildren</value>     
        <value>Delete</value>      
        <value>Write</value> 
    </list>
  </property>

在applicationScriptUtils bean 内部的userPermissions属性配置
默认设置的权限不应该减少已经在Share使用的动作,指标和元数据评估。