powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / Разработка информационных систем [игнор отключен] [закрыт для гостей] / Исчисление предикатов
7 сообщений из 7, страница 1 из 1
Исчисление предикатов
    #33560411
Фотография pan159
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Требуется совет.
Задача состоит разработке программы для проверки корректности заполнения множества полей перед закрытием логистического контракта.
Поля проверяются в зависимости от условий, например, поле А проверяется в случае DDP контракта и не проверяется для других типов. Или поле B проверяется для всех типов поставляемого оборудования кроме ...

Изначально я написал просто с помощью условных операторов, затем бизнес-правила изменили и сразу стало понятно, что будут несколько раз менять и впредь. Очевидное решение: сами условия проверки задавать в виде данных (литеральных констант или в таблице БД).
Удалось унифицировать условия. Теперь они выглядят как множество предикатов примерно такого вида: поле F проверяется, если аргумент A1='...',
аргумент А2= всегда, аргумент A3 = кроме '...'.
Все просто здорово, но вот проблема - для одного поля могут быть определены несколько предикатов с пересекающимися областями действия аргументов.
Прямо классическая задачка для Пролога, но у меня обычный PL/SQL, в котором нет механизма логического вывода.

Сейчас я указал вручную порядок исчисления предикатов, но это как то не красиво. Хотелось бы универсального решения.
...
Рейтинг: 0 / 0
Исчисление предикатов
    #33560551
Конь
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Интересная тема.. Я использую иногда в проектах tuProlog ( на Java) tuProlog .
Делал когда-то свой free проект под него с Ораклом - DRE . У меня была мысль попытаться "засунуть" его в Oracle DB
Aurora Java, но не стал этим заниматься. Возможно, что эта тема до сих пор
актуальна ?
--
Еще Вам можно посоветовать использовать какие-либо стандартизированные
java библиотеки для rete алгоритмов ( например rule engine for java ),но это опять -таки не PLSQL конечно.
Хотя возможно что их тоже можно "засунуть" в Oracle DB Aurora Java.. Черт его
знает, может начиная с Oracle 9.2.0 это и можно сделать.. ( плохо что у Oracle своя версия java, - поганцы.. )
...
Рейтинг: 0 / 0
Исчисление предикатов
    #33560617
Фотография Shtock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У меня сделано для проводочного механизма так: есть таблица условий вида (код условия, русское описание условия, условие в терминах бд, картинка условия).
Например,
1, Сделка по продаже, operation = 2
2, Логическое И, and
Далее для конкретной проводки есть строковое поле "Условие" и "Картинка условия", для формирования которого есть отдельный пользовательский интерфейс, который выгребает все условия. Пользователь рисует условия визуально, программа делает длинную строку и картинку условия, которую система сохраняет в БД. При изменении условия картинка пересоздается заново.
При определении нужности проводки система для каждого объекта, по которому делаются проводки, прогоняет по нему это условие.
Делается все это через dbms_sql.
Это решение очень гибкое и главное позволяет пользователям менять условия или писать супер-навороченные условия программистам.
...
Рейтинг: 0 / 0
Исчисление предикатов
    #33560621
Конь
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кое-что насчет совмести с Sun Java - Oracle9i Java Stored Procedures Developer s Guide
(тут рабочая ссылка на free проект Oracle + Java + Prolog - DRE )
...
Рейтинг: 0 / 0
Исчисление предикатов
    #33560695
Конь
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pan159..Прямо классическая задачка для Пролога, но у меня обычный PL/SQL, в котором нет механизма логического вывода... Еще мысль подумал.. Если у вас эта задача решается не в базе, а в Формсах, то к ним можно прицепить EJB на Java с rete алгоритмом или java-prolog.. К формсам вроде можно на стандарте sun- java приделывать
...
Рейтинг: 0 / 0
Исчисление предикатов
    #33560794
Фотография pan159
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да, в Формсах 6i, но в клиент-серверном режиме.

Очень благодарен всем за советы.
Подключение Prolog-движка потребует определенного времени на эксперименты. Точно займусь этим, но вот в этом ли проекте? Надо оценить временные затраты и срок до окончания :-)
...
Рейтинг: 0 / 0
Исчисление предикатов
    #33560959
Конь
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pan159..Надо оценить временные затраты и срок до окончания :-)
Ну и правильно :) Если что, мыль сюда [ ekuptsov собака gmail.com ] чем смогу - помогу..
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / Разработка информационных систем [игнор отключен] [закрыт для гостей] / Исчисление предикатов
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]