arc:call
Version 24.2.9039
Version 24.2.9039
arc:call
arc:call キーワードを使用してオペレーションを呼び出します。以下の種類のオペレーションを呼び出すことができます:
- アプリケーションのbin サブフォルダにある、アプリケーションアセンブリとともにインストールされたビルトインオペレーション
- .NET、またはJava で独自に記述し、アプリケーションのbin サブフォルダに配置したオペレーション
- 同じマシンに存在する他のスクリプトの呼び出し
- HTTP 経由で呼び出されるリモートマシン上のスクリプト
オペレーションは、アイテムをインプットとして受け取り、フィードをアウトプットとして返します。arc:call のスコープは、呼び出しから返されたフィード内のすべてのアイテムに対し実行されます。arc:call のスコープ内では、返されたアイテムのアトリビュートを調べ、変更することができます。そして、それらのアトリビュートを他のオペレーションのインプットとして提供し、オペレーションパイプラインを形成することができます。もしくは、アイテムをアウトプットに追加できます。
アウトプットアイテムスタックとデフォルトアイテム
arc:call が発生するたびに、新しいアイテムが内部のアイテムスタックに追加されます。スタックの一番上のアイテムが デフォルトアイテム です。これが、アイテム名が呼び出しのインプットで明示的に指定されていない場合に、arc:call にインプットを提供するアイテムです。
呼び出されたオペレーションはアトリビュートにデフォルトアイテムを書き込み、arc:push がデフォルトアイテムをアウトプットに追加します。アイテムをプッシュすると、スタックの一番上にあるデフォルトアイテムのアトリビュートだけが追加されます。
アイテムが反復されるとデフォルトアイテムは一掃され、arc:call は次のアイテムで機能します。これは、arc:call の前の反復のvalue セットを次の反復で読むことができないことを意味します。反復に渡って値を保持するには、arc:set を使って名前付きアイテムに値をコピーします。
デフォルトのアイテムは_
、もしくは明示的に_out1
、_out2
、_out[n]
(n
はスタック の深さ)として示すことができます。これにより、実行処理におけるこの時点で利用可能なすべての値を読み取ることができます。ルックアップ処理はデフォルトアイテムからはじまり、値が見つかるまでスタック内を読み続けます。
次の例では、各呼び出しでアイテムがスタックの一番上に追加される様子と、各呼び出しのスコープ内でデフォルトアイテムがどのように変化するかを確認できます。
<arc:call op="operation1">
ここでのデフォルトアイテムは_out1 です
ここでプッシュすると、_out1 から属性がプッシュされます
operation2 の呼び出しに使用されるインプットアイテムも_out1 です
<arc:call op="operation2">
ここでのデフォルトアイテムは_out2 です
ここでプッシュすると、_out2 から属性がプッシュされます
ここに別のarc:call があった場合、使用されるインプットアイテムは_out2 になります
_out2 は、次の反復のためにここで一掃されます
</arc:call>
ここでのデフォルトアイテムは再び_out1 です
ここでプッシュすると、再び_out1 から属性がプッシュされます
このレベルのインプットアイテムは再び_out1 です
_out1 は、次の反復のためにここで一掃されます
</arc:call>
オペレーションにインプットを指定する
インプットを呼び出しに提供する方法は3つあります:
- デフォルトアイテム:インプットアイテムが指定されない場合には、呼び出されたオペレーションはデフォルトアイテムのインプット値を読みます。arc:set キーワードを使用して、呼び出されたオペレーションで処理されるようにデフォルトアイテムの値を設定できます。
<arc:set attr="mask" value="*.txt"/> <arc:set attr="path" value="C:\\"/> <arc:call op="fileListDir"> ... </arc:call>
- 明示的なインプットアイテム:デフォルトアイテムを使う代わりに、in パラメータを使用してオペレーションのインプットアイテムとして使いたいアイテムを明示的に指定することができます。これを行うと、デフォルトアイテムは使用されません。代わりに、指定されたインプットアイテムから入力値が読み取られ、クエリ文字列がオペレーションに渡されます(以下に例を示します)。
<arc:set attr="mask" value="*.* -- Will be ignored --"/> <arc:set attr="myinput.mask" value="*.txt"/> <arc:set attr="myinput.path" value="C:\\"/> <arc:call op="fileListDir" in="myinput"> ... </arc:call>
- クエリ文字列パラメータ:クエリ文字列表記を使って、オペレーションのインプットを指定することもできます。クエリ文字列の一部として指定されたアトリビュートが優先されます。つまり、クエリ文字列で指定されたアトリビュートとインプットアイテムで指定されたアトリビュート名に差異がある場合、クエリ文字列のほうが優先されます。ただし、インプットアイテムの他のアトリビュートは、引き続きアクセス可能です。この例では、クエリ文字列でインプットを指定する構文を示します:
<arc:set attr="myinput.mask" value="*.txt -- will be overridden --"/> <arc:set attr="myinput.path" value="C:\\"/> <arc:call op="fileListDir?mask=*.rsb" in="myinput"> ... </arc:call>
パラメータ
- op:呼び出すオペレーションの名前。
- in[put]:オペレーションを呼び出すときにインプットとして使われるアイテムのリスト。アトリビュートは、指定されたインプットアイテムの左から右へルックアップされます。
-
out[put]:アウトプットアトリビュートが配置されるアイテム。arc:call のスコープで、ここで指定されたアイテム名を使って、現在のアウトプットアイテムを取得することができます。
_out[n]
または_pipe
を使って、呼び出し結果を参照することもきます。Note:呼び出しのスコープ外では、呼び出し内のアトリビュートセットは使用できません。これは、呼び出しを反復するたびに前の反復のアトリビュートが削除され、呼び出しの最後には何も残らないためです。呼び出しのスコープ外のアトリビュートにアクセスするには、arc:set を使って呼び出しの外で使いたいアイテムにアトリビュートを明示的にコピーします。
- item:インプットとアウトプットの両方で使われるアイテムの名前。
- sep[arator]:複数のインプットアイテムを区切るためのセパレータ。デフォルトはカンマです。
- ignoreprefix:見つかったときに無視される接頭辞のカンマ区切りのリスト。一部のオペレーションでは、
prefix:name
形式の名前(例えば、arc:operation
やsql:company
)のアトリビュートを返します。状況によっては、prefix:name
とname
を同じアトリビュートとして扱いたい場合があります。 - page およびpagesize:反復するアイテムのサブセット。これは、オペレーションまたはフィード結果のページングを有効化するために使われます。例えば、
page="2"
およびpagesize="5"
を指定すると、arc:call キーワードは結果フィードのアイテム6から10 のみを反復します。 - httpmethod:オペレーションで使用するHTTP メソッド。
- authtype:HTTP 経由でアクセスされるフィードに必要な認証タイプ。例えば、
basic
やdigest
です。 - authtoken:HTTP 経由でアクセスされるフィードを認証するためのauth トークン。
- user:HTTP 経由でアクセスされるフィードを認証するためのユーザー名。
- password:HTTP 経由でアクセスされるフィードを認証するためのパスワード。
- http_headers:HTTP 経由でアクセスされるフィードに必要なその他のHTTP ヘッダー。
- proxyhost:HTTP リクエストが送信されるプロキシのアドレス。
- proxyport:HTTP プロキシが起動しているTCP ポート。
- proxyuser:HTTP プロキシを認証するためのユーザー名。
- proxypassword:HTTP プロキシを認証するためのパスワード。
- proxyauthtype:プロキシに必要なHTTP 認証タイプ。例えば、
basic
やdigest
です。 - proxyssltype:プロキシサーバーへの接続時に使用するSSL / TLS タイプ。有効な値は
AUTO
、ALWAYS
、NEVER
、またはTUNNEL
です。デフォルトはAUTO
です。
アトリビュートの制御
- _index:arc:call によって現在反復されているアイテムのインデックス。
- _op:呼び出されているオペレーションの名前。実行するまでオペレーション名がわからない場合に役立ちます。
- _separator:複数のインプットアイテムを区切るためのセパレータ。
例
デフォルトアイテムをインプットとして使用してオペレーションを呼び出します:
<arc:set attr="path" value="C:\myfiles"/>
<arc:call op="fileListDir">
<arc:push/>
</arc:call>
リモートマシン上の別のスクリプトを呼び出します。先の例のように、スクリプトがネストされます。
<arc:call op="http://someplace.com/customerList.rsb">
<arc:push/>
</arc:call>
関連項目
- arc:first:呼び出しの最初の反復でのみ実行されるエレメントを記述する。
- arc:catch:呼び出しでエラーをキャッチする。
- arc:continue:次の反復に進む。