运行 按钮连续按两次时流程失败

Button to run a flow fails when I press it twice consecutively

下面是我的控制器

public class FlowController {
    public String flowResult {get; set;}
    Map<String, Object> inputs = new Map<String, Object>();
    public Integer ICP_Count {get; set;}
    public String dbHtml {get; set;}

    Flow.Interview.Flow_ICP_Component_Update_Workflow myFlow =
      new Flow.Interview.Flow_ICP_Component_Update_Workflow (inputs);

    public void start() {
        myFlow.start();
        ICP_Count = Integer.valueOf(myFlow.getVariableValue('ICP_Count'));
        flowResult = 'Flow Completed';
    }
}

Visualforce 页面

<apex:page controller="FlowController">
    <apex:pageBlock title="ICP Component Flows">
        <apex:form>
            <apex:commandButton action="{!start}" value="UpdateComponentWorkflow" reRender="text"/>
            <br></br>
            <apex:outputLabel id="text">Total ICPs Processed = {!ICP_Count}</apex:outputLabel>
            <br></br>
            <apex:outputLabel id="text3">FlowResult = {!flowResult}</apex:outputLabel>
        </apex:form>
    </apex:pageBlock>
</apex:page>

当我第一次单击“UpdateComponentWorkflow”按钮时,流程似乎 运行 正常并更新了“已处理的 ICP 总数”字段。但是,它不会更新“FlowResult”。当我再次单击该按钮时,出现以下错误

Interview already started.
Error is in expression '{!start}' in component <apex:commandButton> in page flow_jobs: Class.Flow.Interview.start: line 51, column 1
Class.FlowController.start: line 15, column 1

An unexpected error has occurred. Your solution provider has been notified. (Flow)

要使按钮再次起作用,我必须刷新页面。我的假设是流程(自动启动)未正确结束或与 VF 页面的生命周期有关。我想要一些关于这方面的指导。

编辑:我认为如果我展示流程图会有帮助

问题是您正在创建 Flow 的单例实例,您在第一次单击该按钮时启动该实例。然后,当您再次单击该按钮时,您将在 Flow 的同一实例上调用 start()。

解决这个问题的方法是在每次单击按钮时实例化 Flow,如下所示:

public class FlowController {
    Flow.Interview.Flow_ICP_Component_Update_Workflow myFlow;
    Map<String, Object> inputs = new Map<String, Object>();

    public void start() {
        myFlow = new Flow.Interview.Flow_ICP_Component_Update_Workflow(inputs);
        myFlow.start();
    }
}