I'd like to know this answer too.
I deploy a process programmly and call getFileDefinition function, it returns null.
If you look at the ProcessImageServlet, it is getting the image from the database.
You could do the same thing with all of the files associated with the process definition.
from jBPM 3.1.0 or maybe 3.1.1 this is also true for the processdefinition itself. That was not the case before