Alvex справочники для подстановки значений

В Alvex заявлен следующий функционал - ведение справочников в Alvex для подстановки значений в карточки документов и задач.
Я правильно понимаю, что в форме регистрации документа, у какого-то поля должен появиться выпадающий список с записями введенными в соответствующий этому полю список данных?

Ну собственно вопрос, как это "
ведение справочников" организовать в принципе? В документации Alvex информации на этот счет не нашел.

Комментарии

Aviriel аватар

В 1.3 данный функционал присутствует, но его настройка не выведена в веб-интерфейс. На данный момент можно подключить справочник на уровне модели реестра в конфигурации Share. Но тогда один и тот же справочник будет подключен ко всем реестрам данного типа. Я крайне рекомендую дождаться 1.4, где можно будет подключать справочники на уровне реестра, и где их настройка будет выведена в веб-интерфейс, как настройка формата нумерации сейчас. Но если очень хотите уже сейчас, то см. ниже.

Я не готова излагать это в формате документаации, но опишу пример, как подключить список данных Контакты на произвольном сайте к реестру на сайте Канцелярия:

  1. Создаем список данных типа Контакты на сайте с именем *qwe* (имя, которое используется в URL и которое английское), а список данных называем *contacts*.

  2. В таком случае откройте в браузере ссылку: http://SERVER:8080/alfresco/service/api/alvex/datalists/items/site/*qwe*....

  3. После ввода логина и пароля пользователя, который имеет доступ к этому списку данных у Вас отобразится список в формате JSON.

  4. Выберите id поля, значения которого Вы хотите использовать в качестве справочника (например "name" или "company").

  5. Откройте файл с настройками интерфейса для вашего типа реестров. Если Вы хотите прицепить справочник к стандартному типу, то придется найти файл alvex-core-share-*.jar, который должен быть в tomcat/webapps/share/WEB-INF/lib/. Откройте его как архив, перейдите в папку /alfresco/web-extension/. Откройте файл alvex-default-documents-types-config.xml для редактирования (например в Блокноте).

  6. Найдите тип реестра, который Вы хотите изменить. Если это Договоры, то блок настроек этого типа в самом начале файла (<config evaluator="model-type" condition="alvexdt:agreement">). Для других типов - найдите аналогичный блок с другим значением condition. Внутри этого блока конфигурация трех форм: таблицы, создания элемента и изменения/просмотра элемента. Первый совсем короткий, остальные два длинные. Вам нужен блок <appearance> внутри длинных (в описании отображения таблицы этого блока вообще нет).
  7. Внутри <appearance> найдите строку, описывающую поле контрагента 
    <field set="company" id="alvexdt:contractor"/>
  8. Нужно заменить ее на следующий блок:
    <field set="company" id="alvexdt:contractor">
    <control template="/alvex-classifier-select.ftl">
    <control-param name="url">
    http://127.0.0.1:8080/alfresco/service/api/alvex/datalists/items/site/*q... <!--введенный ранее URL-->
    </control-param>
    <control-param name="label">contactLastName</control-param> <!--выбранное поле списка данных для отображения-->
    <control-param name="value">contactLastName</control-param> <!--выбранное поле списка данных для отображения-->
    </control>
    </field>
  9. После этого перезапустите Alfresco.
Или наглядно в картинках:
Но я все-таки рекомендую дождаться 1.4 :)

Выпадающий список создать в принципе удалось, но есть с этим списком проблема. Если список привязан к обязательному для заполнения полю, то форма не позволяет сохранить запись, если список привязан к простому полю, то все сохраняется нормально.



В связи с этим такой вопрос, чинится это как-нибудь подручными средствами, может быть делать это поле необязательным и возможно ли сделать свой реестр на основе дефолтных изменив/добавив какие-то поля и сохранив это дело в alvex-default-documents-types-config.xml?

По аналогии со списком данных, можно ли получить алвексовский реестр в формате JSON?
Aviriel аватар
 В связи с этим такой вопрос, чинится это как-нибудь подручными средствами, может быть делать это поле необязательным и возможно ли сделать свой реестр на основе дефолтных изменив/добавив какие-то поля и сохранив это дело в alvex-default-documents-types-config.xml?
Пока что Вы можете сделать поле необязательным в модели реестра. В 1.4 починим, чтобы все нормально сохранялось.
Свои типы реестров ни в коем случае нельзя сохранять в стандартные файлы, вы потом не сможете обновить ни Alfresco, ни Alvex. А скорее всего система даже не запустится (www.ossportal.ru/forum/alfresco/623#comment-3945).
Лучше возьмите стандартные типы за пример, и сделайте свои, следуя docs.alvexcore.com/ru-RU/Alvex/1.3/html/Admin_Guide/ch04s03.html и www.ossportal.ru/technologies/alfresco/blogs/156.
avasyukov аватар
Добрый день.

Насчёт обязательных полей - создал тикет в баг-трекере - http://issues.itdhq.com/browse/ALV-320 Может успеем исправить это и включить в CE 2013.01 / EE 1.3.1, которые релизнутся на следующей неделе. В худшем случае - в 1.4.

Насчёт своих типов реестров - да, можно. Только чуть больше придётся писать:
- свой тип реестра описать по аналогии с alvex-default-documents-types-model.xml, унаследовавшись от alvexdt:object
- отображение форм для своего типа - по аналогии с alvex-default-documents-types-config.xml
- плюс файлы *properties для локализации
Статьи по созданию типов контента в Alfresco - http://www.ossportal.ru/technologies/alfresco/blogs/156 + http://www.ossportal.ru/technologies/alfresco/blogs/162

Насчёт получения реестра в JSON - да, можно. На самом деле, можете воспользоваться ровно тем же API - api/alvex/datalists/items/site/SITENAME/dataLists/DATA_LIST_NAME Только в качесте DATA_LIST_NAME указать имя реестра. Оно на самом деле умеет отдавать и дата-листы, и реестры.
avasyukov аватар
Баг решен - http://issues.itdhq.com/browse/ALV-320
> Может успеем исправить это и включить в CE 2013.01 / EE 1.3.1,
> которые релизнутся на следующей неделе.
Так что в CE 2013.01 / EE 1.3.1 оно правда попадет.
День добрый.

Можно по подробней про наследоване?
Я сначала добавил в систему простой даталист, потом на его основе попробовал создать реестр:
Импортировал неймспейс - <import uri="http://alvexcore.com/prefix/alvexdt" prefix="alvexdt"/>
Унаследовал тип - <parent>alvexdt:object</parent>
В контексте модели попробовал с зависимостями поиграться - depends-on="alvex-documents-registers-deployer"
Итог всего этого - URI http://alvexcore.com/prefix/alvexdt cannot be imported as it is not defined (with prefix alvexdt

С получением реестра по JSON странная ситуация, на рабочей машинке по ссылке не выдается ничего только - [ ], смотрел еще CMIS браузером, показывает что никаких реестров на сайте нет. На тестовой же машинке ,с  альфреской настроенной по умолчанию и алвексом, по ссылке реестр отдается.

 Можете показать свою модель целиком? Лучше выложить куда-нибудь и сюда написать ссылку.