
# 华为云成长型企业数字化转型包ERP数据结构转换企业微信数据结构执行动作
1. 进入函数-依赖包管理-创建依赖包 
   ![](https://support.huaweicloud.com/bestpractice-sparkpack/zh-cn_image_0000001696737030.png)
   按照截图填写好参数，将从依赖包下载好的包上传，点击确定
   ![](https://support.huaweicloud.com/bestpractice-sparkpack/zh-cn_image_0000001744458053.png)
   
   
2. 同上步骤1
3. 选择执行动作-创建执行动作，类型选择函数： 
   基本信息中执行动作名称为"SAP-微信数据转换"；
   ![](https://support.huaweicloud.com/bestpractice-sparkpack/zh-cn_image_0000001696335142.png)
   配置输入中选择创建函数如下图；
   ![](https://support.huaweicloud.com/bestpractice-sparkpack/zh-cn_image_0000001744217785.png)
   给函数命名,输入函数内容如下：
   ```
   /**
    *
    * 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上传的依赖包
   ![](https://support.huaweicloud.com/bestpractice-sparkpack/zh-cn_image_0000001744458817.png)
   ![](https://support.huaweicloud.com/bestpractice-sparkpack/zh-cn_image_0000001744458929.png)
   
   
4. 保存。
 
