自動タスク要素

この記事には、以下のトピックが含まれています。
casm173
この記事には、以下のトピックが含まれています。
自動タスクは、自動プロセスで実行するステップを定義すれば作成できます。 自動タスクは、エンド ユーザのコンピュータで、アナリストやエンド ユーザの処理を必要とせずに実行される特定のアクションをあらかじめ定義したルーチンです。 遠隔測定情報の収集、問題の診断、解決策の実装といったルーチンがよくあります。
自動タスクは以下の要素で構成されています。
  • タスク設定
    エンド ユーザ インターフェースに適用する、タイトル、説明、ステップ ウィンドウの寸法、HTML ヘッダとフッタ、CSS スタイル シートを指定します。
  • 依存関係
    イメージや CSS ファイルなど、タスクが従属するライブラリと静的コンテンツ アイテムを指定します。
  • タスク ステップ
    各ステップの実行コードを指定します。 自動タスク ステップ テンプレートを選択してステップを作成し、必要に合わせてそれらを変更します。
  • セキュリティ設定
    読み書き許可、レジストリ許可など適切なセキュリティ設定を指定し、エンド ユーザのコンピュータで自動タスクを実行します。
  • XSDF ファイル
    XML スキーマに従って XSDF ファイルに保存されている自動タスク定義を指定します(XML スクリプト定義フォーマット)。 XSDF ファイルには、すべての自動タスク設定、従属、セキュリティ設定、ステップ コード情報が含まれています。
    自動タスクが特定のライブラリに従属している場合は、従属情報だけでなく、そのライブラリのすべてのスクリプト コードが XSDF ファイルに書き込まれます。 XSDF ファイルを自動タスク エディタにロードする際、または CA SDM にインポートする際にも、従属はインポートされます。ただし、ターゲット環境に同じ従属ライブラリの新しいバージョンが存在している場合は、インポートされません。 従属静的コンテンツについても同じことが言えます。 スクリプト ライブラリは、それ自体を XSDF ファイルに保存し、システム間で配布することも可能です。
エディタでは、すべての自動タスク要素に CSS スタイルを定義できます。 デザインは、CSS スタイルを使ってコントロールできます。
例: デフォルト CSS スタイル
以下の CSS スタイルがデフォルトとして定義されています。
カスタム CSS ファイルを使用する場合は、デフォルト値を上書きできます。
#header { padding: 2px 8px; font-size: 16pt; font-weight: bold; border-bottom: 2px solid green; } #title { background-color: #eee; padding: 2px 8px; font-size: 12pt; font-weight: bold; border-bottom: 1px solid green; } #content { padding: 8px; } #buttons { background-color: #eee; border-top: 1px solid green; text-align: right; padding: 2px 8px; } #buttons input { font-family: Verdana; font-size: 10pt; } #footer { border-top: 2px solid green; padding: 2px 8px; font-size: 9pt; }
指定する HTML コンポーネントは、コンポーネントを囲む HTML DIV に CSS スタイルを宣言します。 この宣言により、コンポーネントのすべての要素のスタイルを CSS で設定できます。
通常、このスタイルの名前は、これら HTML コンポーネントを使うステップの自動タスク ステップ テンプレート プロパティから設定できます。
Task オブジェクトの参照
Task オブジェクトは、たとえば、Task [Task.End();] として直接参照されます。
方法
タスク
説明
End()
タスクをただちに終了します。
GetNamedDataItem(key)
事前に保存されている値を、指定されたキーと共に返します。
SetNamedDataItem(key, value)
指定されたキーに対する値を保存します。 これらの値は、1 つのステップで保存し、GetNamedDataItem() を使用して別のステップでアクセスすることができます。 指定する値は、JavaScript プリミティブ型(数値、ブール値、または文字列)でも、オブジェクトまたはオブジェクトの配列でも可能です。 VBScript では、プリミティブ型のみを保存できます。
GetNextElementId()
HTML DOM オブジェクトに使用できる一意の ID が返されます。
GetPageBodyElementById(id)
指定された ID に対応する HTML DOM オブジェクトが返されます。
ReplaceDataItems(string)
指定された文字列のコピーが返されます。このとき、形式 ${key} の保存済みデータ項目のすべてのインスタンスが、対応する保存済みの値で置き換えられます。
CloseIEWindow()
UI ウィンドウをクローズします(開いている場合)。
プロパティ
Property
説明
タイトル
自動タスクのタイトル。
HeaderHtml
UI ウィンドウのヘッダ セクションに配置する HTML。
FooterHtml
UI ウィンドウのフッタ セクションに配置する HTML。
Height
UI ウィンドウの高さ(ピクセル単位)。
UI ウィンドウの幅(ピクセル単位)。
NextStepIndex
次に実行するステップのインデックス(0 を基準とする)。
Step オブジェクトの参照
Step オブジェクトは、たとえば、Step [Step.End();] として直接参照されます。
方法
Step オブジェクト
説明
End()
ステップをただちに終了します。 次のステップが呼び出されます。
Controls.Add()
文字列または HTML コンポーネントを UI コンテンツに追加します。 文字列は、ラベル HTML コンポーネントに自動的に変換されます。
GetProperty(propertyKey)
指定されたプロパティ キーの、現在のローカライゼーションに対する値が返されます。 現在のローカライゼーションに対する値が存在しない場合は、デフォルトのローカライゼーションでのプロパティの値が返されます。
SetProperty(localizationID, propertyKey, value)
指定されたプロパティの値を、指定されたローカライゼーション ID に対して指定された値に設定します。
RegisterEventHandler(controlId, eventHandler, tag)
IE ウィンドウの raiseUIEvent(controlId) 関数が呼び出されたときに呼び出す関数として、指定されたイベント ハンドラを登録します。 イベント ハンドラがディスパッチされると、タグとして渡されたすべてのデータが Step.EventData として使用可能になります。
IsUIStep()
現在のステップが UI ステップの場合、TRUE が返され、それ以外の場合、FALSE が返されます。
プロパティ
Property
説明
タイトル
手順のタイトル - [UI ヘッダ]セクションに表示されます。
NextButtonLabel
「次へ」ボタンのラベル。 デフォルトでは「次へ」に設定されます。
NextButtonVisible
「次へ」ボタンを表示する場合は TRUE。 非表示にする場合は FALSE。
PreviousButtonLabel
「前へ」ボタンのラベル。 デフォルトでは「前へ」に設定されます。
PreviousButtonVisible
「前へ」ボタンを表示する場合は TRUE。 非表示にする場合は FALSE。
FinishButtonLabel
「完了」ボタンのラベル。 デフォルトでは「完了」に設定されます。
FinishButtonVisible
「完了」ボタンを表示する場合は TRUE。 非表示にする場合は FALSE。
EventData
UI イベントが(IE ウィンドウ内の HTML から raiseUIEvent() を呼び出すことによって)発生すると、RegisterEvenHandler() によって事前に登録されたイベント ハンドラ関数が呼び出されます。 イベント ハンドラの登録時に「タグ」として保存されたデータは、ハンドラがディスパッチされると、Step.EventData として使用可能になります。
Logger オブジェクトの参照
Logger オブジェクトは Trace.Framework としてアクセスされます。
例:
Trace. Framework.Level = TraceLevels.Info
Trace.Framework.Error("An error has occurred")
方法
Logger オブジェクト
説明
Fatal(msg)
現在のトレース レベルが、Fatal、Error、Warning、Info、Debug、または Verbose に設定されている場合に、指定されたメッセージをログに記録します。
Error(msg)
現在のトレース レベルが、Error、Warning、Info、Debug、または Verbose に設定されている場合に、指定されたメッセージをログに記録します。
Warning(msg)
現在のトレース レベルが、Warning、Info、Debug、または Verbose に設定されている場合、指定されたメッセージをログに記録します。
Info(msg)
現在のトレース レベルが、Info、Debug、または Verbose に設定されている場合に、指定されたメッセージをログに記録します。
Debug(msg)
現在のトレース レベルが、Debug または Verbose に設定されている場合に、指定されたメッセージをログに記録します。
Verbose(msg)
現在のトレース レベルが Verbose に設定されている場合に、指定されたメッセージをログに記録します。
プロパティ
Property
説明
レベル
現在のトレース レベル。 TraceLevels 列挙内のいずれかの値(None、Fatal、Error、Warning、Info、Debug、または Verbose)に設定します。
グローバル関数
サポート オートメーション プロシージャでは、以下のグローバル関数が使用されます。
関数
説明
AnyArrayToVBArray(array)
任意の配列(VBScript または JavaScript)を VBArray に変換します。 JavaScript の配列は、VBScript の配列とは異なるオブジェクトであるため、それらの間で変換することが必要です。
AnyArrayToJSArray(array)
任意の配列を JavaScript 配列に変換します。
CreateHashMap()
任意のデータ(キー/値のペア)を保存するためのハッシュマップとして使用できるオブジェクトが返されます。 返されるオブジェクトは、以下のメソッドを実装しています。
Get(key) – 指定されたキーに対して保存されている値が返されます。
Set(key,value) - 指定されたキーに対する値を保存します。
GetAllKeys() – キーの配列が返されます。
自動タスク ステップ テンプレート
自動タスク ステップ テンプレートは、ある自動タスク ステップのスクリプト コードで、自動タスク ステップ プロパティも定義できます。 自動タスク ステップ テンプレートの動作は、プロパティ シートで自動タスク ステップ プロパティの値を変更すればカスタマイズできます。 コードを直接編集した方がカスタマイズの幅は広がりますが、テンプレートではコーディングが最小限で済みます。
ステップとは、エンド ユーザとアナリストのいずれかに表示される、エンド ユーザ アクション ステップ、またはユーザ インターフェース ステップです。 自動タスク ステップ テンプレートは、エンド ユーザ アクション、アナリスト インターフェースまたはエンド ユーザ インターフェースの各テンプレートのいずれかです。 弊社では、タスクのビルディング ブロックとして使用できる、アクションとユーザ インターフェースの両方の自動タスク ステップ テンプレートを用意しており、機能的な自動タスクを最小限のコーディングで作成できます。
プロパティを定義するステップの場合、テンプレートからはじめてステップを作成する際に、これらのプロパティの値を指定するように指示されます。 これらの値は、プロパティ シートを使って変更できます。
ユーザ インターフェース ステップ
すべてのユーザ インターフェース ステップは、フレームワークでコールした OnLoad 関数を実装してから表示する必要があります。 OnLoad 関数はユーザ インターフェースをセットアップします。 このステップ オブジェクトには、複数のプロパティとメソッドがあり、ユーザ インターフェースのセットアップに使うことができます。
ステップ フッタ上のボタンの表示は、Step.NextButtonVisible、Step.FinishButtonVisible および Step.PreviousButtonVisible で制御できます。 これらのプロパティを True に設定すると、ボタンは表示されます。 ボタンが表示される場合は、そのハンドラを実装する必要があります。 実際のユーザ インターフェース コントロールは、HTML コンポーネントを使ってページ本文に追加できます。
例: HTML コンポーネントとしてのテキスト入力ボックス
Step オブジェクトには、一連の HTML コンポーネントが埋め込まれたコントロール配列が含まれます。 これらのスクリプト オブジェクトは HTML でレンダリングを行います。フレームワークがユーザ インターフェース ページをレンダリングするときに、コントロール配列内の各 HTML コンポーネントは、自分自身をレンダリングして、返された HTML フラグメントをページの HTML 本文に追加します。
HTML コンポーネントでは、HTML の幅広い知識がなくても、複雑なユーザ インターフェースを作成できます。 HTML コンポーネントを使用することで、コーディングを最小限に抑えて、よく使用されるコントロールを作成および設定することができます。
例: HTML コンポーネントとしてのテキスト入力ボックス
HTML コンポーネントの 1 つの例として、テキスト入力ボックスがあります。 以下の例では、PromptText というラベルと HTML 入力ボックスを組み合わせます。 たとえば、顧客または技術者にユーザ名の入力を求めるプロンプトを表示したい場合は、以下のように、OnLoad 関数でユーザ インターフェース ページを作成します。
Function OnLoad Dim myInputBox Set myInputBox = UI.MakeInputBox() myInputBox.PromptText = "Please enter your name:" Step.Controls.Add(myInputBox) End Function
弊社ではサンプルを用意していますが、カスタムの HTML コンポーネントを作成することもできます。 HTML コンポーネントは、GetHtml というメソッドを実装するスクリプト オブジェクトです。 たとえば、以下に、直前の例で使用したその
MakeInputBox()
メソッド コールの実装を示します。
function InputBox() { // public properties this.PromptText = ""; this.CssClass = "UIInputBox"; this.InputMaxLength =50; this.InputSize = 50; // private member props var textboxId = Task.GetNextElementId(); // privileged methods // (For example, publicly accessible with access to private props) this.GetHtml = function () { var inputHtml = "<DIV class = '" + this.CssClass + "'>\n"; if(this.PromptText.length>0) { inputHtml += "<SPAN class ='PromptText'>" + this.PromptText + "</SPAN>\n" + "<BR>\n"; } inputHtml += "<INPUT type = text class = 'InputText' id = '"+textboxId+ "' size = '"+this.InputSize+ "' maxlength='"+this.InputMaxLength+"'></INPUT>" + "<BR><BR>\n" + "</DIV>\n"; return inputHtml; } this.GetUserInput = function() { var textBox = Task.GetPageBodyElementById(textboxId); if (textBox) { return textBox.value; } else { throw new Exception (Severity.Error, "Could not read textbox value", "Could not read textbox value"); } } } return new InputBox();
この自動タスク ライブラリ関数は、タイプ InputBox のオブジェクトのコンストラクタを定義します。 この関数の最後の行で、InputBox クラスのインスタンスが作成され、それが返されます。
JavaScript と VBScript では、オブジェクト定義は異なります。 VBScript では、class キーワードを使用してクラスを宣言します。 JavaScript では、関数はオブジェクトであるため、function キーワードによってクラスを宣言します。 どちらの言語でも、クラスは、パブリックとプライベートのメンバー変数およびメソッドを持つことができます。 2 つの言語でオブジェクト構文がどのように処理されるかについては、この章の範囲外であるため詳しく説明しませんが、このテーマについての例およびチュートリアルはインターネットで見つけることができます。
前述の例のコードでは、いくつかのパブリック プロパティとプライベート プロパティ、および 2 つのパブリック メソッド GetHtml と GetUserInput を使用して InputBox クラスを宣言しています。
フレームワークは、ユーザ インターフェース ステップをレンダリングするときに GetHtml を呼び出します。 また、InputBox コントロールで GetUserInput も公開されるので、これを使用して、エンド ユーザがテキスト ボックスに入力した値にアクセスすることができます。 各 HTML コンポーネントは、コンポーネントを設定したりユーザ入力値にアクセスしたりするためのさまざまなメソッドを公開することができます。
これらの HTML コンポーネントによって、手動での HTML のコーディングが取り除かれるため、ユーザ インターフェース ページの作成は簡単になります。
特定の自動タスク専用の独自の HTML を作成することができます。 このような場合、選択肢は 2 つあります。必要に応じて新規の HTML コンポーネントを作成するか、または文字列変数で HTML コードを作成して、以下のように RawHTMLContainer という HTML コンポーネントでラップします。
Function OnLoad Dim myRawHtmlContainer, myHtml myHtml = "<H1>Hello <B>World</B></H1>" Set myRawHtmlContainer = UI.MakeRawHtmlContainer(myHtml) Step.Controls.Add(myRawHtmlContainer) End Function
例: エンド ユーザ入力の処理
ユーザ インターフェース ページの表示後、多くの場合、ユーザがフッタ ボタン([次へ]、[前へ]、または[完了])のいずれかをクリックしたときにエンド ユーザ入力を処理する必要があります。 エンド ユーザ入力を処理するハンドラ関数を実装します。 [次へ]ボタンのクリックを処理するには、
NextButtonHandler
という名前の関数を実装します。 [前へ]および[完了]ボタンを処理するには、
PreviousButtonHandler
FinishButtonHandler
という関数を使います。
ハンドラは以下のアクションを実行します。
  • ページ上の HTML コンポーネントから入力データを取得する
  • エンド ユーザ入力を検証する
  • エンド ユーザ入力が無効な場合、エラー メッセージを表示し、ページをリフレッシュする
  • エンド ユーザ入力が有効な場合、後のステップで使えるようにログに保存する
  • ステップの実行シーケンスを制御する
例: エンド ユーザ入力の処理
InputBox コンポーネントなど、入力コントロールを包含している HTML コンポーネントには、エンド ユーザが指定した値にアクセスするメソッドがあります。 この場合は、
GeUserInput()
関数を使います。
フレームワークが表示する次のステップは、以下のように制御できます。
  • ハンドラから True を返してデフォルトの次のステップを表示する(NextButtonHandler の場合は currentStep+1、PreviousButtonHandler の場合は currentStep-1、FinishButtonHandler は自動タスクの終了)
  • ハンドラから False を返して現在のステップを更新する
  • Step.NextStepIndex をステップ インデックス(1 ベース)に設定し、ステップをスキップまたは繰り返す
クリックされている[次へ]ボタンは、NextButtonHandler を指定して処理できます。 NextButtonHandler は OnLoad に作成された HTML コンポーネントにアクセスする必要があるため、この変数の宣言(Dim ステートメント)はこれら関数の外に置きます。 このため、ステップ コード全体は以下のようになります。
Dim myInputBox Function OnLoad Set myInputBox = UI.MakeInputBox() myInputBox.PromptText = "Please enter your name:" Step.Controls.Add(myInputBox) End Function Function NextButtonHandler Dim userInputValue ' Retrieve the data supplied by the user userInputValue = myInputBox.GetUserInput() ' Validate the data If Len(userInputValue) = 0 Then ' Show error message Functions.ShowMessage "You must supply a name" ' Re-present current step NextButtonHandler=False Else ' Log the data Functions.LogMessage "User name set to: " & userInputValue ' Store the data Task.SetNamedDataItem "UserName", userInputValue ' Proceed to next step NextButtonHandler=True End If End Function