Инструменты пользователя

Инструменты сайта


lss-tz:start

Содержание

Техническое задание на разработку

Техническое задание на разработку LSS протокола

Разработать LSS протокол для обмена данными и управляющими командами между LSS визуализатором, размещенном на клиенте и слоем бизнес логики, размещенном на сервере.

Общие требования к LSS протоколу

Протокол должен удовлетворять следующим требованиям:

  • Использовать в качестве транспортного слоя HTTP и/или HTTPS.
  • Использовать XML представление.
  • Использовать кодировку UTF-8.
  • Протокол должен быть независим от деталей реализации как LSS визуализатора, так и от деталей реализации слоя бизнес логики.
  • Протокол должен быть нагляден и понятен человеку (программисту, разработчику, тестировщику), даже если эта наглядность приведет к потерям в производительности компьютера.
  • Протокол должен опираться на паттерн REST.
  • Протокол должен опираться на паттерн MVC.
  • Протокол должен поддерживать защиту от CRF атак посредством использования CRF ключа.
  • Должен быть разработан унифицированный LSS формат данных для единообразного и независимого от особенностей площадок представления данных.

Требования к запросам

Запрос это то, что LSS визуализатор направляет слою бизнес логики, размещенному на сервере.

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

Требования к ответам

Ответ это то, что слой бизнес логики отправляет LSS визуализатору в качестве результата запроса.

  • Необходимо разработать ответ, содержащий декларативное описание экранной формы. Это описание должно состоять из следующих разделов:
    • Раздел иерархического описания наборов строк, задействованных в экранной форме.
    • Раздел описания запросов уровня экранной формы, представляющие собой именованные цепочки последовательно выполняемых запросов.
    • Раздел описания внешнего вида экранной формы, представляющий собой вложенную иерархию панелей, связанных с соответствующими наборами строк и предназначенными для отображения их содержимого.
  • Необходимо разработать ответ, содержащий декларативное описание табличного набора строк. Это описание должно состоять из следующих разделов:
    • Раздел описания полей набора строк.
    • Раздел описания поддерживаемых набором строк запросов.
  • Необходимо разработать ответ, содержащий декларативное описание древовидного набора строк. Это описание должно быть устроено следующим образом:
    • Строки древовидного набора строк должны различаться по типам.
    • Для каждого типа строк описание должно быть устроено аналогично описанию табличного набора строк: описание полей и описание запросов.
  • Необходимо разработать ответ, содержащий данные - результаты выполнения запроса:
    • Необходимо разработать вариант ответа, содержащий данные, уже сохраненные в базе и позволяющий передать в визуализатор текущее актуальное состояние данных в базе на сервере.
    • Необходимо разработать вариант ответа, содержащий данные, еще не сохраненные в базе, которые будут отображены визуализатором и сохранены только при очередном сохранении текущей строки.
    • Необходимо разработать вариант ответа, содержащий сведения об удаленных в результате выполнения запроса строках.
  • Необходимо разработать ответ, описывающий неуспешность выполнения запроса.
  • Необходимо разработать ответ, описывающий необходимость выполнить экранной формой или набором строк определенный запрос с заданными значениями параметров запроса.

Требования к формату представления данных

LSS протокол должен быть реализован посредством XML описания. Данные в нем должны описываться в виде строк. Нужно унифицированное описание строкового представления для всех используемых типов данных.

  • Разработать список допустимых в протоколе типов данных.
  • Разработать унифицированный формат представления числовых данных.
  • Разработать унифицированный формат представления дат.

Техническое задание на разработку LSS визуализатора

Общие требования

  • LSS визуализатор должен быть реализован в виде одностраничного сайта, использующего JavaScript и AJAX.
  • Необходимо обеспечить высокую степень совместимости с различными web-браузерами, в том числе с Internet Explorer, браузерами на основе Chromium и FireFox.
  • В качестве библиотеки построения экранных элементов необходимо использовать Dojo Toolkit (лицензия BSD).
  • В качестве сторонних графических элементов дизайна необходимо использовать ресурсы сайта icons8.ru

Требования к модулю взаимодействия с сервером по AJAX

  • Все взаимодействие по с сервером по LSS протоколу должно происходить через единый модуль, обеспечивающий это взаимодействие посредством AJAX.
  • Должна быть реализована удобная технология логирования LSS запросов к серверу и ответов на них сервера.
  • Запросы должны делиться на
    • синхронные, с принудительным ожиданием ответа
    • асинхронные, не блокирующие работу визуализатора до получения ответа
  • модуль взаимодействия должен анализировать ответы и направлять их для последующей обработки в соответствующую экранную форму или набор строк.
  • модуль взаимодействия должен реализовать механизм отправки на сервер выбранных пользователем файлов и скачивания файлов с сервера.

Требования к модулю табличного набора строк

  • Набор строк должен обеспечить работу с данными согласно LSS протоколу.
  • Все строки в наборе строк должны иметь уникальный id
  • Необходимо реализовать несколько стратегий формирования уникального id строки:
    • При создании пустой строки, до ее сохранения в базе данных - как результат запроса append
    • При первом сохранении строки в базе данных - как результат первого save, при этом до сохранения у строки значение id временное, которое меняется после сохранение на постоянное
  • Набор строк должен обеспечить построение списка полей и списка допустимых запросов по декларативному XML описанию набора строк.
  • Набор строк должен обеспечить хранение данных в виде упорядоченной таблицы, с удобным поиском по уникальному ключу, нахождением первой, последней, следующей и предыдущей строки.
  • Набор строк должен обеспечить оповещение визуальных элементов экранной формы о необходимости перерисовки при изменении своего содержимого. При этом следует разделять изменения только в полях текущей строки и изменения, затрагивающие и другие строки.
  • Набор строк должен обеспечивать выполнение запросов посредством отправки запросов на сервер через единый модуль взаимодействия и обеспечения приема и обработки ответов.
  • Набор строк должен обеспечить возможность постраничной работы с данными.
  • Набор строк должен обеспечить автоматический вызов сохранения накопившихся изменений при смене текущей строки или при передаче фокуса на другой набор строк.
  • Набор строк должен обеспечить автоматическую перечитку подчиненных наборов строк при смене текущей строки.
  • Должна быть реализована возможность работы набора строк в качестве фильтра:
    • У такого набора строк должна быть одна и только одна строка. Соответственно, недопустимы операции добавления и удаления строк.
    • Подчиненные наборы строк автоматически перечитываются при смене значения любого поля.
  • Набор строк должен обеспечить работу механизма пометок строк - хранение списка помеченных строк, возможность отправки этого списка на сервер, возможность корректировки этого списка посредством поступивших ответов от сервера.
  • Набор строк должен обеспечивать контроль доступности правки в зависимости от признаков readonly, на уровне всего набора строк, строки и поля.

Требования к модулю древовидного набора строк

  • Древовидный набор строк должен быть сделан на основе табличного.
  • Он должен обеспечивать работу с разными типами строк.
  • Для каждого типа строк свой набор полей и свой набор допустимых запросов.
  • Должна быть обеспечена возможность хранения данных в виде дерева.
  • Должна быть обеспечена навигация по древовидным данным.
  • Предполагается уникальность id среди дочерних строк одного родительского узла.

Требование к модулю визуальных панелей

Необходимо разработать панели следующих типов:

  • Необходимо разработать панель, обеспечивающую отображение и правку данных в виде таблицы
  • Необходимо разработать панель, обеспечивающую отображение и правку данных в виде полей текущей строки набора строк
  • Необходимо разработать панель, обеспечивающую отображение дерева из древовидного набора строк
  • Необходимо разработать панель, обеспечивающую отображение произвольного HTML содержимого по адресу
  • Необходимо разработать панели, обеспечивающие размещение внутри себя других панелей
    • панель TAB размещающая другие панели в виде закладок.
    • панель SCROLL обеспечивающая последовательное вертикальное размещение дочерних панелей с возможностью прокрутки при необходимости.
    • панель PANEL обеспечивающая размещение дочерних панелей слева, справа, снизу, сверху и по середине
  • Необходимо разработать панель FORM обеспечивающую размещение внутри себя экранной формы

Панели должны обеспечивать:

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

Требование к модулю экранных форм

  • Модуль экранных форм должен обеспечить построение экранной формы по декларативному описанию согласно LSS протоколу:
    • Обеспечить построение описанных в экранной форме наборов строк.
    • Обеспечить построение описанных в экранной форме визуальных панелей.
    • Сформировать список именованных запросов уровня формы.
    • обеспечить построение наборов строк справочников, на основании описания полей, требующих для своей работы начитки данных из справочников.
  • Модуль экранных форм должен обеспечить вызов именованных цепочек запросов уровня формы.
  • Модуль экранных форм должен обеспечить перерисовку панелей по оповещениям, поступающим от источников данных.
  • Модуль экранных форм должен обеспечить механизм переключения от одной экранной формы к другой и механизм закрытия экранной формы.
  • Модуль экранных форм должен обеспечить механизм смены фокуса ввода между визуальными панелями.

Требование к модулю виджетов для разных типов полей

Необходимо разработать следующие виджеты для отображения и редактирования полей:

  • Поле для отображения и редактирования строк.
  • Поле для отображения и редактирования дат с выпадающим диалогом календаря.
  • Поле для отображения и редактирования чисел.
  • Поле многострочного редактора.
  • Поле выбора из справочника.
  • Поле выбора из фиксированного списка значений.
  • Поле галочки.
  • Поле радио-группы.
  • Поле отображения иконки по имени иконки.
  • Поле справочника множественного выбора.

Виджеты полей должны обеспечивать:

  • Автоматическую синхронизацию в обе стороны со значениями полей набора строк.
  • Удобное управление с помощью клавиатуры без использования мыши.
  • Автоматический расчет высоты многострочных элементов.

Техническое задание на разработку LSS сервера

Общие требования

  • LSS сервер должен работать по HTTP и/или HTTPS.
  • LSS сервер должен обеспечивать корректную обработку LSS запросов.
  • LSS сервер должен обеспечивать работу с SQL серверами PostgreSql, MySql, MSSQL.
  • LSS сервер должен работать на основе паттерна REST.
  • Необходимо использовать язык программирования PHP, не ниже 7.
  • В качестве основного web-сервера следует использовать Apache.
  • LSS сервер должен быть кроссплатформенным - работать как под Windows так и под Linux.
  • LSS сервер должен быть явно разделен на:
    • Общие для всех прикладных проектов библиотечные элементы.
    • Элементы, уникальные для каждого прикладного проекта.

Требования к контроллерам источников данных

Контроллер источника данных это экземпляр класса, обеспечивающий обработку LSS запросов к данным. Обычно источник данных соответствует таблице SQL сервера.

  • Необходимо реализовать механизм, позволяющий по имени источника данных найти и загрузить в память соответствующий контроллер источника данных.
  • Необходимо реализовать механизм описания в виде массива списка полей источника данных.
  • Необходимо реализовать механизм описания в виде массива списка поддерживаемых источником данных запросов.
  • Необходимо реализовать механизм прав, проверяющий доступность выполнения источником данных запроса для текущего пользователя.
  • Необходимо реализовать формирование контроллером источника данных декларативного описания согласно LSS протоколу, на основе описателей полей и описателей поддерживаемых запросов.
  • Необходимо реализовать механизм формирования SQL запроса SELECT для источника данных.
  • Необходимо настроить механизм фильтров - дополнительных условий в секции WHERE запроса SELECT на основе переданных в запросе к источнику данных значений параметров фильтра.
  • Необходимо реализовать механизм формирования SQL запросов INSERT, UPDATE, DELETE для правки источника данных, на основе описателей полей и переданных в запросе параметров.
  • Необходимо реализовать механизм выполнения адресованных источнику данных запросов и получения результатов в виде массива строк - для удобного использования источников данных на стороне сервера при обработке промежуточных результатов
  • Необходимо реализовать механизм преобразования массива строк, являющегося результатом выполнения запроса, в XML согласно LSS протоколу.
  • Необходимо реализовать механизм, позволяющий описывать структуру базы данных в виде описателей, по этим описателям автоматически строить контроллеры источников данных базовой функциональности.
  • Необходимо наладить механизм внесения изменения в автоматически сформированные контроллеры источников данных. Нужна возможность

Требования к контроллерам экранных форм

Контроллер экранной формы это экземпляр класса обеспечивающий обработку LSS запросов адресованных к экранной форме.

  • Необходимо реализовать механизм, позволяющий по имени экранной формы найти и загрузить в память соответствующий контроллер экранной формы.
  • Контроллер экранной формы должен обеспечивать формирование декларативного описания экранной формы в формате LSS протокола, с учетом переданных в соответствующем запросе значений параметров.
  • Необходимо реализовать механизм получения декларативного описания экранной формы из соответствующего XML файла шаблона.
  • Необходимо реализовать механизм обработки запросов, адресованных контроллеру экранной формы.
  • Необходимо реализовать возможность дополнительной обработки запросов, адресованных источникам данных, размещенным в экранной форме.

Требования к контроллерам отчетов

Контроллер отчета это экземпляр класса, обеспечивающий анализ входных параметров и формирование соответствующего отчета.

  • Необходимо реализовать механизм, позволяющий по имени отчета найти и загрузить в память соответствующий контроллер отчета.
  • Необходимо реализовать интерфейс разбора передаваемых через url входных параметров.
  • Контроллер отчетов должен уметь формировать отчет в виде HTML для отображения на экране.
  • Контроллер отчетов должен уметь формировать отчет в виде MS Excel и MS Word. Допустимым является вариант формирования HTML, который корректно воспринимается и отображается в Excel и Word.

Требования к контроллерам утилит

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

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

Требования к контроллерам сервисов

Контроллер сервиса это экземпляр класса, обеспечивающий анализ входных параметров и вызов соответствующего сервиса. Сервис это произвольный серверный код взаимодействующий с клиентом по HTTP и/или HTTPS используя паттерн REST.

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

Требования к точкам входа

Точки входа это PHP скрипты, к которым можно непосредственно обращаться из клиентского приложения.

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

Требования к ресурсам

Ресурсы это статичные файлы, непосредственно доступные по HTTP и/или HTTPS.

  • В ресурсах должны размещаться файлы, необходимые для развертывания LSS визуализатора.
  • В ресурсах должны размещаться необходимые JavaScript и CSS библиотеки, например bootstrap/
  • В ресурсах должны размещаться необходимые для работы приложения иконки.
  • В ресурсах должны размещаться CSS стили необходимые для отображения отчетов и утилит.

Требования к описанию главного меню системы

Описатель главного меню системы должен представлять собой XML файл с древовидным описанием наименований пунктов меню и вызываемым по ним экранным формам.

Требования к контроллеру прав

Контроллер прав это экземпляр класса, обеспечивающий проверку доступности запрашиваемых возможностей для текущего пользователя с учетом его прав.

  • Контроллер прав необходимо разработать в виде абстрактного класса, с соответствующими интерфейсами, так, что бы в процессе разработки конкретного прикладного проекта можно было бы породить потомок от этого класса и реализовать в нем систему прав согласно требованиям этого проекта.
  • Контроллер прав должен обеспечивать интерфейс аутентификацию пользователя, по умолчанию предполагается схема сохранения сведений о пользователе и его правах в сессии.
  • Контроллер прав должен обеспечивать интерфейс проверки доступности запрашиваемого действия для текущего пользователя. Действие задается 2-мя идентификаторами:
    • permmode - группирует доступные ресурсы проекта с точки зрения прав
    • permoper - операция в контексте permmode, например read или write
  • Необходимо связать контроллеры источников данных с контроллером прав посредством группировки таблиц по permmode и связывания запросов с permoper.
  • Необходимо связать описатель главного меню системы с контроллером прав посредством назначения пунктам меню соответствующих permmode и permoper.
  • Необходимо обеспечить проверку доступности по правам в контроллерах экранных форм, отчетов, утилит и сервисов.
lss-tz/start.txt · Последнее изменение: 2022/06/01 16:33 — 127.0.0.1

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki