わかりました、解決策を思いつきました。重要なのは、フロー バッキング Bean @PostConstruct を使用するのではなく、要求パラメーターを取得できるフロー初期化子を使用することでした。
そのため、フローを開始するフォームで追加の入力を使用しています。
<h:form id="myForm" prependId="false">
<h:commandLink value="Enter myFlow" action="my-flow"/>
<h:inputHidden id="parameter" name="parameter" value="8"/>
</h:form>
私のフロー定義では、フロー バッキング Bean でいくつかのメソッドを呼び出して、フローのイニシャライザを定義しました。
@Produces @FlowDefinition
public Flow defineFlow(@FlowBuilderParameter FlowBuilder flowBuilder) {
String flowId = "my-flow";
flowBuilder.id("", flowId);
flowBuilder.initializer("#{myFlowBean.startFlow()}");
...
}
次に、バッキング Bean 内のパラメーターを取得しました。
@Named
@FlowScoped("my-flow")
public class MyFlowBean implements Serializable {
public void startFlow() {
String parameter = FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap().get("parameter");
//now do sthg with the parameter, such as fetching data from an injected service
....
}
}
もちろん、フロー定義レベルでそれを行うことも可能です
flowBuilder.initializer("#{trainingFlowBean.startFlow(param['parameter'])}");
startFlow メソッドにパラメータがあるだけです
public void startFlow(String parameter) {
...
}