Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Базы данных и репортинг > Связь клиентов


Автор: Novichek27 10.4.2011, 19:39
Привет всем.

Есть БД Firebird и 5 клиентов(Delphi7+FibPlus7) подключенных к ней, имеющих свою форму и определенные действия.

Как реализовать такое?:
2 из них, выбирая из таблицы определенные записи делают заказ(отправляется сообщение 3-му), остальные по порядку 3-ий подтвердил, сообщение идет дальше 4-ый подтвердил и 5-ый подтверждают его и заказчик получает об этом сообщение(о состоянии заказа).

Также выбранные заказчиком записи должны увидеть и отредактировать их при необходимости 3-ий, 4-ый, и 5-ый.


Буду признателен за ответы.

Автор: Akella 10.4.2011, 20:03
Наверное можно создать некую таблицу в которую будет записан ID заказа и код состояния: 1, 2, 3, 4 или 5. Дальше, надеюсь, сообразишь, что делать.

Автор: cat512 10.4.2011, 20:08
т.е. в общем виде предметная область выглядит примерно так:
есть два оператора которые обраб. записи. Есть цепочка управляющего персонала, которые дают добро ходу какого-то бизнес-процесса.
Я правильно понял контекст предметной области? Я спрашиваю не от праздного любопытства. Ответ на вопрос зависит от этого

Добавлено через 13 минут и 27 секунд
Цитата(Akella @ 10.4.2011,  20:03)
Наверное можно создать некую таблицу в которую будет записан ID заказа и код состояния: 1, 2, 3, 4 или 5. Дальше, надеюсь, сообразишь, что делать.

Думаю, что через таблички и бизнес-логику на сервере - однозначно. А вот вопрос по поводу структуры актуален.
Тут ещё не понятно о каких сообщениях идёт речь. Если имеется ввиду - сетевые соединения между клиентами, то реализация будет запутанной и трудно-сопровождаемой.
Вообщем будем ждать ответа ТС

Автор: Novichek27 10.4.2011, 20:51
Цитата

Наверное можно создать некую таблицу в которую будет записан ID заказа и код состояния: 1, 2, 3, 4 или 5. Дальше, надеюсь, сообразишь, что делать.


Я думаю да, постараюсь. Если нет, то буду сообщать об этом.

Цитата

есть два оператора которые обраб. записи. Есть цепочка управляющего персонала, которые дают добро ходу какого-то бизнес-процесса
Я правильно понял контекст предметной области?


Совершенно верно, они(2 или м.б. больше оператора) пдтверждают или опровергают заказ, или корректируют его и подтверждают. 

Цитата

Тут ещё не понятно о каких сообщениях идёт речь.


О сообщениях, допустим я заказал какое-то оборудование, у оператора выводится сообщение об этом(том что я заказал) и он нажав кнопку(допустим) открывает форму с заказом.

Вопрос еще открыт господа...


Автор: Akella 10.4.2011, 22:11
Цитата(Novichek27 @  10.4.2011,  20:51 Найти цитируемый пост)
Совершенно верно, они(2 или м.б. больше оператора) пдтверждают или опровергают заказ, или корректируют его и подтверждают. 

Тогда потребуется ещё одно поле, где будет видно состояние заказа: 0 или 1.

Автор: cat512 10.4.2011, 22:17
Класически, задачи подобного класса решаются в виде кон. автомата.
У нас будут просто проверки трёх условий
Я бы реализовал простой вариант реш. следующим образом
Табличка Orders, и табличка UsersGroups
Код

create table Orders(
Id number,
...
...
...
Changed_Date date,
State number);

create table UserGroups(
Id number,
Parent_Id number,
Name varchar2,
...
...
...);

Хранимая пргоцедура ConfirmOrders()
Код

procedure ConfirmOrders (Order_Id in Orders.Id%type; User_Id in Users.Id%type)
begin
//получаем текущее состояние заказа
//выполняем простой CASE или IF, для проверки возможности перевода заказа в другое состояние 
//текущим пользователем
//если можно то изменяем в другое состояние поле State таб. ORDERS
end;
//конечным сост. например будет State = 3;

На клиентах, выполняем по таймеру (например раз в 10 минут) запрос вида:
Код

Select * from Orders where state = 3 and Changed_Date > :p_last_changed_date

для определения события обновления заказов


Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)