Infinitic is a scalable workflow engine for distributed services. It shines particularly by making complex orchestration simple. It can be used to reliably orchestrate microservices, manage distributed transactions, operates data pipelines, builds user-facing automation, etc.
Full Changelog: https://github.com/infiniticio/infinitic/compare/v0.13.1...v0.13.2
Full Changelog: https://github.com/infiniticio/infinitic/compare/v0.13.0...v0.13.1
This version includes a backward compatibility fixed in version 0.13.1. We recommend upgrading directly to version 0.13.1 from 0.12.3 or below.
CloudEvents (beta): Infinitic now expose its events in CloudEvents json format. This allow users to build their own dashboards, logs, or even add hooks to some specific events.
Examples of events exposed are:
startMethod
, cancelMethod
, methodCanceled
, methodcompleted
, methodFailed
, methodTimedOut
taskDispatched
, taskCompleted
, taskFailed
,taskCanceled
, taskTimedOut
remoteMethodDispatched
,remoteMethodCompleted
,remoteMethodFailed
,remoteMethodCanceled
,remoteMethodTimedOut
.executorDispatched
, executorCompleted
, executorFailed
Each event is accompanied by relevant data, such as the error details for a taskFailed
event or the arguments for a remoteMethodDispatched
event.
This feature is currently in beta and may be refined based on user feedback.
Delegated Tasks: In certain cases, tasks cannot be processed directly by a worker, and instead, the task invokes another system for processing, typically through an HTTP call. If the external system can process the task synchronously and return the output (or report a failure), the process works smoothly. However, if the external system cannot provide a synchronous response, the situation becomes ambiguous, leaving Infinitic without a clear indication of whether the task has been completed or failed, nor an ability to retrieve the result. Starting with version 0.13.0, Infinitic introduces a "delegated task" feature. This feature, enabled through an annotation on the task, informs Infinitic that the method's completion does not signify the task's completion and that it should await asynchronous notification of the task's outcome. To support this functionality, a new completeDelegatedTask
method has been added to the InfiniticClient
.
InfiniticWorker now offers new methods that allow for the programmatic registration of services and workflows, bypassing the need for configuration files. While initially used for internal testing, this feature can also be beneficial in scenarios where using configuration files is impractical.
The context
property of the Task
singleton, which was accessible during task execution, has been removed due to its redundancy with other properties.
In workers,
registerService
has been replaced by 2 methods registerServiceExecutor
and registerServiceTagEngine
.registerWorkflow
has been replaced by 3 methods registerWorkflowExecutor
, registerWorkflowTagEngine
, and registerWorkflowStateEngine
.The following libraries are no longer exposed by Infinitic. If you were using them, you must now add them to the dependencies of your project:
org.jetbrains.kotlinx:kotlinx-serialization-json
com.jayway.jsonpath:json-path
com.sksamuel.hoplite:hoplite-core
taskId
can be reliably used as an idempotent key. This is because Infinitic will generate the same value for taskId
, even if the task creation process is executed repeatedly.shutdownGracePeriodInSeconds
setting in the worker configuration.getSecondsBeforeRetry
, which defines the task retry strategy. When the value is less than or equal to 0, retries will now occur immediately. Previously, no retry would be attempted in this scenario.methodId
is not specified when using CompleteTimers
client method, all timers of the workflow will now be completed. Previously, only the timers on the main method were completed in the absence of a specified methodId
.maxPoolSize
has been introduced to the MySQL storage configuration. This option allows you to specify the maximum number of connections in the connection pool.tagEngine
setting can now be configured under serviceDefault
.tagEngine
and workflowEngine
settings can now be configured under workflowDefault
.service
and workflow
in the worker configuration, which were used to establish default values for services and workflows, have been renamed. The updated names are serviceDefault
and workflowDefault
, respectively.fromConfig
method for clients and workersFull Changelog: https://github.com/infiniticio/infinitic/compare/v0.12.1...v0.12.2
GetIds
on client for inMemory implementationFull Changelog: https://github.com/infiniticio/infinitic/compare/v0.12.0...v0.12.1
Full Changelog: https://github.com/infiniticio/infinitic/compare/v0.11.7...v0.12.0
fix #184
With the help of @cyrilStern, the workflows' state can now be stored in a compressed format
Bump dependencies version:
Bumps dependencies version:
@Enach: Improve MySQL table structure with an additional index on KeySet