运行 按钮连续按两次时流程失败
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();
}
}
下面是我的控制器
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();
}
}