如何在没有 Nuxeo Studio 的情况下在 Nuxeo 中创建自定义文档类型

How to create Custom Document Type in Nuxeo without Nuxeo Studio

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

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

有人可以帮忙吗?

首先创建定义新属性的架构(例如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>

注:您还可以:

然后在 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/