У меня есть поток, который обслуживает обработку для трех разных объектов. Таким образом, у меня есть родительское определение потока с общими состояниями потока, а в конкретном определении потока я расширяю этот поток реальными данными и реализацией действий.
Я хочу сохранить экземпляр компонента, который обрабатывает объект в переменной, поэтому я могу получить доступ к этой переменной в определении родительского потока.
В определении родительского потока
<action-state id="prepareReview" >
<evaluate expression="processor.prepare(modelInstance)" />
<transition to="check" />
</action-state>
и в конкретном определении потока у меня есть
<on-start>
<set name="flowScope.processor" value="concreteProcessor"/>
</on-start>
Где concreteProcessor
— одноэлементный компонент, реализующий необходимую обработку. Он не имеет состояния, поэтому сериализовать его бесполезно, кроме того, он содержит переменные dao с автоматическим подключением, реализация которых использует HibernateDaoSupport, который не может быть сериализован.
Есть ли способ преодолеть эту проблему? У меня есть одно решение, которое, однако, не очень удобно, так как мне нужно будет писать в каждом шаблонном коде определения конкретного потока конкретный вызов метода процессора.
<action-state id="prepareReview" parent="common#prepareReview">
<evaluate expression="concreteProcessor.prepare(modelInstance)" />
</action-state>
Это немного громоздко.