# flowable-mongodb
**Repository Path**: mrhy/flowable-mongodb
## Basic Information
- **Project Name**: flowable-mongodb
- **Description**: flowable-mongodb
- **Primary Language**: Unknown
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 5
- **Created**: 2022-04-21
- **Last Updated**: 2022-04-21
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# Flowable MongoDB
More information about Flowable: see http://www.flowable.org/ and https://github.com/flowable/flowable-engine
This repository contains the source code for using MongoDB as a persistent data store for the Flowable process engine (support for the other engines (CMMN/DMN) are not yet implemented).
It is currently considered in **alpha** state as not all features have been implemented. Once the default test suite runs fully against this implementation, it will be deemed stable.
## Requirements
* MongoDB 4.0+
* Flowable 6.4.0+
## Usage
Add the _flowable-process-engine-mongodb_ and _flowable-engine_ dependency to your Maven pom.xml (or a similar operation when not using Maven).
```xml
org.flowable
flowable-engine
6.4.0
org.flowable
flowable-process-engine-mongodb
6.4.0.alpha1
```
Create a ProcessEngine instance as follows (changing the server url as needed):
```java
ProcessEngine processEngine = new MongoDbProcessEngineConfiguration()
.setServerAddresses(Arrays.asList(new ServerAddress("localhost", 27017)))
.setDisableIdmEngine(true)
.buildProcessEngine();
```
## Development
### Single server
To set up a local MongoDB server that can be used to execute the unit tests against:
(Following instructions have been tested on OS X only. PR's for other systems appreciated!)
* Download the latest MongoDB community server from https://www.mongodb.com/download-center#community
* Unzip and create a folder _data_ in the unzipped folder
* Start MongoDB as follows through the terminal
```
ulimit -n 4096
./mongod --port 27017 --bind_ip_all --dbpath ../data/ --replSet rs0
```
* Now execute _./mongo_ from the _bin_ folder
* In this shell, execute
```
rs.initiate()
```
Notes:
* The _ulimit_ is needed or otherwise executing the unit tests quickly leads to the 'too many open files' exception.
* Transactions are currently supported on replicasets only, hence the use of the _replSet_ parameter.
### Multiple servers
To set up a cluster of MongoDB servers that share the same replicaset and that can be used to execute the unit tests against:
* Download the latest MongoDB community server from https://www.mongodb.com/download-center#community
* Unzip and create _data1, data2 and data3_ folders in the unzipped folder
* Start the MongoDB instances as follows through separate terminal windows
```
ulimit -n 4096
./mongod --port 27017 --bind_ip_all --dbpath ../data1/ --replSet rs0
```
```
ulimit -n 4096
./mongod --port 27018 --bind_ip_all --dbpath ../data2/ --replSet rs0
```
```
ulimit -n 4096
./mongod --port 27019 --bind_ip_all --dbpath ../data3/ --replSet rs0
```
* Now execute _./mongo_ from the _bin_ folder
* In this shell, execute
```
rsconf = {_id: "rs0", members: [ {_id: 0, host: "localhost:27017"}, {_id: 1,host: "localhost:27018"}, {_id: 2,host: "localhost:27019"}]}
rs.initiate(rsconf)
```