Liferay 7.2 网页内容工作流能否添加删除动作?需实现PDF文件删除审批管控
解决方案:给Liferay 7.2网页内容工作流添加删除动作审批
没问题!在Liferay 7.2里,你完全可以给现有网页内容工作流加上「删除」动作的审批控制,刚好能满足你禁止用户未经审批删除PDF文件的需求。下面是一步步的具体实现方法:
1. 修改工作流定义,添加删除审批节点
首先要调整你现有的工作流(不管是默认的Single Approval还是自定义的),新增删除动作对应的审批逻辑:
- 打开Liferay控制面板 → 工作流 → 工作流定义
- 找到你正在用的网页内容工作流,点击「编辑」进入BPMN可视化编辑器
- 新增一个任务节点,命名为「删除审批」,配置好负责审批的角色或用户组(比如内容管理员组)
- 设置触发条件:当用户执行「删除」操作时,自动进入这个审批节点
- 配置流转规则:审批通过就执行删除操作;审批拒绝的话,取消删除操作并给发起删除的用户发通知
2. 绑定工作流与删除实体动作
接下来要确保工作流能拦截到删除操作:
- 回到工作流 → 工作流关联
- 找到你关联网页内容的那条工作流记录,点击「编辑」
- 在「实体动作」区域,勾选「删除」动作,将它绑定到你刚修改好的工作流定义上
- 保存配置后,用户尝试删除网页内容时,删除动作就会触发工作流了
3. 针对PDF文件的专属过滤(可选)
如果你只想限制PDF文件的删除审批,不想影响其他类型内容,可以加个过滤逻辑:
- 在BPMN编辑器的启动节点后,添加一个脚本任务,用Groovy脚本判断当前内容是否为PDF:
import com.liferay.document.library.kernel.model.DLFileEntry import com.liferay.portal.kernel.util.GetterUtil // 获取当前操作的文件实体 DLFileEntry fileEntry = (DLFileEntry)workflowContext.get("entryClassName") String fileMimeType = fileEntry.getMimeType() // 判断是否为PDF,返回分支标识 if ("application/pdf".equals(fileMimeType)) { return "need-approval" } else { return "skip-approval" }
- 在工作流里设置分支:如果脚本返回
need-approval就进入审批节点;返回skip-approval就直接执行删除操作,不经过审批
4. 测试验证流程
最后一定要测试下整个流程是否正常:
- 用普通用户账号尝试删除PDF文件,确认系统弹出审批请求或者直接进入待审批队列
- 用审批角色账号登录,处理这个待审批任务,分别测试通过和拒绝两种情况,检查PDF文件的状态是否符合预期
- 如果配置了PDF过滤,再测试下非PDF文件的删除是否不受影响
这样配置完成后,就能完美实现你想要的「禁止用户未经审批删除PDF文件」的需求啦!
内容的提问来源于stack exchange,提问作者MarioProject
相关产品推荐
相关产品推荐

