Can processes.xml be outside of war file?

We would like to load different sets of BPMN diagrams based on environment i.e. DEV vs QC by using the same war file.
is there a way to externalize the processes.xml file, have it outside of the war file?

can anyone help me with this question? thanks in advance

Hi @ckesebir,

Have a look at the docs for the @ProcessApplication annotation. The deploymentDescriptors attribute says that the file must be loadable from the process application’s class loader. So strictly speaking, it need not be in the war file but it must be on the classpath.

An alternative way of selecting resources to deploy would be to implement the method ProcessApplicationInterface#createDeployment. It can be used to programmatically add resources to a process application deployment. You could write custom logic that selects the right processes based on environment resources. Note that you should disable scanning for processes in processes.xml then by setting the isScanForProcessDefinitions parameter to false (see processes.xml reference).


Thank you for the info Thorben.

I have tried option 1 - implementing with annotation but it doesn’t look like it is finding the external processes.xml

Here is what I have done;

Here is the annotation i put on the class that extends EmbeddedProcessApplication.

@ProcessApplication(name=“Test Application”, deploymentDescriptors={“classpath:bpmn/processes.xml”})
public class CamundaEmbeddedProcessApplication extends EmbeddedProcessApplication

I’ve placed the processes.xml in external folder- bpmn that is in the classpath . when i run the application. It say No processes.xml file found in process application.

Here is what i get in the log

[http-bio-8080-exec-3] 2016-06-02T14:15:35,832 INFO ( — Adding {bridge:null} as a subscriber to the ‘startDepositInstructionWorkflowHttpResponse’ channel
[http-bio-8080-exec-3] 2016-06-02T14:15:35,833 INFO ( — Channel ‘org.springframework.web.context.WebApplicationContext:/PrimeBSOWebService/workflow.startDepositInstructionWorkflowHttpResponse’ has 2 subscriber(s).
[http-bio-8080-exec-3] 2016-06-02T14:15:35,834 INFO ( — started org.springframework.integration.endpoint.EventDrivenConsumer@3d757573
[http-bio-8080-exec-3] 2016-06-02T14:15:36,289 INFO ( — impl of [com.cgi.wealth.workflow.api.WorkflowDefinitions] = [com.cgi.wealth.workflow.engine.camunda.CamundaWorkflowDefinitions]
[http-bio-8080-exec-3] 2016-06-02T14:15:36,302 INFO ( — impl of [com.cgi.wealth.workflow.api.WorkflowInstances] = [com.cgi.wealth.workflow.engine.camunda.CamundaWorkflowInstances]
[http-bio-8080-exec-3] 2016-06-02T14:15:36,314 INFO ( — impl of [com.cgi.wealth.workflow.api.Worklist] = [com.cgi.wealth.workflow.engine.camunda.CamundaWorklist]
[http-bio-8080-exec-3] 2016-06-02T14:15:36,355 INFO ( — ENGINE-08026 No processes.xml file found in process application ‘Process Application’
[http-bio-8080-exec-3] 2016-06-02T14:15:36,367 INFO ( — ENGINE-08050 Process application Process Application successfully deployed

what am i doing wrong here?

Thanks for your help in advance

This looks like a classpath issue.
To confirm try something simple like:
@ProcessApplication(name=“Test Application”, deploymentDescriptors={“C:/processes.xml”})


Thanks Sorin. I’ve tried what you said but same result.
[http-bio-8080-exec-3] 2016-06-03T09:17:06,109 INFO ( — ENGINE-08026 No processes.xml file found in process application ‘Process Application’


Try to remove the classpath:. It scans on the classpath and nowhere else anyway. If this does not work. Please provide the sources to a simple process application, a processes.xml and precise steps how to reproduce your scenario.