|
Разработка универсального интерфейса
|
|||
---|---|---|---|
#18+
Это не только по московским меркам, это по меркам рациональности :) Успехов в разработке! ... |
|||
:
Нравится:
Не нравится:
|
|||
23.03.2006, 12:12 |
|
Разработка универсального интерфейса
|
|||
---|---|---|---|
#18+
ВорчунПолюбопытствовал Вашими темами (Вызов ф-ции из DLL в главной форме приложения). Выходит не зря меня мучают сомнения. Не все так гладко на практике. Разработчик прислал первые наброски. dll-ки подгружаются. В пределах модуля выполняются несложные задачи - подключение к тестовой БД и отображение информации. Посмотрим как пойдет. 1) еще раз советую не делать этого вообще. Сосредоточтесь лучше на интенграции функциональности, обмена данными между программами. В перспективе - общей программы. Это гораздо, гораздо важнее чем "запускальщик" библиотек. 2) если пп 1 не подходит - поискать готовое (с исходниками !). 3) если пп 2 не подходит то обязать разработчика ваять свое "ядро" для _реальных_ библиотек, а не тестовых. Иначе вы вырастите хорошего, опытного разработчика с красивым резюме и знанием тучи технологий, но будете долго гадать куда же ушел год разработки. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.03.2006, 12:33 |
|
Разработка универсального интерфейса
|
|||
---|---|---|---|
#18+
AviantПопробую обьяснить почему "почти" Дело в том, что у меня у самого есть успешно реализованый подобный механизм и им тоже пользуются уже несколько лет, после моего ухода из компании :) Но. Спрашивая сейчас самого себя, а стоило ли тратить на него силы и средства, я не могу (сам себе) однозначно ответить "да, стоило." Я понимаю такую постановку вопроса и согласен с ней. Да, может так получиться. В сформулированных мной требованиях этот пункт подразумевается там, где говорится о хорошем проектировщике и технологической культуре; именно это определяет эффект от проекта и его соотношение с себестоимостью. Я безусловно согласен с тем, что всегда существуют задачи, которые дешевле решить уникально, нежели пытаться обобщить. Я безусловно полагаю, что далеко не все коллективы просто готовы к разработке и внедрению такой технологии. Но полагаю, что при правильном применении этот подход может и должен дать действительно хороший результат. В моем случае было существенное граничное условие - мое руководство, будучи весьма посредственными разработчиками, ко всему, что само не могло сделать, относилось с огромным подозрением, поэтому протолкнуть через них можно было только явно выгодную вещь. Практически все, что я делал, окупалось на первом же проекте, иначе у меня просто не было шанса это сделать. AviantНапример не была реализована значительная часть функциональности в результате чего был потерян важный клиент. У меня к сожалению ситуация обратная. Очень вкусный клиент был потерян из-за того, что в свое время начальство отказалось от предлагаемого мной обобщения, а когда появилась необходимость в нем, запросила за переделку такую цену, что клиент завершил переговоры. AviantТак что я бы избегал излишнего упрощения при оценке необходимости подобной разработки (смотрите! в фирме NN такое есть и им давно пользуются) И уж точно не доверял бы подобные вещи человеку без опыта построения аналогичных систем, это уже к автору топика. Тут согласен. Мне кажется, плясать следует именно от разработчика, который может это сделать. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.03.2006, 13:11 |
|
Разработка универсального интерфейса
|
|||
---|---|---|---|
#18+
Ну, универсальную базу может врядли, а вот база хранящая общие данные для разных программ (адреса, клиенты, пользователи, исполнители, ...) очень нужна. Отдельная. Чтоб возможные неудачные разработки других программ не могли ее испортить. Обычный интерфейс мне кажется здесь не подойдет. Как я понимаю - обычный, это когда для добавление дополнительной функциональности (к примеру, в организации решили компьютеризировать работу канцелярии - по сути небольшая отдельная программка) придется заново перелопачивать программу. Значит есть вероятность появления новых ошибок в отлаженной и проверенной программе. Я же хочу, чтоб добавление новых программ (модулей) никак не затрагивало ядра. К примеру как встраиваются переводчики в текстовые редакторы (Pragma, Stylus). Только еще проще. ---------------- если у вас в общей базе справочников стоит триггер который проверяет чтоб у вносимого юр.лица был валидный ИНН, к примеру, то никакие другие программы туда невалидный ИНН не смогут внести. Задача решена, ничего писать не надо. Никаких вызовов длл и пр. Posted via ActualForum NNTP Server 1.3 ... |
|||
:
Нравится:
Не нравится:
|
|||
23.03.2006, 13:50 |
|
Разработка универсального интерфейса
|
|||
---|---|---|---|
#18+
1024 если у вас в общей базе справочников стоит триггер который проверяет чтоб у вносимого юр.лица был валидный ИНН, к примеру, то никакие другие программы туда невалидный ИНН не смогут внести. Задача решена, ничего писать не надо. Никаких вызовов длл и пр. А есть у Вас список всех валидных ИНН? ... |
|||
:
Нравится:
Не нравится:
|
|||
23.03.2006, 14:02 |
|
Разработка универсального интерфейса
|
|||
---|---|---|---|
#18+
1024если у вас в общей базе справочников стоит триггер который проверяет чтоб у вносимого юр.лица был валидный ИНН, к примеру, то никакие другие программы туда невалидный ИНН не смогут внести. Задача решена, ничего писать не надо. Вот типичное "тестовое" решение, которое "работает" как раз до момента внедрения. А потом оказывется, что все программы не допускают "невалидного" ИНН, а одна может позволить завести клиента вообще без ИНН. Но его потом требуется заполнить, если с этим юр. лицом заключается договор. Ага ? К автору топика. Поэтому я и написал выше - займитесь лучше устранением подобного рода функциональных нестыковок, а не интерфейсными рюшечками. Это сложнее и важнее. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.03.2006, 14:06 |
|
Разработка универсального интерфейса
|
|||
---|---|---|---|
#18+
А есть у Вас список всех валидных ИНН? --------- это просто пример. (12 цифр из номера инспекции, счётчкика и контрольной суммы в двух последних цифрах, вроде так, могу ошибаться) Posted via ActualForum NNTP Server 1.3 ... |
|||
:
Нравится:
Не нравится:
|
|||
23.03.2006, 14:07 |
|
Разработка универсального интерфейса
|
|||
---|---|---|---|
#18+
Вот типичное "тестовое" решение, которое "работает" как раз до момента внедрения. А потом оказывется, что все программы не допускают "невалидного" ИНН, а одна может позволить завести клиента вообще без ИНН. Но его потом требуется заполнить, если с этим юр. лицом заключается договор. Ага ? -------------------- так если принято решения что ИНН должен быть везде и проверяется это в единой базе то даже если какая-то из систем будет хранить где-то в своей базе невалидные данные - в общую они не попадут. Т.е. принято решение и оно исполняется не в каждой отдельной системе а в общей базе. Разумеется в той системе в которой можно вводить невалидные данные будет проблема которйю придётся решать. Но единые данные будут валидными т.к. проверяются не зависимо от остальных систем Posted via ActualForum NNTP Server 1.3 ... |
|||
:
Нравится:
Не нравится:
|
|||
23.03.2006, 14:11 |
|
Разработка универсального интерфейса
|
|||
---|---|---|---|
#18+
Aviant 1) еще раз советую не делать этого вообще. Сосредоточтесь лучше на интенграции функциональности, обмена данными между программами. В перспективе - общей программы. Это гораздо, гораздо важнее чем "запускальщик" библиотек. Между программами нечем меняться (пока по крайней мере). Каждая для своих целей. Только справочники общие. Aviant 2) если пп 1 не подходит - поискать готовое (с исходниками !). не встречал такого, да еще чтоб под наши задачи. А что-то универсальное (так, вообще) не нравится. Aviant 3) если пп 2 не подходит то обязать разработчика ваять свое "ядро" для _реальных_ библиотек, а не тестовых. Иначе вы вырастите хорошего, опытного разработчика с красивым резюме и знанием тучи технологий, но будете долго гадать куда же ушел год разработки. Программа пишется с нуля. Просто для проверки/согласования идеи используем подключение к тестовым базам ... |
|||
:
Нравится:
Не нравится:
|
|||
23.03.2006, 14:47 |
|
Разработка универсального интерфейса
|
|||
---|---|---|---|
#18+
1024 если у вас в общей базе справочников стоит триггер который проверяет чтоб у вносимого юр.лица был валидный ИНН, к примеру, то никакие другие программы туда невалидный ИНН не смогут внести. Задача решена, ничего писать не надо. Никаких вызовов длл и пр. Правильно общая БД и будет себя обслуживать "сама". А длл - это маленькая программка ослуживающая итоговый журнал СВОИХ данных. К примеру - абон.отдел использует общую базу адресов и клиентов для наполнения СВОЕГО журнала - кто(клиент), какую работу, когда заказал, выполнена или нет и т.д. А регистратор используя общую БД ведет СВОЙ журнал, что по такому-то адресу зарегестрирован такой-то клиент, тогда-то, с долей.... Т.е. у каждой программулины есть "персональные" данные (итоговые), которые строятся в том числе используя общую БД (клиенты и адреса) ... |
|||
:
Нравится:
Не нравится:
|
|||
23.03.2006, 14:57 |
|
Разработка универсального интерфейса
|
|||
---|---|---|---|
#18+
2 softwarer имхо, одна из особенностей общих решений та, что первый проект никогда не может окупится (считая стоимость разработки общего механизма + проекта). В принципе. Потому что общий механизм разрабатывается для класса задач. Для одного проекта его возможности должны быть излишни. А самая большая сложность в его разработке - угадать этот класс задач, его требования и ограничения и соблюсти баланс между возможностями механизма/сложностью его использования. Это, безусловно, зависит от таланта проектировщика, но еще все равно требуется что-то типа удачи, таланта предвидения... Я лично предпочитаю нарабатывать решения, удобные для использования в каждом случае. Однако то, что спрашивал автор, собственно, к такому механизму отношения не имеет. Это обычная, хорошая практика - разделения модулей. 2 iscrafm Алгоритм проверки ИНН разработан МНС; поищите в Консультанте. 2 1024 Что-то я запутался в ваших обьяснениях; но валидность ИНН не связана с обязательностью его ввода. Т.е., должно быть так - если ИНН есть, он должен проверяться. Но - если таковы требования - его может и не быть. Например, нерезидент или он еще не успел в налоговой зарегистрироваться. Nobody faults but mine... (LZ) ... |
|||
:
Нравится:
Не нравится:
|
|||
23.03.2006, 15:12 |
|
Разработка универсального интерфейса
|
|||
---|---|---|---|
#18+
2 1024 Что-то я запутался в ваших обьяснениях; но валидность ИНН не связана с обязательностью его ввода. Т.е., должно быть так - если ИНН есть, он должен проверяться. Но - если таковы требования - его может и не быть. Например, нерезидент или он еще не успел в налоговой зарегистрироваться. ------------- да причём тут ИНН? Нужны общие справочники - положить их в одну БД. Написать триггеры проверки. И данные в этих справочниках будут соответствовать установленным правилам. Проблемы синхронизации данных когда в одной системе одни правила а в другой другие будут решаться в едином хранилище а не размазываться по нескольким. В разных системах данные могут быть разными а едином хранилище они будут соответствовать установленным правилам т.к. без этого они туда не попадут Posted via ActualForum NNTP Server 1.3 ... |
|||
:
Нравится:
Не нравится:
|
|||
23.03.2006, 15:24 |
|
Разработка универсального интерфейса
|
|||
---|---|---|---|
#18+
Перечитав топик, думаю меня интересует все же ответ на такой вопрос (к тем кто реализовывал длл). Могут ли возникнуть проблемы при обращении к общей БД, отличные, чем если бы это была обычная программа. А если я захочу перед регистрацией адреса за клиентом (БД "Архив") запросить инф. нет ли ареста по этому адресу (БД "Аресты")? ... |
|||
:
Нравится:
Не нравится:
|
|||
23.03.2006, 15:29 |
|
Разработка универсального интерфейса
|
|||
---|---|---|---|
#18+
2 Ворчун Так вы все-же займетесь решать именно задачи компании, или будете решать задачи технологий разработки модульных приложений? А то уже проблемы, непонятки. А дальше сколько их будет? В итоге через год вы получите что-то, отточенное технологически, но не решающее собственно задач фирмы, ни модульно, никак. Еще раз спрошу, может скажете: что вас смущает в обычной разработке в отличие от модульной, которая, по вашему заблуждению, чудом решит все проблемы сама? -- Tygra's -- ... |
|||
:
Нравится:
Не нравится:
|
|||
23.03.2006, 17:14 |
|
Разработка универсального интерфейса
|
|||
---|---|---|---|
#18+
Давайте попробуем определить "базовую часть" этого самого универсального интерфейса. Предполагаем, что он служит задачам учётного характера. Итак: * Главное меню согласно прав. * Унифицированное ведение справочников с возможностью быстрого создания новых. * Беспроблемное создание и увязка новых таблиц. * Система разграничения прав. * Отчётные возможности. Встроенный Репортер. Экспорт в популярные форматы. * Унифицированный интерфейс (фильтры, поиск, навигация) * Набор простых диалогов. * Создание кастомных форм ввода. * Унифицированный импорт/экспорт * Возможность обращения к внешним источникам данных (хотя бы для этой же СУБД) * Возможность подключения новых модулей DLL (как дополнительная возможность) Всё перечисленное позволяет создать новую учётную конфигурацию за очень сжатый срок. Затраты времени только на смысловую часть (запросы, отчёты, формы, права, новые таблицы). ... |
|||
:
Нравится:
Не нравится:
|
|||
23.03.2006, 17:39 |
|
Разработка универсального интерфейса
|
|||
---|---|---|---|
#18+
ВорчунЕсть такая задумка. Разработать оболочку в которую на принцыпах плагинов можно внедрять любую начинку. … А затем добавляем любую функциональность. Каждый модуль (плагин) самостоятелен в пределах своей задачи (грубо говоря отделная программа работающая в общей среде). Это позволит постепенно перевести все самостоятельные задачи (разные программы) к единообразию, не прерывая работу организации. Интересует может кто сталкивался с подобной задачей, какие подводные камни ждут впереди, и может подобный вопрос подымался на форуме? (инструментарий: Delphi+MS SQL Server) Есть такая разработка, живая, много раз апробированная – БАС . Как раз инструментарий на Delphi+MS SQL Server. Один и тот же BAS.exe, одна и таже структура базы данных используются для различных задач. BAS.exe один для всех, а база данных одна для каждого прикладного модуля, плюс две общие базы: администора и системная. На этом построены совершенно разные, с виду, прикладные модули. В бухгалтерии это Зарплата, Учет материалов, основные фонды, партнеры (поставщики, покупатели, и др.), финансы, бухучет. Есть учет производстве, экономическая подготовка производства. Другое направление – работа с населением – разные коммунальные предприятия и платежи населения с распределенной базой данной между поставщиками, банками, кассами, расчетным центром и ЖЭКами. ВорчунОдна из обязательных баз - база справочников (АДРЕСА и КЛИЕНТЫ и пр.служебные таблицы). Обязательные базы – это системные. Все прикладные справочники надо размещать в базе данных специализированного модуля. Ворчун, не верте скептикам. Это возможно, и такой инструментарий очень удобен для использования в различных областях. Если эта затея серьезная, приглашаю в приват. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.03.2006, 17:41 |
|
Разработка универсального интерфейса
|
|||
---|---|---|---|
#18+
Господа,универсальный интерфейс конечно хорошо,когда оно надо :) Но давайте попробуем посмотреть на тему универсального интерфейса чуть с другой стороны. По сути его цель - добавлять какие-либо поля к формам отображения,ввода и прочим при появленииновых параметров сущностей. Почему бы нам так не спроектировать структуру данных,чтобы она подразумевала добавление атрибутов как добавление новых записей в соответствующие таблицы и разработать интерфейс так,чтобы его не дорабатывать путем заполнения хитрейших интерфейсных справочников?! Примеры: 1. Для справочника номенклатурных позиций пмсм (главное без флейма обойтись) замечательно подходит уже успевшая набить оскомину всем "модель" Тенцера. Интерфейс делается один раз: слева панель с экземплярами объектов, справа при выборе конкретного объекта появляется аналог дельфийского ValueListEditor с двумя полями: имя атрибута и, соответствнно, его значение 2. Для описания взаимоотношений с клиентами строим структуру,позволяющую описать реальный мир на основе так называемых ролей, отношений и прочего. Например,для описания того,что кто-то является банком кого-то не обязателно в таблице всех субъектов прибавлять ссылку на другого субъекта, но банка, а достаточно ввести такое понятие как роль "банк" и ввести отношение типа "является банком".Далее в таблицу, описывающую отношения субъектов (причем она должна быть продумана так, чтобы в одном отношении конкретного типа могли участвовать хоть 10 субъектов), пишутся соответствующие записи. 3. для описания договоров не бьем в таблицу договоров все его стороны, а делаем структуру БД так,чтобы для каждого типа договора был определен список типов субъектов, которые участвуют в данном виде договора, а для конкретного договора заполняем табличку "Субъекты, принимающие участие в договоре." 4.Для описания набора булевских признаков группировки конкретного объекта используем стандартное дерево с иерархическим перечнем групп P.S.Иногда это не возможно (ну например в случае добавления каких-либо числовых атрибутов), но в большинстве случаев грамотное проектирование БД спасает от лишнего гемороя по проектированию универсальных вещей. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.03.2006, 17:47 |
|
Разработка универсального интерфейса
|
|||
---|---|---|---|
#18+
грамотное проектирование БД спасает от лишнего гемороя по проектированию универсальных вещей. ----------- да. А от незнания простых вещей начинается "хранение объектов в базе" и прочие хмл сериализации Posted via ActualForum NNTP Server 1.3 ... |
|||
:
Нравится:
Не нравится:
|
|||
23.03.2006, 17:52 |
|
Разработка универсального интерфейса
|
|||
---|---|---|---|
#18+
мод Aviant Единый Универсальный Интерфес Реализующий Любую Функциональность. А потом окажется что реальная задача не "натягивается" на ваш engine Должна быть иерархия инструментария: 1. базовые средства (языки, системы программирования и разработки) 2. универсальные модули (написаны на 1) (ведение справочников, генераторы экранных форм, генераторы отчетов. стандартные функции и процедуры и т.д.) 3. проблемно-ориентированные модули (разработаны на 2+1) (решение типовых прикладных задач) Конкретная система разрабатывается (по убыванию приоритета): 3 - используются готовые решения + 2 - настраиваются универсальные модули + 2+1 - разрабатываются дополнителные алгоритмы и полностью оригинальные модули При таком подходе ЛЮБАЯ задача "натягивается" на ваш engineА почему это называется "иерархия"? Может просто "функциональные возможности"? ... |
|||
:
Нравится:
Не нравится:
|
|||
23.03.2006, 17:52 |
|
Разработка универсального интерфейса
|
|||
---|---|---|---|
#18+
ShtockГоспода,универсальный интерфейс конечно хорошо,когда оно надо :) Но давайте попробуем посмотреть на тему универсального интерфейса чуть с другой стороны. По сути его цель - добавлять какие-либо поля к формам отображения,ввода и прочим при появленииновых параметров сущностей. Почему бы нам так не спроектировать структуру данных,чтобы она подразумевала добавление атрибутов как добавление новых записей в соответствующие таблицы и разработать интерфейс так,чтобы его не дорабатывать путем заполнения хитрейших интерфейсных справочников?! Примеры: 1. Для справочника номенклатурных позиций пмсм (главное без флейма обойтись) замечательно подходит уже успевшая набить оскомину всем "модель" Тенцера. Интерфейс делается один раз: слева панель с экземплярами объектов, справа при выборе конкретного объекта появляется аналог дельфийского ValueListEditor с двумя полями: имя атрибута и, соответствнно, его значение 2. Для описания взаимоотношений с клиентами строим структуру,позволяющую описать реальный мир на основе так называемых ролей, отношений и прочего. Например,для описания того,что кто-то является банком кого-то не обязателно в таблице всех субъектов прибавлять ссылку на другого субъекта, но банка, а достаточно ввести такое понятие как роль "банк" и ввести отношение типа "является банком".Далее в таблицу, описывающую отношения субъектов (причем она должна быть продумана так, чтобы в одном отношении конкретного типа могли участвовать хоть 10 субъектов), пишутся соответствующие записи. 3. для описания договоров не бьем в таблицу договоров все его стороны, а делаем структуру БД так,чтобы для каждого типа договора был определен список типов субъектов, которые участвуют в данном виде договора, а для конкретного договора заполняем табличку "Субъекты, принимающие участие в договоре." 4.Для описания набора булевских признаков группировки конкретного объекта используем стандартное дерево с иерархическим перечнем группКак только Вы пытаетесь применить прикладные особенности различных приложений к разработке универсального инструментального средства, то это средство сразу же перестает быть универсальным. Например, в конкретной реализации не требуются ни партнеры, ни договора, ни... ... |
|||
:
Нравится:
Не нравится:
|
|||
23.03.2006, 18:07 |
|
Разработка универсального интерфейса
|
|||
---|---|---|---|
#18+
С Вашим высказыванием не спорю (если я правильно понимаю,что разговор ушел в создание платформы разработки ИС),но все-таки:как много Вы знаете учетных систем где нет ни договоров, ни партнеров :) Просто у меня тоже есть настраиваемый построитель интерфейсов, но не все вещи решать надо именно на нем... Понятно,что пользователю бывает все равно (привожу реальный пример из жизни), что при добавлении нового поля к справочнику замеров клиента (там компания по производству одежды) мы добавляем либо поле в таблице замеров и мы ему пересобираем модуль, либо мы в нашем средстве автоматом добавляется в таблицу это поле и в этом же средстве что-то делается для добавления его в формы ввода, либо есть грамотный Конструктор замеров, при заполнении справочника которого не добавляются столбцы в таблицу замеров (она фиксирована:код замера (ссылка на шапку замера), код параметра замера, его числовое значение), а лишь при добавлении нового замера в интерфейсе ввода мастер ввода предъявляет новое значение из справочника и пользователь вводит его значение. Но мне,как программеру,не хочется писать либо автогенератор процедур,либо переписывать их ручками, а затем перекомпиливать инвалидные объекты и прочее прочее прочее (и главное не забыть про отчеты, в которых новые данные автоматически подтянутся сами)... ... |
|||
:
Нравится:
Не нравится:
|
|||
23.03.2006, 19:18 |
|
Разработка универсального интерфейса
|
|||
---|---|---|---|
#18+
To 1024: А это к чему "да. А от незнания простых вещей начинается "хранение объектов в базе" и прочие хмл сериализации "? Я вроде бы такого не писал?Или это Вы просто вслух размышляете? ... |
|||
:
Нравится:
Не нравится:
|
|||
23.03.2006, 19:20 |
|
Разработка универсального интерфейса
|
|||
---|---|---|---|
#18+
это не вам, это тем кто делает сложные вещи из простых Posted via ActualForum NNTP Server 1.3 ... |
|||
:
Нравится:
Не нравится:
|
|||
23.03.2006, 19:26 |
|
Разработка универсального интерфейса
|
|||
---|---|---|---|
#18+
Тогда сорри за наезд:лежим'c, гриппуем'c и бросаемся на всем. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.03.2006, 19:43 |
|
Разработка универсального интерфейса
|
|||
---|---|---|---|
#18+
У меня складывается такое впечатление, что мы все тут говорим о неком комплексном модульном движке, который позволяет управлять и присоединять модули на всех уровнях системы (БД с бизнес-логикой, клиенты, отчеты), а автор топика всего лишь скромно имел ввиду создание обычного Plug-in у клиентской части. Если это так, то на данном форуме такое обсуждение вообще бессмысленно, это чисто техническое решение построения клиентской части и никакого отношению к разработке информационных систем не имеет. Такой вопрос лучше задавать на форуме Delphi, там полно спецов, которые делали такие вещи. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.03.2006, 06:34 |
|
|
start [/forum/topic.php?fid=33&msg=33621340&tid=1549393]: |
0ms |
get settings: |
9ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
165ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
61ms |
get tp. blocked users: |
1ms |
others: | 14ms |
total: | 284ms |
0 / 0 |