Статьи

Red Hat JBoss BPM Suite — Как изменить стратегию сеанса во время выполнения

 

В другой части серии «Советы и рекомендации по JBoss BPM Suite» мы поможем понять, как можно изменить стратегию сеанса по умолчанию для развертывания проекта BPM.

Мы будем использовать простой демонстрационный проект, который можно найти в наших
демонстрационных коллекциях на github , который позволит вам просмотреть и поэкспериментировать с последним рабочим примером в установке JBoss BPM Suite.

Установку JBoss BPM Suite вам нужно будет настроить самостоятельно, но вы можете использовать наш
проект установки JBoss BPM Suite , чтобы избавить вас от проблем.

Цель

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

Теперь мы опишем вам процесс изменения стратегий сеансов во время выполнения, чтобы без каких-либо специальных проверок в ваших правилах вы получали правило для выполнения при каждом запуске процесса.

Настройка

Начните с разархивирования репозитория демонстрационного проекта и скопируйте его в каталог проектов установки JBoss BPM Suite.

	# Start by cloning project at
	#   https://github.com/eschabell/demo-collections.
	#
	$ git clone [email protected]:eschabell/demo-collections.git
	 
	$ cd demo-collections
	 
	$ unzip niogit-rule-procvar-perinstance-strategy.zip
	 
	# Follow instructions and install JBoss BPM Suite
	# via https://github.com/eschabell/bpms-install-demo.
	#
	# Then copy the demo repository into the JBoss BPM Suite server.
	#
	$ cp -rv .niogit bpms-install-demo/target/jboss-eap-6.1/bin
	 
	# Start the JBoss BPM Suite server.
	#
	$ ./bpms-install-demo/target/jboss-eap-6.1/bin/standalone.sh
	 
	# Login with user 'erics' and password 'bpmsuite' to get started.

Теперь мы можем взглянуть на процесс, как он настроен для развертывания по умолчанию, каково правило, что мы должны сделать, чтобы изменить переменную процесса, и посмотреть на вывод.

Стратегии

Определите развертывание для каждой конкретной стратегии.

Помните, в
предыдущей статье мы показали, что при нескольких запусках процесса правило будет выполняться только при первом запуске, поскольку стратегия сеанса
SINGLETON . Это означало, что факты в памяти выполнялись и удалялись при первом проходе, но при последующих проходах процесса никакие факты не добавлялись в рабочую память, поэтому правила никогда не выполняются снова.

Теперь мы изменим это, изменив стратегию выполнения развертывания на
PER_PROCESS_INSTANCE , что означает, что каждый запущенный процесс получает свой собственный сеанс.

Для этого нам нужно удалить все существующие развертывания в
Deploy -> Deployemntsпосмотрите на нашу панель инструментов JBoss BPM Suite, а затем создайте новое развертывание, как показано, где мы выбираем
стратегию PER_PROCESS_INSTANCE .

Новая стратегия по умолчанию в нашем развертывании.

Как только это будет сделано, вы сможете каждый раз запускать процесс и наблюдать за выполнением правила, но сначала нам нужно удалить изменения, которые мы сделали ранее, чтобы компенсировать единую стратегию сеанса.

Правило обновлено, чтобы всегда выполнять.

Мы делаем это, обновляя наше правило, чтобы убрать проверку на наличие новых объектов в нашей рабочей памяти.

Следующим шагом является удаление отображений нового объекта в рабочую память через
сопоставления
Assignments и
DataInputSet из нашего узла задачи правила.

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

Удалены отображения.

Одно предупреждение: если вы нажмете
 кнопку
Build & Deploy в
редакторе проектов  или перезапустите сервер, вы потеряете развертывание, которое вы настроили выше.

Просто создайте его заново и не забудьте выбрать
 стратегию PER_PROCESS_INSTANCE , иначе правило не будет выполнено после первого запуска вашего процесса.

Успешный журнал трех последовательных запусков должен выглядеть примерно так:

11:35:47,038 INFO  [stdout] (http-localhost/127.0.0.1:8080-3) Execute Java Step
11:35:47,044 INFO  [stdout] (http-localhost/127.0.0.1:8080-3) Tested Rule
11:35:47,047 INFO  [stdout] (http-localhost/127.0.0.1:8080-3) Rule fired!
11:36:05,965 INFO  [stdout] (http-localhost/127.0.0.1:8080-3) Execute Java Step
11:36:05,968 INFO  [stdout] (http-localhost/127.0.0.1:8080-3) Tested Rule
11:36:05,970 INFO  [stdout] (http-localhost/127.0.0.1:8080-3) Rule fired!
11:36:10,479 INFO  [stdout] (http-localhost/127.0.0.1:8080-3) Execute Java Step
11:36:10,482 INFO  [stdout] (http-localhost/127.0.0.1:8080-3) Tested Rule
11:36:10,484 INFO  [stdout] (http-localhost/127.0.0.1:8080-3) Rule fired!

Если вы посмотрите на это из области просмотра
Process Instance , это будет выглядеть так:

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