Как создать пользовательский тип документа в Nuxeo без Nuxeo Studio - PullRequest
1 голос
/ 29 марта 2020

В настоящее время мы работаем над проектом Nuxeo без Studio, так как это выходит за рамки нашего бюджета. Наша цель - создать собственный пользовательский интерфейс и использовать Nuxeo в качестве системы управления контентом. Мы смогли выполнить CRUD с помощью SDK (создание новых документов и добавление таких свойств, как заголовок и описание).

Но нам нужны другие настраиваемые свойства, такие как название организации, адрес, номер телефона и т. Д. c. Есть ли способ создать наш собственный тип документа без использования Studio? Можно ли выполнить CRUD с использованием SDK для этого пользовательского типа?

Может кто-нибудь помочь с этим?

1 Ответ

1 голос
/ 30 марта 2020

Сначала создайте схему (например, 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 is используется в примере), который можно использовать при доступе к свойствам новых типов из вашего приложения или из 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 в каталог nxserver / bundles вашей установки Nuxeo. Перезапустите Nuxeo, и он автоматически обновит структуру БД.

Дополнительную информацию можно найти в документации по Nuxeo - например, здесь: https://doc.nuxeo.com/nxdoc/data-modeling/

...