脚本定义
功能介绍
# 脚本定义
function(context){ }
1
- 请勿重命名function(context){}
- 脚本提供丰富的内置函数。详细说明请参考下文。
- 脚本之间支持传递参数。详细说明请参考下文。
- 当你的脚本需要抛出异常时,需要向IDaaS返回Result对象,如:return new Error(“this is error”); 抛出异常后,脚本终止,后续脚本不再执行;如果不需要抛出异常,无需返回。
# Context参数
触发场景 | 描述 |
---|---|
context.user | 当前请求用户,详细说明请参考下文。 |
context.oldUser | 当前请求前的用户,仅用户更新前,用户更新后存在。 |
# User对象
user对象包含用户字段定义中的以下字段,包含用户自定义字段,常见的字段包含:
字段代码 | 类型 | 字段名称 |
---|---|---|
id | String | ID |
userName | String | 用户名 |
organizationId | String | 地区 |
name | String | 姓名 |
mobile | String | 手机号 |
String | 邮箱 | |
firstName | String | 名字 |
middleName | String | 中间名 |
lastName | String | 姓氏 |
externalId | String | 外部ID |
mailingAddress | String | 邮寄地址 |
zipCode | String | 邮政编码 |
industry | String | 所属行业 |
# 内置函数
HttpClient函数:
方法名 | 说明 | 示例代码 |
---|---|---|
get(url) | 请输入http或https开头的url | HttpClient.get(“url”) |
get(url,params) | params参数将拼接在url后,参数如需编码,需要先编码 | HttpClient.get(“url”,params) |
get(url,params,headers) | 支持传入headers,多值请用分号(;)间隔 | HttpClient.get(“url”,params,headers) |
post(url) | 请输入http或https开头的url | HttpClient.post(“url”) |
post(url,body) | 支持传入body对象 | HttpClient.post(“url”,body) |
post(url,body,headers) | 支持传入headers,多值请用分号(;)间隔 | HttpClient.post(“url”,body,headers) |
Log函数:
方法名 | 说明 | 示例代码 |
---|---|---|
debug(msg) | msg建议为字符串 | new Log(context).debug(“this is log”) |
debug(msg,...arguments) | 支持占位符格式msg | new Log(context).debug(“send {0}”, “success”) |
# 配置环境变量
开发者可以通过全局变量env获取,环境变量所有脚本全部可见,环境变量为一组Key-Value Pair值,可以对Value进行加密处理。常用于保存WebHook链接、密钥等数据。
在IDaaS企业中心平台的 “设置 > 用户事件” 页面选择 “环境变量” ,单击 “添加环境变量” ,根据界面提示配置参数。
# 参数传递
事件定义整个流程中的脚本数据可以互相传递,实现工业流水线效果。使得开发人员自定义脚本更加模块化,便于管理。
通过给定一个demo,包含两个脚本定义,其中一个获取token,另一个根据token获取用户信息,将token存放在context对象上传递至下一个脚本使用。
异步执行的脚本不支持传递参数。
获取Token:
function(context){
var header = {"Authorization":"Basic " + env.basicToken};
var body = {"grant_type":"client_credentials"};
var result = HttpClient.post(env.tokenUrl, body, header);
context.access_token= JSON.parse(result).token;
}
将接口中token存放在context.access_token上
1
2
3
4
5
6
7
2
3
4
5
6
7
根据Token获取用户信息:
function(context){
var header = {"Authorization":"Bearer " + context.access_token};
var result = HttpClient.get((env.userInfoUrl, null, header);
new Log(context).debug(result);
[context.user.name](http://context.user.name/)=JSON.parse(result).user_name;
}
从context.access_token获取我们的上一步存放的token
1
2
3
4
5
6
7
2
3
4
5
6
7