文档首页/
华为云SparkPack解决方案/
最佳实践/
SparkPack 企业ERP企业微信集成指南/
开发指南/
SparkPackERP和OA的接口封装到集成工作台/
SparkPackERP数据结构转换企业微信数据结构执行动作
更新时间:2024-07-02 GMT+08:00
SparkPackERP数据结构转换企业微信数据结构执行动作
- 进入函数-依赖包管理-创建依赖包
按照截图填写好参数,将从依赖包下载好的包上传,点击确定
- 同上步骤1
- 选择执行动作-创建执行动作,类型选择函数:
基本信息中执行动作名称为“SAP-微信数据转换”;
配置输入中选择创建函数如下图;
给函数命名,输入函数内容如下:
/** * * mssiAuthData参数样例 * { * "header":{}, // 连接器认证header参数 * "path": {}, // 连接器认证path参数 * "query":{}, // 连接器认证query参数 * "body":{}, // 连接器认证body参数 * "host":"https://demo.com // API主机地址 * } * */ const cdm = require('./mssi_cdm_convert'); let defaultCdmModleDef = { } //对输入数据做转码处理 function extractEventData(event, name) { let data = event[name] if (event.isBase64Encoded && data) { data = new Buffer(data, 'base64').toString() } return data ? JSON.parse(data) : {} } let handlerWxData = (obj) => { let arr = Object.keys(obj) let res = [] arr.forEach(item => { if (!item.includes('Table')) { res.push({ id: item, value: { text: obj[item] ? obj[item] + '' : '' } }) } else { let children = obj[item] children = children.map(item => { let list = [] let arr1 = Object.keys(item) arr1.forEach(key => { list.push({ id: key, value: { text: item[key] ? item[key] + '' : '' } }) }) return { list } }) res.push({ id: item, value: { children } }) } }) let i = res.findIndex(item => item.id.includes('Table')) res.push(res.splice(i, 1)[0]) return res } /** * 函数是方法的入口 * @param {*} event 执行事件(event), 包含用户定义的函数参数以及所选择的的连接器认证相关参数 * @param {*} context Runtime提供的函数执行上下文 * @returns */ exports.handler = async function (event, context) { const inputData = extractEventData(event, 'body') // 用户定义的函数参数数据 const mssiAuthData = extractEventData(event, 'mssiAuthData') // 连接器认证数据 const dataExtendConfig = extractEventData(event, 'dataExtendConfig') // 流步骤扩展参数 cdm.processConfigs(dataExtendConfig) cdm.initDefaultCdmModel(defaultCdmModleDef) let keys = Object.keys(cdm.getCdmModelInParameters()) let body if (keys.length == 0) { body = cdm.transferToDefaultMapper(inputData) } else { body = cdm.transferToMapper(inputData) } return { contents: handlerWxData(body) } }
再添加步骤1上传的依赖包
- 保存。