业务公式:概述

来自企业管理软件文档中心
2019年9月5日 (四) 08:40Carol讨论 | 贡献的版本

(差异) ←上一版本 | 最后版本 (差异) | 下一版本→ (差异)
跳转至: 导航搜索

什么是业务公式

业务公式是在服务器端执行的,根据客户端提交过来的表单请求,在执行这些请求的基础上附带进行一系列对服务器端的数据表的其他操作的“程序”。

业务公式的本质作用


20190904业务公式概述01.jpg

业务公式用于本表业务发生后对其它业务的影响,包括对自身业务的影响。
在业务公式中,提供数据的表单称为数据源,写入数据的表单称为目标表单。业务公式的本质作用是:将一个或多个数据源中的数据经过变换后写入到目标表单中,从而实现一定的业务逻辑。例如出库业务公式,从出库单中获取出库商品的数量,用来更新库存表中对应商品的库存数量,其中的数据变换规则是:当前库存数量-本次出库数量。
数据源可以拥有多级扩展,子数据源对父数据源进行扩展,扩展也是按照逐行进行的,对父数据源中的每一条记录都会执行一次子数据源扩展,一个父数据源可以有多个子数据源,如果子数据源查询出了多条记录,默认情况只取第一条记录,除非子数据源的“多记录”选项被打勾,表明这个子数据源是作为父记录的明细表进行扩充,系统会遍历明细子数据源的每条记录,如果明细子数据源还有子数据源,将会以此类推,逐级扩展。一个父数据源允许有多个子数据源,但只允许有一个子数据源作为明细进行扩展。
业务公式中有一个默认的数据源叫“本表单”,“本表单”是指触发业务事件导致业务公式被执行的那张表单。例如:单号为CK001的出库单被保存后会触发“表单保存后”事件,在事件中定义了一个更新库存表数量的业务公式,在这个业务公式中本表单就是出库单CK001。 "本表单"从客户端提交到服务器端之后,被缓存在服务器内存中,"本表单"先被保存到数据库的总表中,保存到总表中的那张表单就不再被称为"本表单",保存之后,"本表单"还继续存留在内存中没有消失,因为它要被留作给被执行的业务公式当做数据源使用。
云表的架构是服务器客户端模式,云表浏览器是客户端用来提供用户交互界面,云表服务器提供表单存储,查询等功能;用户在云表浏览器中完成表单的数据录入工作,当点击保存按钮时,云表浏览器首先将界面上的表单数据打包并压缩,然后通过网络提交到云表服务器上。而云表服务器端程序处于时时监听状态,一旦发现有保存表单请求从网络上到达时,便会取出随请求一起传来的数据包,解压出表单数据,保存到后台数据库对应的总表中,接着云表服务器端框架会触发“表单保存后”事件,定义在该事件中的业务公式将被执行。
业务公式会遍历数据源,对每一条记录执行一次操作,可以把数据源想像成人体的心脏,他是业务公式执行的原动力,对数据源中的每一条记录都会触发一次心跳,驱动后续操作的执行,数据源的记录也像血液一样被输送到后续操作中使用。

参数说明

●客户端表单(本表单)
客户端的模板中所显示的客户端的数据集。数据集就是是客户端的一个json文件。这个文件在客户请求服务器端的操作时,需要提交到服务器端来。在业务公式里称这个数据集为“本表单”。
●客户端请求
客户端向服务器可提出三种操作请求,分别是:新建,保存和删除。
仅向服务器端提出,对本表单对应在服务器端的数据所要进行的操作。这些操作,服务器是无条件执行的,并不是业务公式中所定义的操作,而是伴随这些操作的“附加操作”。如果定义的是在“保存后”,则服务器是先执行请求的操作,然后执行附加操作。如果定义的是保存前,则反过来。 所以,在定义业务公式时,首先要明确的是,是附加在客户端提出的什么请求上执行的附加操作。
●目标对象
保存在服务器端的被业务公式选来进行附加操作的数据表对象,和客户端的Json作为源对象是相对应的,但目标对象可以选择“本表单”对应的数据表对象,也可以选择其他任何表单对应的服务器端的数据表对象。
●数据表对象
在云表平台上的“数据表”和通常关系型数据库系统中的数据表的概念有些区别,云表里的“数据表”,默认是关系型数据库中的一对“主-从表”的整体。
在业务公式里,通常把主表就叫“本表单”,而把从表叫做“明细”,和在定义模板时的“基本数据”和“明细数据”对应。在客户端,会把这个主从数据表按主从关系保存为一个json文件,客户端通过和服务器端交换这个json文件来实现数据的网络化流转。
所以,“表单”,“数据表”,json文件,在本质上都是指一个流转于客户端和服务器端的“主从数据表”。这个主从表在客户端接受客户的交互操作,在服务器端可以接受储存相关的请求操作,并可在一个主从表接受储存请求操作的同时,附加一些对本主从表或其他的主从表的加工操作。
一个业务公式,只能对一个目标对象进行附加操作。
●情况
在业务公式定义中的“情况”的含义,是指客户中提交请求的数据集中的数据的状态,数据的某种取值或取值的组合,就代表着某种有业务上的含义的“情况”。也就是说,客户端的请求是在哪种具体的“情况”下提交的。实际上,也就是告诉服务器,在执行附加操作前,需先查看在客户端发生的情况是什么?接下来的操作如果是以该情况为前提,就要在这里进行定义。
●数据源
业务公式用来告诉服务器,在对服务器端的某个目标数据集进行加工操作时,除了可用客户端提供过来的数据集外,还可以用服务器端本身就储存着的数据表或数据规范,先对本表单的数据进行扩展,然后用经过扩展的数据表来对所选的目标表的内容来进行修改。 这里的扩展,被扩展对象包括对本表单的基本信息表和明细信息表的扩展;扩展方式包括横向扩展和纵向扩展两种方式。最终结果是将本表单的基本信息的一条记录,扩展成一个更宽,更长(多条记录的一张大表),也把原来较小的明细表,也可以扩展为更宽更长的一张大表。 由于数据源扩展和对目标表的操作是可以在循环中进行操作,每次循环的操作都可能修改数据源,因此,数据源的扩展,也可以做出动态扩展的效果。
●数据规范
存储在服务器上的一些特殊的数据集,他们是通过对数据表的数据进行提炼、过滤而得到的,再用来为数据表的填充提供有规定格式和范围的一种业务基础数据。数据规范也是服务器端根据专门的定义而生成的。

运行机制

20190904业务公式概述02.jpg

数据源扩展机制

20190905业务公式概述03.png