本文是系列文章的第二篇,解释了技术细节,并提供了一些屏幕截图以供预览。如果您想阅读一些背景和无聊的东西,微信返利机器人安全吗,请参阅第一部分。
在开始详细介绍之前,什么是返利,我考虑了一些产品愿景的关键特性。
利用SAP/ABAP提供的最重要的功能。例如ICM,哎呀实现模块化独立的JSON转换器GraphQL服务处理程序对模式一无所知解析器可以独立于模式生成逻辑BOL解析器生成动态模式并使用GENIL操作解析所有CRUD操作可以将架构保存到数据库表中,云服务器好吗,以便手动重新加载/配置SAP会话,通过BOL提高性能并跨请求保留模式用于代码覆盖率的可测试代码和ABAP测试脚本
GraphQL服务器作为来自ABAP的ICF服务公开,ABAP接受并提供JSON数据ICF处理程序类接受JSON字符串并转换为ABAP GraphQL模式类并进行验证如果启用了会话,大数据的趋势,则仅为第一次构建架构将解析用户输入查询并创建执行上下文将为单个解析器标识调用解析器类解析器要么转到BOL/GenIL或api,要么直接与DB通信以获取数据数据将作为JSON类提交回ExecutionContext最后,JSON类将被验证并转换为JSON字符串,作为ICF服务响应
注意:目前正在开发中,请关注此空间的更新,代码
遵循标准SAP授权,如请求中的MYSAPSSO2 header/cookie。
GraphQL API默认提供API文档,可以访问使用架构查询。它将提供信息给前端团队浏览合同,了解API支持哪些字段/操作
查询是从API获取一些数据的方式,与HTTP"get"操作相同。查询可以具有参数,这些参数将有助于从API筛选结果。查询应以UI请求必要字段结束。
这里我们可以看到API返回的结果,与服务器请求的4个字段完全匹配。
突变是更改服务器上某些数据的一种方式。这里我们正在创建一个BP以及子关系,如地址和营销属性。
包
ZGRAPHQL-主包包含所有语言/模式实现类ZGRAPHQL\u API-包含基本服务类,以将CRM数据公开为APIZGRAPHQL\u核心-基本服务器类
消息类-ZGRAPHQL
重要类
ZGQLSCL\u模式
负责创建GraphQL模式(类型系统)可以从内部表或数据库表创建验证并创建架构对象将所有必需的组件加载到内存中构建内省解析器并持有用户解析器
ZGQLCL\u API\u SERVICE\u BASE
BASE SICF handler类来处理GraphQL服务器的基本功能所有子类只需要提供PREPARE\u Schema method
ZGQLCL\u TABLES\u RESOLVER
的模式,该方法使用给定的ABAP表名构建Schama
ZGQLCL\u BUIL\u GENIL\u RESOLVER
类来解决所有与业务伙伴相关的BOL操作ZGQLCL\ U BUIL\ U CUST\ U解析器是一种允许限制暴露的BOL实体和关系映射关系名称
ZGQLSIF\u RESOLVER
RESOLVER以提供操作和数据的链接所有实现类必须提供要启动的架构每个操作的解析方法
ZGQLSCL\u INTROSPEC\u RESOLVER
负责解析架构内省查询
ZCX\u GQL\u EXCEPTION
基异常类可全局抛出错误服务器会自动处理此错误,并作为"错误"数组传递给客户端作为响应可以处理BOL错误和BAPI错误
ZGQLCL\u EXECUTION\u CONTEXT
类负责保持当前上下文直到操作执行结束在开始执行之前验证客户端提交的当前操作保存模式、当前正在执行的操作、客户端请求的选择
ZGQLCL\u EXECUTOR
类负责执行查询、突变和处理错误
方法解决查询操作
2。执行变异
方法执行变异(更新)操作
3。执行_SELECTION_SET
方法来解析客户端请求的每个字段递归解析每个自定义类型,直到它到达叶节点
ZGQLCL\u LOG
用于将请求记录到GraphQL服务器记录请求操作、响应错误事务:SLG0,Object-ZGRAPHQL,Sub-Object-ZGQL\u GEN
ZGQLCL\u UTILS
读取AppSet条目和域值的实用函数
我从这种方法中看到的好处是:
API实现的更高抽象性在运行在SAP之外的UI上使用广泛流行的工具链轻松集成最重要的是,性能可以在SAP内部调整,因为我们在数据库附近运行逻辑
即使我开始这是一个探索性的项目,不知道我是否可以自己完成它,花费我的夜晚和假期,在看到最终的结果后,我要求我的经理花一些时间来进行演示。
没有期望,凭借CRM的经验,我的经理立即发现了这个解决方案的潜力,以及我们的组织在使用GraphQL公开CRM数据方面可以获得的优势。在他的支持下,我成功地向更高的管理层介绍了
今天,我们正在试验和构建统一的企业级服务,为多个Web应用程序提供最小摩擦和高性能的服务。Web开发人员的反馈是"开发时间快,使用方便,软件企业条件,在选择客户端库时有更多选择"。