1

我需要弄清楚是否有可能,或者是否有更好的解决方案来解决我的问题。下面是我的一个场景。在活动的 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);
    }
4

1 回答 1

1

永远不应阻止活动的 Execute() 方法。这样做会积极损害工作流程并防止其被持久化并可能被卸载。

相反,您应该使用 NativeActivityContext 创建一个书签,并使用书签名称将用户异步重定向到某个 UI 页面。稍后,当用户完成 UI 时,用户恢复书签并传递输入的数据。现在这可能是几天甚至几周之后。当书签恢复时,工作流会重新加载并调用书签恢复处理程序,您可以验证输入并决定要做什么。您可以创建多个恢复书签,当您接受输入为有效时,您需要明确关闭这些书签。

于 2011-06-17T16:50:38.583 回答