変換をカスタマイズして、変換タスクの完了度に応じて「進行状況」ウィンドウの進行状況表示バーが更新されるようにすることができます。
このフィーチャーにより、変換を行っているユーザーに、変換作業の完了度についてのより正確な情報を提供できます。
このタスクについて
概念上、進行状況表示バーを作業単位で等分することができます。 デフォルトでは、変換のコアが進行状況表示バーの
x+1 作業単位を定義します。ここで
x は変換が起動するユーティリティーの数を表します。そこに、変換自体を表す 1 作業単位を足します。 次の例を考えてみましょう。
- 変換により起動されるユーティリティーがない場合、変換のコアは進行状況表示バーに 1 作業単位を定義します。 進行状況表示バーは、変換の完了度を示します。
- 変換により起動されるユーティリティーが 2 つある場合、変換のコアは進行状況表示バーに 3 作業単位を定義します。 ユーティリティーが完了すると、変換のコアは進行状況表示バーを 1 つの作業単位分、更新します。 変換がタスクを完了するに従い、変換の作成者が各タスクに割り当てた作業単位数により、進行状況表示バーが更新されます。
変換に割り当てられる進行状況表示バーの作業単位では、作業単位を複数のより小さな作業単位に分割して、進行状況表示バーの更新を制御できます。 それぞれの小さな作業単位は、変換が完了したタスクを表します。
通常、変換は複数のタスクを完了します。各タスクは、規則、抽出、または変換式などの変換要素により完了されます。
変換の作成者であるユーザーは、変換がタスクを完了するポイントを特定できます。 これらのポイントでは、変換がタスクを完了すると進行状況表示バーを更新するコードを追加できます。
変換の実装について詳しく理解している場合は、次のいずれかの方法で、進行状況表示バーを更新するコードを追加できます。
- IProgressMonitor インターフェースからメソッドを起動します。 メソッドは、次の場所から起動できます。
変換ソースの解析と、出力の生成という 2 つのタスクを完了する基本的な変換を考えてみましょう。出力は、100 ファイルと仮定します。 この例では、
PROGRESS_MONITOR_WORK_UNITS プロパティーを 200 に設定します。 進行状況表示バーの作業単位を、次のように割り当てます。
- 変換によるソースの解析が完了したら、進行状況表示バーを PROGRESS_MONITOR_WORK_UNITS プロパティーで指定した単位の半分進めます。
- 変換により出力が生成されたら、生成された成果物ごとに、進行状況表示バーを 1 単位進めます。
- com.ibm.xtools.transform.core.UpdateProgressMonitorRule 規則のインスタンスを実行します。
ソース・モデルで (例えばクラスの抽出を起動することによって) クラスを処理する変換式を含む変換を考えてみます。 ソース・モデルに応じて、この変換式では UML クラスまたはコード・クラスが処理されます。 ソース・モデルの各クラスで、クラスの変換式が実行されます。
クラスの処理が完了すると、変換式は com.ibm.xtools.transform.core.UpdateProgressMonitorRule 規則のインスタンスを実行して、PROGRESS_MONITOR_INCREMENT プロパティーで指定した単位数の分だけ、進行状況表示バーを更新します。
ステップ 3 の表に示したコード・フラグメントは、クラスを処理し、com.ibm.xtools.transform.core.UpdateProgressMonitorRule 規則のインスタンスを実行する変換式の骨組みを表しています。 コード・フラグメントのコメントでは、変換式が完了するタスクおよび完了する順序を説明しています。
変換の実行時に、より正確に進行状況表示バーが更新されるようにするには、次の手順を実行します。
タスクの結果
進行状況表示バーの更新をテストするには、次の手順を実行します。
- ランタイム・ワークベンチを起動します。
- ランタイム・ワークベンチで、変換が実行する変換構成を作成します。
- 変換を実行します。
変換が実行されると、「進行状況」ウィンドウの進行状況表示バーは、変換コードにより進行状況表示バーが更新されない場合よりも、正確に更新されます。