APIScript 入門


APIScript 入門


APIScript

APIScript はCData Sync に含まれているXML ベースの言語で、カスタム処理ロジックの記述に使用できます。APIScript により、外部プロセスを簡単に呼び出すことができ、Sync を他のビジネスプロセスと統合することができます。 Sync には、E メール送信、バッチファイルの実行、データベースの作業などの完全なスニペットが含まれています。これらのサンプルを、管理コンソールからお客様のイベントに挿入することができます。

APIScript は、データアクセスおよびプロセッシングのあらゆる側面の管理を可能にするハイレベルなプログラミング言語です。スクリプトを書く際には、キーワード、アトリビュート、アイテム、オペレーション、およびフィードを使います。

  • アトリビュート: name-value ペアのname 部分で、attribute=”address”, value=”123 Pleasant Lane” のように使われます。
  • アイテム: Attribute-value ペアの関連するグループで、インプットとアウトプットを説明します。例:
    attr="name" value="Bob"
    attr="address" value="123 Pleasant Lane"
    attr="phone" value="123-4567"
    
  • オペレーション: アイテムをインプットとして受け、フィードをアウトプットとして生成するメソッドの一般名。
  • フィード: アイテムのリスト。例えば、アドレスと電話番号を含む顧客のリストなど。
  • キーワード: api:set のようなAPIScript ステートメント。

APIScript は多様なキーワードを持ち、次のようなことが可能です:

  • イベントのインプットとアウトプットを説明する。
  • 実行フローを管理するためにIf/else 構文やcase 構文などのハイレベルなプログラミング構成を使う。
  • オペレーションを呼び出し、カスタムオペレーションを定義する。
  • アイテム、オペレーションのインプット、フィード、オペレーションの結果を作成し、変更する。
  • アイテムの反復によりオペレーション呼び出しからの結果フィードを処理する。

APIScript のアイテム

APIScript では、アイテムはオペレーションにインプットを提供するために使用されます。アイテムは、 api:set キーワードを通じて作成され、名付けられ、アトリビュート値を与えられます。

<api:set item="input" attr="mask" value="*.txt" />

このラインは、input という名前のアイテムの、mask アトリビュートに*text という値をセットします。この場合、インプットアイテムはAPIScript の変数の働きをします。

ただし、input という名前のアイテムは宣言されていません。その代わりに、初回にアトリビュートをセットしようとすると、そのアイテムが生成されます。上の例では、インプットアイテムが存在していない場合、そのアイテムが生成され、mask アトリビュートがセットされます。

アトリビュート値の選択

アトリビュートを参照するには、構文_item.attribute_ (例:”input.mask”)を使用します。あるアトリビュート値をクエリするには、括弧([])でアトリビュート名を囲います。これは、文字列リテラルとしてではなく、文字列を評価したいということを示します。

例えば、次のコードスニペットを見てください:

<api:set item="item1" attr="attr1" value="value1"/>
<api:set item="item1" attr="attr2" value="item1.attr1"/>
<api:set item="item1" attr="attr3" value="[item1.attr1]"/>

結果は次のとおりです:

  • item1.attr1 は、”value1” のリテラル文字列の値を割り振られます。
  • item1.attr2 は、”item1.attr1” のリテラル文字列の値を割り振られます。
  • item1.attr3 は、”value1” の値を割り振られます。これは、文字列”[item1.attr1]” がitem1 のattr1 アトリビュートとして評価されるからです。

文字列リテラルにおいて、\ を使って、括弧からエスケープすることができます。

デフォルトアイテム

APIScript では、デフォルトアイテムという、アイテムの層の中に黙示的で名付けられていないアイテムがあります。次の2つのケースでは、デフォルトアイテムは共通してスクリプトをより短く、簡単に書くために使われています。

  • オペレーションの呼び出し:デフォルトアイテムは、他に指定されたアイテムがない場合に、イベントによって呼び出されたオペレーションにデフォルトで渡されるアイテムです。これはつまり、api:set を使って、デフォルトの名付けられていないアイテムのアトリビュートを書いて、そのアトリビュートがイベント内の次のオペレーションのインプットとして渡されることを意味します。これは、オペレーションに必要なパラメータを提供する一つの方法です。
  • オペレーションまたはイベントのアウトプット内の現在のアイテムを処理:オペレーションの結果の変数名を指定しなかった場合、オペレーションを起動するapi:call ブロックの内部でデフォルトアイテムはオペレーションで生成された現在のアイテムを参照します。

APIScript のキーワードのアイテムアトリビュートを単に省略することでデフォルトアイテムを操作する:

<api:set attr="path" value="." />

Event Inputs (_input)

イベントへのインプットは _input アイテムから参照されます。_input アイテムには、Event のinfo ブロックで定義された変数が含まれます。イベント内のデフォルトアイテムから値を読む場合、_input から値を読んでいます。同様に、デフォルトアイテムに書き込みたいアトリビュートは、イベントのインプットと共にオペレーションのパラメータとして渡されます。

api:call ブロックの内部では、_input はデフォルトアイテムではなく、アクセスするためには名前を参照しなければなりません。

Operation Outputs (_out[n])

api:call キーワードにより生成されたフィード内の現在のアイテムは、デフォルトアイテムもしくは名前を指定された特殊アイテム”_outX” を通じてアクセスすることができます。X はapi:call キーワードのネスティングのレベルです。例えば、単一のapi:call キーワードの内部の場合、アイテム名は”_out1” です。api:call キーワードの3つのネストレベルの内部の場合、”_out3” となります。