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

回答

1

你應該從不阻止活動的execute()方法。這樣做會主動損害工作流程並阻止它被保存並可能被卸載。

相反,您應該使用NativeActivityContext創建書籤,並將用戶重定向到某個UI頁面,並與書籤名稱異步。稍後,當用戶完成用戶界面時,用戶將恢復書籤並傳遞輸入的數據。現在這可能是幾天甚至幾周後。當書籤恢復時,工作流被重新加載並且書籤恢復處理程序被調用,並且您可以驗證輸入並決定要做什麼。當您接受輸入爲有效時,您可以創建多個重新收藏書籤,您需要明確關閉它。

+0

莫里斯 - 感謝您的洞察力。我很感激!我將如何重定向到書籤中的某個用戶界面?此外,使用多個恢復書籤,我是否可以在不同的活動中創建這些多個書籤,並且即使該活動已經運行,也能夠從其中任何一個恢復書籤?再次感謝您的幫助。 –

+0

書籤總是綁定到單個活動,所以如果您需要多個可能的恢復點(例如使用Pick),則需要創建多個書籤並恢復適當的書籤。 – Maurice

+0

Maurice - 如何手動恢復書籤?例如,如果在活動3中接收到用戶輸入後,將調用書籤恢復處理程序,並將輸入驗證爲無效。我想回到活動3以讓用戶重新輸入有效數據,甚至移動到活動2讓他們「重新啓動該部分」。我將如何做到這一點?謝謝! –