4 Replies Latest reply on Jan 1, 2006 12:36 AM by enazareno

    jbpm in a cluster

    new4jboss

      Can anyone please confirm the following statement ?

      "JBPM workflow process descriptions and runtime status are persisted to a database but in a cluster they are not automatically failed-over, which makes sense once you realize that some processing steps may not be idempotent. Therefore, while the process description is persistent, workflow failover must be performed manually."

      Thank you

        • 1. Re: jbpm in a cluster
          ralfoeldi

          jBPM is a state machine. If a cluster node fails while executing some external trigger (ui, timer, jms, whatever) execution will stop and have to be started again.

          Depending on the transaction context you're in this could be done automatically (redelivered jms, re-executed timer), require ui interaction (error message for user if cluster node goes down requesting repeat) ot whatever depending on the initial trigger.

          Failovers will also depend on how secure your workflow state is persisted and what kinds of actions are used (sending a smtp mail isn't usually transactional - though even this can be solved.)

          The short version: you can use jBPM to build a fully failsafe, clusterable hotfailover worklfow solution (that's the project I've just completed). But it doesn't come out of the box. You will have to invest a fair amount of effort.

          Greetings

          Rainer

          • 2. Re: jbpm in a cluster
            enazareno

            Hi Rainer,

            Speaking of clusters, I am just curious. What is your strategy of synchronizing your dates? Do you synchronize each clustered server's date using an OS facility? I am not familiar with this approach. Our strategy here is to assign one server to act as a date server. I am asking bec. if I run jbpm in a clustered environment, I may have different dates in different machines. Maybe our strategy is primitive, be glad if you can share. Thanks.

            Regards,

            Elmo

            • 3. Re: jbpm in a cluster
              ralfoeldi

              Hi Elmo,

              my strategy is even more primitive. Its the SEP ("Someone else's problem") - strategy :-)

              I just trust the admin guys to get their cluster coordinated - they might as well be good for something :-). If I do need a time coordination it's usually the database (sysdate). If you use sysdate when setting and retrieving / querying it mostly works out.

              If you have a truely distributed application (as in distributed over more than one timezone) you might want to use Calendar with correct TimeZones etc. Then you have local times (send mail at 09:00 localtime) as well as coordinated system times. But that isn't always fun to do.

              I guess that all this won't help you.

              Greetings

              Rainer

              • 4. Re: jbpm in a cluster
                enazareno

                Hi Rainer,

                Thanks for your info. Yes we do query dates from the database instead of the usual java.util.Date. Usually dates only become a problem if there's a (business) problem they are tyring to solve. When tracing transactions (like fraudulent ones) and they see our dates our out of sync, it's goodbye to us :(.

                We also found out, we can't use NOW()/DATE() functions with INSERT/UPDATE with the database (MySQL) because we're replicating databases. So I guess I won't be running jbpm in different machines for the moment, or else, I have to edit the code (IMHO, I really dont want to do that and mess up the code). I do hope they come up with a facility or an option for us to specify where we get our dates, or if there is, I would like to know how to do that. Thanks again for your time.

                Regards,

                Elmo