#java #alfresco #content-model
#java #alfresco #content-модель
Вопрос:
Проблема
Существует модель содержимого со conractType
свойством и список данных со conractType
столбцом. Необходимо указать contextModel.conractType
dataList.conractType
. Например. перед вставкой значения свойства следует проверить, присутствует ли это значение в списке данных. Также следует выбрать значение свойства из выпадающего списка, которое соответствует значениям списка данных.
Мое решение
При попытке напрямую связать свойство модели с типом списка данных:
<!-- DataLists-->
<type name="sc:contractType">
<title>Options</title>
<parent>dl:dataListItem</parent>
<properties>
<property name="sc:type">
<title>Type</title>
<type>d:text</type>
</property>
</properties>
</type>
<!-- workflow model-->
<type name="sc:startProcesstask">
<parent>bpm:startTask</parent>
<properties>
<property name="sc:helloName">
<type>d:text</type>
<mandatory>true</mandatory>
<multiple>false</multiple>
</property>
<!-- Error after adding this property -->
<property name="sc:requestCategory">
<type>sc:contractType</type>
<mandatory>true</mandatory>
<multiple>false</multiple>
</property>
</properties>
</type>
Я получил сообщение об ошибке:
Caused by: org.alfresco.service.cmr.dictionary.DictionaryException: 09180002 Property type 'sc:contractType' of property 'sc:requestCategory' is not found
Итак, кажется, что мне нужно создать:
- Пользовательский валидатор, который проверяет входное значение
- Пользовательский элемент пользовательского интерфейса, который извлекает все возможные значения списка из
contractType
столбца.
Вопрос 1
В этом случае как правильно связать средство проверки и элемент пользовательского интерфейса? Например. список данных имеет тип и UUID
. Ссылка на UUID
— это жесткий код, но ссылка на тип приводит к неожиданной ситуации, когда существует более одного списка со значениями. Может быть, необходимо иметь дополнительную привязку между типом данных списка и моделью?
Вопрос 2
Я думаю, что эта проблема распространена, но чрезвычайно сложно найти какой-либо фрагмент кода. (Много кода с отдельной моделью contextn и списками данных, но не вместе) Предоставляет ли alfresco встроенное решение для привязки значения свойства модели содержимого к списку данных?
Ответ №1:
Словарь Alfresco определил несколько типов данных, которые можно использовать при определении свойств в свойствах модели содержимого
Поэтому он не будет принимать тип, который вы определили.
Чтобы выполнить ваше требование, вы можете определить sc:requestCategory как дочернюю ассоциацию sc:startProcesstask
ваша измененная модель будет выглядеть так:
<!-- DataLists-->
<type name="sc:contractType">
<title>Options</title>
<parent>dl:dataListItem</parent>
<properties>
<property name="sc:type">
<title>Type</title>
<type>d:text</type>
</property>
</properties>
</type>
<!-- workflow model-->
<type name="sc:startProcesstask">
<parent>bpm:startTask</parent>
<properties>
<property name="sc:helloName">
<type>d:text</type>
<mandatory>true</mandatory>
<multiple>false</multiple>
</property>
</properties>
<associations>
<child-association name="sc:requestCategory"">
<target>
<class>sc:contractType</class>
<mandatory>true</mandatory>
<many>false</many>
</target>
</child-association>
</associations>
</type>
Комментарии:
1. Круто! При открытии формы и щелчке, чтобы управлять ею, предлагается выбрать «файл» (содержимое) и элементы, разрешенные только с правильным типом. Есть ли способ настроить управление, чтобы открыть выбрать весь список с типом? Сейчас мне нужно зайти на сайт, найти каталоги папок и так далее. Также это сбивает с толку конечное использование других списков и элементов списка, которые она не может добавить.