脚本定义

功能介绍

# 脚本定义

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 手机号
email 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链接、密钥等数据。

  1. 在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

根据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