1.什么是业务公式
业务公式是用来处理业务,执行业务逻辑的。所有的业务逻辑,都可以换成数据处理的逻辑来描述,简单来说就是更新或者新建表单。
业务公式在服务器端执行,根据客户端(云表浏览器)提交过来的表单请求,在执行这些请求的基础上,附带进行一系列对服务器数据表其他操作的“程序”,它用于本表业务发生后对其他业务或者自身业务的影响。
业务公式能做什么?
- 《入库单》审核时通过业务公式更新《库存表》的“存货数量”,同时自动创建一张《应付款单》;
- WMS系统中,货品上架时,扫描“货位条码”和“物料条码”之后,通过业务公式自动关联“物料”和“货位”,更新“货位”上“物料”的“数量”;
- 质检时,收货之后,根据“物料”和“质检标准”自动创建《质检单》;
- 生产管理系统中,《销售订单》经财务审核后,利用业务公式自动计算BOM,并生成《物料需求单》....等等
2.如何添加业务公式
使用业务公式前需要:①确定事件 ②确定目标模板。
选中事件,单击【添加公式】,选择目标模板,进入业务公式设置界面。
2.1 事件
业务公式的事件有2种:保存表单后事件和状态改变事件
保存表单后事件
:表单保存时触发;状态改变事件
:自定义状态后,单击【状态按钮】时触发;还有一种方式也可以触发执行业务公式“动态流程触发”,
动态流程触发
:触发时机有3种发起流程触发、审批通过时立即触发、审批通过但流程结束时触发;2.2 目标模板
目标模板:是指事件触发后写入数据的模板,它可以是其他模板也可以是本模板自身。
3.业务公式的组成
业务公式是由4部分组成:数据源,执行条件,子数据源,操作。
3.1 数据源
数据源
:
提供数据的表单称为数据源,默认为本表单,若本模板还有明细表,则可选择本表单.明细“本表单”是指当前触发业务事件的那张表单。例如:单号为CK001的《出库单》被保存后会触发“表单保存后”事件,在事件中定义了一个“更新库存表数量”的业务公式,在这个业务公式中“本表单”就是出库单CK001。
3.2 情况
可以看作是一个业务场景,可以定义多个业务场景,比如:入库增加库存,取消入库扣减库存,删除库存为0的库存....这些都是是业务场景,系统支持对情况重命名便于区分,执行条件用来描述与区别业务场景。
3.3 执行条件
针对业务场景,对数据源的记录进行逻辑判断,满足执行条件的源记录才能进入情况中,执行后续操作。
“执行条件”是一个逻辑判断表达式,在数据源之下,可调用数据源的数据项作为判断条件。当表达式的计算结果=“常量.是”(true)时,向下执行;当表达式的计算结果=“常量.否”(false)填表公式中止运行。
比如,情况1的执行条件为 本表单.状态 =“已审核”,情况2的执行条件为 本表单.状态=“未审核”,执行业务公式时,当表单的状态为“已审核”时,只有情况1的执行条件满足,情况2的执行条件不满足,只执行情况1;
3.4 子数据源
每个“情况”都可以单独定义自己的扩展子数据源,以适用于复杂的业务场景。云表提供了扩展数据源-子数据源的功能,业务公式可以通过数据接口进行查询扩展。
子数据源的作用:在对服务器端的某个目标对象进行加工操作时,除了可用客户端提供过来的数据源外,还可以用服务器端本身就储存着的子数据源(模板数据接口),先对本表单的数据进行扩展,然后用经过扩展的数据表来对所选的目标表的内容来进行修改。
详见
子数据源
的使用说明3.5 操作
“操作”是对目标模板的表单执行的动作,针对目标表单的基本信息(表单)和明细信息(记录)略有不同,它有8种操作:
3.5.1 新建表单/插入记录
3.5.2 更新表单/记录
先根据匹配条件,找到目标模板的表单/记录,再针对表单/记录执行更新。
匹配条件:更新操作必须填写匹配条件,对满足匹配条件的表单或者记录执行更新;
不存在时新增一条记录:可选,先在目标对象中根据匹配条件查找,当找不到满足匹配条件的记录时,才新增一条新的记录;
新增时才赋值:根据“匹配条件”,若匹配上了,则勾选上的数据项不会被赋值,只在新建的目标表单时才赋值,没有勾选上的数据项会被赋值;
针对目标模板的基本信息执行“更新表单”操作(详见
用本表单更改其它表单信息-示例
),针对目标模板的明细执行“更新记录”操作
(详见 对目标表明细操作-示例-本表明细更新目标明细
)
;3.5.3 删除表单/记录
针对目标模板的基本信息执行“删除表单”操作(详见
状态改变事件-示例
),针对目标模板的明细执行“删除记录”操作;3.5.4 报错
执行业务公式时,根据业务不允许继续执行,并弹出错误提示,防止用户操作失误(详见
报错
);3.5.5 启动动态流程
启动目标模板的动态流程,目标模板必须先设置动态流程(详见
对动态流程的操作
);3.5.6 中止流程
中止目标模板中满足条件表单的动态流程,已启动而未结束的流程
(详见
对动态流程的操作
); 3.5.7 删除流程(但不删除表单)
删除目标模板中满足条件表单的动态流程,但是不删除目标模板的表单
(详见
对动态流程的操作
)
;3.5.8 删除流程(和所有关联表单)
删除目标模板中满足条件表单的动态流程和表单
(详见
对动态流程的操作
)
;3.5.9 启动业务流程
3.6 条件表达式
对目标模板的数据项赋值时,根据不同的条件动态赋值。
如下图,当库存数量< 还需要出库的数量时, 库存有多少就出库多少,当库存数量 > 还需要出库的数量时,需要多少数量就出库多少。
4.执行规则
①在同一个模板中有多个不同事件的业务公式,事件触发,该事件下的业务公式才执行。比如:模板中同时存在状态改变事件和保存表单后事件时,保存表单时,只执行保存表单后的业务公式。
②在同一个事件下,有多个业务公式时,按照从上到下的顺序逐个执行的。比如:如上图,《入库单》的“审核”状态改变事件下公:更新采购订单、更新商品最新成本、创建应付款单...,按照从上向下的顺序逐个执行;
③对目标模板的明细操作,先针对基本信息操作,再针对明细信息操作(详见
对目标表明细表操作
)。比如:《入库单》针对《采购订单》操作时,需要先找到是哪个采购单(利采购订单.采购单号=本表单.采购单号),然后再针对该采购订单明细的入库数量执行更新操作;④同一个业务公式中有多个情况时,按照从左向右的顺序运行,当执行情况满足时才执行情况下的操作(详见
对目标表明细表操作-多情况运行规则
)。比如: 《入库单》针对《采购订单》操作时,有2种不同的情况:情况1-审核_增加入库数量、情况2-反审_减少入库数量,先执行情况1,再执行情况2,当 本表单.审核=常量.否 时,先运行情况1,执行条件不满足,跳出,再运行情况2,执行条件满足,执行操作;⑤同一个赋值操作中给多个数据项赋值时,按照从上向下的顺序逐一执行。比如:《入库单》针对《库存表》更新时,先赋值库存数量、库存金额,再计算库存单价,以确保计算正确;
⑥业务公式中有报错操作时,该事件下所有公式回滚(详见
报错
)。比如:“入库单”取消入库时,“库存”不足时,弹出提示框库存不足,此时该事件下所有的业务公式回滚到未执行公式之前,因此我们一般将报错操作放在第一个情况运行;