Shared process engine with sharding datastores

Hi Camunda Team!
I’m looking for a Process Engine Delegation or similar goal to have different process engine with sharding datastores over a Java implemetation?

Thanks a lot!!!

Hi @devj87,

at the moment there is no out of the box support for sharding in the engine. DB is always assumed to be centralized.

Cheers,
Askar

Thanks for reply @aakhmerov,
so is not possibile to manage different process engines with different datastores?

I read about multy tenancy provided by camunda in this guide
https://docs.camunda.org/manual/7.4/user-guide/process-engine/multi-tenancy/

can I get a similar outcome?

best regards

@devj87,

you can have different engines working with different data sources. What you cannot have out of the box is data put into different tables or tablespaces based on some function predicate.

Cheers,
Askar

how can I implement this in Spring?

@devj87,

you would configure a shared engine like here https://docs.camunda.org/get-started/spring/shared-process-engine/ and then replace processes.xml as described here https://docs.camunda.org/manual/7.4/user-guide/process-engine/multi-tenancy/#configuration.

Hope that helps,
Askar

I’m trying to set it following guide but it returns:

[ERROR] Caused by: java.lang.RuntimeException: org.springframework.beans.factory.BeanCreationException: Error creating bean with name ‘repositoryService’ defined in ServletContext resource [/WEB-INF/applicationContext.xml]: factory-bean ‘processEngine’ returned null

hey @devj87,

could you attach full stack trace please?

Cheers,
Askar.

thanks for reply @aakhmerov!

{“WFLYCTL0080: Failed services” => {“jboss.undertow.deployment.default-server.default-host./camundaSample” => "org.jboss.msc.service.StartException in service jboss.undertow.deployment.default-server.default-host.camundaSample: java.lang.RuntimeException: org.springframework.beans.factory.BeanCreationException: Error creating bean with name ‘repositoryService’ defined in ServletContext resource [/WEB-INF/applicationContext.xml]: factory-bean ‘processEngine’ returned null

@aakhmerov can I manage process engine as awarness over Spring?

For example:
Having more than one process engine, I would dynamicaly invoke get service factory methods for a dynamic bean-factory process engine from specific stream

Is there a Spring management for this purpose?

Hey @devj87,

could you please check https://docs.camunda.org/manual/7.5/examples/tutorials/multi-tenancy/. If that’s helpful.

Cheers,
Askar

thanks for reply @aakhmerov

How can I add anoher process engine using spring?

I’m trying creating firstly a default process engine:







<bean id="transactionManager"
 ...
</bean>

<bean id="processEngineConfiguration"
...
</bean>

<bean id="processEngine" class="org.camunda.bpm.engine.spring.ProcessEngineFactoryBean">
    <property name="processEngineConfiguration" ref="processEngineConfiguration" />
</bean>

So adding another creation as below:







<bean id="transactionManager2"
  ...
</bean>

<bean id="processEngineConfiguration2"
...
</bean>

<bean id="processEngine2" class="org.camunda.bpm.engine.spring.ProcessEngineFactoryBean">
    <property name="processEngineConfiguration" ref="processEngineConfiguration2" />
</bean>

It doesn’t work creating only the first process engine

thanks a lot!

Hi @devj87,

which application server are you planning to use?

Cheers,
Askar

Hi @aakhmerov the bundled wildfly 10

@devj87,

ok, let’s start by downloading distribution here https://camunda.org/download/

and changing bpm-platform.xml to contain 2 engines.

I can’t find it in that extracted zip, can you show me a sample configuration for 2 jndi process engine as Spring bean ?

@devj87,

right, on Jboss and Wildfly those resources are configured through standalone.xml``located on path./standalone/configuration/standalone.xml` in distro.

you can read about it more here https://docs.camunda.org/manual/7.5/user-guide/runtime-container-integration/jboss/

usually shared engine is provided by application server or web container and not by spring context. I don’t think we have such an example ready at the moment.

Hope that helps,
Askar

ok done, thanks

How can I perform a junit test for processEngine build as JndiObjectFactoryBean?

@devj87,

you should use Arquillian, with managed container as I understand.

ok thanks a lot @aakhmerov !