如何通过批处理(脚本)任务调用GxFlow模板创建邮件发送程序?
问题解答
能否通过调用GxFlow通知模板的邮件发送服务实现需求?
可以。GxFlow的通知服务支持直接调用已配置的通知模板发送邮件,并且可以通过参数控制不在GxFlow Client收件箱生成用户任务,完全匹配你的需求。
.NET环境下的代码示例(Genexus 18 U8)
以下是调用GxFlow通知服务发送邮件提醒的示例代码,核心是通过CreateTask参数控制不生成用户任务:
using GeneXus.Workflow; using GeneXus.Workflow.Notifications; public void SendApprovalReminder(string approvalTaskId, string approverUserId) { // 获取待办任务数据,用于填充模板变量 WorkflowTask task = WorkflowTask.GetById(approvalTaskId); if (task == null) return; // 初始化通知管理器 WorkflowNotificationManager notificationManager = new WorkflowNotificationManager(); // 指定要复用的首次通知模板名称 string templateName = "ApprovalRequestInitialNotification"; // 设置通知参数:关键配置为不生成用户任务 NotificationParameters parameters = new NotificationParameters(); parameters.CreateTask = false; // 禁止在GxFlow Client生成新任务 parameters.Recipients.Add(approverUserId); // 填充模板变量,需与模板中的变量名对应 parameters.Context.Add("TaskSubject", task.Subject); parameters.Context.Add("TaskDescription", task.Description); parameters.Context.Add("TaskHandleUrl", $"https://your-app-domain/gxflow/task/{approvalTaskId}"); // 发送邮件提醒 try { notificationManager.SendNotification(templateName, parameters); } catch (Exception ex) { GeneXus.ErrorManager.Publish(ex); } }
代码说明:
templateName替换为你在GxFlow中配置的首次通知模板名称parameters.CreateTask = false是核心配置,确保不会在用户收件箱生成任务Context字典用于填充模板中的动态变量,需和模板里的变量名保持一致
替代方案
1. 直接用Genexus邮件API复用模板内容
不依赖GxFlow通知服务,直接读取GxFlow数据库中的通知模板内容,再用Genexus自带的SMTPClient发送邮件:
using GeneXus.Mail; public void SendReminderViaSMTP(string templateContent, string approverEmail, string taskSubject, string taskUrl) { // 替换模板中的变量占位符 string emailBody = templateContent.Replace("[TaskSubject]", taskSubject) .Replace("[TaskHandleUrl]", taskUrl); SMTPClient client = new SMTPClient(); client.From = "noreply@your-domain.com"; client.To.Add(approverEmail); client.Subject = $"提醒:待处理审批请求 - {taskSubject}"; client.Body = emailBody; client.IsBodyHtml = true; // 若模板为HTML格式则开启 client.Send(); }
2. 配置GxFlow内置定时提醒规则
在GxFlow管理控制台中,针对审批任务配置定时提醒规则,设置提醒间隔(如每日一次),并勾选“仅发送邮件,不生成新任务”选项。无需编写代码,纯配置实现需求。
3. 自定义批处理脚本调用SMTP服务
编写独立的.NET控制台程序作为批处理任务,直接连接GxFlow数据库查询待办审批任务,读取审批人邮箱,复用现有邮件模板内容,通过SMTP协议发送提醒邮件。适合需要完全自定义业务逻辑的场景。
内容的提问来源于stack exchange,提问作者CarlosR
相关产品推荐
相关产品推荐

