Виды модулей

Легкий

Базовые модули 

Базовые модули, которые реализованы в Creatio:

  • ext-base — реализует функциональность фреймворка ExtJs.
  • terrasoft пространства имен Terrasoft — реализует доступ к системным операциям, переменным ядра и т. д.
  • sandbox — реализует механизм обмена сообщениями между модулями.
Пример получения доступа к модулям ext-base, terrasoft и sandbox
/* Определяет модуль и получает ссылки на модули-зависимости. */
define("ExampleModule", ["ext-base", "terrasoft", "sandbox"],
    /* Ext — ссылка на объект, который предоставляет доступ к фреймворку ExtJS.
    Terrasoft — ссылка на объект, который предоставляет доступ к системным переменным, переменным ядра и т. д.
    sandbox — ссылка на объект, который используется для обмена сообщениями между модулями. */
    function (Ext, Terrasoft, sandbox) {
});

Базовые модули используются в большинстве клиентских модулей. Указывать базовые модули в зависимостях необязательно. После создания объекта класса модуля объекты Ext, Terrasoft и sandbox доступны как свойства объекта this.Ext, this.Terrasoft, this.sandbox.

Клиентские модули 

Типы клиентских модулей 

  • Невизуальный модуль.
  • Визуальный модуль.
  • Замещающий модуль.

Иерархия клиентских модулей представлена ниже.

Невизуальный модуль 

Назначение невизуального модуля — реализация функциональности приложения, которая, как правило, не связана с привязкой данных и отображением их в интерфейсе. Примерами невизуальных модулей являются модули бизнес-правил (схема BusinessRuleModule пакета NUI) и утилитные модули, которые реализуют служебные функции.

Чтобы создать невизуальный модуль, воспользуйтесь инструкцией, которая приведена в статье Клиентский модуль.

Визуальный модуль 

К визуальным модулям относятся модули, которые реализуют в приложении модели представления (ViewModel) согласно шаблону MVVM. О шаблоне MVVM читайте на Википедии.

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

Чтобы создать визуальный модуль, воспользуйтесь инструкцией, которая приведена в статье Клиентский модуль.

Замещающий модуль 

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

Чтобы создать замещающий модуль, воспользуйтесь инструкцией, которая приведена в статье Клиентский модуль.

Методы клиентских модулей 

Методы, которые позволяет реализовать Creatio в клиентских модулях:

  • init() — реализует логику, которая выполняется при загрузке модуля. При загрузке модуля клиентское ядро автоматически вызывает этот метод первым. Как правило, в методе init() выполняется подписка на события других модулей и инициализация значений.
  • render(renderTo) — реализует логику визуализации модуля. При загрузке модуля клиентское ядро автоматически вызывает этот метод. Для корректного отображения данных перед их визуализацией должен отработать механизм связывания представления (View) и модели представления (ViewModel). Поэтому, как правило, в методе render() выполняется запуск механизма — вызов у объекта представления метода bind(). Если модуль загружается в контейнер, то в качестве аргумента метода render() передается ссылка на этот контейнер. Метод render() обязателен для визуальных модулей.

Утилитные модули 

Несмотря на то, что модуль является изолированной программной единицей, он может использовать функциональность других модулей. Для этого достаточно в качестве зависимости импортировать необходимый модуль. Доступ к экземпляру модуля–зависимости осуществляется через аргумент фабричной функции.

В процессе разработки вспомогательные и служебные методы общего назначения можно группировать в отдельные утилитные модули и затем импортировать их в модули для использования функциональности.

Работа с ресурсами 

Ресурсы — дополнительные свойства схемы. Ресурсы добавляются в клиентскую схему на панели свойств дизайнера модуля (кнопка scr_add_button.png).

Ресурсы, которые позволяет использовать Creatio:

  • Локализуемые строки (свойство Локализуемые строки (Localizable strings)).
  • Изображения (свойство Изображения (Images)).

Ресурсы содержатся в модуле с именем [ClientModuleName]Resources, который автоматически генерирует ядро приложения для каждого клиентского модуля.

Чтобы получить доступ к модулю ресурсов из клиентского модуля, импортируйте модуль ресурсов в клиентский модуль в качестве зависимости.

Смотрите также
Создать стандартный модуль
Средний

Пример. Создать стандартный модуль, который содержит методы init() и render(). При загрузке модуля на клиент ядро вызывает метод init(), а затем — метод render(). Это отображается в информационном сообщении.

Создать визуальный модуль 

  1. Перейдите в раздел Конфигурация (Configuration) и выберите пользовательский пакет, в который будет добавлена схема.
  2. На панели инструментов реестра раздела нажмите Добавить —> Модуль (Add —> Module).
  3. В дизайнере модуля заполните свойства схемы:

    • Код (Code) — "UsrExampleStandardModule".
    • Заголовок (Title) — "ExampleStandardModule".

    Для применения заданных свойств нажмите Применить (Apply).

  4. В дизайнере модуля добавьте исходный код.

    UsrExampleStandardModule
    /* Объявление модуля с именем UsrExampleStandartModule. Модуль не имеет никаких зависимостей, поэтому в качестве второго параметра передается пустой массив. 
    Функция-фабрика возвращает объект модуля с двумя методами. */
    define("UsrExampleStandardModule", [], function () {
        return {
            /* При загрузке модуля клиентское ядро автоматически вызывает этот метод первым. */
            init: function () {
                alert("Calling the init() method of the UsrExampleStandardModule module");
            },
            /* При загрузке модуля в контейнер клиентское ядро автоматически вызывает этот метод. Ссылка на контейнер передается в метод в качестве параметра renderTo. В информационном сообщении выводится идентификатор элемента управления страницы, в котором отображаются визуальные данные модуля. По умолчанию — centerPanel. */
            render: function (renderTo) {
                alert("Calling the render() method of the UsrExampleStandardModule module. The module is uploaded to the container " + renderTo.id); 
            }
        };
    });
    
  5. На панели инструментов дизайнера модуля нажмите Сохранить (Save).

Результат выполнения примера 

Чтобы посмотреть результат выполнения примера, сформируйте адресную строку запроса.

[Creatio URL]/0/NUI/ViewModule.aspx#[SomeModuleName]
http://myserver.com/0/NUI/ViewModule.aspx#UsrExampleStandardModule

При загрузке модуля на клиент ядро вызывает метод init(), а затем — метод render(). Это отображается в информационном сообщении.

Вызов метода init() модуля UsrExampleStandardModule
Вызов метода render() модуля UsrExampleStandardModule
Создать утилитный модуль
Средний

Пример. Создать стандартный модуль, который содержит методы init() и render(). При загрузке модуля на клиент ядро вызывает метод init(), а затем — метод render(). Это отображается в информационном сообщении. Метод отображения информационного сообщения реализовать в утилитном модуле.

1. Создать утилитный модуль 

  1. Перейдите в раздел Конфигурация (Configuration) и выберите пользовательский пакет, в который будет добавлена схема.
  2. На панели инструментов реестра раздела нажмите Добавить —> Модуль (Add —> Module).
  3. В дизайнере модуля заполните свойства схемы:

    • Код (Code) — "UsrExampleUtilsModule".
    • Заголовок (Title) — "ExampleUtilsModule".

    Для применения заданных свойств нажмите Применить (Apply).

  4. В дизайнере модуля добавьте исходный код.

    UsrExampleUtilsModule
    /* Объявление модуля с именем UsrExampleUtilsModule. Модуль не имеет никаких зависимостей, поэтому в качестве второго параметра передается пустой массив.
    Модуль содержит метод отображения информационного сообщения. */
    define("UsrExampleUtilsModule", [], function () {
        return {
            /* Метод, который отображает информационное сообщение. Отображаемое сообщение передается в метод в качестве аргумента information. */
            showInformation: function (information) {
                alert(information);
            }
        };
    });
    
  5. На панели инструментов дизайнера модуля нажмите Сохранить (Save).

2. Создать визуальный модуль 

  1. Перейдите в раздел Конфигурация (Configuration) и выберите пользовательский пакет, в который будет добавлена схема.
  2. На панели инструментов реестра раздела нажмите Добавить —> Модуль (Add —> Module).
  3. В дизайнере модуля заполните свойства схемы:

    • Код (Code) — "UsrExampleUtilsStandardModule".
    • Заголовок (Title) — "ExampleUtilsStandardModule".

    Для применения заданных свойств нажмите Применить (Apply).

  4. В дизайнере модуля добавьте исходный код.

    UsrExampleUtilsStandardModule
    /* Объявление модуля с именем UsrExampleUtilsStandardModule. В модуль импортируется модуль-зависимость UsrExampleUtilsModule для доступа к утилитному методу. Аргумент функции-фабрики — ссылка на загруженный утилитный модуль. */
    define("UsrExampleUtilsStandardModule", ["UsrExampleUtilsModule"], function (UsrExampleUtilsModule) {
        return {
            /* В методах init() и render() вызывается утилитный метод для отображения информационного сообщения, которое передается в качестве аргумента утилитному методу. */
            init: function () {
                UsrExampleUtilsModule.showInformation("Calling the init() method of the UsrExampleUtilsStandardModule module");
            },
            render: function (renderTo) {
                UsrExampleUtilsModule.showInformation("Calling the render() method of the UsrExampleUtilsStandardModule module. The module is uploaded to the container " + renderTo.id);
            }
        };
    });
    
  5. На панели инструментов дизайнера модуля нажмите Сохранить (Save).

Результат выполнения примера 

Чтобы посмотреть результат выполнения примера, сформируйте адресную строку запроса.

[Creatio URL]/0/NUI/ViewModule.aspx#[ИмяМодуля]
http://myserver.com/0/NUI/ViewModule.aspx#UsrExampleUtilsStandardModule

При загрузке модуля на клиент ядро вызывает метод init(), а затем — метод render(). Это отображается в информационном сообщении.

Вызов метода init() модуля UsrExampleUtilsStandardModule
Вызов метода render() модуля UsrExampleUtilsStandardModule