# 服务开发
# $api
$api模块负责api调用,如在平台api中注册的数据服务、脚本服务、原生服务等,通过$api.call()可以自动获取可以调用的api列表。
与页面开发的$api相比,服务开发的$api上的方法都为同步调用, 不需要success和fail的callback函数。
# call
参数:
- {String} apiCode(api编码)
- {Object} params(参数)
用法:
调用服务的唯一入口,只需要指定apiCode函数将自动根据api的注册信息构造请求,用户无需关心请求url、method、content-type和如何组装参数。
//根据物流中心名称查询物流中心
var params = {
ldc_name: '测试物流中心', //物流中心名称
}
var rst = $api.call('gatewayV2Test_logistics_centerSelect', params)
var ldcList = rst.data
- 返回体:
{
code: int,
data: any,
message: string,
...,
getData: function,
getOne: function,
whenError: function,
}
# getData
参数:
用法:
所有$api.call()的返回值将包含一个getData方法,如果code!=200则直接抛出异常,否则返回data
//根据物流中心名称查询物流中心
var params = {
ldc_name: '测试物流中心', //物流中心名称
}
var ldcList = $api.call('gatewayV2Test_logistics_centerSelect', params).getData()
# getOne
参数:
用法:
所有$api.call()的返回值将包含一个getOne方法,如果code===200且data为数组且数组长度为1则返回data[0],否则抛出异常
//根据物流中心名称查询物流中心
var params = {
ldc_name: '测试物流中心', //物流中心名称
}
var ldc = $api.call('gatewayV2Test_logistics_centerSelect', params).getOne()
# whenError
参数:
用法:
所有$api.call()的返回值将包含一个whenError方法,该方法接收一个函数(message) => {}用于定义当code===200时的处理逻辑, 注意该方法返回值依然是响应体对象,可用作链式调用
//根据物流中心名称查询物流中心
var params = {
ldc_name: '测试物流中心', //物流中心名称
}
var ldc = $api.call('gatewayV2Test_logistics_centerSelect', params)
.whenError(message => { throw '查询失败:' + message})
.getOne()
# $bpm
$bpm模块负责bpm流程的调用,包括userTask和serviceTask。
通过$bpm.start()可以自动获取流程定义key来发起流程。
通过$bpm.todoList()可以获取当前用户/当前租户的代办列表。
通过$bpm.next()可以对当前任务进行审核/驳回/指派等操作。
与表单开发的$bpm相比,服务开发的$bpm上的方法都为同步调用, 不需要success和fail的callback函数。
# start
用于发起流程,支持批量发起,适用于userTask和serviceTask。
参数:
- {String} startId(流程启动ID)
- {List<Map<String,Objcet>>} params(参数)
响应:
- {List}
- {String} processInstanceId(流程实例ID)
- {List}
用法:
发起流程,参数接收一个数组支持批量发起请求,数组中的每个对象至少需要一个参数bussinessKey(业务主键), bussinessKey会流程的整个生命周期中携带。
var params = [{
businessKey: 1, //业务主键
}]
$bpm.start('score_acc-1', params)
["840669dc-cdde-11ed-b069-0242ac110008"]
# todoList
用于获取待办,适用于userTask。
参数: 无参数
响应:
{List} 代办列表
- {String} prodDefKey(流程定义Key)
- {String} processInstanceId(流程实例ID)
- {String} startId(流程启动Key)
- {String} taskId(任务ID)
- {String} name(流程名)
- {String} businessKey(业务主键)
- {String} toDoNumber(代办数量)
- {String} auditUrl(审核链接)
- {String} listUrl()
- {String} category()
用法: 获取当前用户在当前租户下的代办列表
var todoList = $bpm.todoList().data()
[
{
"startId":"ish-audit",
"prodDefKey":"ish-audit-1",
"auditUrl":"",
"listUrl":"",
"businessKey":"1",
"toDoNumber":2,
"name":"入库计划审核",
"processInstanceId":"96089f06-cddc-11ed-b069-0242ac110008",
"category":null,
"taskId":"9608c61e-cddc-11ed-b069-0242ac110008"
}
]
# next
审核/驳回/指派,适用于userTask。
- 参数:
- {String} processInstanceId(流程实例ID)
- {String} auditorId(审核人ID)
- {Boolean} isApproved(是否通过)
- {String} approveAction()
- {List<>} taskIds(任务ID列表)
- {String} dataJsonStr(额外参数)
- 用法: 针对
//审核驳回
var auditData = {
processInstanceId: '1', //流程实例ID
auditorId: '1', //审核人ID
isApproved: true, //是否通过
approveAction: '1',
taskIds: ['1'], //任务ID列表
dataJsonStr: ''
}
var rst = $bpm.complete(auditData)
if (rst.code === 200) {
console.log(rst.data)
} else {
console.log(rst.message)
}
})
# $common
$common提供后端服务常用工具方案,如获取UUID、日期时间、序列号、助记码;算术计算,缓存、锁、消息等。
# snowId
- 参数:
- 用法:获取一个19位雪花算法生成ID用于数据库主键
var uuid = $common.snowId()
// 结果:1234567890123456789
# uuid
- 参数:
- 用法:获取一个32位uuid(不带'-')用于数据库主键
var uuid = $common.uuid()
// 结果:000003d6a642468a819de57b884fbc01
# getSeqNo
- 参数:
- {String} seqName
- 用法:传入一个seqName, 返回一个seqNo
var seqNo = $common.getSeqNo('SEQ_ENTRY_NO')
// 结果:IE00051
# listSeqNo
- 参数:
- {String} seqName
- {Number} count
- 用法:传入一个seqName和要批量返回的序列数量 返回多个seqNo
var seqNoList = $common.listSeqNo('SEQ_ENTRY_NO', 10)
// 结果:['IE00051',]
# mnemonic
- 参数:
- {String} name
- 用法:传入一个字符串(字母/数字/汉字), 返回一个英文首字母缩写作为助记码
var mnemonicCode = $common.mnemonic('九州云智')
// 结果:JZYZ
# getCurrentDate
- 参数:
- 用法:获取当前日期格式‘yyyy-MM-dd’的字符串
var date = $common.getCurrentDate()
// 结果:2020-01-01
# getCurrentDateTime
- 参数:
- 用法:获取当前时间格式‘yyyy-MM-dd HH:mm:ss‘的字符串
var time = $common.getCurrentDateTime()
// 结果:2020-01-01 00:00:00
# setCache
- 参数:
- {String} key
- {Object} value
- {Number} ttl
- 用法:设置缓存,默认缓存没有过期时间,可以通过第三个可选参数设置缓存过期时间(单位秒)
var key = 'shycier:test:1'
var value={
name:'shycier'
}
$common.setCache(key,JSON.stringify(value))
# getCache
- 参数:
- {String} key
- 用法:根据key获取缓存
var ttl = 60
$common.setCache(key,JSON.stringify(value),ttl)
var cache = $common.getCache(key)
console.log(cache)
// 结果: shycier
# removeCache
- 参数:
- {String} key
- 用法:根据key清除缓存
var ttl = 60
$common.setCache(key,JSON.stringify(value),ttl)
$common.removeCache(key)
# send
- 参数:
- {Object} obj1
- 用法:发送消息
var routingKey = 'top-test'
var message = {
name:'shycier'
}
$common.send(routingKey,message)
return cache
// 结果:
# tryLock
- 参数:
- {String} identify 锁唯一标识
- {Number} leaseTime 锁定时间(单位毫秒)
- {Number} waitTime 最大等待锁时间(单位毫秒)
- 用法:尝试获取锁,结果返回一个boolean值
var sucecess = $common.tryLock('test', 5000, 1000)
// 最多锁定5s 最多等待1s
// 结果: true/false
# unlock
- 参数:
- {String} identify 锁唯一标识
- 用法:释放锁
$common.unlock('test')
# add
- 参数:
- {Array} nums
- 用法:传入数字(以逗号来分割), 返回计算相加的数字
let data = $common.add(1, 0.2,0.03)
// 结果:1.23
# sub
- 参数:
- {Array} nums
- 用法:传入数字(以逗号来分割), 返回计算相减的数字
let data = $common.sub(1, 0.2,0.03)
// 结果:0.797
# sub
- 参数:
- {Array} nums
- 用法:传入数字(以逗号来分割), 返回计算相乘的数字
let data = $common.mul(1, 2, 3)
// 结果: 6
# div
- 参数:
- {Number} num1
- {Number} num2
- {Number} scale
- 用法:传入数字(以逗号来分割), 返回计算相除的数字,scale规定小数点后多少位。
// $common.div(num1,num2,scale)
let data = $common.div(2, 3, 3)
// 结果: 0.667
# rem
- 参数:
- {Number} num1
- {Number} num2
- 用法:传入数字(以逗号来分割), 返回计算相除的数字,取余数。
// $common.div(num1,num2)
let data = $common.div(2, 5)
// 结果:2
# round
- 参数:
- {Number} num
- {Number} scale
- 用法:传入数字, 返回计算四舍五入后的数字,scale规定小数点后多少位。
// $common.round(num,scale)
let data = $common.div(2.5555, 3)
// 结果: 2.556
# down
- 参数:
- {Number} num
- {Number} scale
- 用法:传入数字, 返回计算规定后取整的数字,scale规定小数点后多少位。
// $common.down(num,scale)
let data = $common.div(2.5555, 2)
// 结果: 2.55
# console
你可以在后台服务中使用console.log()输出日志,与页面开发和服务开发调试时不同,在运行时这些日志将会输出到日志文件中被日志系统抽取。 你可以在日志监控-脚本引擎中查看日志。
← 页面开发