MENU

[Ecology E9 Java] 流程强制归档方法

• 2024 年 12 月 24 日 • 阅读: 591 • OA

在泛微 E9 系统中,流程强制归档是用于强制将待办任务归档的操作。通常,这个过程通过调用 /api/workflow/monitor/archiving 接口并传输 multiRequestIds 参数来实现。然而,在实际开发中,我们有时需要通过 Java 代码手动触发归档过程,便于调试和自定义功能。

WfForceOver 类

WfForceOver 类是一个专门用于实现流程强制归档的类,它提供了两个关键方法:

  • setRemark(String remark) :用于设置强制归档时的签字意见(备注)。
  • doForceOver(List requestIds, User user) :用于执行强制归档操作,传入多个请求 ID 和当前用户。

1. setRemark 方法

该方法用于设置归档时的签字意见。如果未设置,默认会使用空字符串。

public void setRemark(String remark) {
    this.remark = remark;  // 设置归档的签字意见
}

2. doForceOver 方法

该方法执行强制归档操作,接受一组请求 ID 和当前用户对象。它会通过传入的请求 ID 列表来归档相关流程。

public void doForceOver(ArrayList requestids, User user) {
    doForceOver(requestids, null, null, user);
}

还有一个doForceOver重载:

public void doForceOver(
        ArrayList requestids, 
        HttpServletRequest request, 
        HttpServletResponse response) {
    doForceOver(requestids, request, response, null);
}

示例代码

下面是一个简化版的代码示例,展示了如何使用 WfForceOver 类来进行流程强制归档操作:

// 获取当前用户
User user = HrmUserVarify.getUser(request, response);
if (user == null) {
    response.sendRedirect("/login/Login.jsp");
    return;
}

// 获取请求参数
String requestIds = request.getParameter("requestIds");
if (requestIds == null || requestIds.trim().isEmpty()) {
    response.setStatus(HttpServletResponse.SC_BAD_REQUEST);
    out.print("{\"status\":\"0\", \"message\":\"Missing requestIds parameter\"}");
    return;
}

// 获取签字意见(如果有)
String remark = request.getParameter("remark") == null ? "" : request.getParameter("remark");

// 创建 WfForceOver 对象并设置签字意见
WfForceOver wfOver = new WfForceOver();
wfOver.setRemark(remark);

// 创建 requestIds 列表并调用 doForceOver 方法
List<String> requestIdsList = Arrays.asList(requestIds.split(","));
wfOver.doForceOver(requestIdsList, user);

// 返回操作结果
out.print("{\"status\":\"1\", \"result\":\"Archiving process triggered successfully.\"}");

总结

通过 WfForceOver 类的 setRemarkdoForceOver 方法,我们可以轻松实现流程的强制归档操作。在实际应用中,您只需要传入请求 ID 列表和用户对象,即可完成归档。此外,可以通过 setRemark 方法为归档添加备注,以便后续查看和审计。