Workflow Stubs

Infinitic is still in active development. Subscribe here to follow its progress.

The Infinitic client manages workflows through stubs built from the workflow interface.

Here is an example of workflow interface from our Hello World app:

public interface HelloWorld {
    String greet(@Nullable String name);
}
interface HelloWorld {
    fun greet(name: String?): String
}

Using this interface, an Infinitic client can create stubs that behaves syntactically as instances of such workflow. Stubs are used to trigger actions such as:

  • starting a new workflow
  • cancelling running workflows
  • sending a signal to running workflows
  • starting a new method on running workflows

Stub of new workflow

The client has a newWorkflowmethod to create the stub of a new workflow:

HelloWorld helloWorld = client.newWorkflow(HelloWorld.class);
val helloWorld : HelloWorld = client.newWorkflow(HelloWorld::class.java)

We can also add tags to this strub. Those tags will be attached to workflow instances started with this stub.

Set<String> tags = new HashSet<>();
tags.add("foo");
tags.add("bar");

HelloWorld helloWorld = client.newWorkflow(HelloWorld.class, tags);
val helloWorld : HelloWorld = client.newWorkflow(HelloWorld::class.java, tags = setOf("foo", "bar"))

The stub of new workflow can be used to start a new workflow instance. It can be used multiple times to start multiple instances.

Running workflow stub

A workflow is said running, as long as it is neither completed neither canceled.

We can create the stub of a running workflow from its id:

HelloWorld helloworld = client.getWorkflowById(HelloWorld.class, id);
val helloworld: HelloWorld = client.getWorkflowById(HelloWorld::class.java, id)

Alternatively, we can create a stub targeting all running workflow having a given tag:

HelloWorld helloworld = client.getWorkflowByTag(HelloWorld.class, "foo");
val helloworld: HelloWorld = client.getWorkflowByTag(HelloWorld::class.java, tag = "foo")

The stub of running workflows can be used to apply actions to the targeted workflows:

  • cancelling
  • sending signals
  • starting new methods

Creating a stub has no side effect. It just creates an object that contains the provided info.

Edit this page on GitHub Updated at Sun, May 22, 2022