MyTetra Share
Делитесь знаниями!
Создание пользовательских типов в Alfresco. Часть 1
Время создания: 25.01.2012 15:00
Раздел: Компьютер - Управление проектами - Tomcat и Alfresco
Запись: xintrea/mytetra_syncro/master/base/1327489232wr4hfe1pce/text.html на raw.github.com

Введение

Alfresco - это гибкая платформа для разработки приложений для управления данными. Первым шагом в разработке пользовательского типа данных является создание модели данных. Встроенная модель данных Alfresco довольно полная. На самом деле, для базовой функциональности управления документами, вам будет достаточно использовать встроенную модель. Конечно, вы потеряете некоторую функциональность по сравнению с использованием модели данных, подстроенной под нужды вашего бизнеса.

Эта статья описывает как создать Вашу собственную модель данных и не только. Зачем нужна собственная модель данных, если нет средств для её заполнения? Поэтому мы так же рассмотрим настройку пользовательского интерфейса для отображения нашей модели данных, затем мы напишем некоторый код для создания, поиска и удаления данных.

Вы должны быть знакомы с основами управления документами и с веб-клиентом Alfresco. Если вы хотите идти дальше, вы должны знать как писать простой Java код.

Основы создания моделей данных

Модель данных описывает данные которые могут быть сохранены в репозитории. Модели данных это основа Alfresco - без них она бы была просто развитой файловой системой. Вот ключевые особенности модели данных Alfresco:

  • Используются такие типы данных которые могут быть легко сохранены в БД, например без модели данных для Alfresco не было бы разницы между типами String и Date.
  • Более высокое положение в иерархии таких типов данных как "данные" и "папка", чем положение типов "Стандартная операция" или "Контракт"
  • Встроенные аспекты "наблюдаемый" и "классифицируемый" наряду с "оцениваемый" и "комментируемый"
  • Свойства (или метаданные) специфичны для каждого типа данных.
  • К свойствам могут применяться ограничения (например "значения свойства должны удовлетворять некоторому шаблону" или "значения свойства могут выбираться из списка подходящих")
  • Как индексировать данные для поиска
  • Отношения между типами данных.

Модель данных Alfresco построена с использованием малого числа "строительных блоков": Типы, Свойства, Типы свойств, Ассоциации и Аспекты.

Типы

Типы похожи на классы объектов в ООП. Они могут использоваться для моделирования бизнес объектов, они имеют свойства, и они могут наследоваться от типа предка. Важнейшие встроенные типы это "Данные", "Персона" и "Папка". Пользовательские типы ограничены только вашей фантазией и требованиями бизнеса. Например, "Отчет о прибылях", "Медицинская запись", "Фильм", "Песня", "Комментарий". Заметьте, что Типы, Свойства, Типы свойств, Ассоциации и Аспекты имеют уникальные имена. Эти имена используются потом в xml схеме модели. Например, для модели MyModel мы можем определить URI: "http://www.mymodel.com/model/content/1.0" и префикс "opt:", любой тип определенный как часть этой модели будет начинаться с "opt:". Мы еще поговорим подробнее как с использованием XML определяются модели. Использования пространств имен позволяет исключить коллизии наименований типов.

Свойства

Свойство это составная часть метаданных ассоциированных с данным типом. Например, свойствами "Отчета об убытках", могут быть такие свойства как: "Имя работника", "Дата создания", "Проект", "Клиент" и т.д. Этот тип может так же иметь свойство "данные" для хранения файла с отчетом в формате excel или PDF.

Типы свойств

Типы свойств - это типы данных которые могут быть сохранены. Базовые типы - строки, даты, числа, булевы значения - уже определены в Alfresco по умолчанию.

Ограничения

Ограничения используются для определения того какие данные могут храниться в свойстве типа. Существуют четыре типа ограничений: REGEX, LIST, MINMAX, and LENGTH. REGEX используется для ограничения свойства с помощью регулярных выражений, LIST используется для определения списка возможных значений, MINMAX для ограничения цифровых значений и LENGTH для определения длины свойства. Ограничения могут быть определены один раз и использоваться во всех моделях Alfresco. Например, везде можно использовать ограничение “cm:filename” для REGEX-ограничения по имени файла.

Ассоциации

Ассоциации определяют отношения между типами. Без ассоциаций, модель может быть полна типами которые ссылаются на другие части данных. Возвращаясь к примеру с "Отчетом по прибыли" мы можем сохранить каждую строчку как отдельный объект. К типу "Отчет по прибыли" мы можем добавить тип "строчка отчета". Используя ассоциации мы можем сказать Alfresco об отношениях между этими типами. Ассоциации бывают двух типов: "равные ассоциации" и и ассоциации "подчинения". "Равные" ассоциации определяют отношения между двумя объектами, но не подчиняет их один другому. "Подчиненные" ассоциации напротив используются для того, чтобы показать такое подчинение. В ассоциациях существующих по-умолчанию легко определить тип ассоциации "cm:contains". Эта ассоциации определяет "подчиненные" отношения между папками ("cm:folder") и всеми другими объектами - потомками типа "sys:base". Другой пример - "Отчет" и "Документы приложения" - они будут связаны "равными" ассоциациями.

Аспекты

Перед тем как говорить об аспектах, давайте решим как работает наследование и включение в нашей модели данных. Допустим мы используем Alfresco для управления данными и отображения их на странице портала. Допустим что мы хотим видеть только часть данных. Простой пример это отображение даты и времени отправки данных на портал. Используя модель данных мы можем поступить двумя способами: первый - это определить такое свойство в корневом типе для всех объектов и все объекты -наследники будут его наследовать от корневого типа, а второй способ определить этот свойтсво только для тех типов которые будут отображаться на портале.. Естественно второй способ лучше, а первый легче. Таким образом, для нашего примера нужно определить аспект "PortalDisplayable" со свойством "published date". Этот аспект будет добавляться ко всем данным для которых требуется отображение на портале.

Так же в этом разделе:
 
MyTetra Share v.0.59
Яндекс индекс цитирования