WebLogic Network Gatekeeper(即WLNG)是为您的合作伙伴提供标准化的简单通信网络接口的一个极好工具。
在WLNG中,有一项用于策略控制的非常强大的功能。当将某一请求从应用程序发送到网络时,例如发送 SMS时,WLNG就会执行策略控制。在策略控制中,将检查发送请求的应用程序是否违反了服务供应商(提供应用程序)与运营商之间协商的限制条件。这些检查可能检查应用程序是否只允许每秒钟发送10条SMS,或者检查是否允许接收来自此应用程序的任何东西。
策略检查是在从应用程序到网络和从网络到应用程序的所有调用上进行的。在WLNG的文档中,可以找到执行策略检查的点以及检查的名称。因此,这些检查总是被执行,以验证当前SLA。
不过这还不够。您可以以普通Java代码的形式添加自己的策略检查,作为对SLA数据的补充。您可能会问,这样做有什么好处?
如果这样做,那么在将请求传递到网络或应用程序之前,您可以在其他系统中执行一些额外的检查。因为这些检查是在往返网络的所有调用上执行的,所以在执行从应用程序到网络的调用之前,可以进行检查,然后,如果由托管的网络交付请求,那么您可以对相同的调用进行更新。
如何实现这些呢?WLNG提供了一个消息id,可以用它将两个调用相关联。因此,当执行从应用程序到网络的调用时,可以使用消息id执行到另一个系统的调用。当该网络成功交付消息时,将再一次使用相同的消息id执行策略调用。外部系统可以使用该消息id将两个调用相关联。
那么可将这一点用于哪些地方呢?在线计费就是来自真实世界的一个示例。该示例对从网络到应用程序的调用以及从应用程序到网络的调用都很有效。让我们假设某一应用程序会将一条包含天气信息的SMS发送到用户的移动终端(在请求该消息时)。在根据SLA应用该策略时,也会执行一段Java代码。该代码连接到计费系统,并验证用户的帐户上是否有足够的银行存款。如果将SMS发送到网络,以便最终将它交付给用户,那么当用户的终端承认该SMS时,该网络会将一个交付报告发送回WLNG。当WLNG接收此报告时,将再次应用该策略,并再此执行Java代码。这次该代码将连接到在线计费系统,并在发送消息时使用消息id与以前执行的检查相关联。计费系统根据交付的信息对用户进行计费。
这只是使用WLNG中的灵活策略引擎创建比最初想像的更多功能的一种情况。您有关于使用策略引擎可以做什么以及在其中执行Java代码的更多想法吗?
原文出处:http://dev2dev.bea.com/blog/beeson/archive/2006/07/online_charging.html