You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@servicemix.apache.org by "Andreas Held (JIRA)" <ji...@apache.org> on 2006/07/31 12:22:23 UTC
[jira] Commented: (SM-504) Beanflow: Multiple execution of beanflow
steps
[ https://issues.apache.org/activemq/browse/SM-504?page=comments#action_36665 ]
Andreas Held commented on SM-504:
---------------------------------
To add some more information:
The first time, the steps are being executed from Workflow.java:102, I believe that this is the problem, as this calls DefaultState.set and SynchronousNotifier.run. This then exexcutes all the listeners and calls Workflow.run again. o be honest, I do not quite understand line DefaultState.java:73. What is the meaning fo the notifiers?
Regards
Andreas.
> Beanflow: Multiple execution of beanflow steps
> ----------------------------------------------
>
> Key: SM-504
> URL: https://issues.apache.org/activemq/browse/SM-504
> Project: ServiceMix
> Issue Type: Bug
> Affects Versions: incubation
> Environment: Windows2K, running ServiceMix under JBoss4.0.3SP1
> Reporter: Andreas Held
> Assigned To: james strachan
>
> Consider the following simple Beanflow example:
> public class TestWorkflow extends Workflow<String> {
> private static Logger log = Logger.getLogger(TestWorkflow.class.getName());
> public static int count = 0;
> public TestWorkflow() {
> super("startStep");
> }
> public String startStep() {
> count += 1;
> log.info("Workflow: Validation");
> // next step
> return "persistenceStep";
> }
> public String persistenceStep() {
> count += 1;
> log.info("Workflow: Persistence");
> // next step
> return "transferStep";
> }
> public String transferStep() {
> count += 1;
> log.info("Workflow: Transfer");
> // next step
> return "stop";
> }
> }
> If I write a JUnit test case with assertEquals(workflow.count, 3); then
> this will fail, as count has a value of 5. Looking at the log shows the
> following output:
> 08:19:26,335 DEBUG [org.apache.servicemix.beanflow.Workflow.run()] About
> to execute step: startStep
> 08:19:26,351 INFO [ch.bbp.igt.comm.ServiceMix.TestWorkflow.startStep()]
> FileActWorkflow: Validation
> 08:19:26,351 DEBUG [org.apache.servicemix.beanflow.Workflow.run()] About
> to execute step: persistenceStep
> 08:19:26,351 INFO
> [ch.bbp.igt.comm.ServiceMix.TestWorkflow.persistenceStep()]
> FileActWorkflow: Persistence
> 08:19:26,351 DEBUG [org.apache.servicemix.beanflow.Workflow.run()] About
> to execute step: persistenceStep
> 08:19:26,351 INFO
> [ch.bbp.igt.comm.ServiceMix.TestWorkflow.persistenceStep()]
> FileActWorkflow: Persistence
> 08:19:26,351 DEBUG [org.apache.servicemix.beanflow.Workflow.run()] About
> to execute step: transferStep
> 08:19:26,351 INFO
> [ch.bbp.igt.comm.ServiceMix.TestWorkflow.transferStep()]
> FileActWorkflow: Transfer
> 08:19:26,351 DEBUG [org.apache.servicemix.beanflow.Workflow.run()] About
> to execute step: transferStep
> 08:19:26,351 INFO
> [ch.bbp.igt.comm.ServiceMix.TestWorkflow.transferStep()]
> FileActWorkflow: Transfer
> 08:19:26,351 DEBUG [org.apache.servicemix.beanflow.Workflow.run()] About
> to execute step: stop
> 08:19:26,367 DEBUG [org.apache.servicemix.beanflow.Workflow.run()] About
> to execute step: stop
> This means, all steps but the start step are executed twice! This
> corresponds to count being 5 in the end!
> JUnit Testcase :
> public class WorkflowTest extends TestCase {
> public WorkflowTest(String s) {
> super(s);
> }
> protected void setUp() {
> }
> protected void tearDown() {
> }
> public void testTest() throws Exception {
> TestWorkflow workflow = new TestWorkflow();
> workflow.start();
> Thread.sleep(2000);
> assertEquals(3, workflow.count);
> }
> public static Test suite() {
> TestSuite suite = new TestSuite();
> suite.addTest(new WorkflowTest("testTest"));
> return suite;
> }
> }
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: https://issues.apache.org/activemq/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira