language 屬性來實現,如下所示:
內建物件介面
的 Python 實現中使用了兩個主要介面。它們包含並提供對以下列出的內建變數的存取:ArcScriptContext
這表示 中 Python 指令碼的主要指令碼上下文物件。它提供類似字典的項存取方式,幷包含日誌記錄功能。此介面提供對_ctx 變數的存取,您可以使用該變數存取上下文。
可用的方法如下:
ArcScriptItem
這表示 指令碼環境中的單個資料項。它提供類似字典的屬性存取方式,並維護值清單。以下變數是自動可用的 ArcScriptItem 例項: 可用的方法有: 從高層次來看,_ctx 提供對指令碼上下文的存取,而 _input、output 和 _message 是預先例項化的 ArcScriptItem 物件。使用語法 _ctx.itemname 可以動態建立或存取自定義項。有關更多資訊,請參閱內建變數和運算器。
內建變數
這些變數用於存取指令碼環境中訊息上下文的核心。您可以使用它們與指令碼引擎中的可用項進行互動。_ctx
存取指令碼環境的主要變數。它提供:- 存取指令碼中所有可用的項
- 建立新項、推送項以及記錄到應用程式日誌的功能
_ctx 變數的 log 方法,使用 INFO 日誌級別將資訊記錄到應用程式日誌:
_input
指令碼引擎的只讀輸入項。可用屬性根據您編寫指令碼的上下文(例如端口的操作型別)而有所不同。例如,在設定為 Transform 操作的 Script 端口中,可以使用以下屬性:- ConnectorId
- WorkspaceId
- MessageId
- FilePath
- FileName
- Attachment#
- Header:*
output
內建項,當只需要單個輸出時,可作為建立和推送自定義項的替代方案。與需要顯式呼叫push() 將其作為輸出傳送的自定義項不同,output 項會在指令碼完成時自動推送。只需修改其屬性,指令碼執行完成後它就會自動作為輸出推送,無需任何額外的 push() 呼叫。
可以直接在項上設定屬性,也可以使用 dict 定義屬性;對自己定義的項也可以執行相同的操作。以下範例推送了一個包含一些資料的輸出檔案:
_message
當上下文中已載入訊息時,提供對當前訊息的存取。只有在特定場景下(例如,上下文中已載入訊息時),端口正在主動處理訊息時,此變數才可用。例如,在操作設定為 Trigger 的端口中,_message 變數不可用,因為在端口完成工作之前,訊息不會出現。當此變數不可用時,會出現 _message is not defined 例外。
可以使用以下屬性:
- Header:Message-Id
- Header:FileName
- Header:*
- body
_message 項中讀取 CustomerID 標頭,並將其作為當前訊息日誌檔案中的項目列印。
result
一個專門用於 XML Map 指令碼節點的特殊變數。它被視為整個指令碼的結果。此變數的值將用作對映中節點的值。不過,它也可以用作 Script 端口中的偵錯工具。 此範例用於 XML Map 端口目標節點的指令碼中,它從頂部宣告的 ArcScript 項中讀取來源檔案的 address/city xpath,然後使用 Python 將該值修改為前三個字母並全部大寫。新值隨後作為result 的值傳送:
result 變數用於向 Script 端口的日誌檔案新增項目:
運算器
log
log(level, message) 是 _ctx 變數的一個可用方法,允許將項目直接寫入 應用程式日誌。可用的日誌級別包括 DEBUG、INFO、WARNING 和 ERROR。

push
push(item) 將提供的項推送為指令碼的輸出。如果未指定輸出,則推送 output 項。
在本例中,在 ArcScriptContext 中建立了一個新的項 foo,併為其分配了一些資料和檔名,然後將其推送出去。
get
get(attr) 傳回 ArcScriptItem 上指定屬性的值。此方法提供了一種透過名稱存取項屬性的程式設計方式。其功能相當於直接使用點符號存取屬性(例如 _input.myattr)或使用字典式存取(例如 _input.get('myattr'))。
以下範例將 item 物件上 tags 屬性的值清單列印到當前指令碼的日誌檔案中。
clear
clear() 清除呼叫該方法的 ArcScriptItem。該項保持不變,只是為空。
- Before clear:
{"price":"2.99","name":"Milk","tags":["perishable","dairy","noreturn"]} - After clear:
{}