api:call

Version 25.3.9411


api:call


api:call キーワードを使用してオペレーションを呼び出します。有効なオペレーションは次のとおりです:

  • bin アプリケーションサブフォルダにある、アプリケーションアセンブリとともにインストールされたビルトインオペレーション
  • .NET、またはJava で独自に記述し、bin アプリケーションサブフォルダに配置したオペレーション
  • 同じマシンの他のスクリプトの呼び出し
  • HTTP 経由で呼び出されるリモートマシン上のスクリプト

オペレーションは、 items をインプットとして受け取り、 feeds をアウトプットとして返します。api:call のスコープは、呼び出しから返されたフィード内のすべてのアイテムに対し実行されます。api:call のスコープ内では、返されたアイテムのアトリビュートを調べ、変更することができます。そして、それらのアトリビュートを他のオペレーションのインプットとして提供し、オペレーションパイプラインを形成することができます。もしくは、アイテムをアウトプットに追加できます。

アウトプットアイテムスタックとデフォルトアイテム

api:call が発生するたびに、新しいアイテムがアイテムの内部スタックに追加されます。スタックの一番上のアイテムが デフォルトアイテム です。これが、アイテム名が呼び出しのインプットで明示的に指定されていない場合に、api:call にインプットを提供するアイテムです。

呼び出されたオペレーションはアトリビュートにデフォルトアイテムを書き込み、api:push がデフォルトアイテムをアウトプットに追加します。アイテムをプッシュすると、デフォルトアイテム(スタックの一番上)のアトリビュートだけが追加されます。

アイテムが反復されるとデフォルトアイテムは一掃され、api:call は次のアイテムで機能します。これは、api:call の前の反復のvalue セットを次の反復で読むことができないことを意味します。反復に渡って値を保持するには、api:set を使って名前付きアイテムに値をコピーします。

デフォルトのアイテムは_、もしくは明示的に_out1_out2_out[n]n はスタック の深さ)として示すことができます。これにより、実行処理におけるこの時点で利用可能なすべての値を読み取ることができます。ルックアップ処理はデフォルトアイテムからはじまり、値が見つかるまでスタック内を読み続けます。

次の例では、各呼び出しでアイテムがスタックの一番上に追加される様子と、各呼び出しのスコープ内でデフォルトアイテムがどのように変化するかを確認できます。

<api:call op="operation1"> 
ここでのデフォルトアイテムは_out1 です 
ここでプッシュすると、_out1 から属性がプッシュされます 
operation2 の呼び出しに使用されるインプットアイテムも_out1 です 
<api:call op="operation2"> 
ここでのデフォルトアイテムは_out2 です 
ここでプッシュすると、_out2 から属性がプッシュされます 
ここに別のapi:call があった場合、使用されるインプットアイテムは_out2 になります 
_out2 は、次の反復のためにここで一掃されます 
</api:call> 
ここでのデフォルトアイテムは再び_out1 です 
ここでプッシュすると、再び_out1 から属性がプッシュされます 
このレベルのインプットアイテムは再び_out1 です 
_out1 は、次の反復のためにここで一掃されます 
</api:call> 

オペレーションにインプットを指定する

インプットを呼び出しに提供する方法は3つあります:

  • デフォルトアイテム:インプットアイテムが指定されていない場合は、呼び出されたオペレーションはデフォルトアイテムのインプット値を読みます。api:set キーワードを使用して、呼び出されたオペレーションで処理されるようにデフォルトアイテムの値を設定できます。

      <api:set attr="mask" value="*.txt"/>
      <api:set attr="path" value="C:\\"/>
      <api:call op="fileListDir">
      ... 
      </api:call>
    
  • 明示的なインプットアイテム:デフォルトアイテムを使う代わりに、in パラメータを使用してオペレーションのインプットアイテムとして使いたいアイテムを明示的に指定することができます。これを行うと、デフォルトアイテムは使われず、次の例で示すように、指定されたインプットアイテムからインプット値が読み取られクエリ文字列がオペレーションに渡されます。

      <api:set attr="mask" value="*.* -- Will be ignored --"/>
      <api:set attr="myinput.mask" value="*.txt"/>
      <api:set attr="myinput.path" value="C:\\"/>
      <api:call op="fileListDir" in="myinput">
      ... 
      </api:call>
    
  • クエリ文字列パラメータ:クエリ文字列表記を使って、オペレーションのインプットを指定することもできます。クエリ文字列の一部として指定されたアトリビュートが優先されます。つまり、クエリ文字列で指定されたアトリビュートとインプットアイテムで指定されたアトリビュートの名前に差異がある場合、クエリ文字列の方が優先されます。ただし、インプットアイテムの他のアトリビュートは、引き続きアクセス可能です。次の例では、クエリ文字列でインプットを指定する構文を示します:

      <api:set attr="myinput.mask" value="*.txt -- オーバーライドされます --"/> 
      <api:set attr="myinput.path" value="C:\\"/> 
      <api:call op="fileListDir?mask=*.rsb" in="myinput">
      ...
      </api:call>
    

パラメータ

  • op:呼び出されるオペレーションの名前。
  • in[put]:オペレーションを呼び出すときにインプットとして使われるアイテムのリスト。アトリビュートは、指定されたインプットアイテムの左から右へルックアップされます。
  • out[put]:アウトプットアトリビュートが配置されるアイテム。api:call のスコープで、ここで指定されたアイテム名を使って、現在のアウトプットアイテムを取得することができます。_out[n] または_pipe を使って、呼び出し結果を参照することもきます。

    Note:呼び出しのスコープ外では、呼び出し内のアトリビュートセットは使用できません。これは、呼び出しを反復するたびに前の反復のアトリビュートが削除され、呼び出しの最後には何も残らないためです。呼び出しのスコープ外のアトリビュートにアクセスするには、api:set を使って呼び出しの外で使いたいアイテムにアトリビュートを明示的にコピーします。

  • item:インプットとアウトプットの両方で使用するアイテムの名前。
  • sep[arator]:複数のインプットアイテムを区切るためのセパレータ。デフォルトはカンマです。
  • ignoreprefix:見つかったときに無視される接頭辞のカンマ区切りのリスト。一部のオペレーションでは、prefix:name 形式の名前(例えば、api:operation およびsql:company)のアトリビュートを返します。状況によっては、prefix:namename を同じアトリビュートとして扱いたい場合があります。
  • page およびpagesize:反復するアイテムのサブセット。オペレーション、またはフィード結果のページングを有効化するために使われます。例えば、page="2" およびpagesize="5" を指定すると、api:call キーワードは結果フィードのアイテム6から10 のみを反復します。
  • httpmethod:オペレーションによって使用されるHTTP メソッド。
  • authtype:HTTP 経由でアクセスされるフィードに必要な認証タイプ。例えば、basicdigest です。
  • authtoken:HTTP 経由でアクセスされるフィードへの認証に使われる認証トークン。
  • user:HTTP 経由でアクセスされるフィードへの認証に使われるユーザー名。
  • password:HTTP 経由でアクセスされるフィードへの認証に使われるパスワード。
  • http_headers:HTTP 経由でアクセスされるフィードに必要なその他のHTTP ヘッダー。
  • proxyhost:HTTP リクエストが送信されるプロキシのアドレス。
  • proxyport:HTTP プロキシが起動しているTCP ポート。
  • proxyuser:HTTP プロキシへの認証に使われるユーザー名。
  • proxypassword:HTTP プロキシへの認証に使われるパスワード。
  • proxyauthtype:プロキシに必要なHTTP 認証タイプ。例えば、basicdigest です。
  • proxyssltype:プロキシサーバーへの接続時に使用するSSL タイプ。有効な値はAUTOALWAYSNEVER、またはTUNNEL です。デフォルトはAUTO です。

アトリビュートの制御

  • _indexapi:call によって現在反復されているアイテムのインデックス。
  • _op:呼び出されているオペレーションの名前。実行するまでオペレーション名がわからない場合に役立ちます。
  • _separator:複数のインプットアイテムを区切るためのセパレータ。

デフォルトアイテムをインプットとして使用してオペレーションを呼び出します:

<api:set attr="path" value="C:\myfiles"/>
<api:call op="fileListDir">
  <api:push/>
</api:call>

リモートマシンでスクリプトを呼び出します。先の例のように、スクリプトがネストされます:

<api:call op="http://someplace.com/customerList.rsb">
  <api:push/>
</api:call>

関連項目

  • api:first:呼び出しの最初の反復でのみ実行されるエレメントを記述する。
  • api:catch:呼び出しでエラーをキャッチする。
  • api:continue:次の反復に進む。