订单装运时警报 - 工作流事件处理程序

订单发货到公司,并且属于该公司的门户用户已订阅订单装运警报,该事件处理程序会向该用户发送发货通知。

该事件处理程序激活后,新事件将触发创建用于控制该警报电子邮件通知调度的警报。缺省情况下,订单装运警报通知在每天下午 3 点发出。您可以更改与调度事件触发器表单中的事件关联的缺省值,方法是重置该表单中的条件、条件重新测试间隔和触发器重置间隔值。

事件处理程序激活并且创建 OrderShippingAlert 事件触发器后,系统将使用 TrackRows 表保存需要发送通知的发货列表(基于客户是否有任何“订单装运警报”订阅者),并在每次订单发货时更新该列表。

技术详细信息

事件触发器会在每天指定的时间运行存储的程序 OrderShippingAlertsSp。它执行以下任务:

  • 基于客户号检查通知订阅者有无订单装运警报。通知订阅者可在通知订阅者表单中使用“通知名称”= 'OrderShippingAlert' 和“关键字值”= 客户号找到。
  • 如果存在通知订阅者,存储的程序会获取订阅者的电子邮件地址,使用用户表单中定义的地址。
  • 对于每位通知订阅者,存储的程序会查找该客户自上次运行存储的程序后创建的任何订单装运记录。它会将这些记录插入到将成为电子邮件消息正文的变量中。
  • 存储的程序输出以下值:
    • 变量中存储的订阅者的列表。
    • “订单装运警报”电子邮件的消息正文。

    一封电子邮件的消息正文应仅包含一个订单及其行/物料。消息正文的容量约为 4,000 个字符(约 40 行)。如果创建的消息正文超过 4,000 个字符,将创建另一封电子邮件包含之前电子邮件未容纳的其余行/物料。

存储过程 DeleteCoShipTrackRowsSp 会在成功发送订单装运电子邮件通知后清除 TrackRows 表。

事件 OrderShippingAlert 有 3 个操作:

  • 操作类型:调用数据库方法:调用 OrderShippingAlertsSp 并返回两个变量,一个用于订阅者列表,另一个用于消息正文。
  • 操作类型:发送电子邮件:创建一封电子邮件并使用从 OrderShippingAlertsSp 传入的变量将其发送到订阅者列表。
  • 操作类型:调用数据库方法:调用 DeleteCoShipTrackRowsSp。仅当之前的操作中生成的电子邮件成功发送后才会调用该方法。

以下缺省值用于调度 OrderShippingAlert 事件触发器:

  • 条件:CONDITION(DATEPART(hour, CURDATETIME()) = 15)
  • 条件重新测试间隔:60
  • 触发器重置间隔:85,500
  • 计划:每天下午 3 点触发。触发器休眠 23 ¾ 小时,然后唤醒并检查每分钟,直到再次到下午 3 点。