fte: call Ant task

您可以使用 fte:call 作業遠端呼叫 Script 及程式。

此作業可讓您將 fte:call 要求傳送至代理程式。 代理程式會透過執行 Script 或程式並傳回結果,來處理此要求。 要呼叫的指令必須可供代理程式存取。 請確定 agent.properties 檔案中的 commandPath 內容值包含要呼叫的指令位置。 由指令巢狀元素指定的任何路徑資訊,均必須相對於 commandPath 內容所指定的位置。 依預設,commandPath 為空白,因此代理程式無法呼叫任何指令。 如需此內容的相關資訊,請參閱 commandPath MFT 內容

如需 agent.properties 檔案的相關資訊,請參閱 MFT agent.properties 檔案

屬性

代理程式 (agent)
必要項目。 指定要向其提交 fte:call 要求的代理程式。 請使用下列格式指定代理程式資訊:agentname@qmgrname,其中 agentname 為代理程式名稱,qmgrname 為與此代理程式直接連接的佇列管理程式名稱。
cmdqm
選用項目。 要向其提交要求的指令佇列管理程式。 請使用下列格式指定此資訊:qmgrname@host@port@channel,其中:
  • qmgrname 為佇列管理程式的名稱
  • host 為執行佇列管理程式的系統的選用主機名稱
  • port 為佇列管理程式接聽的選用埠號
  • channel 為要使用的選用 SVRCONN 通道
如果省略指令佇列管理程式的 hostportchannel 資訊,則會使用 command.properties 檔案中所指定的連線資訊。
注意: 如果未指定下列項目的值:
  • host 變數,使用連結模式
  • port 變數,使用值 1414
  • channel 變數,即 SYSTEM.DEF.SVRCONN 。
如需相關資訊,請參閱 MFT command.properties 檔案

不過,您無法跳過中間的屬性,例如 qmgrname@host@@channel。 例如,您可以具有 qmgrname@hostqmgrname@host@portqmgrname@hostport@@channel

MFT 會使用 @ 定界字元來分割給定的屬性。 視找到的記號數目而定,它會採用第一個記號作為 qmgrname,第二個記號作為 主機,第三個記號作為 ,最後 通道

如需相關資訊,請參閱 MFT command.properties 檔案
您可以使用 com.ibm.wmqfte.propertySet 內容,指定所要使用的 command.properties 檔案。 如需相關資訊,請參閱 com.ibm.wmqfte.propertySet
如果您不使用 cmdqm 屬性,此作業會預設為使用 com.ibm.wmqfte.ant.commandQueueManager 內容(如果已設定此內容)。 如果未設定 com.ibm.wmqfte.ant.commandQueueManager 內容,將會嘗試連線到 command.properties 檔案中所定義的預設佇列管理程式。 com.ibm.wmqfte.ant.commandQueueManager 內容的格式與 cmdqm 屬性相同,即 qmgrname@host@port@channel
idproperty
選用項目,除非您已將 outcome 指定為 defer。 指定要為其指派傳送 ID 的內容名稱。 提交傳送要求時將會產生傳送 ID,您可以使用傳送 ID 來追蹤傳送進度、診斷傳送問題以及取消傳送。
如果您同時還將 outcome 內容指定為 ignore,則無法指定此內容。 但是,如果您同時還將 outcome 內容指定為 defer,則必須指定 idproperty
jobname
選用項目。 指派工作名稱給 fte:call 要求。 您可以使用工作名稱來建立邏輯傳送群組。 使用 fte: uuid Ant 作業 作業來產生虛擬唯一工作名稱。 如果您不使用 jobname 屬性,此作業會預設為使用 com.ibm.wmqfte.ant.jobName 內容值(如果已設定此內容)。 如果您不設定此內容,則沒有任何工作名稱與 fte:call 要求相關聯。
origuser
選用項目。 指定要與 fte:call 要求相關聯的原始使用者 ID。 如果您不使用 origuser 屬性,此作業會預設為使用要用來執行 Ant Script 的使用者 ID。
outcome
選用項目。 決定在將控制權交還給 Ant Script 之前,作業是否等待 fte:call 作業完成。 請指定下列其中一個選項:
await
在交還控制權之前,此作業會等待 fte:call 作業完成。 如果將 outcome 指定為 await,則 idproperty 為選用屬性。
defer
作業會在提交 fte:call 要求之後立即傳回,並假設稍後使用 awaitoutcomeignoreoutcome 作業來處理呼叫作業的結果。 如果將 outcome 指定為 defer,則 idproperty 為必要屬性。
ignore
如果 fte:call 作業的結果無關緊要,則可指定 ignore 值。 此作業即會在提交 fte:call 要求後立即交還控制權,而不配置任何資源來追蹤指令結果。 如果將 outcome 指定為 ignore,則無法指定 idproperty 屬性。
如果您沒有指定 outcome 屬性,此作業會預設為使用 await 值。
rcproperty
選用項目。 指定要為其指派 fte:call 要求的結果碼之內容名稱。 結果碼會反映 fte:call 要求的整體結果。
如果您同時還將 outcome 內容指定為 ignoredefer,則無法指定此內容。 但是,如果您已將 outcome 指定為 await,則必須指定 rcproperty

指定為巢狀元素的參數

fte: command
指定代理程式要呼叫的指令。 您只能將單一 fte:command 元素與給定的 fte:call 作業相關聯。 要呼叫的指令必須位於代理程式 agent.properties 檔案中 commandPath 內容所指定的路徑上。
fte:metadata
您可以指定要與呼叫作業相關聯的 meta 資料。 此 meta 資料會記錄在呼叫作業所產生的日誌訊息中。 您只能將單一 meta 資料區塊與給定的傳送元素相關聯;但此區塊可以包含許多 meta 資料片段。

範例

此範例顯示如何在佇列管理程式 QM1 上執行的 AGENT1 中呼叫指令。 要呼叫的指令為 command.sh Script,而此 Script 是使用單一引數 xyz 來呼叫。 指令 command.sh 位於代理程式 agent.properties 檔案中 commandPath 內容所指定的路徑上。

<fte:call cmdqm="QM0@localhost@1414@SYSTEM.DEF.SVRCONN" 
            agent="AGENT1@QM1" 
            rcproperty="call.rc" 
            origuser="bob" 
            jobname="${job.id}">

    <fte:command command="command.sh" successrc=1 retrycount="5" retrywait="30">
        <fte:arg value="xyz"/>
    </fte:command>

    <fte:metadata>
        <fte:entry name="org.foo.accountName" value="BDG3R"/>
    </fte:metadata>

</fte:call>