我需要弄清楚是否有可能或者我的问题有更好的解决方案。以下是我的情景。在活动的Execute方法中,我需要能够运行3种不同的方法。第一个将呈现UI(HTML或VXML)并等待用户输入。在这个阶段,我预计工作流程会持续存在(如果可能的话)。第二种方法将采用用户输入的数据并对其进行验证。如果输入有效,则将运行下一个方法,该方法将处理数据。如果输入无效,则需要再次显示UI。这是在执行方法中可能的事情,还是有更好的解决方案?
protected override void Execute(NativeActivityContext context)
{
// Present UI and get user's input
// IRTFunctions.PresentUI(itemRefName);
// Input validation
// IRTFunctions.ValidateInput(itemRefName);
// Additional logic, like setting additional fields
// IRTFunctions.ProcessAdditionalLogic(itemRefName);
}
答案 0 :(得分:1)
您应该永远不会阻止活动的Execute()方法。这样做会主动损害工作流程并防止其被持久化并可能被卸载。
相反,您应该使用NativeActivityContext创建书签,并将用户与书签名称异步重定向到某个UI页面。稍后,当用户完成UI时,用户恢复书签并传递输入的数据。现在这可能是几天甚至几周之后。当书签恢复时,重新加载工作流并调用书签恢复处理程序,您可以验证输入并决定要做什么。您可以创建多个恢复书签,当您接受输入有效时,需要显式关闭。