How to call a process from another Camunda Spring Boot application

Hello everyone!
I have two processes starting with spring boot and one invoking the other.
Process called GeoSuggestionsProcess starting in a spring boot(port:8080, for example) and calling my process common-service, that starts in another spring boot app(port:8081).


When I call subprocess I got exception:

2019-08-24 00:00:34.162 WARN 5176 — [aTaskExecutor-3] org.camunda.bpm.engine.jobexecutor : ENGINE-14006 Exception while executing job 0c38ed95-c5e9-11e9-b6b8-f894c267c004:

org.camunda.bpm.engine.exception.NullValueException: no processes deployed with key ‘common-service’ and tenant-id ‘null’: processDefinition is null
at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ~[na:na]
at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) ~[na:na]
at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) ~[na:na]

Should I use restTemplate or another integration mechanism? Because in “ordinary” camunda I could put two war-files side by side, and they deployed in one camunda instance as separate processes

@wiezmin, If process definitions are deployed in two different camunda applications, then you can’t invoke via call activity unless it uses shared database. If database is different for both process definitions, you can configure service task in GeoSuggestionsProcess instead of call activity and invoke the subprocess from service task via rest api or http connector to invoke common-service.

(or)

Deploy common-service in same process application or use shared database, then using call activity you can invoke other process as sub process.

You need to configure the process definition key of common-service in the calledElement attribute of the call activity in GeoSuggestionsProcess.

In a call activity the calledElement attribute contains the process definition key as reference to the subprocess. This means that the latest process definition version of the subprocess is always called. Make sure the attribute is configured in call activity camunda:calledElementTenantId="TENANT_1"

<callActivity id="callSubProcess" calledElement="checkCreditProcess"
  camunda:calledElementBinding="latest|deployment|version"
  camunda:calledElementTenantId="TENANT_1">
</callActivity>

image

For more details refer /subprocesses/call-activity/

1 Like

Thank you for advice!
Maybe you can refer me article or tutorial, where I could find more info about shared database for different camunda instances?

@etp you can refer this documentation of multi-tenancy link