Apex 22.2表单保存后触发邮件发送流程的实现问询
解决Apex 22.2模态表单保存后触发邮件发送的问题
核心思路
你之前在保存按钮加动态动作无效,是因为触发时机在表单提交之前,数据还没写入数据库。正确的做法是在表单数据成功保存后,执行检查和邮件发送逻辑,再自动关闭对话框。
具体实现步骤
1. 在模态表单页面添加后置检查与邮件发送过程
- 打开你的模态表单页面,进入左侧菜单的页面处理(Page Processes)
- 点击「创建」,选择PL/SQL过程:
- 名称:比如
CHECK_ASSIGNMENT_SEND_MAIL - 执行时机:选择After Submit
- 触发条件:选择当按下按钮时,然后选你的表单保存按钮(比如默认的
SAVE) - PL/SQL代码(替换占位符为你的实际页面项和函数名):
DECLARE l_created_by VARCHAR2(100) := :PXX_CREATED_BY; -- XX替换为你的模态表单页面号 l_assigned_to VARCHAR2(100) := :PXX_ASSIGNED_TO; BEGIN -- 检查创建者与被指派者是否不同 IF l_created_by <> l_assigned_to THEN -- 调用你已有的邮件发送函数 your_existing_mail_function(); -- 替换为实际函数名 END IF; END; - 保存这个过程
- 名称:比如
2. 配置保存成功后自动关闭对话框
- 进入模态表单页面的页面分支(Page Branches)
- 点击「创建」:
- 名称:比如
CLOSE_DIALOG_ON_SUCCESS - 执行时机:选择After Submit
- 触发条件:选择当按下按钮时,选保存按钮,同时勾选仅当前一步骤成功
- 分支类型:选择关闭对话框(Close Dialog)
- 如果需要刷新父页面的Interactive Grid,可以在「对话框返回值」里填
REFRESH,然后在父页面给IG加一个监听对话框关闭的动态动作,但核心需求只需要关闭对话框的话,这一步可以忽略
- 名称:比如
- 保存分支
关键注意事项
- 确保
Created By字段在提交前已正确赋值:如果是自动取当前用户,可设置页面项的默认值为:APP_USER,并将页面项的「提交时包含」设为是 - 你的邮件发送函数已经稳定运行,只需确保这个过程有足够权限调用它
- 可在PL/SQL过程中添加日志(比如插入到自定义日志表),方便调试是否执行了邮件逻辑
内容的提问来源于stack exchange,提问作者listix
相关产品推荐
相关产品推荐

