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