I want to know is it still appropriate to use BPM like jBPM in a scenario like described below, or is there any better way of doing this with jBPM?
Lets say we have a candy coating process, and then we have 5 coating task, they are:
1. chocolate coating (CHOC)
2. cheese coating (CHE)
3. caramel coating (CAR)
4. sour syrup coating (SOU)
5. brown sugar coating (BRWN)
Each coating task will add a layer to the candy surface or to previous coating surface, so the order of the coating is important.
Each coating task can be a long running task.
Then there is also another task called Admin task (ADM), this task is just for Administrator to decide whether to continue the process or end the process or skip the next step
We then define 3 process definitions:
start -> CHOC -> ADM -> CHE -> ADM -> CAR -> SOU -> ADM -> BRWN -> end
start -> CHE -> ADM -> BRWN -> ADM -> CHOC -> end
start -> CHE -> ADM -> BRWN -> end
Then of course we have the candy itself, we got three types:
1. bar shaped candy
2. cone shaped candy
3. ball shaped candy
We have defined that:
1. bar shaped candy will be coated using proces A
2. cone shaped candy will be coated using process B
3. ball shaped candy will be coated using process C
When a user is about to start a candy coating process, he/she will first choose a candy type, lets say he/she choose the "cone shaped candy",
The user then wants to see a list of what coating will be applied to this cone shaped candy, so we retrieve "process B" because that is what used by "cone shaped candy" and then display the task's inside the process:
At this stage, user have choice to say that he/she wants to skip one or some coating task:
Lets say he/she choose to skip the "BRWN" coating task
then when the process is started, the BRWN coating task will be skipped on the execution.
My question is, is it the right way to do it?
As the number of process grow, we will have a lot of process like process A, process B, and process C that is just have difference in the order of coating task execution.
Then again because a coating task can be defined to be skipped before the process start, then actually what user see in the process diagram does not really reflect what will be executed (of course user will see all of those gateways), In my opinion this will minimize the benefit of showing process diagram to the user.
Another alternative is to eliminate all process A, process B, and process C, and then replace it with one ad hoc process that contains all the coating process.
And then before the process execution, user define what are the order of coating task to execute.
But this way, It seems to me like process order / flow defined by user and then why use BPM if it is an ad hoc process? (well actually we get more execution data by using BPM with ad hoc process, but still..)
And then showing an ad hoc process diagram to user will be no use at all since user really have no idea what task will come after the current task (since the task's is not connected in this case).
Maybe I implemented this wrongly, or I dont correctly understand how to use BPM especially in this scenario. Maybe you can enlighten me?
Any help will be appreciated.