多くのアクティビティは Timeout プロパティを持っており、設定した時間内に処理が終了できなかった場合には例外がスローされます。しかし、Timeout プロパティを持たないアクティビティもあります。そのようなアクティビティを使ってワークフローを実装した場合、対象のアプリケーションを操作できないとワークフローの処理が進まなくなってしまうことがあります。
このような症状を回避するには、Parallelアクティビティを使います。本記事では、そのようなParallelアクティビティの使用方法を説明します。
Timeout プロパティを持たない
アクティビティの例
- Maximize Window
- Minimize Window
- Send Outlook Email Message
- Excel Application Scope
Parallelアクティビティを使用する例
- Excel Application Scope アクティビティは Timeout プロ
- パティを持たないため、何らかの原因により処理が止まる
- とそのまま次の処理に進めなくなる可能性があります。
- 下記サンプルのように Parallel アクティビティを使用する
- と、止まってしまった処理から抜けることができます。
- Parallel アクティビティの中には実行したい (Timeout
- プロパティを持たない) アクティビティを配置すると並行
- して、Delay アクティビティと Throw アクティビティを
- 含む Sequence を配置しておきます。これにより、Delay
- アクティビティの Duration プロパティに設定した時間が
- 過ぎたら、Throw アクティビティにより
- TimeoutException をスローすることができます。
- このとき、Parallel アクティビティのプロパティ
- CompleteCondition には True を設定することが必要で
- す。これにより、Parallel アクティビティ に含まれる分岐
- のいずれかの処理が終了すると、Parallel アクティビティ
- 全体の処理が終了する動作となります。False を設定した
- 場合には Parallel アクティビティに含まれる分岐の全てが
- 終了しなければ Parallel アクティビティが終了しないめ、
- 本記事での用途に適しません。
Invoke Workflow アクティビティを使用する例
個別のアクティビティではなく、対象ワークフロー全体の処理から抜けることもできます。この場合には、Invoke Workflow の Timeout プロパティに適切な時間を設定することが必要です。