So I can create a workflow programmatically on the fly. However as I know, may be wrong, I have to stop JBPM and deploy the workflow.
That is not true for either jBPM3 or jBPM4. You can deploy new process definitions at any time without reloading jBPM.