微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

连续按下两次时,用于运行流程的按钮将失败

如何解决连续按下两次时,用于运行流程的按钮将失败

下面是我的控制器

Controller<ClassA,ClassB,ClassC>* myController = new Controller<ClassA,ClassC>(*a,*b,*c); 
myController->setValues(32.3);
double commonValue = myController->getValue();

Visualforce页面

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';
    }
}

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

<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>

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

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

enter image description here

解决方法

问题在于您正在创建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();
    }
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。