Введение
Перед началом работы по нижеследующим инструкциям должны быть верны следующие утверждения:
- Проект Mercurial (http://src.colvir.ru/hg/cbs3plus);
- Основной узел в классификации программных областей (пример:http://src.colvir.ru/hg/cbs3plus/com/raw-file/35bb0f0b8e3b/srv/CBS3PLUS/B3COM/PRGAREA_B3COM.base.xml);
- Детализация модуля на части (вложенные узлы классификатора программных областей);
- Java-модуль, созданный по соответствующему архитипу.
Создание нового справочника
Процесс создания справочника следующий:

При создании необходимо обратить внимание на следующие моменты:
- Следить за совпадением имен полей в запросе и в наборе;
- Следить за совпадением параметров фильтрации в запросе и в настройках;
- В описании набора нужно заполнять только одну закладку и не все поля формы. Наличие большого количества невостребованных полей вызывает у разработчиков лишние вопросы.
Создание новой задачи
Элементы, разрабатываемые в рамках задач:
- Описание задачи (TAS);
- Описание структуры, включающее создание контекстов (CONTEXT), наборов данных (DATASET) и доменов (DOMAIN);
- Описания экранных форм; бывают задачи без форм, например "очистка кэша" в ядре;
- Чтение данных: реализуется у большинства задач, исключения - задачи с диалогами, когда идет только ввод. Элемент включает java-сервисы чтения и настройки фильтрации (USRFLT,FILTER);
- Сценарии Sarasvati (SCRIPT), включая Java-сервисы, не связанные с сохранением (расчеты, некоторые действия);
- Валидация и сохранение данных, включая валидаторы полей и наборов (DATASET, CONTEXT), "прикладные методы" (METHOD), условия доступности и обязательности (FORM), Java-сервисы сохранения и пакеты-обёртки в CBS3;
- Динамические фрагменты форм, включая Java-сервисы построения описаний динамических наборов и самих форм.
Задача просмотра данных
Для реализации просмотровой задачи необходимо создать:
- Описания контекста CONTEXT;
- Описания экранной формы FORM;
- Сценарий задачи SCPIPT;
- Несколько описаний наборов данных DATASET;
- Интерфейс Java-сервиса;
- Реализацию Java-сервиса;
- Карту MyBatis, содержащую несколько sql-запросов;
- Несколько элементов фильтра FILTER;
- Один или несколько регулярных фильтров USRFLT.
Не так и много объектов, но в реальных задачах заранее все продумать, и выстроить линейный процесс разработки (каждый объект пишется сразу, без необходимости возвращаться к его редактированию) обычно не получается. В реальности процесс выглядит следующим образом:

При создании необходимо обратить внимание на следующие нюансы:
- Следить за совпадением имен полей в запросе и в наборе;
- Следить за совпадением параметров фильтрации в запросе и в настройках;
- Редактирование форм в словаре данных не удобно, а в pyQt дизайнере - вид формы не похож на то, что потом получится в qx.
Задача коррекции данных

При создании необходимо обратить внимание на следующие нюансы:
- Следить за совпадением имен полей в наборе и в картей MyBatis;
- Следить за совпадением кодов наборов и аннотаций;
- Не очевидная иерархия условий доступности и обязательности в формах.
Динамические фрагменты
Реализация динамических форм состоит из следующих шагов:
- Создать описание динамического набора, в нем указать код для метода чтения описания;
- В контекст добавить созданный набор, указать параметры набора;
- На форме разместить элемент "Встроенный фрагмент", для элемента указать код метода описания;
- Реализовать Java-метод построения описания набора (подбор метода построения выполняется на основании кода, указанного в наборе);
- Реализовать Java-метод построения описания формы (подбор метода построения выполняется на основании кода описания, указанного во фрагменте).
Доработка существующего
Доработка существующих сущностей
Определение/поиск объектов для модификации
Для определения контекста и/или формы необходимо посмотреть в тексте сценария задачи код контекста и/или формы. Альтернативный вариант: включить отладчик в браузере, очистить все кэши, запустить задачу и найти нужные коды в логе сетевых обращений.
Для определения java-класса и текста запроса необходимо посмотреть в описании контекста на закладке "методы" код метода загрузки и путь к методу. По строке "путь к методу" в java-исходниках нужно найти файл ModuleProvider.java, оттуда и будет понятен класс, реализующий сервис. Имя метода в java и в контексте совпадают. Если в контексте метод не указан, то его следует искать в сценарии задачи в узле dd.load.
Добавление условий фильтрации
- Определить контекст списка и его главный набор данных;
- Найти карту MyBatis и соответствующий списку запрос;
- Создать элемент фильтра. Элемент может содержать более одного "поля" (условия);
- Для каждого "поля" в запросе в карте MyBatis создать условие запроса. Имена параметров, передаваемых в запрос списка, совпадают с кодами, указанными в условиях "поля" в элементе фильтра;
- Добавить элемент в регулярный фильтр.
Добавление новых полей на формы
- Определить форму, на которую нужно добавить поле;
- По форме определить контекст; в контексте определить набор данных;
- Найти карту MyBatis и соответствующий набору запрос;
- Добавить поле в запрос MyBatis;
- Добавить поле в набор данных, при необходимости указать:
- справочник, его параметры и возвращаемые значения;
- валидатор;
- Если в значения параметров справочника передаются данные из других наборов контекста, то передача параметров настраивается в контексте. Аналогично с значениями по умолчанию;
- Если в качестве справочника используется другой набор контекста, то настройка справочника выполняется в контексте;
- В pyQt дизайнере или в словаре данных добавить поле на форму, указать условия доступности и обязательности.
Добавление "деталей"
- Определить форму, на которую нужно добавить деталь;
- По форме определить контекст;
- Найти java-интерфейс сервиса;
- Написать текст SQL-запроса;
- Создать описание набора данных;
- В сервис добавить метод чтения и методы сохранения/удаления. Одновременно добавить набор в контекст, код набора и аннотации должны совпадать;
- В карту добавить запрос, реализовать новые методы;
- Если в новом наборе есть справочники, в значения параметров которых передаются данные из других наборов контекста, то настроить в контексте эту передачу;
- Если в новом наборе в качестве справочников используются другие наборы контекста, то выполнить настройку в контексте;
- В pyQt дизайнере или в словаре данных добавить на форму список/дерево/поля ввода, указать условия доступности и обязательности.
Комментариев нет:
Отправить комментарий