1 Reply Latest reply on Jul 24, 2006 3:15 AM by istikhar

    Seam and JBPM

    istikhar

      Hi there,

      I have couple of questions

      1) How we can use JBPM Fork and Join in Seam?
      2) Is there any sample available for using JBPM Fork and join using Seam?
      3) How Process Composition would be carried out by using Seam?
      4) What is the difference between Node and Task Node?
      5) Where to use Simple State and Process State?
      6) How to handle Super State using Seam?

      Thanks in advance.

        • 1. Re: Seam and JBPM
          istikhar

          1) How we can use JBPM Fork and Join in Seam?

          Fork and Join are used in Concurrent executions, Nested Executions. Fork is the starting point for multiple executions(Conversations) while Join is to join in the already existing (Converstaion).

          3) How Process Composition would be carried out by using Seam?

          Process composition is the ability to include a sub process as part of a super process. This advanced feature makes it possible to add abstraction to process modelling. For the business analyst, this feature is important to handle break down large models in smaller blocks.

          4) What is the difference between Node and Task Node?

          A) A process graph is made up of nodes and transitions.Each node has a specific type. e.g Node type Task , Decission , State, Fork etc.
          B) nodeA task node represents one or more tasks that are to be performed by humans. So when execution arrives in a task node, task instances will be created in the task lists of the workflow participants. After that, the node will behave as a wait state. So when the users perform their task, the task completion will trigger the resuming of the execution. In other words, that leads to a new signal being called on the token.


          5) Where to use Simple State and Process State? 6) How to handle Super State using Seam?


          Process composition is supported in jBPM by means of the process-state. The process state is a state that is associated with another process definition. When graph execution arrives in the process state, a new process instance of the sub-process is created and it is associated with the path of execution that arrived in the process state. The path of execution of the super process will wait till the sub process instance has ended. When the sub process instance ends, the path of execution of the super process will leave the process state and continue graph execution in the super process.

          <process-definition name="hire">
          <start-state>

          </start-state>
          <process-state name="initial interview">
          <sub-process name="interview" />
          <variable name="a" access="read,write" mapped-name="aa" /> <variable name="b" access="read" mapped-name="bb" />

          </process-state>
          ...
          </process-definition>


          This 'hire' process contains a process-state that spawns an 'interview' process. When execution arrives in the 'first interview', a new execution (=process instance) for the latest version of the 'interview' process is created. Then variable 'a' from the hire process is copied into variable 'aa' from the interview process. The same way, hire variable 'b' is copied into interview variable 'bb'. When the interview process finishes, only variable 'aa' from the interview process is copied back into the 'a' variable of the hire process.


          In general, When a subprocess is started, all variables with read access are read from the super process and fed into the newly created sub process before the signal is given to leave the start state. When the sub process instances is finished, all the variables with write access will be copied from the sub process to the super process. The mapped-name attribute of the variable element allows you to specify the variable name that should be used in the sub process.


          simple state
          Normally, a node is always executed after a token has entered the node. So the node is executed in the thread of the client.


          The Above mentioned are concept taken from JBPM documentation. Kindly Correct me if i am going wrong?

          Thanks.