Api

Материал из Course Orchestra
Перейти к: навигация, поиск
Внимание! Вы просматриваете документацию к Celesta 6.x. Документация по Celesta 7.x доступна на courseorchestra.github.io/celesta.

1. Справочник Celesta

1.1 Введение и основные понятия
1.2 Запуск и авто-обновление
1.3 Базовая настройка
1.4 Системные таблицы
1.5 CelestaSQL
1.6 CelestaDoc
1.7 Контексты сессии и вызова
1.8 Курсоры
1.9 BLOB-поля
1.10 Option-поля
1.11 Защита от потерянных обновлений
1.12 Метаданные Celesta
1.13 CelestaUnit

2. Celesta и базы данных

2.1 Особенности работы Celesta с поддерживаемыми типами СУБД
2.2 Проектирование базы данных Celesta в DBSchema

3. Создание решений с использованием Celesta для ShowCase

3.1 Программа обучения Celesta
3.2 Подготовка рабочего места для работы с Celesta
3.2.1 Для разработчиков платформы
3.2.2 Для разработчиков решений
3.3 Системные гранулы Celesta
3.3.1 common
3.3.1.1 Экспорт/импорт данных
3.3.1.2 Навигатор
3.3.1.3 Серии номеров
3.3.1.4 Иерархия Дьюи
3.3.1.5 Системные функции
3.3.1.6 Реестр настроек
3.3.1.7 Mailsender
3.3.1.8 Common.filter
3.3.2 common.api
3.3.4 security
3.3.3 lyra
3.4 Стандартные гранулы Celesta
3.4.1 dirusing
3.4.2 workflow
3.4.3 File repository
3.5 Отрисовка элементов Showcase при помощи Celesta
3.5.1 Конвертер XML-JSON
3.5.2 Навигатор (Navigator)
3.5.3 Информационная панель (Datapanel)
3.5.4 Серверное действие (Server activity)
3.5.5 Вебтекст (WebText)
3.5.6 Грид (Grid)
3.5.6.1 Панель инструментов (ToolBar)
3.5.7 XForms
3.5.7.1 Селекторы
3.5.7.2 Submission
3.5.7.3 Загрузка/Выгрузка файлов (Upload/Download)

5. Решение проблем

5.1 Проблемы с кодировкой jython-файлов

Описание

Пакет common.api представляет собой библиотеку классов для работы с базовыми элементами Showcase: навигатор (navigator), информационная панель (datapanel) и её элементы (grid, webtext, xforms), события (event) и действия (action).

Целью этого объектного API является минимизация непосредственной работы с JSON-словарями при программной реализации элементов Showcase.

Архив с HTML-документацией: Медиа:common.api.htmldoc.zip

Организация пакета

Внутри пакета common.api расположены другие пакеты, сформированные из модулей по функциональному признаку:

  • navigator - содержит модули для работы с навигатором (navigator);
  • events - содержит модули для работы с действиями (action) и событиями (event);
  • datapanel - содержит модули для работы с информационной панелью и её элементами;
  • context - содержит модули для работы с контекстами Showcase;
  • utils - содержит модули с функциями общего назначения (например, импорта объектов по имени, преобразований XML-JSON и т.п.)

Системные модули и пакеты:

  • tree - пакет, содержит модули для работы с узлами дерева;
  • common.py - модуль с интерфейсами и базовыми классами элементов Showcase.


Основные принципы

Унификация преобразований JSON <-> XML

Все классы API реализуют метод toJSONDict() интерфейса IJSONSerializable, чем обеспечивается единообразие процесса преобразования объектов в JSON. Также, в пакете utils расположены функции serializeJSON(jsonDict) и deserializeJSON(jsonString) для обеспечения абстракции соответствующих преобразований от их конкретной реализации.

"Строительство" объектов

Все классы элементов Showcase из методов, изменяющих состояние объекта (add/set-методы), возвращают ссылку на себя, что в некоторых случаях делает реализацию более компактной, т.к. не приходится объявлять дополнительные переменные. Например, два листинга, приведённые ниже, эквивалентны:

Листинг 1:

# создание информационной панели
myDatapanel = Datapanel()

# создание объекта вкладки
firstTab = Tab('tab1')

# создание элемента информационной панели
pageGrid = PageGrid('pg1', 'grid.dataproc.celesta')
pageGrid.setMetadataProc('grid.metadata.proc.celesta')

# добавление элемента на вкладку
firstTab.addElement(pageGrid)
# добавление  вкладки в информационную панель
myDatapanel.addTab(firstTab)

Листинг 2:

# создание информационной панели
myDatapanel = Datapanel().addTab(
    Tab('tab1').addElement(
        PageGrid('pg1', 'grid.dataproc.celesta').setMetadataProc('grid.metadata.proc.celesta')
    )
)

Использование объектов вместо текста

Все методы классов элементов Showcase, определяющие ссылки на другие элементы или функции, работают с объектами. Этим достигается проверка корректности и доступности самих объектов и их типов на уровне языка программирования. Т.о. пример из Листинга 2 можно переписать с использованием объектов-функций, а не их полных наименований:

Листинг 3

from grid import dataproc
from grid.metadata import proc

# создание информационной панели
myDatapanel = Datapanel().addTab(
    Tab('tab1').addElement(
        PageGrid('pg1', dataproc).setMetadataProc(proc)
    )
)