This repository contains the different modules that define the Bonita Runtime model. Which are:
bonita-application-modelbonita-bdm-access-control-modelbonita-business-archivebonita-business-object-modelbonita-connector-modelbonita-form-mapping-modelbonita-organization-modelbonita-process-definition-modelbonita-profile-model
- Java 17 for compilation
To build the project, run the following command in the root of the project with the maven wrapper:
./mvnw install
This will install all the Bonita Runtime artifacts.
If you want to report an issue or a bug use our official bugtracker.
Before contributing, read the guidelines.
You may want to regenerate Assert classes after modifying a model element. To do so, you can use the AssertJ plugin.
- First, run
./mvnw clean compileto make sure the classes are found. - Delete the classes you want to regenerate.
- Then edit the project's pom.xml and add the plugin configuration in the
buildsection with the classes/packages you want to regenerate. E.g., inapplication-model/pom.xmladd:
<plugin>
<groupId>org.assertj</groupId>
<artifactId>assertj-assertions-generator-maven-plugin</artifactId>
<version>2.2.0</version>
<configuration>
<classes>
<param>org.bonitasoft.engine.business.application.impl.ApplicationLinkImpl</param>
<param>org.bonitasoft.engine.business.application.xml.ApplicationLinkNode</param>
<param>org.bonitasoft.engine.business.application.xml.ApplicationNodeContainer</param>
</classes>
<generateAssertions>true</generateAssertions>
<generateBddAssertions>false</generateBddAssertions>
<generateSoftAssertions>false</generateSoftAssertions>
<generateJUnitSoftAssertions>false</generateJUnitSoftAssertions>
<hierarchical>false</hierarchical>
<targetDir>application-model/src/test/java</targetDir>
<generateAssertionsForAllFields>true</generateAssertionsForAllFields>
</configuration>
</plugin>- Then run the following command to regenerate the Assert classes:
./mvnw assertj:generate-assertions -f application-model/pom.xml(adapt-fto your project) - Remove the
@javax.annotation.Generatedannotation from the generated classes and the generatedAssertions.javafile. - Format with
./mvnw spotless:apply. - Make sure the generated classes satisfy your needs and that you did not corrupt other classes.
- Restore the original state of the project's pom.xml file.
This project uses the gitflow-maven-plugin for release management. Releases are created using the GitHub Actions workflow.
- develop: Main development branch for future releases
- support/A.B.x: Maintenance branches for older versions (e.g., support/1.0.x, support/1.1.x, support/2.0.x)
- master: Not used (removed, use support branches for maintenance)
Releases are created via the GitHub Actions workflow Release
| Parameter | Description | Default | Example |
|---|---|---|---|
| version | Version to release (leave empty to use current pom.xml version) | empty | 1.2.2 |
| nextDevelopmentVersion | Next development version (leave empty to use versionDigitToIncrement policy) | empty | 1.2.3-SNAPSHOT |
| versionDigitToIncrement | Version digit to increment in next development version | 2 (patch) |
0=major, 1=minor, 2=patch |
Patch Release (X.Y.Z) - Bug fixes and minor updates
- Set
versionDigitToIncrement: 2 (default) - Example:
1.2.2 → 1.2.3-SNAPSHOT - Use for: Support branches, hotfixes
Minor Release (X.Y.0) - New features, backward compatible
- Set
versionDigitToIncrement: 1 - Example:
1.2.2 → 1.3.0-SNAPSHOT - Use for: Regular releases from develop
Major Release (X.0.0) - Breaking changes
- Set
versionDigitToIncrement: 0 - Example:
1.2.2 → 2.0.0-SNAPSHOT - Use for: Major version bumps
When you run the workflow from any branch (develop or support/*), it will:
- Update version to release version (removes -SNAPSHOT)
- Commit: "chore(release): Update versions for release"
- Create git tag (e.g.,
1.2.2) - Update version to next development version
- Commit: "chore(release): Update for next development version"
- Push commits and tags to GitHub
Note: The workflow does NOT create a release branch - it performs the release directly on the branch you selected.
When releasing from a support branch, you should manually cascade merge the changes up to newer branches and develop.
Example: After doing a release from support/1.0.x, merge support/1.0.x into support/1.1.x, then merge
support/1.1.x into support/1.2.x, and so on into develop.