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, 免费试用并将您自己的程序与规则联系起来。