Run a Flow Using the Data Hub Java API

You can programmatically run a flow by using the MarkLogic Data Hub Java API in a Java application, such as an external orchestration tool or a custom web application.

The FlowRunner class provides a runFlow method which does not require project files in the local filesystem. This method accepts a single parameter of type FlowInputs and is the preferred method for running flows programmatically.


  1. In your build configuration file, declare the dependency on MarkLogic Data Hub Java API.
       dependencies {
       <dependency org='com.marklogic' name='marklogic-data-hub' rev='5.2.1'>
        <artifact name='$AID' ext='pom'></artifact>
  2. Copy the following code and customize it according to your needs.
       package org.example;
      import com.marklogic.hub.flow.FlowInputs;
      import com.marklogic.hub.flow.FlowRunner;
      import com.marklogic.hub.flow.RunFlowResponse;
      import com.marklogic.hub.flow.impl.FlowRunnerImpl;
      public class Main {
          public static void main(String[] args) {
              // Create a FlowRunner instance.
              FlowRunner flowRunner = new FlowRunnerImpl("myHost", "myUser", "myPassword");
              // Specify the flow to run.
              FlowInputs inputs = new FlowInputs("my-flow-name");
              // To run only a subset of the steps in the flow, uncomment the following line and specify the sequence numbers of the steps to run.
              // inputs.setSteps(Arrays.asList("2,3,4"));
              // Run the flow.
              RunFlowResponse response = flowRunner.runFlow(inputs);
              // Wait for the flow to end.
              // Display the response.
              System.out.println("Response: " + response);
  3. Run your code.


The dh-5-example project in GitHub includes the following example code files: