You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ProcessMaker v3.5.7社区版流程过期后禁止修改推进的实现问询

在ProcessMaker v3.5.7社区版实现流程过期后只读不可操作

步骤1:添加流程过期时间变量

  • 进入流程设计器,打开Variables面板,创建一个日期时间类型的变量,命名为PROCESS_EXPIRY_DATE(可自定义)。
  • 可在流程启动的DynaForm中让用户手动填写过期时间,或通过触发器自动设置(比如启动后N天过期)。

步骤2:创建过期检查触发器

  • 进入Triggers面板,新建触发器CheckProcessExpiry,写入以下PHP代码:
// 获取当前时间和流程过期时间
$currentTime = date('Y-m-d H:i:s');
$expiryTime = @@PROCESS_EXPIRED_DATE;

// 比较时间并设置过期状态变量
if (!empty($expiryTime) && strtotime($currentTime) > strtotime($expiryTime)) {
    @@PROCESS_EXPIRED = true;
} else {
    @@PROCESS_EXPIRED = false;
}
  • 将该触发器绑定到每个任务节点的Before Assignment或Before Trigger事件,确保用户每次打开任务前都会执行过期检查。

步骤3:设置任务节点的操作权限

  • 打开每个任务节点的Permissions标签:
    • 找到Edit Case权限,设置条件为!@@PROCESS_EXPIRED(仅未过期时允许编辑)。
    • 找到Continue Case权限,同样设置条件为!@@PROCESS_EXPIRED(仅未过期时允许推进流程)。
  • 对于多用户分配的任务(如并行分配),该条件会自动应用到所有被分配用户,确保过期后所有人都无法操作。

步骤4:设置表单字段只读(可选)

  • 打开任务对应的DynaForm,编辑每个字段的Read Only属性:
    • 设置条件为@@PROCESS_EXPIRED,流程过期时所有表单字段自动变为只读,进一步限制修改操作。

注意事项

  • 确保PROCESS_EXPIRED_DATE变量的日期时间格式与系统默认(Y-m-d H:i:s)一致,避免时间比较出错。
  • 触发器必须在用户打开任务前执行,才能实时更新过期状态。
  • 社区版原生支持权限条件引用流程变量,无需额外插件。

内容的提问来源于stack exchange,提问作者kkd

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 16:20:28