利用EasySQLMAIL进行点对点信息分发

利用EasySQLMAIL进行点对点信息分发

1 什么是点对点信息分发

2 在EasySQLMAIL中实现点对点信息分发

2.1 在任务中添加任务变量

2.2 将变量作为任务的收件人

2.3 启用任务的“按指定条件循环执行任务”选项,并上传员工信息列表

2.4 修改任务的SQL语句,利用变量来查询不同员工的信息(可选)

2.5 循环任务的执行过程

2.6 使用@@loopdata()函数获取循环数据(1.0.1210以上版本)

3 需要注意的问题

3.1 信息推送方式

3.2 提高子任务的运行效率

3.3 收信邮件地址限制

 

1 什么是点对点信息分发

在日常的维护工作中,我们经常需要向员工推送一些信息,例如营业情况、企业消息等。其中有一些消息针对不同的员工会有不同的内容。例如,当我们要向员工推送此员工前一天的销售业绩时,就需要向不同的员工分别推送不同的内容。这种推送内容就需要用到点对点信息分发功能。

在EasySQLMAIL数据发布系统的1.0.1208版本中提供了“循环任务”功能,我们可以很方便地利用此功能来实现“点对点信息分发”功能,定时向多名员工逐一推送不同的信息。

2 在EasySQLMAIL中实现点对点信息分发

EasySQLMIL循环任务是1.0.1208中新增的一种任务模式。此功能允许在一个任务中设置一个列表,EasySQLMAIL按列表中的数据重复执行同一任务,在每将执行时将列表数据的一些字段作为变量传递给任务。结合EasySQLMAIL的变量收件人,能够很容易实现点对点信息分发功能。

2.1 在任务中添加任务变量

在任务中添加任务变量

2.2 将变量作为任务的收件人

将变量作为任务的收件人

2.3 启用任务的“按指定条件循环执行任务”选项,并上传员工信息列表

您也可以指定让EasySQLMAIL从某个数据源的表中读取员工列表。同时设置数据表字段与任务变量的对应关系。EasySQLMAIL在运行时会按配置将指定列的数据作为变量值传递给任务。

启用任务的“按指定条件循环执行任务”选项,并点击“循环条件设置”

上传员工列表文件并指定列表文件的字段与变量的对应关系

员工列表文件可以是XLSX格式或CSV格式。文件内容要求为:第一行是列标题,从第二行起是数据行。列标题不能为空且不能重复。

数据文件格式

如果员工列表在数据库中,也可以让EasySQLMAIL从数据库的指定表中读取员工信息,例如:

设置从数据库读取员工列表

输入SQL语句后点击“测试SQL语句”按钮,测试成功后EasySQLMAIL会将SQL语句返回的字段列在字段列表中。您根据实际情况设置好SQL字段与变量的对应关系即可。

2.4 修改任务的SQL语句,利用变量来查询不同员工的信息(可选)

例如,为了让任务查询出每个员工的销售业绩,我们可以使用如下语句作为正文的查询语句:

--查询员工本人前一天的销售业绩

SELECT cust_type_name AS 客户类型,count(1) AS 销售量,sum(amount) * 0.01 AS 销售金额 FROM sales_stat WHERE staff_name = '#员工姓名#' AND sale_date = TRUNC(SYSDATE) - 1 GROUP BY cust_type_name;

EasySQLMAIL在执行任务时,会将SQL语句中的#员工姓名#替换为变量“员工姓名”的值,也即员工列表中的"员工姓名"列的值。这样就可以实现查询员工本人的销售业绩数据了。

2.5 循环任务的执行过程

EasySQLMAIL在执行此任务时,会先启动一个任务实例来读取员工信息表,并为员工信息表中的每条记录生成一个子任务,同时将员工信息表中的对应行的数据作为变量传递给子任务。子任务再根据不同的变量进行不同的操作,并将结果发送给不同的员工。

父任务在子任务运行期间一直等待,直到所有子任务运行完成后,父任务才结束。任务运行时,如果父任务被中止,则所有子任务也会被中止。

 

2.6 使用@@loopdata()函数获取循环数据(1.0.1210以上版本)

为了简化循环任务的配置,EasySQLMAIL1.0.1210版本开始提供了一个内置函数@@loopdata()。您可以通过使用这个内置函数来获取循环数据的内容,而不需要再使用额外的变量作为中介。loopdata函数的用法为:

#@@loopdata(循环条件字段名)#

中,循环条件字段名是任务的循环条件中的字段的名称,不区分大小写。

例如,在任务的循环条件中有如下的配置:

循环条件中有“帐号”和“消息”两个字段

循环条件中有“帐号”和“消息”两个字段。在旧版本中,您需要在任务中设置两个变量并将循环条件中的字段与变量关联后,才能在子任务中访问循环数据。在EasySQLMAIL1.0.1210以上版本中,您只需要在需要获得循环数据的地方调用#@@loopdata(帐号)##@@loopdata(消息)#就可以获得循环数据了。类似于下面这样:

使用@@loopdata函数来获得循环数据

上面的循环任务执行后的效果如下:

 

3 需要注意的问题

3.1 信息推送方式

此方式不仅可以实现点对点邮件信息推送,也可以实现点对点企业微信和阿里钉钉信息推送,在选择收件人时将变量作为企业应用的收件人即可:

将变量作为企业号收件人

3.2 提高子任务的运行效率

默认情况下, 子任务是串行运行的,即前一个子任务结束后才会运行下一个子任务。如果您确定您的SQL语句是可以多人同时运行的,可以选择如下选项来提高任务的运行速度:

提升子任务运行效率

 

3.3 收信邮件地址限制

出于安全考虑,在向员工进行点对点邮件推送时,必须先将员工的邮件地址添加到EasySQLMAIL的地址薄中。如果需要任务向地址薄中不存在的邮件地址推送邮件,可以启用任务的“允许此任务发送邮件给地址薄中不存在的邮件地址”选项(仅admin用户可以修改任务的此选项)。

启用“允许此任务发送邮件给地址薄中不存在的邮件地址”选项

 

文档最后更新时间:2020-10-09