Контент ориентированное
   программирование
    JSR-170,JSR-283
Содержание

    Вступление
     − Концепция Контент Ориентированного
       Программирования

    Реализация
     − Java Content Repository


    Использование
Концепция

    Откуда появилась

    Основные принципы
     − Логическое разделение содержимого

    −   Динамическое связывание данных
    −   Независимость реализации компонентов системы
Приложения и хранилища данных
Java Community Process





    Open Software Standards
    Organization

    Организация основана SUN
Что такое JCR?
Индустриальный стандарт
Мотивация создания спецификации JCR?



    Много независимых хранилищ данных
     − API для взаимодействия
        определяется поставщиком
     −   Необходимость в стандартном API

    Стандартный API должен быть:
     − Независимым от архитектуры,
        источников данных или протоколов
     −   Легко использовать
     −   Относительно легко реализовать
         производителям
Узлы и свойства


    Узлы организуют данные

    Свойства хранят данные

    Любой узел может содержать
    свойства
Все данные иерархические
Типы узлов



    Узел может быть построен на
    NodeType или MixinType
     − Определяет структуру

    −   Определяет свойства
Типы узлов

    Существует множество стандартных типов узлов
     − Все наследуются от базового (nt:base)

    −   nt:unstructured наиболее гибкий тип

    Наиболее используемые MixinTypes

    mix:lockable поддержка блокировок

    mix:referenceable поддержка UUID

    mix:versionable поддержка версионности
Иерархия типов узлов и
                      контента
     Иерархия типов             Иерархия контента

nt:hierarchyNode


                   nt:folder

                    nt:file

                nt:linkedFile

  nt:resource                                       13
Первый уровень реализации JCR

    Уровень соответствия 1 (Только чтение)
     − Доступ к данным использую три
        способа
           
               Обход узлов
           
               Прямой доступ
           
               Используя язык запросов XPath
     −   Используется упорядоченная
         структура содержимого
     −   Может быть экспортирован весь
         репозиторий в XML
Приложения первого уровня
         
             Типичный приложения Уровня-1
              − СМС - шаблоны, Доставка
                контента
              −   Отображающие портлеты
              −   Экспорт репозитория
              −   Приложения для создания
                  отчетов
Ситуация сегодня
Унификация
Второй уровень реализации JCR
            
                Уровень соответствия 2 (Чтение - запись)
                 − Включает все возможности 1 уровня

                 −   Импорт из XML
                 −   Добавление/изменение/удаление
                     данных
                 −   Использование нестандартных типов
                     данных
                 −   Обработка структурированной и
                     неструктурированной информации
                 −   Ссылочная связанность
Синхронизация
Консолидация
Опциональные возможности JCR
            
                Блокировки
            
                Управление транзакциями
            
                Наблюдение
                 − Слушателю приходит сообщения об
                   изменениях в репозитории
            
                Версионность
                 − Возможность получить доступ к
                   предыдущим ревизиям данных
            
                Запросы используя адаптированный
                SQL и XPath
Обзор АPI


    JCR API определено в javax.jcr
    пакете
     − 15 интерфейсов

    −   2 класса
    −   14 исключений
Сессии


    javax.jcr.Session
     − Предоставляет доступ к содержимому
       репозитория
    −   Предоставляет доступ к корневому узлу
    
        Дает возможность доступа к узлу по UUID
Контроль доступа


     Аутентификация используя
    такие методы
     − Repository.login(Credentials
       cred)

    Pluggable системы
    аутентификации
     − JAAS - реализация наиболее
       распространенная

    Управление контролем доступа
    зависимо от реализации
Как начать работу?

    Сконфигурировать репозиторий

    Запустить или создать
    репозиторий

    Пройти аутентификацию

    Получить сессию

    Работа с данными (добавление/
    редактирование/удаление)

    Выйти из сессии

    Остановить репозиторий

    Сконфигурировать репозиторий

    Запустить или создать репозиторий

    Пройти аутентификацию

    Получить сессию

    Работа с данными
    (добавление/редактирование/удаление)

    Выйти из сессии

    Остановить репозиторий
Использование JCR:
Запуск репозитория
        
            Для первого использования
            необходимо, для начала
            создать репозиторий
        
            Вы можете запустить
            существующий репозиторий

    Сконфигурировать репозиторий

    Запустить или создать репозиторий

    Пройти аутентификацию

    Получить сессию

    Работа с данными
    (добавление/редактирование/удаление)

    Выйти из сессии

    Остановить репозиторий
Использование JCR:
        Аутентификация, доступ к Сессии

     Пройти аутентификацию
    воспользовавшись
     − Repository.login(Credentials cred)

    −   SimpleCredentials определен в API
    −   Получить объект типа Session

    Сконфигурировать репозиторий

    Запустить или создать репозиторий

    Пройти аутентификацию

    Получить сессию

    Работа с данными
    (добавление/редактирование/удаление)

    Выйти из сессии

    Остановить репозиторий
Использование JCR:
Добавление данных
Использование JCR:
                   Доступ к данным

    Данные содержатся в свойствах
     − Что бы получить свойство, нужно
       получить узел

    Три способа доступа к узлу
     − Прямой доступ

    −   Последовательно от другого узла
    −   Как результат запроса
Последовательный доступ
       к данным
Прямой доступ к данным
XPath запросы
SQL запросы
Изменение данных
Удаление данных
Известные JСR приложения
eXo JСR приложения
Дополнительная
                       информация

    JCR 170 (Оригинал спецификации JCR)
     − http://jcp.org/en/jsr/detail?id=170


    JCR 283 сайт посвященный разработке JCR 2.0
     −   http://jcp.org/en/jsr/detail?id=283

    eXo Platform (Open Source JCR)
     −   http://www.exoplatform.org

    eXo Platform Wiki
     −   http://wiki.exoplatform.com
Вопросы

Контент ориентированное программирование

  • 1.
    Контент ориентированное программирование JSR-170,JSR-283
  • 2.
    Содержание  Вступление − Концепция Контент Ориентированного Программирования  Реализация − Java Content Repository  Использование
  • 3.
    Концепция  Откуда появилась  Основные принципы − Логическое разделение содержимого − Динамическое связывание данных − Независимость реализации компонентов системы
  • 4.
  • 5.
    Java Community Process  Open Software Standards Organization  Организация основана SUN
  • 6.
  • 7.
  • 8.
    Мотивация создания спецификацииJCR?  Много независимых хранилищ данных − API для взаимодействия определяется поставщиком − Необходимость в стандартном API  Стандартный API должен быть: − Независимым от архитектуры, источников данных или протоколов − Легко использовать − Относительно легко реализовать производителям
  • 9.
    Узлы и свойства  Узлы организуют данные  Свойства хранят данные  Любой узел может содержать свойства
  • 10.
  • 11.
    Типы узлов  Узел может быть построен на NodeType или MixinType − Определяет структуру − Определяет свойства
  • 12.
    Типы узлов  Существует множество стандартных типов узлов − Все наследуются от базового (nt:base) − nt:unstructured наиболее гибкий тип  Наиболее используемые MixinTypes  mix:lockable поддержка блокировок  mix:referenceable поддержка UUID  mix:versionable поддержка версионности
  • 13.
    Иерархия типов узлови контента Иерархия типов Иерархия контента nt:hierarchyNode nt:folder nt:file nt:linkedFile nt:resource 13
  • 14.
    Первый уровень реализацииJCR  Уровень соответствия 1 (Только чтение) − Доступ к данным использую три способа  Обход узлов  Прямой доступ  Используя язык запросов XPath − Используется упорядоченная структура содержимого − Может быть экспортирован весь репозиторий в XML
  • 15.
    Приложения первого уровня  Типичный приложения Уровня-1 − СМС - шаблоны, Доставка контента − Отображающие портлеты − Экспорт репозитория − Приложения для создания отчетов
  • 16.
  • 17.
  • 18.
    Второй уровень реализацииJCR  Уровень соответствия 2 (Чтение - запись) − Включает все возможности 1 уровня − Импорт из XML − Добавление/изменение/удаление данных − Использование нестандартных типов данных − Обработка структурированной и неструктурированной информации − Ссылочная связанность
  • 19.
  • 20.
  • 21.
    Опциональные возможности JCR  Блокировки  Управление транзакциями  Наблюдение − Слушателю приходит сообщения об изменениях в репозитории  Версионность − Возможность получить доступ к предыдущим ревизиям данных  Запросы используя адаптированный SQL и XPath
  • 22.
    Обзор АPI  JCR API определено в javax.jcr пакете − 15 интерфейсов − 2 класса − 14 исключений
  • 23.
    Сессии  javax.jcr.Session − Предоставляет доступ к содержимому репозитория − Предоставляет доступ к корневому узлу  Дает возможность доступа к узлу по UUID
  • 24.
    Контроль доступа  Аутентификация используя такие методы − Repository.login(Credentials cred)  Pluggable системы аутентификации − JAAS - реализация наиболее распространенная  Управление контролем доступа зависимо от реализации
  • 25.
    Как начать работу?  Сконфигурировать репозиторий  Запустить или создать репозиторий  Пройти аутентификацию  Получить сессию  Работа с данными (добавление/ редактирование/удаление)  Выйти из сессии  Остановить репозиторий
  • 26.
    Сконфигурировать репозиторий  Запустить или создать репозиторий  Пройти аутентификацию  Получить сессию  Работа с данными (добавление/редактирование/удаление)  Выйти из сессии  Остановить репозиторий
  • 27.
    Использование JCR: Запуск репозитория  Для первого использования необходимо, для начала создать репозиторий  Вы можете запустить существующий репозиторий
  • 28.
    Сконфигурировать репозиторий  Запустить или создать репозиторий  Пройти аутентификацию  Получить сессию  Работа с данными (добавление/редактирование/удаление)  Выйти из сессии  Остановить репозиторий
  • 29.
    Использование JCR: Аутентификация, доступ к Сессии  Пройти аутентификацию воспользовавшись − Repository.login(Credentials cred) − SimpleCredentials определен в API − Получить объект типа Session
  • 30.
    Сконфигурировать репозиторий  Запустить или создать репозиторий  Пройти аутентификацию  Получить сессию  Работа с данными (добавление/редактирование/удаление)  Выйти из сессии  Остановить репозиторий
  • 31.
  • 32.
    Использование JCR: Доступ к данным  Данные содержатся в свойствах − Что бы получить свойство, нужно получить узел  Три способа доступа к узлу − Прямой доступ − Последовательно от другого узла − Как результат запроса
  • 33.
  • 34.
  • 35.
  • 36.
  • 37.
  • 38.
  • 39.
  • 40.
  • 41.
    Дополнительная информация  JCR 170 (Оригинал спецификации JCR) − http://jcp.org/en/jsr/detail?id=170  JCR 283 сайт посвященный разработке JCR 2.0 − http://jcp.org/en/jsr/detail?id=283  eXo Platform (Open Source JCR) − http://www.exoplatform.org  eXo Platform Wiki − http://wiki.exoplatform.com
  • 42.