好的。计划任务数据变更触发有些类似于数据库的触发器,每当数据表有一行数据发生变更时,就会触发对应的计划任务,也就是计划任务触发时,上下文里参数只对应变更的那一条数据。关于数据表变更计划任务上下文里的参数,这里解释一下。
计划任务关于数据表新增、更新、删除,上下文里数据的变更主要有两个参数,一个是变更数据,一个是主键。
如果表结构为(文本、整数)这两个字段。
新增时,计划任务里的变更数据为:
[
{
"ColumnName": "文本",
"NewValue": "A"
},
{
"ColumnName": "整数",
"NewValue": 1
}
]
变更数据时一个对象数组,ColunmnName 记录了新增字段的列名,NewValue 就是新增的值。
修改时,比如把整数字段从 1 修改为 2,计划任务里变更数据为:
[
{
"ColumnName": "整数",
"OldValue": 1,
"NewValue": 2
}
]
变更数据时一个对象数组,ColumnName 是变更列名,OldValue 是变更前的值,NewValue 是变更后的值。这里只有发生变化的列才会在这个对象数组中,比如这里文本字段并没有修改,对象数组里就没有。
删除时,计划任务里的变更数据为:
[
{
"ColumnName": "ID",
"OldValue": 1
},
{
"ColumnName": "文本",
"OldValue": "A"
},
{
"ColumnName": "整数",
"OldValue": 2
}
]
变更数据时一个对象数组,包含了删除的所有列的列名和值。
然后,新增、修改、删除计划任务里,主键的格式都是:
{
"ID": 1
}
包含了主键的字段名,和主键的值。
所以回到我们的需求,我们需要创建三个计划任务,分别来处理出运子表新增、修改、删除时销售数据的处理。
在新增时,我们可以拿到出运子表新增的全部数据,简单处理,我们可以拿到新增的 ID,然后实际处理时,可以用 ID 用设置变量拿到全部新增数据。
在修改时,我理解只有出运子表里出货数量发生变更时,我们才需要去处理销售数据里的数量。这时候和需要在计划任务里循环变更数据,通过 ColumnName 为出货数量时,拿到 OldValue 和 NewValue,然后去处理数量逻辑。
删除时,可以拿到全部数据和 ID,循环通过 ColumnName 拿到出货数量,然后再去做数量处理逻辑。
|