… программные продукты используя платформу OSS
Как правило, при создании программного обеспечения перед разработчиком стоит ряд типовых задач, которые приходится решать снова и снова, когда необходимо добавить в программу обработку дополнительных данных. Эти задачи сводятся к небольшому и вполне понятному списку:
- Создание структуры для хранения вводимых данных.
- Создание экранных форм для ввода данных оператором или, если хотите, пользователем. Для простоты понимания предлагаю назвать такие экранные формы «Документом».
- Написание алгоритмов обработки и контроля правильности вводимых данных.
- Создание списков, содержащих в себе множество «Документов», так называемых «Реестров».
- Организация поиска по «Реестрам». Кстати сказать, несмотря на краткость определения, сама задача не является простой. Порой пользователь толком и не знает по каким именно критериям ему в следующий момент понадобится осуществить поиск, и на этапе разработки интерфейса поиска программисту приходится придумывать и учитывать все возможные варианты. А чего стоит поиск по неточному совпадению? Это вообще отдельная история. В современных серверах хранения данных до сих пор такой поиск осуществляется путем простого перебора записей в таблице и поиска совпадений в строке. Прямо скажем – способ совсем не быстрый.
- Настройка разнообразных печатных форм, чаще жестко определенных в программе, реже настраиваемых с использованием, какого-либо конструктора печатных форм.
- Реализация функций печати и сохранения печатных форм в файлы в каком-либо удобоваримом формате.
- Предварительный просмотр того, что мы хотим распечатать. Кстати, именно эта функция в большинстве случаев попросту игнорируется разработчиками из-за сложности ее реализации.
- Создание «Документа» на основе ранее введенных данных или определения каких-либо данных по умолчанию.
- Протоколирование изменений произведенных оператором в «Документе». Особенно актуально при многопользовательской работе. Но эта функция практически не реализуется при создании относительно небольших систем в силу своей трудоемкости. Можно сказать, что эта функция для гурманов.
- Разграничение прав пользователей. Если эта задача еще хоть как-то решается, то задача разграничения прав доступа к отдельным «Документам» в каком-то отдельно взятом «Реестре» не решается вообще, хотя такая необходимость очевидна.
- Организация механизмов оповещения пользователей при возникновении определенного события. В основном реализуется в более-менее крупных системах, хотя таковая необходимость существует даже в однопользовательских программах.
- Организация так называемого хелпа или какой-либо пользовательской инструкции, чтобы даже новый оператор мог достаточно быстро освоить программное обеспечение.
В нашей системе мы постарались все это учесть и вынести трудоемкую работу на платформенный уровень, предоставив разработчику удобный инструмент для реализации именно прикладной задачи. Таким образом, разработчик получил возможность создавать системы практически любого масштаба с функциональностью, которой могут позавидовать даже современные крупные корпоративные системы.
И так, с чего же все-таки начать?
Предположим, перед Вами стоит задача создания какой-либо учетной системы. Вам необходимо запустить программу в режиме конфигурирования и «создать новую задачу». В открывшемся интерфейсе настройки задачи создать экранные формы для ввода данных. Хочу заметить, что нет необходимости предварительно продумывать и создавать структуру для хранения данных. Система создает автоматически оптимальную структуру.
После того как Вы настроили формы «вводных данных» можете приступать к настройке реестров. Для этого Вам достаточно определить какие поля из «вводных данных» и в какой последовательности будут отображаться в реестре.
Последняя фаза – это настройка печатных форм. Неизменное содержимое печатной формы Вы можете перенести из ранее созданного документа в Ворде или создать непосредственно в системе. После этого в необходимые места вставить ссылки на соответствующие поля «вводимых данных» и все, Ваша задача практически решена!
Конечно же, данный пример несколько абсолютизирован и при решении настоящей задачи все будет несколько сложнее, но не намного. Чтобы в этом убедиться, рекомендую Вам изучить те примеры, которые идут в дистрибутиве системы, и инструкцию для программиста.
Удачи!
