Продолжение процесса после сбоя / перезапуска системы - Drools Flow - PullRequest
1 голос
/ 19 февраля 2011

Я играл с примерами, которые я скачал с книгой Drools JBoss Rules 5.0. К моему облегчению, они работают :) Drools Flow был для меня интересом как возможная замена двигателя рабочего процесса.

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

Группа, в которой я работаю, очень ориентирована на Java EE, а JBoss - наш любимый сервер приложений. Я вижу примеры того, как Drools использует постоянство Spring и поддержку поиска бинов.

Есть ли примеры того же с JBoss?

Ответы [ 2 ]

2 голосов
/ 30 марта 2011

Если вы сохраняете состояние экземпляров процесса и задач в базе данных.Даже если виртуальная машина была отключена и перезапустилась снова, вы можете извлечь экземпляры процесса.

Используйте

Для создания сеанса

ksession = JPAKnowledgeService.newStatefulKnowledgeSession(kbase,null,env)

Чтобы загрузить сеанс с идентификатором сеанса.

ksession = JPAKnowledgeService.loadStatefulKnowledgeSession( sessionId, kbase,

Вам нужно знать только идентификатор сеанса.Информация о сеансе будет храниться в таблице SessionInfo.Загрузите пример проекта ниже.

http://dl.dropbox.com/u/2634115/drools-test.zip

В примере используется Btm с базой данных H2, он также хорошо работает с mysql-connector-java-5.1.13 с Btm.Обратите внимание, что завершенный процесс будет автоматически удален из базы данных.

0 голосов
/ 30 марта 2011

Вы смотрите на базовую концепцию Процесс миграции .Во время так называемой сильной миграции процесс может быть остановлен на одной машине, и все состояние процесса может быть перенесено на другую машину (включая счетчик программы и все существующие стеки).Прежде чем думать, что это совершенно безумие, подумайте об этом с точки зрения JVM.Поскольку ваше приложение уже запущено на виртуальном оборудовании;Нетрудно остановить приложение и восстановить его там, где оно было остановлено, поскольку оно полностью виртуализировано.

Если вам нужен другой пример, посмотрите на VMWare ;вся машина может быть приостановлена ​​и перенесена на другую машину и снова запущена.Это очень интересная вещь, и обычно она связана в основном с распределенными вычислениями, где у вас могут быть сотни агентов, которым нужно перейти с машины на машину, а некоторые уходят на техобслуживание.это через JBoss;но представление о том, что именно вы ищете, может дать вам гораздо лучшее представление о том, что ожидать в будущем.

...