工作流脚本元素、操作和策略需要对常用工作流任务的脚本编辑示例。您可以将这些示例剪切、粘贴和调整应用到自己的脚本元素中。

按当前用户返回所有工作流运行

以下 JavaScript 示例会从服务器获取所有工作流运行,并检查其是否属于当前用户。

var allTokens = Server.findAllForType('WorkflowToken');
var currentUser = Server.getCredential().username;
var res = [];
for(var i = 0; i<res.length; i++){
	if(allTokens[i].runningUserName == currentUser){
	  res.push(allTokens[i]);
	}
}
return res;

访问当前工作流令牌

您可以使用 workflow 变量访问当前工作流令牌。该变量是类型 WorkflowToken 的一个对象,提供当前工作流运行的访问权限。以下 JavaScript 示例可获取工作流令牌的 ID 及其开始日期。

System.log("Current workflow run ID: " + workflow.id);
System.log("Current workflow run start date: "+workflow.startDate);

调度工作流

以下 JavaScript 示例会通过一组给定属性来启动工作流,并会调度其在一个小时后启动。

var workflowToLaunch = myWorkflow ;  
// create parameters 
var workflowParameters = new Properties() ;
workflowParameters.put("name","John Doe") ;
// change the task name 
workflowParameters.put("__taskName","Workflow for John Doe") ; 

// create scheduling date one hour in the future
var workflowScheduleDate = new Date() ; 
var time = workflowScheduleDate.getTime() + (60*60*1000) ;
workflowScheduleDate.setTime(time) ; var scheduledTask =
workflowToLaunch.schedule(workflowParameters,workflowScheduleDate);

对循环中的选择对象运行工作流

以下 JavaScript 示例会获取虚拟机阵列,并对 For 循环中的每台虚拟机运行工作流。VMsworkflowToRun 为工作流输入。

var len=VMs.length;
for (var i=0; i < len; i++ )
{
 var VM = VMs[i];
 //var workflowToLaunch = Server.getWorkflowWithId("workflowId");
 var workflowToLaunch = workflowToRun;
 if (workflowToLaunch == null) {
 throw "Workflow not found";
 }
var workflowParameters = new Properties();
workflowParameters.put("vm",VM);
var wfToken = workflowToLaunch.execute(workflowParameters);
System.log ("Ran workflow on " +VM.name);
}