如何在没有 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>
注:您还可以:
- 定义您自己的类型前缀(示例中使用了
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/
我们目前在没有 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>
注:您还可以:
- 定义您自己的类型前缀(示例中使用了
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/