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

  • APL函数开放场景

  • APL类开放场景

    • 公共库

    • 电子签

    • 认证提供商

    • 可用业务类型

    • 对象Controller插件

    • 事件监听

    • 对象导出插件

    • ERP集成平台

    • 外勤类型函数校验

    • 快消订货业务插件

    • 对象业务处理器

      • 1.概述
      • 2.配置步骤
      • 3.Groovy代码示例
      • 4.常见问题
    • 在线文档

    • 自定义模型

    • 环境部署

Groovy代码示例

class ObjectHandlerImpl implements ObjectHandler {
    @Override
    Result handle(FunctionContext context, Map<String, Object> arg) {
        Map handlerDescribe = arg.handlerDescribe as Map
        //接口类型(Add:新建,Edit:编辑,Invalid:作废)
        String interfaceCode = handlerDescribe.interfaceCode as String
        //处理器类型(before:按钮执行前,after:按钮执行后)
        String handlerType = handlerDescribe.handlerType as String

        //新建按钮
        if ("Add" == interfaceCode) {
            //主对象数据
            Map objectData = arg.objectData as Map
            //从对象数据
            Map<String, List<Map<String, Object>>> detailObjectData = objectData.detailObjectData as Map
            if ("before" == handlerType) {
                String name = objectData.name as String
                //校验失败时,返回错误信息
                if (name != null) {
                    return Result.builder().success(false).errorMessage("name不能为空").build()
                }
                //根据条件修改数据
                if (name.startsWith("test-handler")) {
                    //修改主对象数据
                    objectData.name = name + DateTime.now().toTimestamp()
                    //修改从对象数据
                    if (detailObjectData != null && !detailObjectData.isEmpty()) {
                        detailObjectData.each { apiName, detailDataList ->
                            detailDataList.each {
                                Map detailData = it as Map
                                detailData.name = ((String) detailData.name) + DateTime.now().toTimestamp()
                            }
                        }
                    }
                    //返回修改后的数据
                    Map<String, Object> result = [:]
                    result.objectData = objectData
                    result.detailObjectData = detailObjectData
                    return Result.builder().result(result).build()
                }
                //校验成功时,返回空数据
                return Result.builder().build()
            }
            if ("after" == handlerType) {
                //数据保存成功后的逻辑
            }
        }

        //编辑按钮
        if ("Edit" == interfaceCode) {
            //主对象数据
            Map objectData = arg.objectData as Map
            //从对象数据
            Map<String, List<Map<String, Object>>> detailObjectData = objectData.detailObjectData as Map
            if ("before" == handlerType) {
                //校验逻辑
            }
            if ("after" == handlerType) {
                //是否成功触发审批流
                boolean triggerApprovalFlowSuccess = arg.triggerApprovalFlowSuccess as boolean
                //审批流触发类型(Create:新建,Update:编辑,Invalid:作废)
                String approvalFlowTriggerType = arg.approvalFlowTriggerType as String
                //成功触发了编辑审批流,直接返回
                if (triggerApprovalFlowSuccess && "Update" == approvalFlowTriggerType) {
                    return Result.builder().build()
                }
                //数据保存成功后的逻辑

            }
        }

        return Result.builder().build()
    }

    //debug 时候的入口方法
    Result debug(FunctionContext context, Map<String, Object> arg) {
        return handle(context, arg);
    }
}

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

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

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