Skip to content

v6.0.0

Compare
Choose a tag to compare
@efonsell efonsell released this 26 Nov 10:37
· 619 commits to master since this release

Highlights

  • Add priority to workflow instances
  • Use constructor injection instead of field or setter injection in nFlow classes
  • Separate workflow definition scanning from WorkflowDefinitionService
  • Remove deprecated WorkflowInstanceInclude.STARTED enum value
  • Remove deprecated AbstractWorkflowExecutorListener, use WorkflowExecutorListener instead
  • Remove deprecated WorkflowInstance.setStarted, use WorkflowInstance.setStartedIfNotSet instead
  • Add MariaDB support
  • Add Kotlin example using nFlow with Spring Boot, and integrated nFlow Explorer
  • Expose wakeup via REST-API
  • Update database indices to match workflow instance polling code
  • Add new configuration option nflow.db.disable_batch_updates

Details

  • nflow-engine
    • Add priority two byte integer to the nflow_workflow table. When the dispatcher chooses from many available scheduled workflow instances it primarily (unfairly) picks the workflow instances with the largest priority values, and for workflows with the same priority, the ones with oldest next_activation timestamp. Priority defaults to 0 and can also be negative. Default priority value for the new workflow instances can be set per workflow definition (WorkflowSettings.Builder.setDefaultPriority), and overridden per workflow instance (WorkflowInstance.Builder.setPriority). Requires database migration, see database update scripts for details.
    • Separate workflow definition scanning from WorkflowDefinitionService by introducing WorkflowDefinitionSpringBeanScanner and WorkflowDefinitionClassNameScanner. This allows breaking the circular dependency when a workflow definition uses WorkflowInstanceService (which depends on WorkflowDefinitionService, which depended on all workflow definitions). This enabled using constructor injection in all nFlow classes.
    • Add disableMariaDbDriver to default MySQL JDBC URL so that in case there are both MySQL and MariaDB JDBC drivers in the classpath then MariaDB will not steal the MySQL URL.
    • Add support for nflow.db.mariadb profile.
    • Update database indices to match current workflow instance polling code.
    • Create indices for foreign keys in MS SQL database.
    • Fix create database scripts to work with empty database.
    • Add nflow.db.disable_batch_updates (default false) configuration parameter to make it possible to force use of multiple updates even if batch updates are supported by the database.
    • Dependency updates:
      • reactor.netty 0.9.1.RELEASE
      • jackson 2.10.1
      • mysql-connector-java 8.0.18
      • mariadb jdbc 2.4.4
      • postgresql jdbc 42.2.8
      • mssql-jdbc 7.4.1.jre8
      • metrics 4.1.1
      • junit5 5.5.2
      • hikaricp 3.4.1
      • jetty 9.4.20.v20190813
      • apache-cxf 3.3.4
      • slf4j 1.7.29
      • spring 5.2.1.RELEASE
      • hibernate-validator 6.1.0.Final
      • joda-time 2.10.5
      • swagger 1.5.24
      • mockito 3.1.0
      • hamcrest 2.2
      • h2 1.4.200
      • javassist 3.26.0-GA
      • jetty 9.4.21.v20190926
  • nflow-explorer
    • Dependency updates
      • nodejs 10.16.3
      • npm 6.11.3
      • lodash 4.7.15
  • nflow-examples
    • Update Spring Boot examples' dependencies
      • Spring Boot 2.1.7.RELEASE
      • nFlow 5.7.0
      • Gradle 5.5.1
  • New REST-API endpoint to wake up workflow instance sleeping in specified states:
    PUT /nflow/api/v1/workflow-instance/5/wakeup
  • Improve error logging in WorkflowStateProcessor.
  • Replace FindBugs with SpotBugs.
  • Drop index from main table that was only used for archiving purposes.