繫結定義簡單工作流程範例的動作元素程序如何處理輸入與輸出參數。

「資源集區」工作流程中的「拍攝所有虛擬機器的快照」需要下列輸入與輸出參數繫結。您也會為可編寫指令碼工作元素定義 JavaScript 函數。

當您繫結到現有參數時,繫結會繼承原始參數的類型與說明值。

Initializing 可編寫指令碼工作

Initializing 可編寫指令碼工作元素會初始化工作流程的屬性。下表顯示 Initializing 可編寫指令碼工作元素需要的輸入與輸出參數繫結。

表格 1. Initializing 可編寫指令碼工作元素繫結

參數名稱

繫結類型

繫結到現有參數或建立參數?

繫結值

resourcePool

輸入

繫結

  • 本機參數:resourcePool

  • 來源參數:resourcePool[in-parameter]

  • 類型:VC:ResourcePool

  • 說明:包含要拍攝其快照之虛擬機器的資源集區

allVMs

輸出

建立

  • 本機參數:allVMs

  • 來源參數:allVMs[attribute]

  • 類型:Array/VC:VirtualMachine

  • 說明:資源集區中的虛擬機器。

numberOfVMs

輸出

建立

  • 本機參數:numberOfVMs

  • 來源參數:numberOfVMs[attribute]

  • 類型:數字

  • 說明:resourcePool 中的虛擬機器數目

vmCounter

輸出

建立

  • 本機參數:vmCounter

  • 來源參數:vmCounter[attribute]

  • 類型:數字

  • 說明:陣列內虛擬機器的計數器

vm

輸出

建立

  • 本機參數:vm

  • 來源參數:vm[attribute]

  • 類型:VC:VirtualMachine

  • 說明:已拍攝快照的目前虛擬機器

snapshotVmArray

輸出

建立

  • 本機參數:snapshotVmArray

  • 來源參數:snapshotVmArray[attribute]

  • 類型:Array/VC:VirtualMachine

  • 說明:已拍攝快照之虛擬機器的陣列

Initializing 可編寫指令碼工作元素執行下列指令碼式函數。

//Retrieve an array of virtual machines contained in the specified Resource Pool
allVMs = resourcePool.vm;
//Initialize the size of the Array and the first VM to snapshot
if (allVMs!=null && allVMs.length!=0) {
	numberOfVms = allVMs.length;
	vm = allVMs[0];
} else {
	numberOfVms = 0;
}
//Initialize the VM counter
vmCounter = 0;
//Initializing the array of VM snapshots
snapshotVmArray = new Array();

VMs to Process? 決定元素

VMs to Process? 決定元素會判斷資源集區中是否有任何要拍攝其快照的虛擬機器存在。下表顯示 VMs to Process? 決定元素需要的繫結。

表格 2. VMs to Process? 繫結決定元素

參數名稱

繫結類型

繫結到現有參數或建立參數?

繫結值

numberOfVMs

決定

繫結

  • 來源參數:numberOfVMs[attribute]

  • 決定陳述式:大於

  • 值:0.0

  • 說明:resourcePool 中的虛擬機器數目

Pool Has No VMs 可編寫指令碼工作元素

Pool Has No VMs 可編寫指令碼工作元素記錄以下事實:資源集區未包含 Orchestrator 資料庫中適合的虛擬機器。下表顯示 Pool Has No VMs 可編寫指令碼工作元素需要的繫結。

表格 3. Pool Has No VMs 可編寫指令碼工作元素繫結

參數名稱

繫結類型

繫結到現有參數或建立參數?

繫結值

resourcePool

輸入

繫結

  • 本機參數:resourcePool

  • 來源參數:resourcePool[in-parameter]

  • 類型:VC:ResourcePool

  • 說明:包含要拍攝其快照之虛擬機器的資源集區。

Pool Has No VMs 可編寫指令碼工作元素執行下列指令碼式函數。

//Writes the following event in the Orchestrator database
Server.warn("The specified ResourcePool "+resourcePool.name+" does not contain any VMs.");

Remaining VMs?自訂決定元素

Remaining VMs?自訂決定元素會判斷資源集區中是否有任何要拍攝其快照的虛擬機器存留。下表顯示 Remaining VMs? 自訂決定元素需要的繫結。

表格 4. Remaining VMs? 繫結自訂決定元素

參數名稱

繫結類型

繫結到現有參數或建立參數?

繫結值

numberOfVMs

輸入

繫結

  • 來源參數:numberOfVMs[attribute]

  • 決定陳述式:大於

  • 值:0.0

  • 說明:resourcePool 中的虛擬機器數目

vmCounter

輸入

繫結

  • 本機參數:vmCounter

  • 來源參數:vmCounter[attribute]

  • 類型:數字

  • 說明:陣列內虛擬機器的計數器

Remaining VMs?自訂決定元素執行下列指令碼式函數。

//Checks if the workflow has reached the end of the array of VMs
if (vmCounter < numberOfVms) {
	return true;
} else {
	return false;
}

getVMDisksModes 動作元素

getVMDisksModes 動作元素包含在虛擬機器中執行的磁碟模式。下表顯示 getVMDisksModes 動作元素需要的繫結。

表格 5. getVMDisksModes 動作元素繫結

參數名稱

繫結類型

繫結到現有參數或建立參數?

繫結值

vm

輸入

繫結

  • 本機參數:vm

  • 來源參數:vm[attribute]

  • 類型:VC:VirtualMachine

  • 說明:已拍攝快照的目前虛擬機器

actionResult

輸出

建立

  • 本機參數:actionResult

  • 來源參數:vmDisksModes[attribute]

  • 類型:陣列/字串

  • 說明:虛擬機器的目前磁碟模式

errorCode

例外狀況

建立

本機參數:errorCode

Create Snapshot? 自訂決定元素

Create Snapshot? 自訂決定元素會決定是否根據虛擬機器的磁碟模式拍攝虛擬機器的快照。下表顯示 Create Snapshot? 自訂決定元素需要的繫結。

表格 6. Create Snapshot? 繫結決定元素

參數名稱

繫結類型

繫結到現有參數或建立參數?

繫結值

vmDisksMode

輸入

繫結

  • 本機參數:vmDisksMode

  • 來源參數:vmDisksMode[attribute]

  • 類型:陣列/字串

  • 說明:虛擬機器的目前磁碟模式

vm

輸入

繫結

  • 本機參數:vm

  • 來源參數:vm[attribute]

  • 類型:VC:VirtualMachine

  • 說明:已拍攝快照的目前虛擬機器

Create Snapshot?自訂決定元素執行下列指令碼式函數。

//A snapshot cannot be taken if one of its disks is in independent mode 
// (independent-persistent or independent-nonpersistent)
var containsIndependentDisks = false;
if (vmDisksModes!=null && vmDisksModes.length>0) {
	for (i in vmDisksModes) {
		if (vmDisksModes[i].charAt(0)=="i") {
			containsIndependentDisks = true;
		}
	}
} else {
	//if no disk found no need to try to snapshot the VM
	System.warn("Won't snapshot '"+vm.name+"', no disks found");
	return false;
}
if (containsIndependentDisks) {
	System.warn("Won't snapshot '"+vm.name+"', independent disk(s) found");
	return false;
} else {
	System.log("Snapshoting '"+vm.name+"'");
	return true;
}

Create a snapshot 工作流程元素

Create a snapshot 工作流程元素會拍攝虛擬機器的快照。下表顯示 Create a snapshot 工作流程元素需要的繫結。

表格 7. Create a snapshot 工作流程元素繫結

參數名稱

繫結類型

繫結到現有參數或建立參數?

繫結值

vm

輸入

繫結

  • 本機參數:vm

  • 來源參數:vm[attribute]

  • 類型:VC:VirtualMachine

  • 說明:要拍攝其快照的作用中虛擬機器。

name

輸入

建立

  • 本機參數:name

  • 來源參數:snapshotName[attribute]

  • 類型:字串

  • 說明:此快照的名稱。此虛擬機器的名稱不必是唯一的。

description

輸入

建立

  • 本機參數:description

  • 來源參數:snapshotDescription[attribute]

  • 類型:字串

  • 說明:此快照的說明。

memory

輸入

建立

  • 本機參數:memory

  • 來源參數:snapshotMemory[attribute]

  • 類型:布林值

  • 值:否

  • 說明:如果為 TRUE,則快照中會包含虛擬機器內部狀態的傾印 (記憶體傾印)。

quiesce

輸入

建立

  • 本機參數:quiesce

  • 來源參數:snapshotQuiesce[attribute]

  • 類型:布林值

  • 值:是

  • 說明:如果為 TRUE 且在拍攝快照時虛擬機器的電源是開啟的,則會使用 VMware Tools 來靜止虛擬機器中的檔案系統。

snapshot

輸出

建立

  • 本機參數:snapshot

  • 來源參數:NULL

  • 類型:VC:VirtualMachineSnapshot

  • 說明:拍攝的快照。

errorCode

例外狀況

建立

本機參數:errorCode

虛擬機器快照可編寫指令碼工作元素

虛擬機器快照可編寫指令碼工作元素會將快照新增至陣列。下表顯示「虛擬機器快照」可編寫指令碼工作元素需要的繫結。

表格 8. 「虛擬機器快照可編寫指令碼工作元素」繫結

參數名稱

繫結類型

繫結到現有參數或建立參數?

繫結值

vm

輸入

繫結

  • 本機參數:vm

  • 來源參數:vm[attribute]

  • 類型:VC:VirtualMachine

  • 說明:要拍攝其快照的作用中虛擬機器。

snapshotVmArray

輸入

繫結

  • 本機參數:snapshotVmArray

  • 來源參數:snapshotVmArray[attribute]

  • 類型:Array/VC:VirtualMachine

  • 說明:已拍攝快照之虛擬機器的陣列

snapshotVmArray

輸出

繫結

  • 本機參數:snapshotVmArray

  • 來源參數:snapshotVmArray[attribute]

  • 類型:Array/VC:VirtualMachine

  • 說明:已拍攝快照之虛擬機器的陣列

VM Snapshots 可編寫指令碼工作元素執行下列指令碼式函數。

//Writes the following event in the Orchestrator database 
Server.log("Successfully took snapshot of the VM '"+vm.name);
//Inserts the VM snapshot in an array
snapshotVmArray.push(vm);

Increment 可編寫指令碼工作元素

Increment 可編寫指令碼工作元素會增加計算陣列中虛擬機器數目的計數器計數。下表顯示 Increment 可編寫指令碼工作元素需要的繫結。

表格 9. Increment 可編寫指令碼工作元素繫結

參數名稱

繫結類型

繫結到現有參數或建立參數?

繫結值

vmCounter

輸入

繫結

  • 本機參數:vmCounter

  • 來源參數:vmCounter[attribute]

  • 類型:數字

  • 說明:陣列內虛擬機器的計數器

allVMs

輸入

繫結

  • 本機參數:allVMs

  • 來源參數:allVMs[attribute]

  • 類型:Array/VC:VirtualMachine

  • 說明:資源集區中的虛擬機器。

vmCounter

輸出

繫結

  • 本機參數:vmCounter

  • 來源參數:vmCounter[attribute]

  • 類型:數字

  • 說明:陣列內虛擬機器的計數器

vm

輸出

繫結

  • 本機參數:vm

  • 來源參數:vm[attribute]

  • 類型:VC:VirtualMachine

  • 說明:已拍攝快照的目前虛擬機器

Increment 可編寫指令碼工作元素執行下列指令碼式函數。

//Increases the array VM counter
vmCounter++;
//Sets the next VM to be snapshot in the attribute vm
vm = allVMs[vmCounter];

Log Exception 可編寫指令碼工作元素

Log Exception 可編寫指令碼工作元素會處理工作流程與動作元素中的例外狀況。下表顯示 Log Exception 可編寫指令碼工作元素需要的繫結。

表格 10. Log Exception 工作元素繫結

參數名稱

繫結類型

繫結到現有參數或建立參數?

繫結值

vm

輸入

繫結

  • 本機參數:vm

  • 來源參數:vm[attribute]

  • 類型:VC:VirtualMachine

  • 說明:已拍攝快照的目前虛擬機器

errorCode

輸入

繫結

  • 本機參數:errorCode

  • 來源參數:errorCode[attribute]

  • 類型:字串

  • 說明:拍攝虛擬機器快照時捕捉到的例外狀況

Log Exception 可編寫指令碼工作元素執行下列指令碼式函數。

//Writes  the following event in the Orchestrator database
Server.error("Coudln't snapshot the VM '"+vm.name+"', exception: "+errorCode);

Set Output 可編寫指令碼工作元素

Set Output 可編寫指令碼會產生工作流程的輸出參數,其中包含已拍攝其快照的虛擬機器陣列。下表顯示 Set Output 可編寫指令碼工作元素需要的繫結。

表格 11. Set Output 工作元素繫結

參數名稱

繫結類型

繫結到現有參數或建立參數?

繫結值

snapshotVmArray

輸入

繫結

  • 本機參數:snapshotVmArray

  • 來源參數:snapshotVmArray[attribute]

  • 類型:Array/VC:VirtualMachine

  • 說明:已拍攝快照之虛擬機器的陣列

snapshotVmArrayOut

輸出

繫結

  • 本機參數:snapshotVmArrayOut

  • 來源參數:snapshotVmArrayOut[out-parameter]

  • 類型:Array/VC:VirtualMachine

  • 說明:產生已拍攝快照之虛擬機器的陣列

Set Output 可編寫指令碼工作元素執行下列指令碼式函數。

//Passes the value of the internal attribute to a workflow output parameter
snapshotVmArrayOut = snapshotVmArray;