2

我们目前正在开发没有 Studio 的 Nuxeo 项目,因为它超出了我们的预算。我们的目标是创建自定义 UI 并将 Nuxeo 用作内容管理系统。我们能够使用 SDK 执行 CRUD(创建新文档并添加标题和描述等属性)。

但是我们需要其他自定义属性,如组织名称、地址、电话号码等。有没有办法在不使用 Studio 的情况下创建我们自己的文档类型?是否可以在该自定义类型上使用 SDK 执行 CRUD?

有人可以帮忙吗?

4

1 回答 1

1

首先创建定义新属性的模式(例如myType.xsd ):

<?xml version="1.0"?>
<xs:schema targetNamespace="http://www.nuxeo.org/ecm/schemas/cf-client/"
           xmlns:xs="http://www.w3.org/2001/XMLSchema">
    <xs:element name="organization" type="xs:string"/>
    <xs:element name="phone" type="xs:string"/>
    <xs:element name="expired" type="xs:date"/>
</xs:schema>

然后定义引用新创建模式的类型扩展:

<?xml version="1.0"?>
<component name="my.project.nuxeo.types">
    <require>org.nuxeo.ecm.core.CoreExtensions</require>

    <extension target="org.nuxeo.ecm.core.schema.TypeService" point="schema">
        <schema name="myType" prefix="mt" src="schema/myType.xsd"/>
    </extension>

    <extension target="org.nuxeo.ecm.core.schema.TypeService" point="doctype">
        <doctype name="MyType" extends="Document">
            <schema name="myType"/>
            <schema name="common" />
            <schema name="dublincore" />
            <schema name="uid" />
            <schema name="file"/>
            <schema name="files" />
            <facet name="Commentable"/>
            <facet name="NXTag"/>
        </doctype>
    </extension>
</component>

注意:您还可以:

  • 定义您自己的类型前缀(mt在示例中使用),您可以在从应用程序或 NXQL 访问新类型属性时使用该前缀。
  • 定义您的新自定义类型应具有哪些其他模式。例如dublincore架构包含title,description和其他常见属性 - 请参见此处:https ://github.com/nuxeo/nuxeo/blob/master/modules/core/nuxeo-core/src/main/resources/schema/dublincore.xsd 。
  • 将任何方面附加到您的自定义类型。可用方面的列表在这里:https ://doc.nuxeo.com/nxdoc/available-facets/

然后在MANIFEST.MF文件中注册上一步中的新类型扩展:

Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-ActivationPolicy: lazy
Bundle-ClassPath: .
Bundle-Vendor: my.project.nuxeo
Bundle-Name: my-project-nuxeo-core
Bundle-SymbolicName: my.project.nuxeo.my-project-nuxeo-core;singleton=true
Bundle-Version: 1.0.0
Nuxeo-Component: OSGI-INF/types.xml

使用以下结构将所有这些文件压缩到 jar 存档中:

my-project-nuxeo-core.jar
├── META-INF
│   └── MANIFEST.MF
├── OSGI-INF
│   └── types.xml
└── schema
    └── myType.xsd

并将结果 jar 存档复制到Nuxeo 安装的nxserver/bundles目录中。重启 Nuxeo,它会自动更新数据库结构。

您可以在 Nuxeo 文档中找到更多信息 - 例如这里:https ://doc.nuxeo.com/nxdoc/data-modeling/

于 2020-03-30T10:52:27.990 回答