1 案例场景
跨设备表单页面操作可以记录日志供日后可追溯。记录表单的增删改记录,期望记录的要素:操作时间、操作人、操作人IP、操作类型(增/删/改等)、数据库操作执行SQL等。
2 解决方案
跨设备表单后天表达式提供了丰富的函数和系统变量以满足上述信息的获取和记录。
(1)操作时间:可以用日期函数来获取,例如:函数now()
(2)操作人:可以用系统用户变量来获取,例如:userId
、userName
等
(3)操作人IP:利用系统服务变量clientIp
获取。
(4)数据库操作执行SQL:在版本V7.2.0,我们为部分事件场景提供了【数据变更】相关变量tableRec.getFieldJson
和tableRec.getSqlJson
来获取页面执行的SQL和数据变更情况,下文将重点介绍下这两个新的系统变量。
(1)tableRec.getFieldJson
允许使用范围:保存/新增/修改/删除/节点移动/导入后事件
表达式:${tableRec.getFieldJson()},获取当前数据变更操作执行结果,包括执行的数据库表名、执行的变更类型(insert/update/delete)、字段名、数据原值、数据新值。其中insert类型仅记录新值、delete类型仅记录原值、update类型只记录新值与原值不同的记录。返回值:Json字符串
返回示例:
{
"主表表名": [{
"_op": "update",//sql执行类型
"_d":{//字段数据
"field1":["0","1"],//第一个是原始值,第二个是当前值
"field2":["2024-06-16","2024-06-17"]
}
}],
"从表表名": [{
"_op":"insert",
"_d":{
"field1":"1",
"field2":"2024-06-17"//新增还有当前值
}
},
{
"_op": "update",
"_d":{
"field1":[ "0","1"],
"field2":["2024-06-16","2024-06-17"]
}
},
{
"_op": "delete",
"_d":{
"field1":"0",
"field2": "2024-06-16"//删除只有原始值
}
}]
}
(2)tableRec.getSqlJson
允许使用范围:保存/新增/修改/删除/节点移动/导入后事件
表达式:${tableRec.getSqlJson()},获取当前数据变更操作执行的SQL语句。返回值:Json字符串
返回示例:
{
"主表表名": [{
"_op": "update",
"_sql":"update table set xxx = xxx where xxx = xxx"
}],
"从表表名": [{
"_op":"insert",
"_sql":"insert into table(f1,f2) VALUES(v1,v2)"
},
{
"_op": "update",
"_sql":"update table set xxx = xxx where xxx = xxx"
},
{
"_op": "delete",
"_sql":"DELETE FROM table where xxx = xxx "
}]
}
作者:Eric 创建时间:2024-07-12 10:33
最后编辑:Eric 更新时间:2025-04-24 13:55
最后编辑:Eric 更新时间:2025-04-24 13:55
