Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Рализация простенького Workflow 
:(
    Опции темы
unkis
Дата 8.12.2011, 10:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 802
Регистрация: 8.9.2004

Репутация: нет
Всего: 1



Ребята реализовать нужно примерно следуюшее:

Через WebService приходит объект, над этим объектом и с помошью него, должно производиться какое-то количество действий, я называкю их Action.
Набор определённых действий над объектом, я называю процессом.

Вот так выглядит простенькая диаграмма классов.

user posted image

Есть основной класс Process, который в себе содержит объект и список действий, задач.

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




Это сообщение отредактировал(а) unkis - 8.12.2011, 10:40


--------------------
www.unkis.com
PM MAIL WWW   Вверх
_Y_
Дата 8.12.2011, 12:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1651
Регистрация: 27.11.2006

Репутация: 5
Всего: 34



Если я правильно понял, нужно сохранять последовательность действий и, возможно, параметры этих действий. 

Тогда так примерно:
Как нарисовано, каждый процесс - List содержащий ссылки на обьекты имплементирующие ActionInterface. 

Если предполагается сохранять все в какой-то стандартной реляционной БД без записи данных во множество различных фаилов, в ActionInterface прописываеем методы "конвертировать аттрибуты в String" и "восстановить аттрибуты из String". Метод "восстановить аттрибуты из String" удобно вызывать из конструкторов, за искллючением случаев, когда данный Action аттрибутов не имеет.

БД может выглядеть как-то так (но вариантов множество):
1. Таблица "Processes": поля "Имя-идентифицатор процесса" и "Массив идентификаторов Actions". В известных мне БД массивы напрямую храниться не могут, но, проще всего будет все-таки записать их в одно поле String, разделив, например, запятыми (впрочем, решений здесь множество).
2. Таблица "Actions": поля "Имя-идентифицатор Action", "Имя класса Action" и "Данные".

При чтении из БД:
1. Создаем пустой список типа ActionInterface.
2. Находим нужный процесс в таблице  "Processes".
3. Читаем из этой таблицы список Actions, разбивам его по запятым на массив.
4. В цикле проходим по полученному массиву читая для каждиого идентифицатора Action строку из второй таблицы. При этом создаем обьекты классов указаннык в поле "Имя класса Action", передавая конструкторам содержание поля "Данные". Созданные обьекты добавляем в список.
5. После окончания цикла чтения имеем список Actions и пользуемся им как хотим.

ЗЫ: Можно сделать и проще, и сложнее, ни это уже зависит от специфических требований задачи.

Это сообщение отредактировал(а) _Y_ - 8.12.2011, 12:09


--------------------
Я вот в этом поучаствовал: http://sbor-nik.appspot.com/kick.jsp?id=sbor5737960678883328 (на правах саморекламы:)
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
javastic
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0841 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.