Post-Job イベント


Post-Job イベント


多くの場合、データフロータスクに外部情報を統合する必要があります。Sync のPre-Job イベントおよびPost-Job イベントを使用すると、このようなシナリオが可能になります。これらのイベントを使用すると、CData Sync に含まれるXML ベース言語APIScript を利用して、クエリパラメータを挿入したり、他の外部の処理をトリガーしたりできます。

バッチファイルの実行、E メール送信、新しいジョブの実行のトリガーなどの一般的なアクションを自動化するための完全なコードスニペットがCData Sync に含まれています。ジョブの[イベント] タブで、[スニペットを挿入] をクリックして、実行するアクションを選択します。必要なコードがカーソルに挿入されています。

Pre-Job イベント

Pre-Job イベントは、ジョブがクエリの実行を開始する前に発生します。ジョブの名前、ソース、同期先などを含むジョブに関する詳細は、入力パラメータとして使用でき、イベントスクリプト内でロジカルな選択を行うために使用できます。また、後でジョブの実行中に使用できる出力項目の属性値をプッシュすることもできます。

<api:info title="Before Run" desc="このイベントはジョブを実行する前に発生します。">
  <input name="JobName"      required="true" desc="実行されるジョブの名前。" />
  <input name="Source"       required="true" desc="ソース接続の名前。" />
  <input name="Destination"  required="true" desc="同期先接続の名前。" />
  <input name="JobStatus"    required="true" desc="以前のジョブのステータス。" />
  <output name="env:*"                       desc="ジョブで後で使用される変数。" />
  <output name="CancelJob"                   desc="ジョブの実行をキャンセルしたい場合はtrue に設定します。" />
</api:info>

環境変数を作成

環境変数は、Pre-Job イベントスクリプトで作成し、ジョブの実行に追加できます。次の例では、現在のタイムスタンプでcurrentTimeStamp 変数を作成し、その値を持つ_out_ アイテムをジョブにプッシュします。

<api:set attr="out.env:currenttimestamp"  value="[null | now()]" />
<api:push item="out" />

ジョブにプッシュされた環境変数は、Replicate クエリでさまざまな方法で使用できます。環境変数を参照するには、env.attribute を中かっこ{} で囲みます。以下の例では、currenttimestamp の値を新しいカラムDateUpdated に設定します。

REPLICATE [Table] SELECT [ID], [Name], '{env:currenttimestamp}' AS [DateUpdated] FROM [Table]

Post-Job イベント

Post-Job イベントは、ジョブがクエリの実行を完了した後に発生します。インプット項目には、他の操作の呼び出しに使用できるジョブの実行結果が含まれます。

<api:info title="After Run" desc="このイベントはジョブを実行した後に発生します。">
  <input name="JobName"         required="true" desc="実行されたジョブの名前。" />
  <input name="Source"          required="true" desc="ソース接続の名前。" />
  <input name="Destination"     required="true" desc="同期先接続の名前。" />
  <input name="JobStatus"       required="true" desc="完了した実行のステータス。"/>
  <input name="Query#"          required="true" desc="実行された各クエリを含む配列。" />
  <input name="QueryStatus#"    required="true" desc="実行された各クエリのステータスを含む配列。" />
</api:info>

ジョブ実行のトリガー

他のジョブは、Post-Job イベントでトリガーできます。以下の例は、現在のJob がクエリの実行を終了した後にNextJob を実行します。api:if キーワードを使用してこの例を拡張し、現在のJob が成功した場合にのみNextJob を実行することもできます。

<!-- Start Executing different Job -->
<api:set attr="job.JobName"        value="NextJob"/> 
<api:set attr="job.ExecutionType"  value="Run"/> 
<api:set attr="job.ASync"          value="false"/>
<api:call op="syncExecuteJob" in="job"/>

サンプルスクリプトの拡張

付属のスニペットは実現可能な事柄の表面をスクラッチするだけです。API Script 言語は、複雑なビジネスロジックを処理可能で、E メールの送信やファイルの移動などを簡単にする多くの組み込みオペレーションを備えています。オペレーションに固有の追加のインプットを渡すこともできます。例えば、appSendEmail オペレーションは、本文、添付ファイル、SSL/TLS プロパティなど、いくつかの追加インプットを受け付けます。これらの値は、api:set キーワードで指定できます。次に例を示します。

api:call キーワードを使用すると、イベント内の任意の組み込み操作を呼び出したり、API を呼び出すこともできます。

実行フローなどを制御するには、他のAPIScript キーワードを使用してください。APIScript is computationally complete.また、処理と自動化を簡単にするためにデザインされた多くの機能強化もあります。APIScript の構文とその機能について詳しくは、APIScript 入門 を参照してください。