you could achieve that with signal boundary event attached to Task B that in case of receiving signal will cancel Task B and loop back (suing sequence flow) to task A again. Which in turn creates Task A instance.
Thank you very much for your answer;
I am confused about how to use signal boundary event and what should i do to cancel Task B and loop back;
Is my understanding right?
if so ,what should i do to reject task B to task A dynamically?
Thanks for your help @Maciej Swiderski
not exactly like that. The signal event should be attached to task B. I believe that the old drools/jbpm process designer does not have such capabilities (boundary events) so you would need to use Eclipse BPMN2 modeler or jBPM web designer.
Boundary events have special attribute - cancelActivity - that allows to cancel activity it is attached to when event is triggered. Boundary activity then can have additional sequence flow that goes back to first task. Here you can find an example.
Now ,what i also want to know is that is there any api such as taskservcice.claim()/start()/fail() ,etc,can make the process return to the previous task node dynamically(not by changing the process defination)? because if i hava a lot of nodes in a process,i can not draw the process easily.
Thanks for your help! @Maciej Swiderski
is there any api such as taskservcice.claim()/start()/fail() ,etc,can make the process return to the previous task node dynamically(not by changing the process defination)?
Thanks for your help! @Maciej Swiderski
I've been reading some questions on this forum and worries me the fact that on many questions people are trying to solve their problems by creating some kind of code to do something that the BPMN specification deals with.
The main point in a BPMS solution is to put business logic out of the code. By doing this we have much more flexibility to make processes evolve in a much easier way. Business people can see the process that the system executes. There are so many advantages in doing this that i can remember now.
But this is a change on the paradigms we deal in our IT daily activities. It's strongly recommended to have a good knowledge in BPMN specification to automate processes. If you don't, you'll probably do it in a wrong way and won't be able to get the best of BPMS on your projects. On BPMS you have to deal with the whole business logic in your process (events and exceptions) model.
Iwahaha i didn't understand your problem: task A and B are executed in parallel or sequentially? I also didn't understand what do you mean by 'i want to reject the process to the Tasks A'. Do you mean you want to abort the whole process? Or do you want to make the process go back to A? If B is a human task, you should be considering abortion after some delay of time with no answer, is that correct?
On this website http://diveintobpm.org/index.jsp (ok, it sucks you have to refresh and reopening your web browser many times to get it working) there are some examples of bpmn diagrams (v1.2) that could help to clarify some concepts. If you gimme more details about your problem, it would be a pleasure to help you.
I think i got your point. I tried hard to find a way of doing what you wanted in the web modeler v5.4. It is pretty much hard to find a way to solve your problem because the current version of the modeler is not supporting some important BPMN elements. If jbpm were supporting boundary events, it would be much easier.
I tried a solution, but didn't test it. The main point is the event gateway element. This kind of gateway waits for two or more different types of the events: the one that comes first will be the choosen one. I don't know if it works with an intermediate start event, but since it is a gateway for waiting for different events, it should not be a problem. The idea of this solution is: if someone starts the task2 first, this will be the way to go. If the task timeout, the control of process will be driven back to Task 1.
thanks you very much for answering my question !
in my case , i want to make the process go back to A!
But i don't want to make it by using the drawing the bpmn model ,because there are so many human task nodes in my process,if i draw it for every node, this will be a very hard work!
So,i wondered if there is any methods like askservcice.claim()/start()/fail() ,etc,,to make the process return to the previous human node dynamiclly ! Such as Backflow!!
In many cases of my process,a human task node always has the ability to return the task to the previous one.Such as,if i finish this work in a wrong way,i want to redo my task or get it back ;