Skip to main content
arc:call 關鍵字用來呼叫運算器。有效的運算器有以下幾種:
  • 與應用程式的 bin 子資料夾中的應用程式集一起安裝的內建運算器
  • 在 .NET 或 Java 中編寫的運算器,並放置在應用程式 bin 子資料夾下
  • 呼叫同一臺計算機上現有的其它指令碼
  • 使用 HTTP 呼叫的遠端計算機上的指令碼
運算器將物件作為輸入並傳回物件集作為輸出。在 arc:call 的範圍內,呼叫傳回的物件集中每個物件都會被執行。在 arc:call 範圍中,可以檢查和修改傳回的物件中的屬性。可以將這些運算器作為輸入提供給另一個運算器,從而就形成了一個運算器管道。或者,也可以將物件作為輸出。

輸出物件堆疊和預設物件

每次執行 arc:call 時,一個新物件會被推入到一個內部的物件堆疊中。在堆疊頂部的物件就是預設的物件。當未在呼叫輸入中明確指定物件名稱時,該物件為 arc:call 提供輸入。 被呼叫的運算器將屬性寫入到預設的物件中,arc:push 將預設的物件輸出。當推送一個物件時,只有在堆疊頂部的,預設物件的屬性會被推送。 在一個物件被迭代後,預設的物件會被清除,然後 arc:call 可以處理下一個物件。這意味著將不能在下一次 arc:call 迭代中讀取上一次迭代中設定的值。要在迭代中保留值,可以使用 arc:set 將其複製到一個已命名的物件。 可以將預設物件命名為 _ ,或顯式命名為 _out1, _out2, _out[n],其中N 是堆疊的深度。這就使得在執行過程中讀取所有可用的值。查詢過程從預設物件開始,並繼續在堆疊中查詢,直到找到一個值。 在下面的例子中,可以看到每次呼叫是如何將物件推到堆疊的頂部的,以及預設物件在每次呼叫的範圍內是如何變化的:

指定運算器的輸入

有三種方式可以為 call 提供輸入:
  • 預設物件:如果輸入的物件未指定,被呼叫的運算器會從預設物件中讀取輸入值。可以使用 arc:set 關鍵字設定預設物件中的值,這樣就可以被呼叫的運算器處理。
  • 顯式輸入物件:不使用預設物件,可以使用 in 參數來顯式指定要用作運算器輸入的物件。如果選擇這樣做,則不再使用預設物件,並且將從指定的輸入物件中讀取輸入值,如下所示,將查詢字串傳遞給運算器。
  • 查詢字串參數:還可以使用查詢字串符號指定運算器的輸入。指定為查詢字串一部分的屬性具有優先順序。因此,如果查詢字串中指定的屬性與輸入物件中的屬性之間存在名稱衝突,則首選查詢字串中的屬性。但是,輸入物件的其它屬性仍然可以存取。下面的範例顯示了在查詢字串中指定輸入的語法:

參數

  • op:被呼叫的運算器的名稱。
  • in[put]:呼叫運算器時用作輸入的物件清單。在指定的輸入物件中從左到右查詢屬性。
  • out[put]:放置輸出屬性的物件。在 arc:call 範圍內,可以使用此處指定的物件名稱來檢索當前輸出項物件。也可以使用 _out[n] 或 _pipe 引用呼叫結果。
    在呼叫中設定的屬性在呼叫範圍外是不可用的。這是因為呼叫的每次迭代都會刪除上一次迭代的屬性;在呼叫結束後不會留下任何東西。要在呼叫的範圍之外存取屬性,使用 arc:set 去顯式將屬性複製到想在呼叫之外使用的物件中。
  • item:用於輸入和輸出的物件名稱。
  • sep[arator]:用來分隔多個輸入物件的分隔符號。預設為逗號。
  • ignoreprefix:以逗號分隔的字首清單,當查詢到時將被忽略。一些運算器傳回名稱形式為 “prefix:name” 的屬性(例如,arc:operation 和 sql:company)。在某些情況下,可能需要將 prefix:name 和 name 當作同一個屬性。
  • page and pagesize:被迭代的物件的子集。用於啟用運算器或物件集結果的分頁。例如。如果指定 page=“2” 且 pagesize=“5”,arc:call 關鍵字僅對生成物件集的物件6到10進行迭代。
  • httpmethod:運算器將使用的 HTTP 方法。
  • authtype:透過 HTTP 存取物件集的所需的身分驗證型別。例如,“basic”或“digest”。
  • authtoken:透過 HTTP 存取物件集所需的身分驗證的認證權杖。
  • user:透過 HTTP 存取物件集所需的身分驗證的使用者名稱。
  • password:透過 HTTP 存取物件集所需的身分驗證的密碼。
  • http_headers: 透過 HTTP 存取物件集所需的其它 HTTP 標頭。
  • proxyhost:傳送 HTTP 請求的代理地址。
  • proxyport:HTTP 代理正在執行的 TCP 端口。
  • proxyuser:用於驗證 HTTP 代理的使用者名稱。
  • proxypassword:用於驗證 HTTP 代理的密碼。
  • proxyauthtype:代理所需的 HTTP 認證型別。例如,“basic” 或 “digest”。
  • proxyssltype:當連線代理伺服器時使用的 TLS/SSL 型別。有效值有 AUTO,ALWAYS,NEVER 或 TUNNEL。預設值為 AUTO。

控制屬性

  • _index:arc:call 當前正在迭代的物件的索引。
  • _op:被呼叫的運算器的名稱。如果在執行之前不知道運算器的名稱,這將很有幫助。
  • _separator:用來分隔多個輸入物件的分隔符號。

範例

使用預設物件作為輸入呼叫一個運算器:
在遠端計算機上呼叫另一個指令碼。如上面的範例所示,指令碼是巢狀的。

另請參閱

  • arc:first:編寫只在呼叫的第一次迭代中執行的元素。
  • arc:catch:在呼叫中捕獲錯誤。
  • arc:continue:繼續下一次迭代。