ナレッジベース

Timeoutプロパティを持たないアクティビティの使用法について

多くのアクティビティは 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 をスローすることができます。
  • image2018-5-11_17-53-22

 

  •  このとき、Parallel アクティビティのプロパティ
  •  CompleteCondition には True を設定することが必要で
  •  す。これにより、Parallel アクティビティ に含まれる分岐
  •  のいずれかの処理が終了すると、Parallel アクティビティ
  •  全体の処理が終了する動作となります。False を設定した
  •  場合には Parallel アクティビティに含まれる分岐の全てが
  •  終了しなければ Parallel アクティビティが終了しないめ、
  •  本記事での用途に適しません。

image2018-5-11_17-51-50

 

 

Invoke Workflow アクティビティを使用する例

 

個別のアクティビティではなく、対象ワークフロー全体の処理から抜けることもできます。この場合には、Invoke Workflow の Timeout プロパティに適切な時間を設定することが必要です。