Pine.js是一个由规则驱动的精密API引擎,它使您能够在结构化的英语子集中定义规则. 使用这些规则是为了让Pine.js生成一个数据库计划以及相关的 OData 数据 API (英语). 这使得快速地创建,更新和维护后端非常容易,同时将逻辑保持为易于理解的形式,同时提供更新和维护这种逻辑向前发展的能力.
《规则》在下文中作了说明 SBVR 软件 格式,代表"商业词汇和商业规则的语义". SBVR提供了一种在自然语言中捕捉规格并用形式逻辑来代表它们的方法,因此它们可以被机器处理.
SBVR的基本成分如下:
- 术语 - 这些是您数据模型的原子元素,通过
Term: [Term Name]。一般而言,这些映射到关系数据库中的表格,或者其他表格的属性. - 事实类型 - 这些定义 关系 在不同术语之间和这些术语的属性之间,例如:.
Fact type: pilot can fly plane或者说Fact type: pilot is experienced- 这些 有点 映射到关系数据库中的字段和外键. - 规则 - 这些定义 逻辑限制 sBVR和Pine.js本身最强大的方面。 规则对关系数据库的制约进行松散的映射,但将其延伸至能够穿行表格的制约,一般比数据库的制约强得多. 举个例子.
Rule: It is obligatory that each pilot can fly at least 1 plane. SBVR规则的表达能力远远超过了简单的SQL DDL,并具有"一阶逻辑"的全能.
为了了解SBVR是如何工作的,访问 sbvr 实验室,详细情况请查看 SBVR 光谱。 。 。 .
作为@balena/pinejs包的一部分,安装了下列工具:
- sbvr-编译器:可以通过SBVR链将SBVR编译为SQL, eg
npx sbvr-compiler test.sbvr - odata-编译器:可用于通过从OData链到SQL的OData URL编译, eg
npx odata-compiler test.sbvr /test
两个工具都使用Pine.js的一些主要依赖:
- 抽象 sql 编译器
- lf-to-abstract-sql 函数
- sbvr-parser 软件
- 数据参数
- odata-to-abstract-sql 数据转换
上面的软件包是用 OMeta 并被编入Javascript. 下列资源为人们更好地了解OMeta和上述依赖性奠定了良好的起点:
下列论文也有助于理解Pine.js的主要概念:
/docs文件夹内的文件还提供了Pine.js主要概念的大致概况,特别是:
- 文件/资料:提供pinejs执行给定的SBVR模型之前执行的sql查询或Javascript函数的信息.
- 文件/手册: 当请求API呼叫时,您可以执行的功能,以便执行自定义代码.
- 文件/项目:提供有关创建和配置项目的信息.
- 文件/类型.md:各种系统中的定义和声明类型.
- 文件/序列-图表/: 提供对主要进程如何执行的广阔概述,包括OData请求解析,响应处理等. (序列图可被描绘为: 互联网档案馆的存檔,存档日期2013-10-02. websequencediagrams.com(中文(简体) )
一个可以用Pine.js,其主要依赖和上述工具在balena的开发环境内进行实验.
从何而去
首先用 Pine.js 创建您的第一个应用程序 。 跳转到 获得开始的引导。 。 。 .
存储文件和其他大对象
应用程序可以在两种类型中选择保存文件内容或另一个大对象: File 或者说 WebResource当使用时 File,PineJS使用类似二进制数据类型保存数据库中的内容 BYTEA 或者说 BLOB当使用时 WebResource,PineJS将二进制内容保存在外部存储服务上,然后将元数据,包括内容公开URL写入数据库. 客户端应用程序使用 WebResource href 获取内容.
请注意: WebResource 这项工作仍在进行中,因此有一些局限性。 例如(但不限于):
- 过滤特定文件名或大小
- 删除文件可能失败, 需要手动删除文件的存储