在nativeactivity的execute方法中持久化

时间:2011-06-17 15:56:19

标签: workflow-foundation workflow-foundation-4 workflow-activity

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

1 个答案:

答案 0 :(得分:1)

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

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