activici.7 当前节点审批人为空,应该改哪几个表设置当前节点审批人

14 篇文章 1 订阅

1: 在 Activiti 7.0.0.Beta2 中,如果当前节点的审批人为空,你需要更新数据库中的相关表以设置审批人。主要涉及的表有:

  1. ACT_RU_TASK: 存储当前活动任务的信息。
  2. ACT_RU_IDENTITYLINK: 存储任务的候选用户和候选组。

步骤说明

1. 确定当前任务

首先,你需要确定当前处于哪个任务。这可以通过查询 ACT_RU_TASK 表来完成。

Sql

1SELECT *
2FROM ACT_RU_TASK
3WHERE TASK_ID = :taskId;
2. 设置候选用户或组

如果当前审批人为空,你需要确定新的审批人并将其作为候选用户添加到 ACT_RU_IDENTITYLINK 表中。你可以通过以下步骤来实现:

  1. 确定新的审批人:

    • 你可以使用业务逻辑来确定新的审批人。
    • 或者,你可以从流程实例中获取审批人信息。
  2. 插入新的候选用户:

    • 插入一条记录到 ACT_RU_IDENTITYLINK 表中,将新的审批人设置为候选用户。

Sql

1INSERT INTO ACT_RU_IDENTITYLINK
2(
3  ID_,
4  GROUP_ID_,
5  TYPE_,
6  TASK_ID_,
7  USER_ID_
8)
9VALUES
10(
11  UUID(), -- 生成一个唯一的ID
12  NULL, -- 如果是候选用户,这里为NULL
13  'candidate', -- 类型为候选
14  :taskId, -- 当前任务的ID
15  :newApprover -- 新的审批人ID
16);

示例代码

假设你已经确定了新的审批人 newApprover,下面是使用 JDBC 更新数据库表的示例代码:

Java

1import java.sql.Connection;
2import java.sql.PreparedStatement;
3import java.sql.SQLException;
4import java.util.UUID;
5
6public class AssignApproverExample {
7
8    public static void assignApprover(Connection connection, String taskId, String newApprover) throws SQLException {
9        // 1. 插入新的候选用户
10        String insertIdentityLinkSql = "INSERT INTO ACT_RU_IDENTITYLINK (ID_, GROUP_ID_, TYPE_, TASK_ID_, USER_ID_) VALUES (?, ?, ?, ?, ?)";
11        try (PreparedStatement insertIdentityLinkStmt = connection.prepareStatement(insertIdentityLinkSql)) {
12            String identityLinkId = UUID.randomUUID().toString();
13            insertIdentityLinkStmt.setString(1, identityLinkId);
14            insertIdentityLinkStmt.setString(2, null);
15            insertIdentityLinkStmt.setString(3, "candidate");
16            insertIdentityLinkStmt.setString(4, taskId);
17            insertIdentityLinkStmt.setString(5, newApprover);
18            insertIdentityLinkStmt.executeUpdate();
19        }
20    }
21
22    public static void main(String[] args) {
23        // 假设你已经有了一个数据库连接
24        Connection connection = null; // 请替换为实际的数据库连接
25        String taskId = "your_task_id_here";
26        String newApprover = "new_approver_user_id_here";
27
28        try {
29            assignApprover(connection, taskId, newApprover);
30        } catch (SQLException e) {
31            e.printStackTrace();
32        }
33    }
34}

注意事项

  • 事务管理:

    • 确保所有的数据库操作在一个事务中完成,以保证数据的一致性。
    • 如果使用Spring框架,可以使用@Transactional注解来管理事务。
  • 权限验证:

    • 在更新任务之前,确保当前用户有权执行此操作。
  • 唯一性:

    • 在生成 ID_ 字段时,确保其唯一性。在上述示例中,使用了 UUID 生成唯一ID。
  • 兼容性:

    • 上述示例基于 Activiti 7.0.0.Beta2 版本。如果你使用的是其他版本,表名和字段名可能会有所不同。

通过上述步骤,你可以为当前节点设置审批人,从而使得流程能够继续执行。需要注意的是,这种方法是直接操作数据库,可能会影响流程引擎的正常运行,因此建议仅在必要时使用,并且最好是在了解流程定义的基础上进行。

 

  • 4
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

wcybaonier

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值