表单规则自定义脚本示例

表单规则自定义脚本示例

下面列出了一些可在请求表单规则中作为操作执行的示例脚本。

请求

功能

示例

备注

警报

await CS.alert(“message”);

await CS.alert("Alert message");

 

确认

var confirm = await CS.confirm(“message”);

if(confirm){

}

else{

}

var confirm = await CS.confirm(“Do you want to proceed");

if(confirm){

}

else{

}
 

网页重定向

await CS.alert(options);

await CS.alert({
    title: "Redirection Alert",
    message: "You are being redirected to Request list view",
    button_options: {
        label: "Proceed",
        redirectTo: "/ui/requests"
    }
});

重定向只支持内部链接。

获取API

await CS.API.get(“url”,”inputdata”);

await CS.API.get('/api/v3/requests/technician/',{list_info:{search_criteria:{field:'roles.name',condition:'is',value:'SDAdmin'}}});

调用内部应用程序接口

隐藏字段

CS.hideField(fields)

CS.hideField(["level","priority","urgency"]);

 

显示字段

CS.showField(fields)

CS.showField(["level","priority","urgency"])

 

禁用字段

CS.disableField(fields)

CS.disableField(["level","priority","urgency"]);

 

启用字段

CS.enableField(fields)

CS.enableField(["level","priority","urgency"]);

 

必填字段

CS.mandateField(fields)

CS.mandateField(["level","priority","urgency"]);

 

非必填字段

CS.nonMandateField(fields)

CS.nonMandateField(["level","priority","urgency"]);

 

添加选项

CS.addOptions(field,options)

CS.addOptions("urgency",["100000000000007061","100000000000007067"]);

确保它们是 Pick 类型字段和数组。

移动选项

CS.removeOptions(field,options)

CS.removeOptions("status",["100000000000007061","100000000000007067"]);

同上。

重置选项

CS.resetOptions(fields);

CS.resetOptions(["priority","impact"]);

同上。

清除字段

CS.clearOptions(fields)

  • CS.clearOptions(["urgency"]);
  • CS.clearOptions(["urgency","priority"]);

同上。

设置字段值

CS.setValue(field,value)

  • CS.setValue("subject","This is a test subject");

  • CS.setValue("urgency",{"name":"High","deleted":false,"id":"100000000000007061"});

  • CS.setValue("due_by_date", Date.now());

 

获取字段值

CS.getValue(field)

  • var status=CS.getValue("status");

  • var created_date=CS.getValue("created_date");  

     

要保留已选中的现有资源,可将其存储在一个数组中,然后向其中添加资源。然后,使用更新后的数组设置资源字段。

清除字段值

CS.clearValue(fieldnames)

CS.clearValue(["priority","impact"]);

 

设置任务

CS.setTasks(tasksArray)

CS.setTasks([{"id":"100000000000033123","value":"Task 1"},{"id":"100000000000033125","value":"Task 2"}]);

仅适用于配置有任务的请求模板。

未设置任务 

CS.unsetTasks(tasks)

CS.unsetTasks([{"id":"100000000000033123","value":"Task 1"},{"id":"100000000000033125","value":"Task 2"}]);

同上。

显示任务

CS.showTasks(tasks)

CS.showTasks([{"id":"100000000000033123","value":"Task 1"},{"id":"100000000000033125","value":"Task 2"}]);

同上。

隐藏任务

CS.hideTasks(tasks)

CS.hideTasks([{"id":"100000000000033123","value":"Task 1"},{"id":"100000000000033125","value":"Task 2"}]);

同上。

显示资源

CS.showResources(resources)

CS.showResources(["resources.res_100000000000030756"]);

仅适用于配置有资源问题的请求模板。

隐藏资源

CS.hideResources(resources)

CS.hideResources(["resources.res_100000000000030756"]);

同上。

设置本地数据

CS.dataStore.set(name,value)

CS.dataStore.set(“Technician",”John”);

使用表单的本地数据存储,其他为同一表单配置的自定义脚本可访问这些数据,并将数据分配给参数中提到的key。

默认情况下,dataStore 包含登录用户的信息,如电子邮件、用户名、姓氏和名字、照片 URL 等,这些信息可通过 CS.dataStore.get("CS_context") 访问。

获取本地数据

CS.dataStore.get(name)

CS.dataStore.get(“Technician");

使用表单的本地数据存储,为同一表单配置的其他自定义脚本可以访问并返回参数中提到的数据。如果没有传递参数,则会返回存储的所有数据

取消表单提交

CS.abort()

CS.abort("Aborted")

A仅适用于自定义脚本的表单提交或表单提交事件处理程序。

 

请注意,所有给定函数都应以 CS.end() 结尾;

表单规则自定义脚本示例

例1:检查入职日期是否晚于当前日期 10 天

var on_date = await CS.getValue("udf_fields.udf_date1");

var curr_date = Date.now();

var diff =  Math.round((on_date.value-curr_date)/(1000*60*60*24));

if(diff<10){

      await CS.alert("OnBoarding process will take minimum 10 days time");

      CS.clearValue('udf_fields.udf_date1');

}

CS.end();

 

例 2:当分类满足特定条件时,终止表单提交。

async function checkValueandAbort(){
	var category = await CS.getValue('category');
	if(category != null && category.name == 'Desktop Hardware')
	{
		await CS.alert('Aborting Form Submit since category is Desktop Hardware');
		CS.abort();
		CS.end();
	}
	else
	{
		CS.end();
	}
}
CS.onFormSubmit(function(){
	checkValueandAbort();
});
CS.end();

 

例 3:将主题设置为分类和子分类的组合

var cat = await CS.getValue("category");

var subcat = await CS.getValue("subcategory");

if(cat !=null && subcat!=null){

var sub = cat.name + subcat.name;
CS.setValue("subject",sub);

}

CS.end();