|
Как организовать правила проверки ввода
|
|||
---|---|---|---|
#18+
Здравствуйте уважаемые. Наша информационная система (учетно отчетная) - самописка по сути (на базе Net + Oracle) столкнулась с одной огромной проблемой, на формах ввода информации необходимо проверять информацию на достоверность (причем правила достаточно распределенные получаются, к примеру - пользователю 1 можно править свои записи, а пользователю 2 записи других пользователей; даты определенные должны быть в будущем, прошлом, интервале; для определенных типов классификаторов продолжительность услуги не должна превышать определенных величин). Короче потребность в том, что очень часто меняются данные правила и зашивать их непосредственно в код смысла большого не имеет. Идея фикс состояит в реализации инструмента для формирвоания данных правил в удобном для человека виде (в идеале чтобы отдать пользователю - администратору который эти правила забьет в систему). Как это можно по хорошему сделать ? ... |
|||
:
Нравится:
Не нравится:
|
|||
19.11.2008, 07:11 |
|
Как организовать правила проверки ввода
|
|||
---|---|---|---|
#18+
> в удобном для человека виде Все языки программирования создавались для удобства человека. Posted via ActualForum NNTP Server 1.4 ... |
|||
:
Нравится:
Не нравится:
|
|||
19.11.2008, 07:58 |
|
Как организовать правила проверки ввода
|
|||
---|---|---|---|
#18+
это, похоже, из области экспертных систем ... |
|||
:
Нравится:
Не нравится:
|
|||
19.11.2008, 08:18 |
|
Как организовать правила проверки ввода
|
|||
---|---|---|---|
#18+
Формо-лопальщик Короче потребность в том, что очень часто меняются данные правила и зашивать их непосредственно в код смысла большого не имеет. Идея фикс состояит в реализации инструмента для формирвоания данных правил в удобном для человека виде (в идеале чтобы отдать пользователю - администратору который эти правила забьет в систему). нет логики - "удобном для человека" и "администратор" не одно и то же :) Уточниет почему часто меняется БЛ, и как она будет менятся если админ забьёт ИХ в систему? ВИ? ... |
|||
:
Нравится:
Не нравится:
|
|||
19.11.2008, 09:32 |
|
Как организовать правила проверки ввода
|
|||
---|---|---|---|
#18+
Мне кажется я не совсем понятно обьяснил ситуацию, Нужны идеи по реализации механизма хранения правил проверки и использования их в приложении. (Задачи построения экспертной системы и/или системы для извлечения знаний из головы эксперта не стоит). Пока одна идея которая есть в голове - это: 1. Создать простейший парсер команд с операциями (<, >, =, null, not null); 2. Команды состоят из логических операций (см. пункт 1), сообщений об ошибках (для Лога и пользователя), имен полей в классе-источнике данных, над которыми выполняются данные операции; 3. Реализовать хранение кманд в БД; 4. Реализовать механизм запуска проверки данных на форме; Что то мне эта идея кажется слишком уж абстрактной ... особенно парсер команд ... ... |
|||
:
Нравится:
Не нравится:
|
|||
19.11.2008, 09:32 |
|
Как организовать правила проверки ввода
|
|||
---|---|---|---|
#18+
Petro123 нет логики - "удобном для человека" и "администратор" не одно и то же :) Уточниет почему часто меняется БЛ, и как она будет менятся если админ забьёт ИХ в систему? ВИ? Будем считать что "в удобном виде" это 1. Без перекомпиляции приложения (правила берутся из БД) 2. Считаем что администратор правил (человек) обладает минимальными познаниями или имеет руководство по системе чтобы написать правила (возможно именно в виде скриптов, так как создание графического инструментария для построения запросов - это еще больший геморой будет). ... |
|||
:
Нравится:
Не нравится:
|
|||
19.11.2008, 09:36 |
|
Как организовать правила проверки ввода
|
|||
---|---|---|---|
#18+
Формо-лопальщик, Вы случайно не Морозов ? :) По теме: У Вас достаточно крупная ИС и Ваша фраза авторна формах ввода информации необходимо проверять информацию на достоверность не согласуются. - как будет работать ваша ИС и Оракл при постоянной смене правил? У вас в БД есть ограничения полей, триггеры, связи, ФК, ..... которые тоже являются ограничениями? - если вы держите оракл за простой импотентный БД как dbf то возьмите excell VBA - ВИ по смене правил сильно зависит от вашего пользователя-правИльщика и полного набора правил. А потом уже архитектурного решения. Если абстрактно, то заведите табличку в БД и пишите там правила. Проблемы? ... |
|||
:
Нравится:
Не нравится:
|
|||
19.11.2008, 09:44 |
|
Как организовать правила проверки ввода
|
|||
---|---|---|---|
#18+
авторпользователю 1 можно править свои записи, а пользователю 2 записи других пользователей это не "правила". Наймите архитектора СУБД. Он ЭТО умеет. ______________________________________________ Вы имеете право хранить молчание! Всё что Вы скажете может быть использовано против Вас в суде! ... |
|||
:
Нравится:
Не нравится:
|
|||
19.11.2008, 09:46 |
|
Как организовать правила проверки ввода
|
|||
---|---|---|---|
#18+
Формо-лопальщик, ваша идея - правильная. Такое можно создать. И нужно. Нужен 1.справочник правил, содержащий примерно это: ID правила Описание правила ID подсистемы ИС ID формы ИС ID поля Код проверки поля (в виде Value BETWEEN Значение1 AND Значение2); если вы хотите контролировать значение не относительно констант, а относительно динамических значений, извлекаемых из ИС, то нужно продумать, использовать ли в этом поле псевдокод с самодельным транслятором в обращения к ИС, либо SQL вашей СУБД. Действие в случае успешной верификации (м.б. текст сообщения или следующий шаг - зависит от вашей ИС) Действие в случае не выполнения правила (м.б. текст сообщения или предложение правильного значения) Дата ввода правила в действие Дата окончания действия правила Автор ввода правила Оператор, отключивший правило 2.модуль проверки правил должен принимать контекст от формы, со значением, ID подсистемы, ID формы, ID поля и проводить верификацию. Ваше право - предусмотреть множественные правила для одного поля. Тогда модуль проверки должен прогонять проверку по всем правилам и выполнять какое-то результирующее действие. По архитектуре похоже на систему контроля качества данных в ETL, с тем отличием, что там обычно пакетный режим, а тут - интерактив. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.11.2008, 10:00 |
|
Как организовать правила проверки ввода
|
|||
---|---|---|---|
#18+
А6дуллаh, если сделать СУБД с CRUD то БЛ будет на сервере и часть этих полей не будет нужна. IMHO будет проще делать клиентскую часть, но сложнее архитектору СУБД и небольшие сложности при валидации полей. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.11.2008, 10:06 |
|
Как организовать правила проверки ввода
|
|||
---|---|---|---|
#18+
есть три подхода 1. проверка на СУБД 2. проверка на клиенте 3. генерация на клиенте только допустимых значений делать все три, мне кажется лучшим вариантом. При этом одно может генерироваться из другого в автоматическом или полуавтоматическом режиме. нужнео описание правил - на их основе выполняется второй и третий пункт. Первфй может сгенерироваться на оснвоании тех же правил (на всякий случай). Или наоьборот из уже существубщих ограничений в СУБД , сгенерировать правила . ... |
|||
:
Нравится:
Не нравится:
|
|||
19.11.2008, 10:07 |
|
Как организовать правила проверки ввода
|
|||
---|---|---|---|
#18+
Mainframe_старый, да, про третий я и забыл. Конечно все три лучше всего. Но тут как всегда ограничение в деньгах и тех-поддержке. Задолбаешься править и на сервере и на клиенте, или программировать нечто универсальное. Иногда бывает достаточно сообщения не на "сходе с ошибочного поля" - "Вася тут не правильно", а при отправке на сервер всех полей и выдаче сообщения. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.11.2008, 10:15 |
|
Как организовать правила проверки ввода
|
|||
---|---|---|---|
#18+
Формо-лопальщикна формах ввода информации необходимо проверять информацию на достоверность А проверять на каком шаге хотите? При сохранении всех данных формы или непосредственно при вводе каждого поля? От этого многое зависит. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.11.2008, 10:26 |
|
Как организовать правила проверки ввода
|
|||
---|---|---|---|
#18+
интересно другое. Что потом с этими данными делать? Вчера правило писать в рублях, сегодня в долларах. Получили свалку, которую нужно с помощью другой ИС разгребать. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.11.2008, 10:32 |
|
Как организовать правила проверки ввода
|
|||
---|---|---|---|
#18+
Petro123интересно другое. Что потом с этими данными делать? Вчера правило писать в рублях, сегодня в долларах. Получили свалку, которую нужно с помощью другой ИС разгребать. На это существуют такие вещи, как историзация и метаданные. Кстати, российские разработчики ими как правило не злоупотребляют :) ... |
|||
:
Нравится:
Не нравится:
|
|||
19.11.2008, 10:37 |
|
Как организовать правила проверки ввода
|
|||
---|---|---|---|
#18+
Petro123интересно другое. Что потом с этими данными делать? Вчера правило писать в рублях, сегодня в долларах. Вопрос использования данных, к вопросу о механизмах описания правил верификации данных не относится, как мне кажется. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.11.2008, 10:38 |
|
Как организовать правила проверки ввода
|
|||
---|---|---|---|
#18+
А6дуллаhPetro123интересно другое. Что потом с этими данными делать? Вчера правило писать в рублях, сегодня в долларах. Получили свалку, которую нужно с помощью другой ИС разгребать. На это существуют такие вещи, как историзация и метаданные. Кстати, российские разработчики ими как правило не злоупотребляют :) и слава Богу :) Ну возьмём Oracl. У него ограничение на поле в стандартном случае при создании таблицы хранится в таких же метаданных самого сервера в таких же системных таблицах. И вот разработчик, вместо того чтобы исправить правило скриптом UPDATE TABLE начинает вместо метаданных самого сервера строить свои метаданные и свой сервер. Сервер в данном случае понятия не имеет что там у него хранится (да хоть порно картинки - мне плевать). ... |
|||
:
Нравится:
Не нравится:
|
|||
19.11.2008, 10:43 |
|
Как организовать правила проверки ввода
|
|||
---|---|---|---|
#18+
Я бы разделил задачу на несколько частей: 1) Видимость данных в списке (проверка всего запрашиваемого массива) 2) Допустимость операции над одной записью 3) Допустимость операции над полем По поводу пункта (1) - с ним, как правило больше всего проблем. У Oracle для решения проблемы доступа к отдельным строкам на уровне БД есть Lable Security, FGAC и некоторые другие схожие механизмы. ссылка на документацию Что НЕ НАДО делать, если у вас достаточно много данных - писать свои процедуры, которые возвращают "только те строки, которые может видеть пользователь". Или во все SQL вставлять условия типа "is_can_read(org_id) = 1". Это просто черевато проблемами с производительностью. По пункту (2) - здесь немного проще. можно написать одну/несколько процедур, которые будут принимать решение по поводу одной конкретной строки: - Можно пользователю открывать эту форму (да/нет) - Может пользователь менять данные (да/нет) - Правильно ли заполнены поля (выдать список ошибок) Аналогично - пункт (3), только здесь проверки логичнее проводить непосредственно в форме (при вводе), в крайнем случае - при сохранении. По поводу реализации п.2 - у нас стояла аналогичная проблема - делать разные проверки для разных проектов по обзвону в Call-центре. Решили мы ее таким образом: - проверка - это PL-SQL процедура (или SELECT), которые возвращают данные в определенном формате. Если ничего не вернули - значит проблем нет. В системе есть таблица в которой имеется список всех видов проверок и строка как запускать эту проверку. Далее проверки привязываются к переводу карточки организации с одного шага на другой шаг. Программа (клиентская часть) запускает все настроенные проверки, смотрит результат и принимает решение "пускать / не пускать". Достоинства: Не надо придумывать свой язык, который бы смог покрыть все варианты необходимых проверок. Проверка пишется на PL-SQL. Недостаток: Администратор должен быть достаточно квалифицированным и знать PL-SQL. Применение данного подхода для варианта (3) несколько ограничена, в связи с тем, что работа формы может существенно замедлиться в связи с большим количеством обращений к БД. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.11.2008, 11:36 |
|
Как организовать правила проверки ввода
|
|||
---|---|---|---|
#18+
BelyЯ бы разделил задачу на несколько частей: Э... проблема корректности вовсе не ограничена проблемой доступа. Доступность данных для пользователя - это другая задача. Генерация допустимых (а не доступных) данных - это как я понимю - предмет обсуждения. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.11.2008, 11:51 |
|
Как организовать правила проверки ввода
|
|||
---|---|---|---|
#18+
imho да. Разграничение прав пользователей автор топика "примешал" к своей задаче. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.11.2008, 12:04 |
|
Как организовать правила проверки ввода
|
|||
---|---|---|---|
#18+
Mainframe_старыйГенерация допустимых (а не доступных) данных - это как я понимю - предмет обсуждения. Насколько я понял, предмет обсуждения - поиск оптимального механизма верификации данных, введенных пользователем в формы. Хотя сам автор вообще спрашивает об инструменте автордля формирвоания данных правил в удобном для человека виде (в идеале чтобы отдать пользователю - администратору который эти правила забьет в систему. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.11.2008, 12:05 |
|
Как организовать правила проверки ввода
|
|||
---|---|---|---|
#18+
автордля формирвоания данных правил в удобном для человека виде (в идеале чтобы отдать пользователю - администратору который эти правила забьет в систему. казнить нельзя помиловать забьёт или удобное изменение в IDE раз в час\месяц\год ? :) ... |
|||
:
Нравится:
Не нравится:
|
|||
19.11.2008, 12:26 |
|
Как организовать правила проверки ввода
|
|||
---|---|---|---|
#18+
вот вам готовое ТЗ по которому будет 10 вариантов ИС :) ... |
|||
:
Нравится:
Не нравится:
|
|||
19.11.2008, 12:27 |
|
Как организовать правила проверки ввода
|
|||
---|---|---|---|
#18+
Petro123И вот разработчик, вместо того чтобы исправить правило скриптом UPDATE TABLE начинает вместо метаданных самого сервера строить свои метаданные и свой сервер И правильно делает. Потому что: 1. Ограничения полей самого СУБД устанавливаются глобально для всех, а не "Васе - одно, Пете - второе", и кто попало их поменять не может. Если для изменения правил надо давай довольно серьезные права функциональному администратору, который должен уметь только править правила - это нонсенс и провокация. Кроме того, эти ограничения довольно убогие, чтобы можно было удобно настроить, какие ограничения для кого работают, а какие нет, и у кого какие полномочия на доступ к каким ограничениям. 2. Пользовательские ограничения дополняют ограничения полей самого СУБД, и никаким образом не могут ослабить или отключить их. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.11.2008, 12:57 |
|
Как организовать правила проверки ввода
|
|||
---|---|---|---|
#18+
Сергей ВаскецовPetro123И вот разработчик, вместо того чтобы исправить правило скриптом UPDATE TABLE начинает вместо метаданных самого сервера строить свои метаданные и свой сервер И правильно делает. Потому что: 1. Ограничения полей самого СУБД устанавливаются глобально для всех, а не "Васе - одно, Пете - второе", и кто попало их поменять не может. Если для изменения правил надо давай довольно серьезные права функциональному администратору, который должен уметь только править правила - это нонсенс и провокация. Кроме того, эти ограничения довольно убогие, чтобы можно было удобно настроить, какие ограничения для кого работают, а какие нет, и у кого какие полномочия на доступ к каким ограничениям. 2. Пользовательские ограничения дополняют ограничения полей самого СУБД, и никаким образом не могут ослабить или отключить их. сложно понять что вы хотели сказать. Слишком много расплывчатых фраз: "кто попало", серьезные права, нонсенс, провокация, убогие... - если мы начнём уточнять ТЗ до каждому Васе - свои правила - мы далёко зайдём. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.11.2008, 13:16 |
|
|
start [/forum/topic.php?fid=33&msg=35662319&tid=1548662]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
145ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
63ms |
get tp. blocked users: |
1ms |
others: | 15ms |
total: | 265ms |
0 / 0 |