张燕 发表于 2026-2-3 09:47:44

如何实现把数据写入外部数据库

例如,流程走完以后,把流程数据写入mysql数据库,如何实现,有没有提供范例?

史同学 发表于 2026-2-3 15:09:46

得自己写脚本或者接口

王不二 发表于 2026-2-3 15:10:56

目前存入的数据都是json吧

骁垙 发表于 2026-2-4 14:32:45

本帖最后由 骁垙 于 2026-2-4 16:12 编辑

可以在服务管理里面写一个接口, 在流程末尾放一个服务调用节点处理。不过我不习惯用 js 写接口, 自己写的模块提供接口服务
/********************
this.requestText   // 请求正文
this.currentPerson // 当前用户
this.response      // 响应对象,通过 this.response.setBody(data) 设置响应内容
this.org         // 组织快速访问方法
********************/

var requestJson = JSON.parse(this.requestText);

var fun = requestJson.fun;
var data = requestJson.data || {};
var result = {};

var DriverManager = Java.type("java.sql.DriverManager");
var Class = Java.type("java.lang.Class");
var Timestamp = Java.type("java.sql.Timestamp");
var Date = Java.type("java.util.Date");

/**
* MySQL 连接信息(生产库)
*/
this.mysql = {
    url: "jdbc:mysql://192.168.2.100:3306/prod_db?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=UTC",
    user: "prod_user",
    password: "prod_pass"
};

/**
* 写入 MySQL
*/
this.saveToMysql = function(fun, keyword, rawJson) {
    var conn = null;
    var ps = null;
    try {
      Class.forName("com.mysql.cj.jdbc.Driver");
      conn = DriverManager.getConnection(this.mysql.url, this.mysql.user, this.mysql.password);

      var sql = "INSERT INTO api_request_log(user_token, fun, keyword, request_json, create_time) VALUES (?, ?, ?, ?, ?)";
      ps = conn.prepareStatement(sql);
      ps.setString(1, this.currentPerson.token);
      ps.setString(2, fun);
      ps.setString(3, keyword);
      ps.setString(4, rawJson);
      ps.setTimestamp(5, new Timestamp(new Date().getTime()));
      ps.executeUpdate();
    } finally {
      if (ps !== null) ps.close();
      if (conn !== null) conn.close();
    }
};

/**
* 业务方法
*/
this.save = function() {
    // 记录审计日志
    this.saveToMysql(fun, keyword, JSON.stringify(requestJson));
    result = {};
};

/**
* 统一入口
*/
try {
    if (!this) {
      throw new Error("方法不存在: " + fun);
    }
    this();
    this.response.setBody(result, "application/json");
} catch (e) {
    this.response.setBody(JSON.stringify({
      success: false,
      error: e.toString()
    }), "application/json");
}


张燕 发表于 2026-2-6 16:07:13

骁垙 发表于 2026-2-4 14:32
可以在服务管理里面写一个接口, 在流程末尾放一个服务调用节点处理。不过我不习惯用 js 写接口, 自己写的 ...

问题已解决,多谢!
页: [1]
查看完整版本: 如何实现把数据写入外部数据库