Wondering how you programmatically create a flow and use it?
package flow;
import java.io.Serializable;
import javax.enterprise.inject.Produces;
import javax.faces.flow.Flow;
import javax.faces.flow.builder.FlowBuilder;
import javax.faces.flow.builder.FlowBuilderParameter;
import javax.faces.flow.builder.FlowDefinition;
public class EnterFlow implements Serializable {
private static final long serialVersionUID = -7623501087369765218L;
@FlowDefinition
@Produces
private Flow defineFlow(@FlowBuilderParameter FlowBuilder flowBuilder) {
FlowBuilder builder = flowBuilder.id("", "flow");
builder.viewNode("enter", "/enterflow/stepA.xhtml").markAsStartNode();
Flow flow = builder.getFlow();
return flow;
}
}
And the page to enter the flow
<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core">
<h:head>
<title>Annotated Enter sample</title>
</h:head>
<h:body>
<h1>Annotated Enter sample</h1>
<p>
To enter the flow we use the 'flow' id as defined in 'EnterFlow.java'.
</p>
<h:form>
<h:commandButton action="flow" value="Enter"/>
</h:form>
</h:body>
</html>
And the first page in the flow
<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core">
<h:head>
<title>Step A</title>
</h:head>
<h:body>
<h1>Entered flow using start node (which is stepA.xhtml)</h1>
<h:form>
<h:commandButton action="stepB" value="Step B"/>
</h:form>
</h:body>
</html>
Posted November 8, 2013