We created a workflow itemtype W1 having two process P1 and P2 and uploaded the same to database using the WFLOAD command. In the next step, we deleted the process P2 in the workflow builder and uploaded the updated definition to database again using WFLOAD command.
After this when we open the workflow item W1 from database using the workflow builder we can still see the process P2. So the process P2 has not got deleted even though that was our intention. I know that this is the intended behaviour, i.e. WFLOAD will just upgrade, it will not delete.
We then deleted the process P2 from workflow builder while it is still connected to database. When we reconnect the workflow builder to database, we can see that the process P2 has indeed got deleted.
My quesiton is how can we delete the process P2 without logging on to Workflow builder. Is it possible to do this using WFLOAD?
Looks like there are two ways to delete a process viz.
1. Run wfrmitt.sql to completely remove the workflow item_type from the database then reload it. Not a preferred option, because existing workflow process in progress might get affected as the complete item is deleted. For e.g. in the above scenario even the process P1 will get deleted and if there is any workflow instance using process P1 in progress it will get affected.
2. You retrieve it using the Workflow Builder then delete it before saving it back into the database. This the same way described in my question above.
Not a convenient option, as it requires manual intervention. Using this procedure in production envirornments will be risky.
Is there any other way in which a process can be deleted?
WFLOAD works pretty much the same as FNDLOAD, none of them are designed to remove data during upload mode so what you are seeing is proper. If you want to deactivate a process within the same item type you may flag it as not runnable.