marb 发表于 2013-1-13 18:58:52

使用 DB2 触发器、Java UDF 和 JavaMail API 实施业务逻辑

http://www.ibm.com/i/c.gif
 
通过使用示例应用程序,Kulvir Singh Bhogal 向您展示了在客户接近他们的信用限额时,如何自动地触发一封定制的e-mail。
创建数据库
首先,我们需要使用一个数据库。当然,一个真正的信用卡系统的数据库很可能比我们给出的这个简单模型要复杂得多。然而,出于学习目的,我们的例子将尽量简单。
<ol>首先,用下面的 SQL 语句创建数据库:         create db cardDB
                当然,我们必须连接数据库才能进行有用的操作:         connect to cardDB
                接下来,我们需要一个表来存储所有的客户数据。          表 1 给出了表的列。                        先有鸡还是先有蛋?
回到我们的“因果”主题,我们需要同时定义“原因”和“结果”。如果您是第一遍阅读和理解本文,请继续下去阅读      原因小节。但是,如果您是第二遍阅读并且正在照此做实验,请先跳到      结果小节。您应该在创建原因(触发器)之前先创建结果(UDF),这样一来,当您的触发器预备调用 UDF 时,它就已经在那里了。      
 
http://www.ibm.com/i/v14/rules/blue_rule.gif
http://www.ibm.com/i/c.gifhttp://www.ibm.com/i/c.gif


生成 e-mail (结果)
在触发器中,如果满足指定条件,就调用 Java UDF。 但是,为什么要引用 UDF 呢?下面将花些时间来回答这个问题。然而,我们首先介绍UDF。
测试
如果您按照上述步骤至今没有出现任何问题,那您将很快就可以看到劳动成果了。
测试方法为:发出一条 update 语句,使得某个特定的信用卡客户处于信用限额的 15% 以内,触发器将通过创建的Java UDF 发送一封 e-mail。
如果您使用本文开始建议的特定模拟数据,可以用下面的语句来测试:
update cardHolderTableset currentBalance = 4600.00where lastName = 'Bhogal' and firstName = 'Kulvir' 
通过发出这条 update 语句,我们已经有效地将姓为 Bhogal 名为 Kulvir 的客户置于信用限额的 15%以内这个“红色区域”。
相应地,触发器将对这个 update 作出反应,因为它满足了调用 Java UDF 的条件。
通过将进入“红色区域”客户的 e-mail 地址改为您的 e-mail 地址,可以检查设置是否能够正常工作。有一个需要注意的陷阱就是,您的SMTP 服务器也许不支持 e-mail 转发。这一点在 ISP 中是很普遍的,因为这样可以确保他们的 SMTP 服务器阻止垃圾邮件。因此,在Java UDF 中要将“发送端”地址指定为 SMTP 服务器可识别的地址。如果您在邮箱中自动地接收到了一封 e-mail,我们的实验就通过了。
 
http://www.ibm.com/i/v14/rules/blue_rule.gif
http://www.ibm.com/i/c.gifhttp://www.ibm.com/i/c.gif




结束语
DB2触发器对于数据库程序员来说是一项很强大的功能。在工具箱中拥有了这些触发器,就可以在数据库更新时立即执行操作。触发器允许您以一种将所执行的操作与应用程序分离的方式来封装和定义业务逻辑。这样做实质上是将某些操作放到后台执行。这种做法在那些有几个不同程序(很可能由不同语言编写的)同时来更新数据库的环境中特别有用。这些程序可能都有相同的基本功能(例如,发送一封e-mail)。通过使用在本文中完成的 trigger/UDF 的联合,您可以毫不费力地用不同语言对同一功能进行重复编码。
此外,通过使用 Java UDF,您可以用触发器使 DB2 和 Java 协同工作。在本文中,当客户将要到达他的信用限额时,使用DB2 触发器调用 Java 用户定义函数。这个 JavaUDF 又通过 JavaMail API 来生成一封定制的 e-mail。
页: [1]
查看完整版本: 使用 DB2 触发器、Java UDF 和 JavaMail API 实施业务逻辑