多张单据合并下推一张下游单据,系统如何存储流程数据?
1、多张单据是流程的起点的时候,系统会分三个流程实例存储。
示例:多张没有源单的【销售订单】合并下推一张【发货通单】
这个时候是有三个instanceid记录下推动作
select * from t_bf_instanceentry where finstanceid in ('60c070cfff8b68','60c070cfff8b63','60c070cff8b5e')
当【发货通知单】下推【销售出库单】,每个流程实例都会维护【发货通知单】到【销售出库单】的关系。
select * from t_bf_instanceentry where finstanceid in ('60c070cfff8b68','60c070cfff8b63','60c070cff8b5e')
需要注意的事,由于【发货通知单】到【销售出库单】的关系存储在不同的instanceid中,T_BF_INSTANCEAMOUNT的数据(famount字段)不会进行拆分。
select * from t_bf_instanceamount where frouteid in ('60c07241ff8b80','60c07241ff8b83','60c07241ff8b86')
2、多张单据不是流程的起点的时候,系统以一个流程实例存储流程数据。
示例:一个【销售订单】多次下推【发货通知单】,多个【发货通知单】下推一个【销售出库单】
这个时候只有一个instanceid,记录下推动作
select * from t_bf_instanceentry where finstanceid in ('60c0734aff8b92')
此时【销售出库单】下推【应收单】,只有一条记录
综上,多个单据下推一个下游单据,当多个单据是流程的开端时,系统按多个流程实例存储,后续继续下推的时候,多个流程实例都会维护。当多个单据不是流程的开端时,系统按一个流程实例存储,后续下推只需要维护一条数据。