Alfresco - це гнучка платформа для розробки додатків для управління даними. Першим кроком в розробці користувальницького типу даних є створення моделі даних. Вбудована модель даних Alfresco досить повна. Насправді, для базової функціональності управління документами, вам буде досить використовувати вбудовану модель. Звичайно, ви втратите деяку функціональність у порівнянні з використанням моделі даних, підлаштований під потреби вашого бізнесу.
Ви повинні бути знайомі з основами управління документами і з веб-клієнтом Alfresco. Якщо ви хочете йти далі, ви повинні знати як писати простий Java код.
Основи створення моделей даних
Модель даних описує дані які можуть бути збережені в репозиторії. Моделі даних це основа Alfresco - без них вона б була просто розвиненою файлової системою. Ось ключові особливості моделі даних Alfresco:
Модель даних Alfresco побудована з використанням малого числа "будівельних блоків": Типи, Властивості, Типи властивостей, Асоціації та Аспекти.
Властивість це складова частина метаданих асоційованих з даним типом. Наприклад, властивостями "Звіту про збитки", можуть бути такі властивості як: "Ім'я працівника", "Дата створення", "Проект", "Клієнт" і т.д. Цей тип може так само мати властивість "дані" для зберігання файлу зі звітом у форматі 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". Цей аспект буде додаватися до всіх даних для яких потрібно відображення на порталі.