1

何かが可能かどうか、または私の問題に対するより良い解決策があるかどうかを判断する必要があります。以下は私が持っているシナリオです。アクティビティの Execute メソッド内で、3 つの異なるメソッドを実行できる必要があります。1 つ目は UI (HTML または VXML) を表示し、ユーザー入力を待ちます。この段階では、ワークフローが持続することを期待しています (可能であれば)。2 番目の方法は、ユーザーが入力したデータを取得して検証します。入力が有効な場合、データを処理する次のメソッドが実行されます。入力が無効な場合、UI を再度表示する必要があります。これは execute メソッド内で可能なことですか、それともこのシナリオに対するより良い解決策はありますか?

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 に答える