We don't really have a mechanism to detect if the process definition has changed. In a production environment, I think you'll want to skip Seams convenience mechanism and deploy process definitions to the jbpm database manually using the jbpm tools. We don't really have any of the examples set up with production settings.
Right, the auto-deployment stuff is really meant for development only. The Seam docs could be clearer on this point.
I came over the same problem, without create-drop in the hibernate configuration the process deployment fails saying that there is another process definition with the same version (if I remember the error message correctly).
How can you disable the "auto deployment" of process definitions (I had a look at the code and I cant see any easy way to do it other than extend Jbpm and override installProcessDefinitions() ).
What about adding a floating point version attribute to the process definition, check to see if it higher than the latest one in the db and only then deploy it. That way the autodeployment would work even in production.
It is reasonable for a process definition to have a version number to identify it and not just a private one automatically assigned by jbpm.
Just for the archives: as for documenting this issue see JBSEAM-1034.