公式、REST 和 SQL 存储过程

一则或许对你有用的小广告

欢迎加入小哈的星球 ,你将获得:专属的项目实战 / 1v1 提问 / Java 学习路线 / 学习打卡 / 每月赠书 / 社群讨论

  • 新项目:《从零手撸:仿小红书(微服务架构)》 正在持续爆肝中,基于 Spring Cloud Alibaba + Spring Boot 3.x + JDK 17...点击查看项目介绍 ;
  • 《从零手撸:前后端分离博客项目(全栈开发)》 2 期已完结,演示链接: http://116.62.199.48/ ;

截止目前, 星球 内专栏累计输出 63w+ 字,讲解图 2808+ 张,还在持续爆肝中.. 后续还会上新更多项目,目标是将 Java 领域典型的项目都整一波,如秒杀系统, 在线商城, IM 即时通讯,权限管理,Spring Cloud Alibaba 微服务等等,已有 2200+ 小伙伴加入学习 ,欢迎点击围观

Espresso Logic 的关键支柱之一是使用 JavaScript 调用存储过程的可扩展性。许多公司都有使用存储过程来封装特定逻辑的 COTS 应用程序。当他们来到 Espresso 并询问有关公开 REST 服务的问题时,他们想知道并担心他们将如何公开他们的逻辑。

首先,Espresso Logic 读取大多数现代数据库的模式并为每个表、视图和存储过程创建一个 ORM。连接到 SQL 的即时 REST 特性使它成为一个很好的起点。这些对象反过来成为默认的 REST 端点,并成为自定义资源(用户定义的嵌套文档)和业务逻辑服务的构建块。这篇文章将探讨如何将存储过程公开为 REST 和逻辑领域中的一等公民。

调用存储过程

所有 REST 请求看起来都很相似,因为它们都是对服务器的 HTTP GET 调用。 URL 可能因帐户和项目而异,但调用过程的概念与调用表或视图的概念相同。但是,参数的处理方式略有不同。在此示例中,该过程有一个参数“ given_employee_id ”,它以“ arg”开头。 类似于 C# 在绑定变量时使用 @ 的方式。


 http://espressologic.com/rest/el-dev/sample/v1/demo:get_employee?arg.given_employee_id = 1

回复

调用过程的响应在 Espresso Logic 中略有不同。系统将返回一个 JSON 响应,其中包括参数列表、列元信息和任何行结果。这有助于调用者了解返回的内容。由于 Sproc 可能会返回多个结果集和结果中的多行。


 http://espressologic.com/rest/el-dev/sample/v1/demo:get_employee?arg.given_employee_id = 1


程序即公式

知道过程可以作为 REST 资源调用,我们现在结合声明逻辑的力量在我们的公式中使用它们。公式是返回计算结果的表达式。例如,我们可能想在我们的订单输入系统中创建一个新订单。我们允许我们的客户将他们的客户信息和项目/数量作为嵌套文档中的单个 POST 传递。我们现有的系统有一系列程序,可以调用这些程序来创建批次标题、订单日期、装运地点、仓库通知、订单号、生产线顺序、套件零件爆炸、客户特定产品项目定价。

我们的遗留代码可能是一大段代码或一系列函数调用,它们将各种用户值绑定为参数以创建各种中间值。我们已经了解单元测试的工作原理——也就是说——我们想要测试最小的工作单元,所以在 Espresso 中,我们在包含用户提供的值和系统生成的值的表上创建一个公式。这些公式将以正确的顺序自动调用(很像电子表格使用内部依赖树确定正确的计算顺序)。


公式作为模式

模型中的每个属性要么由客户提供(客户编号、发货方法仓库位置),要么使用将调用过程的公式计算得出。每个公式的模式都是相同的——识别字段、建立参数列表、处理过程和处理结果。在此示例中,我们使用已从先前公式计算出的顺序 no 获取下一行序列 no。

在这个例子中,我们调用一个过程并传入订单号(“ ”是当前表的完整对象模型)。我们进行调用,处理结果并提取新值。

Javascript 公式


 http://espressologic.com/rest/el-dev/sample/v1/demo:get_employee?arg.given_employee_id = 1

附加属性

一个不错的特性是 Espresso Logic 将允许 REST 调用者 POST 在当前表中找不到的附加属性。要启用此功能,您需要告诉系统 忽略额外的属性。 这可以通过将其传递到 URL ( IgnoreExtraAttributes=true) 或通过对特定 POST 资源名称使用请求事件来 完成 req.setUserProperty(“IgnoreExtraAttributes”,true);

在我的代码中——我会使用下面的代码来查看这些额外的属性是否存在


 http://espressologic.com/rest/el-dev/sample/v1/demo:get_employee?arg.given_employee_id = 1

GET 呢?

一个经常被忽视的特性是响应事件。我所做的是使用类型“ JavaScript ”为每个 GET 存储过程创建一个客户资源,然后简单地返回 {}; (空集)。所以在这个例子中,我们创建了一个名为 getCustomerInfo 的自定义资源。现在我们创建一个响应事件来寻找这个命名资源,调用我们的存储过程,提取响应并将其附加到 JSON。


 http://espressologic.com/rest/el-dev/sample/v1/demo:get_employee?arg.given_employee_id = 1


概括

使用 REST 服务器与您现有的 ERP 或 SQL 后端集成可以快速而简单。在 Espresso 的几行代码中添加将存储过程移动到服务器的逻辑,可以轻松扩展现有投资并允许您构建新的移动和 Web 前端。立即查看 Espresso Logic, 免费试用并将您自己的程序与规则联系起来。

相关文章