I am currently building, using spring boot, a workflow micro service that uses flowable as its engine. Here is my current procedure for getting processes into the engine:
1-I build the process using a local copy of flowable designer running on my machine.
2-I then export the process from designer and copy the resulting bpmn file into the resources/processes directory in my eclipse based project.
3-When I restart my service, spring boot recognizes that there is a new file and performs a deployment.
When needing to modify the process, I then import it into my local copy of the modeler, make changes and then go through the steps of exporting and copying into eclipse again. I do this to ensure that nobody else has modified the file since the last time I worked on it.
In my opinion, these workflows (bpmn files) are part of the source code. They should live alongside the rest of the source code and be version controlled the same way. The biggest reason this is important to me is because our code goes through several environments before it makes it to production (dev, qa, uat, etc). Having the processes with the code is the best way to ensure that the correct versions make it into the releases. I do not want to start copying over database tables as we deploy through the various environments. Our deployments are automated through Jenkins and need to find an elegant solution with little manual intervention.
I have considered having the modeler available in a central location for everyone to use. I would then write a job to fetch all of the processes, package that up and add it to the release artifact. This would solve some problems but would also cause a number of other issues.
I am sure I am not the first to encounter this and was wondering how others have solved this particular problem. Would be interested in thoughts and ideas that could help alleviate this situation.