2008-09-19 4 views
0

У меня довольно большое определение веб-потока, которое я не хочу копировать/вставлять для повторного использования. В XML есть ссылки на Action Bean, который является добрым естественным.Определения для повторного использования Spring Webflow с различными реализациями действий

Я хочу использовать один и тот же идентификатор потока дважды: второй раз с настройками по-разному (вводят в него различные варианты выполнения сервиса).

Есть ли простой способ сделать это?


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

ответ

0

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

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

This - отличный ресурс Spring WebFlow.

2

Вы можете попробовать создать новый поток, который расширяет «довольно большой» и добавляет к нему flowExecutionListeners.

Интерфейс "FlowExecutionListener" определяет методы для следующих событий в исполнении потока:

  • requestSubmitted
  • requestProceessed
  • sessionCreating
  • sessionStarting
  • sessionStarted
  • eventSignaled
  • transitionExecuting
  • stateEntering
  • viewRendered
  • viewRendering
  • stateEntered
  • остановился
  • возобновление
  • sessionEnding
  • sessionEnded
  • exceptionThrown

Вы можете написать обработчик, который вводит требуемые ресурсы в поток (и использует разные ручки с различными потоками), сохраняя его в RequestContext, где вы можете получить к нему доступ в определении потока.

Обратите внимание, что в этом случае вам все равно придется модифицировать «довольно большой поток», чтобы использовать эти ресурсы, а не напрямую ссылаться на bean-компоненты.

+0

вопрос теперь, если бобы действий являются statefull или лицо без гражданства :-) нужно проверить – 2008-09-22 14:59:25

1

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

Вот часть потока:

<action-state id="checkForParams"> 
    <on-entry> 
     <set name="flowScope.clientKey" value="requestParameters.clientKey"/> 
     <set name="flowScope.viewReportBean" 
       value="reportActionFactory.getViewBean(reportUnit)"/> 
    </on-entry> 
    <evaluate expression="viewReportBean"/> 

оценить в последней строке, как правило, относятся непосредственно к фасоли, но теперь он относится к результату «набор» Я только что сделал.

Хорошие новости - правильная боба вызвана.

Плохая новость - все в области потока должно быть Serializable, поэтому я получаю NotSerializableException - arggh!

Я могу попытаться установить что-то в очень короткой области действия, и в этом случае ему нужно будет вызываться все время ... или я могу выяснить какой-то прокси-сервер, который содержит реальный компонент в качестве прокси объявленного «переходный».

BTW, я использую Spring 2.5.6 и webflow 2.0.7. У более поздних версий могут быть лучшие способы обращения с этим; в частности, похоже, что ЭЛ привлекло некоторое внимание. Я все еще придерживаюсь OGNL, который является Spring 1.x EL.

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

0

Try реорганизовать общую конфигурируемую часть в subflow и вызовите подпоток из различных основных потоков, где вы хотите его повторно использовать.

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

 Смежные вопросы

  • Нет связанных вопросов^_^