NexusSmallErp: CsharpNexus ...

Glavnaja Stranica | Каталог | Изменения | НовыеКомментарии | Пользователи | Регистрация | Вход:  Пароль:  

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


Расскажу про выбор среды разработки. Скорее это более относится к эмоциям, чем к какому-то рациональному выбору посредством сравнительного анализа на основе неких интегральных критериев. Первоначально была попытка разработки на Visual Basic. Было сделано достаточно много, но ощущения чего-то такого, к чему хотелось бы в дальнейшем возвращаться, не появилось и разработка была заброшена. Я не хочу ничего плохого сказать про детище Билла Гейтса, но почему-то меня всегда воротило от программирования
на бэйсике еще с той поры, когда он был самозагружаемым и работал без операционной системы. Никогда не мог понять с чем связана такая аллергия, но она у меня достаточно устойчива и не зависит от времени.


Поэтому взгляд обратился к Csharp. Поскольку нет заказчика, то, естественно, первоначально не знаешь, что писать, если, конечно, у тебя нет фонтана воображения. Если фонтан воображения имеется, то возникает еще большая проблема справиться с ним, так как
он фонтанирует всегда, но угадать в какую сторону будет струя мне никогда не удавалось. В общем, как говорит мой друг Гена о работнике, который прокладывает наискосяк трубу: делает, как бык нассал.


Поэтому все-таки некий разбор своих действий необходим, хотя для сравнения с тем, что было в прошлом. А в прошлом, у меня всегда были проблемы, во первых, с параметризованными макросами. При генерации какого-либо кода, кровь из носу, должен быть механизм макроподстановок с возможностью задания формальных параметров для макроса. Это было всегда, начиная с макрогенератора
текста PAGEN, на основе которого генерировалась операционная система RAFOS (RT-11) (Если, конечно, ктото помнит об этом). Этим же в технологии Nexus занимался препроцессоры CASP или GOLDS. В Csharp эта проблема очень эффектно решена при помощи нескольких классов.


Визитной карточкой любого клиентского приложения является регистрационная форма.
Регистрационной формой Nexus клиента является регистрационная форма:



При нажатии на клавишу мыши панель с рисунком должна открыться и предоставить необходимые поля для ввода



Что Же дальше? (Или небольшое обсуждение навигации на основе динамических иерархий).


Навигация
Важным инструментом любого клиентского приложения является навигация объектов в информационной системе. Обычный способ построения навигации – это использование treeview элемента управления, которая позволяет представлять объекты информационной системы в виде дерева. Каждый узел дерева представляет собой объект типа “Folder” или "Folder Like?", который может содержать в себе другие объекты, ссылки на них или копии. Для каждой системы существует обычно фиксированное дерево размещения для объектов. Жесткость дерева является следствием табличного способа хранения информации, имеющей родственную связь:"родитель-ребенок". Переход к другим видам деревьев является проблематичным, поскольку требует достаточно больших затрат при построении другого дерева той же самой информации. Поэтому современные клиент-серверные приложения обеспечивают простой вывод дерева объектов и на этом останавливаются.


В новом C# клиенте Nexus предлагается использовать динамическую навигацию, базирующуюся на известном в Nexus классе объектов “Group”. Данный класс позволяет развертывать дерево в соответствии с правилом, которое задается набором пользовательских SQL функций. Каждая функция обеспечивает resultset на своем уровне развертывания.


Пусть в системе существует список объектов класса “Group”:



Этот список сделаем доступным клиентскому приложению для того, чтобы иметь возможность выбрать документ класса “Group”, как объект правил разворачивания отдельных веток дерева. выбор осуществляется нажатием левой рукой клавиши <esc> (по аналогии отказ от текущей конфигурации разворачивания дерева). Текущее значение выбранного правила группировки отображаются в нижней части приложения в словесной форме и изменением изображения курсора.



По аналогии с датой мной был написан документ класса “Group”, который применяет одноуровневую функцию определения заказчиков при ведении учета сырья. Хочу повторить, что это исключительно вычислительный механизм построения дерева, поэтому никакого дублирования данных в таблицах не происходит и само дерево объектов отсутствует в информационной системе. Таким образом дерево, которое видит клиент является виртуальным.



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


Мне нравится.


 
Много файлов (5). [Показать файлы/форму]
Много комментариев (2). [Показать комментарии/форму]

Рейтинг@Mail.ru Яндекс цитирования Арбинада - софтотворение и софтостроение