功能实现:在WorkFine实现异地登录邮件通知功能的实现思路及方法

使用WorkFine无法直接实现需求时,可以借助外力实现所需功能,比如使用AI、脚本、Windows功能等。

还有个使用邮件功能的原因是短信越来越不好用,无故拦截无法及时通知到

功能需求

当系统检测到异地登录时发送邮件到指定邮箱通知

最终效果

功能特点:

  • 灵活配置:独立的数据库、邮箱等关键信息存储在配置文件内
  • 自动检测:通过Windows计划任务实现无感运行
  • 日志输出:记录执行过程和结果,可配置存储日志时长
  • ✅ 数据库监控:实时检测异常登录日志。
  • ✅ 自动化运维:减少人工检查成本,自动告警。
  • ✅ 安全审计:快速发现异常登录行为。

实现方法(后面附思路)

  1. 数据获取:通过WorkFine系统日志表
  2. 数据引入:通过WorkFine外部数据源引入日志表
  3. 数据处理:通过三个视图完成数据处理
  4. 脚本检测:脚本文件自动检测上一步视图中数据,有符合条件就发送邮件
PowerShell内运行结果▲

实现思路

通过现有数据进行分析,问AI是个不错的选择。

通过下图数据可以这样问:在SQL Server中有多行数据,如何判断下一行与上一行不相同就返回A值
AI完整回答【点击查看】,通过AI回复,得到解题思路,可以使用WorkFine支持的窗口函数ROW_NUMBER和自连接实现数据处理,由于WorkFine定时任务尚未支持邮件发送,我们就通过脚本文件+Windows定时任务实现邮件发送功能

DeepSeek回答▲
WorkFine系统表日志表记录

有了思路后,就是开始实施了,相关截图如下:

外部数据源引入数据▲
视图数据处理▲
视图最终处理结果▲

资料列表

├─📄 新IP登陆提醒.ps1
├─📄 Monitor-SQLLoginLogs.config.json
└─📄 Monitor-SQLLoginLogs.log

使用帮助

按照文章内步骤创建好视图数据后,使用脚本文件+Windows定时任务进行部署

配置文件填写示例

{
    "Email": {
        "UserName": "ilishengxi@vip.qq.com",    // QQ邮箱账号(需开启SMTP服务)
        "SmtpPort": 587,                        // QQ邮箱SMTP端口(SSL加密端口)
        "Password": "fazxluqjjelaagbihe",         // QQ邮箱授权码(非登录密码)
        "Encoding": "UTF8",                     // 邮件内容编码(防止中文乱码)
        "Subject": "新IP登录提醒",              // 邮件主题
        "SmtpServer": "smtp.qq.com",           // QQ邮箱SMTP服务器地址
        "From": "ilishengxi@vip.qq.com",        // 发件人邮箱(需与UserName一致)
        "UseSSL": true,                         // 启用SSL加密连接
        "To": "ilishengxi@vip.qq.com"          // 收件人邮箱
    },
    "SQLServer": {
        "UserName": "sa",                       // SQL Server登录账号
        "TimeColumn": "UDF_V_3549",             // 记录时间的字段名(自定义字段)
        "IPColumn": "UDF_V_3548",              // 记录IP地址的字段名(自定义字段)
        "Database": "WF_WZGL",                 // 数据库名称
        "Password": "SrK7AuH9%jJ7",         // SQL Server密码(注意转义特殊字符)
        "ResultColumn": "UDF_V_3550",           // 检测结果的字段名(值应为'不同')
        "Table": "UDV_412",                     // 数据表名
        "Server": "127.0.0.1,15689"             // 数据库服务器地址和端口(注意端口号)
    },
    "Settings": {
        "TimeThresholdMinutes": 5,         // 检测时间范围(分钟)
        "LogRetentionDays": 20                  // 日志保留天数
    }
}

常见问题

  • 计划任务未自动运行
    确认计划已启用【图】
  • 测试未收到邮件
    检查时区,有可能存储时间和当前时间有8小时时差,需要在配置中填写时长485分钟【图】 【图】

相关知识清单

以下是本示例完成的主要知识点,没有带链接的可AI一下

“任何功能的设计都应以实际需求为出发点。”

结语

通过此案例,最重要的不是实现相同的功能,而是掌握一种突破WorkFine现有功能限制的思路与技巧。借助这一方法,可以在WorkFine现有框架下实现更灵活的数据处理逻辑,通过对相邻记录差异的分析,提取出符合业务需求的关键信息。类似的应用场景非常广泛。

更多相关场景

1. 数据变更追踪(Change Tracking)

  • 场景:监控数据表中的变化,例如订单状态变更、库存变动等。
  • 实现:使用 LAG() 或自连接方法,标记相邻行数据不同的记录,便于后续分析或触发业务逻辑。

2. 时间序列数据分析

  • 场景:分析股票价格、温度记录、销售数据等时间序列数据,识别突变点。
  • 实现:计算当前行与前一行的差值,若差值超过阈值则标记为异常。

3. 日志审计(Log Auditing)

  • 场景:检查数据库日志或操作记录,识别异常操作(如短时间内多次修改同一数据)。
  • 实现:比较相邻行的操作类型或时间戳,若不一致则标记为可疑记录。

4. 数据清洗(Data Cleansing)

  • 场景:检测重复数据或数据突变(如用户信息突然变化)。
  • 实现:使用 LAG() 检查相邻行是否相同,若不同则可能需要人工审核。

5. 业务流程监控

  • 场景:跟踪工作流状态变化(如订单从”待处理”到”已发货”)。
  • 实现:比较 status 列,若当前行与上一行不同,则触发通知或记录变更历史。

6. 财务数据核对

  • 场景:核对银行交易记录,检测异常交易(如金额突变)。
  • 实现:比较相邻行的 amount 值,若差异显著则标记为待审查。

7. 物联网(IoT)设备监控

  • 场景:监测传感器数据突变(如温度骤升)。
  • 实现:使用 LAG() 计算当前值与前一值的差异,超出合理范围则报警。

其实官方解决方案中9.2 业务流转方案有些相似之处,各位Fine友可以参考学习

功能实现:在WorkFine实现异地登录邮件通知功能的实现思路及方法-习听风雨丨专注WorkFine开发
功能实现:在WorkFine实现异地登录邮件通知功能的实现思路及方法
此内容为付费阅读,请付费后查看
30
限时特惠
50
付费阅读
© 版权声明
THE END
喜欢就点赞吧
分享