1 案例场景

跨设备表单页面操作可以记录日志供日后可追溯。记录表单的增删改记录,期望记录的要素:操作时间、操作人、操作人IP、操作类型(增/删/改等)、数据库操作执行SQL等。

2 解决方案

跨设备表单后天表达式提供了丰富的函数和系统变量以满足上述信息的获取和记录。
(1)操作时间:可以用日期函数来获取,例如:函数now()
(2)操作人:可以用系统用户变量来获取,例如:userIduserName
(3)操作人IP:利用系统服务变量clientIp获取。
(4)数据库操作执行SQL:在版本V7.2.0,我们为部分事件场景提供了【数据变更】相关变量tableRec.getFieldJsontableRec.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