-
Notifications
You must be signed in to change notification settings - Fork 44
Basics
The Flux client library provides constructs to express and maintain workflows using vanilla Java code.
####Download To begin, include the maven dependency in your code (currently available in Flipkart's internal artifactory)
<dependency>
<groupId>com.flipkart.flux</groupId>
<artifactId>client</artifactId>
<version>1.0-SNAPSHOT</version>
<dependency>
<repository>
<snapshots/>
<id>snapshots</id>
<name>libs-snapshots</name>
<url>http://artifactory.nm.flipkart.com:8081/artifactory/libs-snapshots-local</url>
</repository>
Some of the basic constructs are as follows
####@WorkFlow
A method can be marked with the @Workflow
annotation to indicate that it is a workflow definition.
Note that a method annotated with @Workflow
must return void
@Workflow
supports the following parameters:
Parameter Name | Mandatory | Description |
---|---|---|
version | yes | Flux runtime will ensure that @Tasks of the same version are executed as part of workflow orchestration |
####@Task
Any method can be marked with the @Task
annotation. This annotation can be used to denote re-entrant, stateless methods capable of executing a single, logical piece of work. As will be explained later, a @Task
method can be executed on any JVM in a flux container. Thus, it is important that these methods work only on the input data and do not rely on any other state variables of a class.
@Task
supports the following parameters:
Parameter Name | Mandatory | Description |
---|---|---|
version | yes | Flux runtime will ensure that @Tasks of the same version are executed as part of workflow orchestration |
timeout | yes | Specifies the time limit given for task execution |
retries | no; default 0 | Specifies the number of times the orchestrator should re-attempt failed/timed out tasks |
User code can use javax.inject annotations. These will be read and used by Guice, the DI framework used by Flux.
For example, the tasks to perform within a workflow would be part of various classes which can be DI-ed in the Workflow definition class that specifies the workflow using @Workflow
annotation