Note: runFlow allows you to run all the steps in the flow or only the steps you specify.
package com.marklogic.hub.flow;
import com.marklogic.hub.ApplicationConfig;
import com.marklogic.hub.HubConfig;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.WebApplicationType;
import javax.annotation.PostConstruct;
import java.util.Arrays;
public class MyApp {
// Get a HubConfig instance.
@Autowired
HubConfig hubConfig;
// Get a FlowRunner instance.
@Autowired
FlowRunner fr;
@PostConstruct
void runUserFlows() {
/*
* After Spring creates the HubConfig object and the project is initialized with
* createProject(String), you can use setter methods to change the HubConfig properties
* and then call the refreshProject() method which will load the HubConfig object with values
* from gradle.properties (optionally overridden with gradle-{env}.properties) and the setters.
*/
hubConfig.createProject("/path/to/your/project");
hubConfig.withPropertiesFromEnvironment("local");
hubConfig.refreshProject();
// Runs the entire flow.
RunFlowResponse testFlowResp = fr.runFlow("testFlow");
// Runs only the specified steps.
RunFlowResponse mapFlowResp = fr.runFlow("mapFlow", Arrays.asList("1","3"));
// Wait for the flow to end.
fr.awaitCompletion();
}
public static void main(String[] args) {
// Start the Spring application.
SpringApplication app = new SpringApplication(MyApp.class, ApplicationConfig.class);
app.setWebApplicationType(WebApplicationType.NONE);
app.run();
}
}