v7.2.0
Highlights
- Expedited clean shutdown for workflows that run many consequtive states.
- Add support for custom logic when nFlow engine thinks the workflow state processing may be stuck.
- Convert all exceptions to proper error response messages in all nFlow REST API endpoints. Applies to both
nflow-rest-api-jax-rs
andnflow-rest-api-spring-web
. - Support for Guice.
Details
nflow-engine
- When shutdown is requested, stop processing workflows immediately after the current state has been executed.
- Add
WorkflowExecutorLister.handlePotentiallyStuck(Duration processingTime)
to support custom handling when nFlow engine thinks the workflow state processing may be stuck. If any registered listener implementation returns true from this method, nFlow will interrupt the processing thread. The default implementation returns false. - Throw
IllegalArgumentException
instead ofIllegalStateException
when trying to update workflow instance state to an invalid value. - Throw
IllegalArugmentException
instead ofRuntimeException
when trying to insert workflow instance with unknown type or with a state that is not a start state. - Make
StateVariableTooLongException
extendIllegalArgumentException
instead ofRuntimeException
. - Fix SQL deadlocks in workflow instance polling for PostgreSQL with skip locked.
- Add
EngineEnvironmentModule
andEngineModule
for Guice support. CallNflowController.start()
andNflowController.stop()
to start and stop nFlow engine, asnflow.autostart
andnflow.autoinit
configuration options are not supported with Guice. - MySQL/MariaDB: use compressed table format for archives.
- PostgreSQL/SQLServer: use partial (not null) indices for parent hierarchy.
- PostgreSQL: tune fillfactors of tables and indices.
- PostgreSQL: reorder table column order to minimize space lost on padding. Only affects new tables.
- Drop
(type, external_id, executor_group)
unique constraint fromnflow_archive_workflow
table. Allows archiving workflow instances with same values multiple times. Only one instance is allowed in production table though. - Dependency updates:
- spring 5.2.5
- jackson 2.10.3
- javassist 3.27.0
- jetty 9.4.28
- cxf 3.3.6
- metrics 4.1.6
- netty 0.9.6
- swagger 1.6.1
- lang3 3.10
- mariadb 2.6.0
- mssql 8.2.2
- postgresql 42.2.10
- junit 5.6.2
- mockito 3.3.3
- spotbugs 4.0.2
- hibernate 6.1.4
- commons-lang3 3.10
nflow-rest-api-jax-rs
andnflow-rest-api-spring-web
- Convert
IllegalArgumentException
toHTTP 400 Bad Request
with a valid JSON response body in all endpoints. - Convert
NflowNotFoundException
toHTTP 404 Not Found
with a valid JSON response body in all endpoints. - Convert all other throwables to
HTTP 500 Internal Server Error
with a valid JSON response body in all endpoints.
- Convert
nflow-explorer
- Dependency updates:
- swagger-ui 2.2.10
- es5-shim 4.5.14
- npm 6.14.4
- autoprefixer 9.7.5
- grunt 1.1.0
- grunt-contrib-imagemin 4.0.0
- Dependency updates: