纷享销客开发者手册 纷享销客开发者手册
  • APL开发手册
  • PWC开发手册
  • OpenAPI 文档
APL代码介绍
API Reference
开发工具
更新日志
  • 简体中文
  • English
APL代码介绍
API Reference
开发工具
更新日志
  • 简体中文
  • English
  • 入门

  • APL函数开放场景

  • APL类开放场景

    • 公共库

    • 电子签

    • 认证提供商

    • 可用业务类型

    • 对象Controller插件

    • 事件监听

    • 对象导出插件

    • ERP集成平台

      • 1.概述
      • 2.配置步骤
      • 3.Groovy代码示例
      • 4.常见问题
    • 外勤类型函数校验

    • 快消订货业务插件

    • 对象业务处理器

    • 在线文档

    • 自定义模型

    • 环境部署

Groovy代码示例

class ERPIntTestVariable implements IntegrationStreamSyncPlugin {

    /**
     * 同步前函数,支持数据过滤
     */
    @Override
    IntegrationStreamSync.BeforeSyncResult executeBeforeSync(FunctionContext context, IntegrationStreamSync.BeforeSyncArg arg) {
        Integer sourceEventType = arg.getSourceEventType() //源系统触发事件-已废弃,请勿使用

        String tenantId = arg.getSourceTenantId() // 企业id
        String sourceObjectApiName = arg.getSourceObjectApiName() // 源系统对象apiName
        String destObjectApiName = arg.getDestObjectApiName() // 目标系统对象apiName
        ErpObjectData objectData = arg.getObjectData() // 来源系统主对象字段信息
        Map<String, List<ErpObjectData>> details = arg.getDetails() // 来源系统从对象信息 key:从对象apiName value:从对象字段信息列表
        String sourceDataId = arg.getSourceDataId() // 源系统数据id,只有crm->erp方向有这个字段

        String name = objectData.getName() // 来源系统对象数据主属性
        def value = objectData["属性"] // 获取对应属性值

        // 返回null表示什么都不修改
//        return null

        def data = new IntegrationStreamSync.BeforeSyncData();
        data.setIsExec(true) // 为false 数据过滤,不做同步
        data.setIsCover(true) // 不给值或为false 不修改源数据
        data.setObjectData(null) // 替换源数据,为null主从对象都不做替换 如果只需要替换从对象,可以设置 data.setObjectData(objectData)
        data.setDetails(null) // 替换从对象信息,为null不做替换 key:从对象apiName value:从对象信息列表

        def result = new IntegrationStreamSync.BeforeSyncResult()
        result.setCode("0") // 返回结果状态 0为正常,其他都是失败
        result.setMessage("success") // 返回的错误信息
        result.setData(data)
        return result
    }

    /**
     * 同步中函数:写入目标系统之前
     * 函数执行后,在函数中编写的映射值修改,企业id和对象apiName不会更改。
     */
    @Override
    IntegrationStreamSync.DuringSyncResult executeDuringSync(FunctionContext context, IntegrationStreamSync.DuringSyncArg arg) {
        String tenantId = arg.getSourceTenantId() // 企业id
        String sourceObjectApiName = arg.getSourceObjectApiName() // 源系统对象apiName
        String destObjectApiName = arg.getDestObjectApiName() // 目标系统对象apiName
        ErpObjectData objectData = arg.getObjectData() // 目标系统主对象字段信息
        Map<String, List<ErpObjectData>> details = arg.getDetails()
        // 目标系统从对象信息,只有新增动作这个字段才有值 key:从对象apiName value:从对象字段信息列表
        Integer destEventType = arg.getDestEventType() // 目标系统执行动作 1、新增 2、修改 3、作废

        // 返回null表示什么都不修改
//        return null
        String name = objectData.getName() // 目标系统对象数据主属性
        def value = objectData.get("属性") // 获取对应属性值

        ErpObjectData.ErpExtendData masterExtendData = objectData.getOrCretaErpExtendData(); //添加扩展值
        masterExtendData.setRemoveFields(["field1","field2"]) //设置删除的字段名
        masterExtendData.setAddData(["field3": "value3", "field4": "value4"]) //设置新增的数据

        def data = new IntegrationStreamSync.DuringSyncData()
        data.setObjectData(arg.getObjectData()) // 替换主对象字段信息,为null主从对象都不做替换 如果只需要替换从对象,可以设置 data.setObjectData(objectData)
        data.setDetails(arg.getDetails()) // 替换从对象字段信息,为null不做替换 key:从对象apiName value:从对象字段信息列表

        data.setDetailCover(true); // 为true时,以返回的details为准,覆盖从对象数据

        def result = new IntegrationStreamSync.DuringSyncResult()
        result.setCode("0") // 返回结果状态 0为正常,其他都是失败
        result.setMessage("success") // 返回的错误信息
        result.setData(data)
        return result
    }

    /**
     * 同步后函数,数据同步不会受到影响
     */
    @Override
    IntegrationStreamSync.AfterSyncResult executeAfterSync(FunctionContext context, IntegrationStreamSync.AfterSyncArg arg) {
        Integer sourceEventType = arg.getSourceEventType() //源系统触发事件-已废弃,请勿使用

        String tenantId = arg.getSourceTenantId() // 企业id
        String sourceObjectApiName = arg.getSourceObjectApiName() // 源系统对象apiName
        String destObjectApiName = arg.getDestObjectApiName() // 目标系统对象apiName
        String sourceDataId = arg.getSourceDataId() // 源系统数据id,只有crm->erp方向有这个字段
        ErpObjectData objectData = arg.getObjectData() // 目标系统主对象字段信息
        Map<String, List<ErpObjectData>> details = arg.getDetails()
        // 目标系统从对象信息,只有新增动作这个字段才有值 key:从对象apiName value:从对象字段信息列表
        Integer destEventType = arg.getDestEventType() // 目标系统执行动作 1、新增 2、修改 3、作废
        CompleteDataWriteMqData writeData = arg.getCompleteDataWriteResult() // 同步目标数据结果
        int code = writeData.getErrCode() // 0为正常,其他为失败接口返回的错误码
        String msg = writeData.getErrMsg() // 失败接口返回的错误信息
        Integer destTenantType = writeData.getDestTenantType() // 目标系统 1.纷享CRM 2.ERP
        CompleteDataWriteMqData.WriteResult writeResult = writeData.getWriteResult() // 同步主数据结果
        int errCode = writeResult.getErrCode() //主数据结果,0为正常,其他为失败接口返回的错误码
        String errMsg = writeResult.getErrMsg() // 主数据失败返回的错误信息
        SimpleSyncData simpleSyncData = writeResult.getSimpleSyncData() // 同步数据简略信息
        String destDataId = simpleSyncData.getDestDataId() // 目标系统数据id
        String destDataName = simpleSyncData.getDestDataName() // 目标系统数据主属性
        Map<String, ErpObjectData> destDetailSyncDataIdAndDestDataMap = writeResult.getDestDetailSyncDataIdAndDestDataMap()
        // 目标对象明细
        List<CompleteDataWriteMqData.WriteResult> results = writeData.getDetailWriteResults() // 同步明细数据结果

        String name = objectData.getName() // 目标系统对象数据主属性
        def value = objectData["属性"] // 获取对应属性值

        def result = new IntegrationStreamSync.AfterSyncResult()
        result.setCode("0") // 返回结果状态 0为正常,其他都是失败
        result.setMessage("success") // 返回的错误信息
        return result
    }

    //debug 时候的入口方法
    Object debug(FunctionContext context, Map arg) {
       return executeBeforeSync(context, json.parseObject("{}", IntegrationStreamSync.BeforeSyncArg))
    }
}

2.配置步骤
4.常见问题

← 2.配置步骤 4.常见问题→

  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式